redsea_tq 16 Báo cáo bài đăng Đã đăng Tháng 12 3, 2016 Chào các anh chị em trong diễn đàn, mình đang chuyển dần sang autocad.net. Trước đây mình dùng VB6.0 và VBA getboundingbox của đối tượng Text rất đơn giản và dễ đàng lấy được Pmin và Pmax của đối tượng đó, giờ chuyển sang autocad.net với ngôn ngữ vb.net thì phải dùng đối tượng Extents3d để lấy được Pmin và Pmax. Vấn đề ở đây là Pmin và Pmax của Boundingbox sau khi lấy ra không phải 2 điểm trên - dưới giống như khi dùng bằng VB6.0. Mong các anh chị em trên diễn đàn chỉ giúp. Xin chân thành cám ơ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
gia_bach 1558 Báo cáo bài đăng Đã đăng Tháng 12 4, 2016 (Đă chỉnh sửa) Không biết bạn dùng Cad mấy? Tôi thử trên CAD 2010 và 2016, kết quả của Lisp, VBA, AutoCAD.Net đều giống nhau. Xác nhận dotnet trên Cad 2007 cho kết quả khác thường?! Chỉnh sửa Tháng 12 4, 2016 theo gia_bach 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
redsea_tq 16 Báo cáo bài đăng Đã đăng Tháng 12 4, 2016 Không biết bạn dùng Cad mấy? Tôi thử trên CAD 2010 và 2016, kết quả của Lisp, VBA, AutoCAD.Net đều giống nhau. Xác nhận dotnet trên Cad 2007 cho kết quả khác thường?! Cám ơn bác gia_bach, có thể mình mới chuyển sang dùng autocad.net nên chưa nắm chắc cú pháp, hiện tại mình dùng cad 2007 và vb2008. Bác có thể xem giúp mình code dưới có vấn đề gì không ah. Sub VD3() Dim ObjT As DBText Dim acEditor As Editor = acDoc.Editor Dim acPoint3dCollection As Point3dCollection Dim acExtents3d As Extents3d Dim acPline As Polyline Dim acObjectID As ObjectId = acEditor.GetEntity(vbLf & "Chọn đối tượng :").ObjectId Using acTran = acCurData.TransactionManager.StartTransaction Dim acBlockTable As BlockTable acBlockTable = acTran.GetObject(acCurData.BlockTableId, DatabaseServices.OpenMode.ForRead) Dim acBlockTableRecord As BlockTableRecord acBlockTableRecord = acTran.GetObject(acCurData.CurrentSpaceId, DatabaseServices.OpenMode.ForWrite) ObjT = acTran.GetObject(acObjectID, DatabaseServices.OpenMode.ForWrite) acPoint3dCollection = New Point3dCollection acExtents3d = New Extents3d acExtents3d = ObjT.GeometricExtents acPoint3dCollection.Add(acExtents3d.MinPoint) acPoint3dCollection.Add(acExtents3d.MaxPoint) acPline = acFun.Thêm_Polyline(acPoint3dCollection) acTran.Commit() End Using End Sub 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
gia_bach 1558 Báo cáo bài đăng Đã đăng Tháng 12 5, 2016 Cám ơn bác gia_bach, có thể mình mới chuyển sang dùng autocad.net nên chưa nắm chắc cú pháp, hiện tại mình dùng cad 2007 và vb2008. Bác có thể xem giúp mình code dưới có vấn đề gì không ah. Sub VD3() Dim ObjT As DBText Dim acEditor As Editor = acDoc.Editor Dim acPoint3dCollection As Point3dCollection Dim acExtents3d As Extents3d Dim acPline As Polyline Dim acObjectID As ObjectId = acEditor.GetEntity(vbLf & "Chọn đối tượng :").ObjectId Using acTran = acCurData.TransactionManager.StartTransaction Dim acBlockTable As BlockTable acBlockTable = acTran.GetObject(acCurData.BlockTableId, DatabaseServices.OpenMode.ForRead) Dim acBlockTableRecord As BlockTableRecord acBlockTableRecord = acTran.GetObject(acCurData.CurrentSpaceId, DatabaseServices.OpenMode.ForWrite) ObjT = acTran.GetObject(acObjectID, DatabaseServices.OpenMode.ForWrite) acPoint3dCollection = New Point3dCollection acExtents3d = New Extents3d acExtents3d = ObjT.GeometricExtents acPoint3dCollection.Add(acExtents3d.MinPoint) acPoint3dCollection.Add(acExtents3d.MaxPoint) acPline = acFun.Thêm_Polyline(acPoint3dCollection) acTran.Commit() End Using End Sub redsea_tq hơi bị ...khiêm tốn, (sử dụng OPP viết code) Tuy nhiên để phát hiện lỗi khi debug, thử vẽ line qua 2 điểm Minpoint và Maxpoint ? 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
quansla 261 Báo cáo bài đăng Đã đăng Tháng 12 5, 2016 Cám ơn bác gia_bach, có thể mình mới chuyển sang dùng autocad.net nên chưa nắm chắc cú pháp, hiện tại mình dùng cad 2007 và vb2008. Bác có thể xem giúp mình code dưới có vấn đề gì không ah. Sub .... Mọi người cho em hỏi, bình thường em thấy mọi người hay hỏi nhau VB trong Cad, có lẽ là viết cùng ngôn ngữ VBA như Excel (cái này thì em mù tịt). Vậy cái VB Cad này có chỗ nào để viết, lấy nguồn cơ sở ở đâu, nó không có sẵn khi cài Cad phải không?, (em thấy vẫn load được các file các anh viết (dạng dll) và chạy trên máy em, vậy nó cho dùng nhưng không cho sửa viết = Cad ư) Như em thấy Cad thì Visual Lisp chuyên viết LISP cad, Excel thì ALT+F11 thì phải (cũng là Visual Basic for Applications cho phần mềm OFF, vậy cái VB cho Cad này dùng gì để viết, các từ khóa lấy kiểu gì, hay tự nhớ, tự viết bằng Note++ xin lỗi mọi người nếu em hỏi gà quá nha! 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
gia_bach 1558 Báo cáo bài đăng Đã đăng Tháng 12 5, 2016 Mọi người cho em hỏi, bình thường em thấy mọi người hay hỏi nhau VB trong Cad, có lẽ là viết cùng ngôn ngữ VBA như Excel (cái này thì em mù tịt). Vậy cái VB Cad này có chỗ nào để viết, lấy nguồn cơ sở ở đâu, nó không có sẵn khi cài Cad phải không?, (em thấy vẫn load được các file các anh viết (dạng dll) và chạy trên máy em, vậy nó cho dùng nhưng không cho sửa viết = Cad ư) Như em thấy Cad thì Visual Lisp chuyên viết LISP cad, Excel thì ALT+F11 thì phải (cũng là Visual Basic for Applications cho phần mềm OFF, vậy cái VB cho Cad này dùng gì để viết, các từ khóa lấy kiểu gì, hay tự nhớ, tự viết bằng Note++ xin lỗi mọi người nếu em hỏi gà quá nha! Bạn có thể tham khảo ở đây : http://www.cadviet.com/forum/topic/24288-autocad-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
redsea_tq 16 Báo cáo bài đăng Đã đăng Tháng 12 5, 2016 redsea_tq hơi bị ...khiêm tốn, (sử dụng OPP viết code) Tuy nhiên để phát hiện lỗi khi debug, thử vẽ line qua 2 điểm Minpoint và Maxpoint ? Vâng, vừa học vừa triển khai thôi bác ah, có cái vẫn sử dụng nhưng chưa hiểu hết nghĩa. Mình dùng hàm acFunc.Thêm_Polyline thì phát biện cái Polyline nó ...bên trời tây ấy bác, mình nghĩ phải chăng nó do cad2007. 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
redsea_tq 16 Báo cáo bài đăng Đã đăng Tháng 12 5, 2016 Mọi người cho em hỏi, bình thường em thấy mọi người hay hỏi nhau VB trong Cad, có lẽ là viết cùng ngôn ngữ VBA như Excel (cái này thì em mù tịt). Vậy cái VB Cad này có chỗ nào để viết, lấy nguồn cơ sở ở đâu, nó không có sẵn khi cài Cad phải không?, (em thấy vẫn load được các file các anh viết (dạng dll) và chạy trên máy em, vậy nó cho dùng nhưng không cho sửa viết = Cad ư) Như em thấy Cad thì Visual Lisp chuyên viết LISP cad, Excel thì ALT+F11 thì phải (cũng là Visual Basic for Applications cho phần mềm OFF, vậy cái VB cho Cad này dùng gì để viết, các từ khóa lấy kiểu gì, hay tự nhớ, tự viết bằng Note++ xin lỗi mọi người nếu em hỏi gà quá nha! Chào bạn, VB trong cad chính là dùng ngôn ngữ Visual Basic (VB6.0 hoặc VB.Net) để tạo ra các lệnh trong cad. Tuy nhiên từ cad2010 thì Autodesk không còn tích hợp VB sẵn (còn gọi là VBA) trong bộ cài nữa mà phải cài thêm sau khi cài cad, hơn nữa VBA hay VB6.0 không tương thích với Unicode nên hiện nay anh em cũng dần chuyển sang VB.Net để làm việc với Cad. Khi sử dụng VB.Net có 2 cách để làm việc với cad: - Cách 1: sử dụng ActiveX làm việc với cad, cách này giống với vb6.0 (chỉ khác một chút giữa 2 ngôn ngữ vb6.0 và vb.net). Tuy nhiên khi lập trình bằng vb.net sử dụng ActiveX thì các mảng đối tượng bị lỗi mà không biết vì sao? Trên diễn đàn có bác anhcos rành về món này. - Cách 2: sử dụng .Net API làm việc với cad (cách mình trình bày code ở trên), cách này dùng ngôn ngữ vb.net kết hợp với Netframework. Với cách này mình thấy khai thác cad được triệt để hơn và can thiệp sâu hơn (cảm nhận ban đầu) nhưng lập trình vất vả hơn so với cách 1 (có lẽ do mình quen làm việc với vb6.0) Trên đây là một số khái niệm cơ bản về vb cho cad mà mình hiểu được và nói sơ qua cho bạn. Nếu bạn muốn tìm hiểu sâu hơn thì ll với mình qua gmail: redseatq@gmail.com để cùng trao đổi. 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