ketxu 2.881 Báo cáo bài đăng Đã đăng Tháng 12 14, 2018 @phantuhuongCũng đã lâu không thấy bác Hướng quay lại ngó diễn đàn ^^ Dạo này chắc đông học viên quá ^^ Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
KangKung 247 Báo cáo bài đăng Đã đăng Tháng 12 14, 2018 Tôi có một chương trình khi chạy sẽ list các file bản vẽ đang mở trong CAD. Nếu người dùng đóng một file bất kì hoặc tắt AutoCAD đi thì làm sao để hiển thị thông báo sang phần mềm được? Bác nào biết chỉ giùm cách với. Thanks. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
hung37cespk 0 Báo cáo bài đăng Đã đăng Tháng 12 16, 2018 Vào lúc 14/12/2018 tại 22:55, KangKung đã nói: Tôi có một chương trình khi chạy sẽ list các file bản vẽ đang mở trong CAD. Nếu người dùng đóng một file bất kì hoặc tắt AutoCAD đi thì làm sao để hiển thị thông báo sang phần mềm được? Bác nào biết chỉ giùm cách với. Thanks. thông qua thuộc tính IsReadOnly của document bạn có thể biết bản vẽ có được mở hay không mà Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
KangKung 247 Báo cáo bài đăng Đã đăng Tháng 12 16, 2018 8 giờ trước, hung37cespk đã nói: thông qua thuộc tính IsReadOnly của document bạn có thể biết bản vẽ có được mở hay không mà Vấn đề là như này bác ơi: 1. Chạy một App được viết bằng VB.net ( .exe ) 2. Link App với AutoCAD (CAD đã mở từ trước) thì toàn bộ bản vẽ đang mở trong AutoCAD sẽ được list trong combobox như hình dưới: 3. Nếu người dùng đóng 1 file bất kì trong CAD (ví dụ đóng file "Drawing5.dwg" bằng phần mềm AutoCAD) thì làm sao để combobox tự động update như hình dưới. (App tự động update ngay khi có sự kiện nào ở AutoCAD như đóng file hoặc đóng phần mềm AutoCAD) Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
nguyenanh93 9 Báo cáo bài đăng Đã đăng Tháng 12 16, 2018 1 giờ trước, KangKung đã nói: Vấn đề là như này bác ơi: 1. Chạy một App được viết bằng VB.net ( .exe ) 2. Link App với AutoCAD (CAD đã mở từ trước) thì toàn bộ bản vẽ đang mở trong AutoCAD sẽ được list trong combobox như hình dưới: 3. Nếu người dùng đóng 1 file bất kì trong CAD (ví dụ đóng file "Drawing5.dwg" bằng phần mềm AutoCAD) thì làm sao để combobox tự động update như hình dưới. (App tự động update ngay khi có sự kiện nào ở AutoCAD như đóng file hoặc đóng phần mềm AutoCAD) https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2017/ENU/AutoCAD-NET/files/GUID-F432E285-8B94-4ACD-A186-89E1218DEC07-htm.html Bạn thực hiện bắt event BeginDocumentClose. Khi event này được trigger thì loại bỏ tên file đó trong dropdownlist của bạn. 1 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
ksxdTVC 2 Báo cáo bài đăng Đã đăng Tháng 12 17, 2018 13 giờ trước, nguyenanh93 đã nói: https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2017/ENU/AutoCAD-NET/files/GUID-F432E285-8B94-4ACD-A186-89E1218DEC07-htm.html Bạn thực hiện bắt event BeginDocumentClose. Khi event này được trigger thì loại bỏ tên file đó trong dropdownlist của bạn. Theo như mình hiểu thì chương trình bác ấy viết là chương trình ngoài AutoCAD, kết nối với CAD thông qua COM API. Như vậy có thể bắt được sự kiện của bản vẽ không? 1 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
KangKung 247 Báo cáo bài đăng Đã đăng Tháng 12 17, 2018 Hiện tại thì tôi đang dùng Me.Acticvated ( thêm Me.MouseEnter nữa) để update cái List bản vẽ trong App. Hơi thủ công tí nhưng dùng tốt khi chưa biết cách bắt sự kiện trên bản vẽ. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
nguyenanh93 9 Báo cáo bài đăng Đã đăng Tháng 12 17, 2018 8 giờ trước, ksxdTVC đã nói: Theo như mình hiểu thì chương trình bác ấy viết là chương trình ngoài AutoCAD, kết nối với CAD thông qua COM API. Như vậy có thể bắt được sự kiện của bản vẽ không? Sorry vì đọc ko kĩ :D Về vấn đề này thì phải xây dựng một Inter-process Communication giữa 2 chương trình. Cái này khá khó và không biết VB.NET có hỗ trợ không. Một cách đơn giản hơn thì xây dựng chương trình đọc dữ liệu từ port. Khi AutoCAD trigger sự kiện đóng bản vẽ hoặc đóng AutoCAD thì send 1 tín hiệu đến cổng bất kì (1002 chẳng hạn). Chương trình .exe lấy thông tin từ cổng đó để xử lý. Về cơ bản thì cả 2 cách đều tốn công cả. C# hoặc C++ hỗ trợ tốt hơn VB.NET Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
ksxdTVC 2 Báo cáo bài đăng Đã đăng Tháng 12 18, 2018 Cách này cũng được rồi nè, không thì cứ thêm 1 nút refresh, mỗi lần qua form thì nhấn nút cho nó load lại danh sách. :D 18 giờ trước, KangKung đã nói: Hiện tại thì tôi đang dùng Me.Acticvated ( thêm Me.MouseEnter nữa) để update cái List bản vẽ trong App. Hơi thủ công tí nhưng dùng tốt khi chưa biết cách bắt sự kiện trên bản vẽ. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
anhcos 183 Báo cáo bài đăng Đã đăng Tháng 12 18, 2018 Vào lúc 16/12/2018 tại 20:05, KangKung đã nói: Vấn đề là như này bác ơi: 1. Chạy một App được viết bằng VB.net ( .exe ) 2. Link App với AutoCAD (CAD đã mở từ trước) thì toàn bộ bản vẽ đang mở trong AutoCAD sẽ được list trong combobox như hình dưới: 3. Nếu người dùng đóng 1 file bất kì trong CAD (ví dụ đóng file "Drawing5.dwg" bằng phần mềm AutoCAD) thì làm sao để combobox tự động update như hình dưới. (App tự động update ngay khi có sự kiện nào ở AutoCAD như đóng file hoặc đóng phần mềm AutoCAD) Cái này thì dễ, bác cứ theo sự kiện DropDown của ComboBox mà lấy lại danh sách bản vẽ đang mở từ AutoCAD thôi. Chào các bác, dạo này mình chuyển sang lập trình phần mềm CAM và dùng sử dụng giao diện cad riêng nên ít dùng vb với AutoCAD nữa. AutoCAD mình giờ chỉ dùng vẽ các bản vẽ đơn giản. VD như phần mềm CAM dùng cho máy tiện gỗ 2 dao: 1 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
KangKung 247 Báo cáo bài đăng Đã đăng Tháng 12 18, 2018 8 giờ trước, anhcos đã nói: Cái này thì dễ, bác cứ theo sự kiện DropDown của ComboBox mà lấy lại danh sách bản vẽ đang mở từ AutoCAD thôi. Vấn đề là tôi muốn App cập nhật ngay khi người dùng đóng bản vẽ. Nếu dùng sự kiện DropDown của ComboBox thì App chỉ update khi người dùng di chuột vào ComboBox và nó còn xảy ra chậm hơn sự kiện Me.Activated và Me.MouseEnter mà tôi đang dùng. 19 giờ trước, ksxdTVC đã nói: Cách này cũng được rồi nè, không thì cứ thêm 1 nút refresh, mỗi lần qua form thì nhấn nút cho nó load lại danh sách. :D Cách này thì còn thủ công hơn nữa. Cảm ơn các bác đã góp ý. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
phantuhuong 213 Báo cáo bài đăng Đã đăng Tháng 12 29, 2018 Vào lúc 13/12/2018 tại 15:47, Danh Cong đã nói: Giờ mới biết bác là chủ trì khảo sát công trình này :)))) " Em chỉ là nhân viên thiết kế cầu mà thôi :( " Hắn làm thì ít, bịa là chính :) Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
phantuhuong 213 Báo cáo bài đăng Đã đăng Tháng 12 29, 2018 Vào lúc 14/12/2018 tại 14:15, ketxu đã nói: @phantuhuongCũng đã lâu không thấy bác Hướng quay lại ngó diễn đàn ^^ Dạo này chắc đông học viên quá ^^ Lâu nay dạy dỗ ai đâu em :) Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
tigerhn 0 Báo cáo bài đăng Đã đăng Tháng 2 13, 2019 Vào lúc 18/12/2018 tại 21:18, anhcos đã nói: Cái này thì dễ, bác cứ theo sự kiện DropDown của ComboBox mà lấy lại danh sách bản vẽ đang mở từ AutoCAD thôi. Chào các bác, dạo này mình chuyển sang lập trình phần mềm CAM và dùng sử dụng giao diện cad riêng nên ít dùng vb với AutoCAD nữa. AutoCAD mình giờ chỉ dùng vẽ các bản vẽ đơn giản. VD như phần mềm CAM dùng cho máy tiện gỗ 2 dao: Cái "giao diện cad riêng" là thế nào vậy bác? Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
tigerhn 0 Báo cáo bài đăng Đã đăng Tháng 2 15, 2019 Vào lúc 11/2/2017 tại 00:31, anhcos đã nói: Giới thiệu các bác phần mềm sắp lỗ khuôn ép đùn mình viết bằng VB+C# nhé. Trong đó cốt lõi vẫn là giao diện cad của riêng mình, thực hiện được các lệnh cơ bản như acad, hỗ trợ nhập liệu từ bàn phím... Bác Pro quá, hình như bác dùng CAD .NET? Cái đó có đầy đủ bộ lệnh như AutoCAD không bác? Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
LoVe_ActiveX_VBNET 0 Báo cáo bài đăng Đã đăng Tháng 2 3 Cái này ko liên quan gì đâu bạn Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
LoVe_ActiveX_VBNET 0 Báo cáo bài đăng Đã đăng Tháng 2 3 Vào lúc 9/3/2015 tại 21:34, hotrung đã nói: Các bác chỉ với em với, trong đoạn code dưới đây của bác anhcos là select các đối tượng trên màn hình, nhưng em chỉ muốn select các đối tượng là Line hoặc Polyline thôi thì phải làm thế nào ạ? Và sau khi select xong, em muốn lấy các thông số Startpoint, Endpoint, vector pháp tuyến của từng Line thì phải làm thế nào ạ? Cái này em mới tìm hiểu mà tìm mãi chẳng thấy chỗ nào các bác nói đến cả, mong các bác giúp đỡ. Private Sub cmdSelectObject_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSelectObject.Click If ACADLink() Then Try Dim dwg As Object = Acad.ActiveDocument Try SelSet = dwg.SelectionSets.Add("anhcos") Catch SelSet = dwg.SelectionSets.Item("anhcos") End Try SelSet.Clear() AppActivate(Acad.Caption) SelSet.SelectOnScreen() ObjIndex = 0 Vịtríđốitượngtrongtậpchọn() AppActivate(Me.Text) pgObject.SelectedObject = SelSet.Item(ObjIndex) Catch ObjIndex = -1 End Try End If End Sub Mình hướng dẫn bạn một chút về cách lấy thông tin của 1 đối tượng hình học trong cad nhé. Các đối tượng khác thì bạn tự suy nghĩ thêm, cũng tương tự thôi. Sau khi bạn dùng phương thức selectionOnscreen. Bạn dùng vòng lặp để xét đến đối tượng cần lấy thông tin: For each object_cad in Object_Select if Object_cad.ObjectName = "AcdbLine" then ' Lấy thông số đối tượng Line Dim ToadoDau( 0 to 2) as double Dim Toadocuoi( 0 to 2) as double Dim Layer_line as layer toadodau(0) =Object_cad.startPoint.Coordinates(0) toadodau(1) =Object_cad.startPoint.Coordinates(1) toadocuoi(0) =Object_cad.EndPoint.Coordinates(0) toadocuoi(1) =Object_cad.EndPoint.Coordinates(1) Layer_line= Object_cad.layer end if Next Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
anhcos 183 Báo cáo bài đăng Đã đăng Tháng 2 19 Duyệt qua từng đối tượng là cách cơ bản, rồi, tuy nhiên tốc độ rất chậm, nếu cỡ 200 đối tượng trở lên thì còn chậm nữa. Nên giải pháp là phải dùng filter cùng với SelectionSet trước khi chọn đối tượng để lọc bớt số lượng ngay từ đầu. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác