Jin Yong 337 Báo cáo bài đăng Đã đăng Tháng 3 15, 2011 Tôi không biết bạn đang dùng chương trình soạn thảo gì nhưng nếu bạn khai báo biến đúng thì không có lí do gì "chương trình soạn thảo không nhận". Phụ thuộc vào mục đích (ý đồ) của lập trình viên, các thuộc tính (properties) có thể gán(gọi) tại bất kỳ đâu trong Application. - trong cửa sổ Property của chương trình soạn thảo - trong các event như ý của phamngoctukts - hay như ý của Jin Yong : truớc khi hiển thị Form (gọi ShowModalDialog...) Cảm ơn gia_bach, mình đã làm như ví dụ và đã có kết 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
phamngoctukts 714 Báo cáo bài đăng Đã đăng Tháng 3 19, 2011 Các bác chỉ em cách dùng Group trong VB.net với. Em bị lỗi "Invalid object array" em dùng như thế này dim group as object dim groupobj(0 to 1) as object group = AcadApp.ActiveDocument.Groups.Add("thongke") groupobj(0) = AcadApp.ActiveDocument.ModelSpace.insertblock(p0, "thongke_ten", tl * 2, tl * 2, tl * 2, 0) groupobj(1) = AcadApp.ActiveDocument.ModelSpace.insertblock(p0, "thongke_ten", tl * 2, tl * 2, tl * 2, 0) group.AppendItems(groupobj) 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
phamngoctukts 714 Báo cáo bài đăng Đã đăng Tháng 3 19, 2011 Các bác chỉ em cách dùng Group trong VB.net với. Em bị lỗi "Invalid object array" em dùng như thế này dim group as object dim groupobj(0 to 1) as object group = AcadApp.ActiveDocument.Groups.Add("thongke") groupobj(0) = AcadApp.ActiveDocument.ModelSpace.insertblock(p0, "thongke_ten", tl * 2, tl * 2, tl * 2, 0) groupobj(1) = AcadApp.ActiveDocument.ModelSpace.insertblock(p0, "thongke_ten", tl * 2, tl * 2, tl * 2, 0) group.AppendItems(groupobj) Em đã fix được bằng SendCommand. 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
nghiautc 19 Báo cáo bài đăng Đã đăng Tháng 3 21, 2011 (Đă chỉnh sửa) Hỏi vắn tắt quá, không hiểu ý bạn ? Tham khảo (Acad.Net Help): The following example creates 4 circles and assigns a different color to each circle using four different methods. Imports Autodesk.AutoCAD.Runtime Imports Autodesk.AutoCAD.ApplicationServices Imports Autodesk.AutoCAD.DatabaseServices Imports Autodesk.AutoCAD.Geometry Imports Autodesk.AutoCAD.Colors <CommandMethod("SetObjectColor")> _ Public Sub SetObjectColor() '' Get the current document and database Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument Dim acCurDb As Database = acDoc.Database '' Start a transaction Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction() '' Define an array of colors for the layers Dim acColors(2) As Color acColors(0) = Color.FromColorIndex(ColorMethod.ByAci, 1) acColors(1) = Color.FromRgb(23, 54, 232) acColors(2) = Color.FromNames("PANTONE Yellow 0131 C", _ "PANTONE(R) pastel coated") '' Open the Block table for read Dim acBlkTbl As BlockTable acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, _ OpenMode.ForRead) '' Open the Block table record Model space for write Dim acBlkTblRec As BlockTableRecord acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), _ OpenMode.ForWrite) '' Create a circle object and assign it the ACI value of 4 Dim acPt As Point3d = New Point3d(0, 3, 0) Dim acCirc As Circle = New Circle() acCirc.SetDatabaseDefaults() acCirc.Center = acPt acCirc.Radius = 1 acCirc.ColorIndex = 4 acBlkTblRec.AppendEntity(acCirc) acTrans.AddNewlyCreatedDBObject(acCirc, True) Dim nCnt As Integer = 0 While (nCnt < 3) '' Create a copy of the circle Dim acCircCopy As Circle acCircCopy = acCirc.Clone() '' Shift the copy along the Y-axis acPt = New Point3d(acPt.X, acPt.Y + 3, acPt.Z) acCircCopy.Center = acPt '' Assign the new color to the circle acCircCopy.Color = acColors(nCnt) acBlkTblRec.AppendEntity(acCircCopy) acTrans.AddNewlyCreatedDBObject(acCircCopy, True) nCnt = nCnt + 1 End While '' Save the changes and dispose of the transaction acTrans.Commit() End Using End Sub gia_bach có thể pos Acad.Net help cho mình được không,mình cài VB.net 2005 nhấn F1 thì chỉ có help chung chung đọc mãi không hiểu, lên mạng search không thấy (Lâu giờ viết VBA giờ đang định chuyển qua .Net thấy đau đầu quá). Mình hỏi 1 vấn đề nữa đó là file .Dll ko chạy được trong cad 2004 > vì trong cad 2004 không có lệnh netload Mới download được cái này không biết trên diễn đàn đã có chưa <19381092-AutoCAD-NET-Developers-Guide> http://www.mediafire.com/?daoap7nc4pcvcyy Chỉnh sửa Tháng 3 23, 2011 theo nghiautc 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
Jin Yong 337 Báo cáo bài đăng Đã đăng Tháng 3 21, 2011 F1 của VB2005 chỉ là hướng dẫn lập trình VB, còn nếu muốn học Autocad.Net thì đây là một tài liệu online khá dễ học: AutoCAD .NET Developer's Guide 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
nghiautc 19 Báo cáo bài đăng Đã đăng Tháng 3 22, 2011 (Đă chỉnh sửa) F1 của VB2005 chỉ là hướng dẫn lập trình VB, còn nếu muốn học Autocad.Net thì đây là một tài liệu online khá dễ học: AutoCAD .NET Developer's Guide Thank Jin Jong. Mình mới đọc được cái trong trung tâm công nghệ cadcam cho lên luôn: 1. Sau bao ngày chờ đợi thì cuối cùng VB.NET/VBA.NET đã có thể tự mình tạo ra lệnh hoàn toàn mới do người dùng tự định nghĩa. Giấc mơ này trước kia "chỉ có thể" lập trình với ObjectARX trên nền VC++ ("cái này có thể nói là khó") thì đến phiên bản hoàn chỉnh AutoCAD2010 và VB.NET2008/VS.NET2008 đã có thể thay thế phần nào việc tạo ra lệnh mới trong AutoCAD. 2. Bản chất của việc tạo ra lệnh mới vẫn là tạo ra các file *.dll (dynamic link library - thư viện liên kết động) sau đó các *.dll này được tải vào AutoCAD2010 thông qua lệnh NETLOAD (khác lệnh APPLOAD). Rồi ta có thể nhập các lệnh mà ta đã định nghĩa trước. 3. Việc này có ý nghĩa bản quyền rất lớn vì các file *.dll đã được mã hóa khi được biên dịch. 4. Bộ công cụ phát triển (tham khảo): (i) - AutoCAD2010. (2i) - Visual Studio.NET 2008. (3i) - ObjectARX 2010 (không cần cài đặt - chỉ cần 4 file *.dll: AcDbMgd.dll, AcMgd.dll,acax17enu.tlb,axdb17enu.tlb-Cả 4file này bạn đều có thể tìm trong Ổ C:/ tất nhiên với điều kiện máy bạn cài cad ổ C:/ ) Ví dụ đơn giản sau cho các bạn mới học như mình(mình đã chạy thử nhìn rất giống VBA, Lệnh là MyLine) Imports Autodesk.AutoCAD.Runtime Imports Autodesk.AutoCAD.ApplicationServices Imports Autodesk.AutoCAD.DatabaseServices Imports Autodesk.AutoCAD.Geometry Public Class Class1 <CommandMethod("MyLine")> _ Public Shared Sub CreateLine() Dim AcadApp As Autodesk.AutoCAD.Interop.AcadApplication Dim ThisDrawing As Autodesk.AutoCAD.Interop.AcadDocument Dim pt As Object Dim pt1 As Object AcadApp = GetObject(, "Autocad.Application") ThisDrawing = AcadApp.ActiveDocument pt = ThisDrawing.Utility.GetPoint(, "Pick point:") pt1 = ThisDrawing.Utility.GetPoint(pt, "Pick second point:") Dim cc As Line cc = ThisDrawing.ModelSpace.AddLine(pt, pt1) End Sub End Class Link down http://www.mediafire.com/?xa8ogvuza514qn5 (mình tạo VB 2008) Bổ sung: Bạn nào có thể chỉ cho mình cách kiểm tra xem dòng lệnh nào sai hay ko? Ví dụ trong VBA mình có thể chạy F8 (F5) đến câu lệnh nào sai dừng lại ở câu lệnh đó.Nhưng khi dùng Class Lybrary để viết lệnh cho cad như trên mình ko chạy thử được ? Ko kiểm tra được thuật toán của mình Chỉnh sửa Tháng 3 23, 2011 theo nghiautc 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
Detailing 281 Báo cáo bài đăng Đã đăng Tháng 3 23, 2011 BẠn nào có thể giải thích giúp mình: Tại sao chúng ta nên sử dụng thư viện ObjectARX (COM library) trong lập trình ACAD .NET trong khi ta có thể tác động trực tiếp vào CSDL bản vẽ thông qua .NET API trừ trường hợp phải tương tác với các đối tượng COM cua CAD. Sử dụng ObjectARX có lợi gì và có hại như thế nào? 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 1557 Báo cáo bài đăng Đã đăng Tháng 3 23, 2011 BẠn nào có thể giải thích giúp mình: Tại sao chúng ta nên sử dụng thư viện ObjectARX (COM library) trong lập trình ACAD .NET trong khi ta có thể tác động trực tiếp vào CSDL bản vẽ thông qua .NET API trừ trường hợp phải tương tác với các đối tượng COM cua CAD. Sử dụng ObjectARX có lợi gì và có hại như thế nào? Chắc bạn muốn nói tới "AutoCAD .NET API"chứ không phải ObjectARX ?! Thông tin của "AutoCAD .NET API" : help 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
Detailing 281 Báo cáo bài đăng Đã đăng Tháng 3 23, 2011 Thanks bạn đã trả lời Theo mình biết Autodesk.AutoCAD.Interop chính là thư viện của ObjectARX (COM) vậy khi làm chương trình mình nên reference nó vào rồi sử dụng các đối tượng của nó như Dim AcadApp As Autodesk.AutoCAD.Interop.AcadApplication Dim ThisDrawing As Autodesk.AutoCAD.Interop.AcadDocument hay dùng Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument link đây Tiếng Anh có hạn nên không hiểu hết được mong các bác giải thích thêm dùm. 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
phuonghuynhduy 4 Báo cáo bài đăng Đã đăng Tháng 3 24, 2011 Thanks bạn đã trả lời Theo mình biết Autodesk.AutoCAD.Interop chính là thư viện của ObjectARX (COM) vậy khi làm chương trình mình nên reference nó vào rồi sử dụng các đối tượng của nó như Dim AcadApp As Autodesk.AutoCAD.Interop.AcadApplication Dim ThisDrawing As Autodesk.AutoCAD.Interop.AcadDocument hay dùng Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument link đây Tiếng Anh có hạn nên không hiểu hết được mong các bác giải thích thêm dùm. Cám ơn. Chào bạn! Hình như bạn nhầm về cách phân biệt các loại trên. Có nhiều cách can thiệp vào Database của Autocad, mình chỉ nói 3 loại mà hiện nay cũng nhiều người quan tâm. 1. ObjectArx: lập trình bằng VC++. Loại này xuất ra file *.Arx như Nova... Món này mình không rành. Thôi không nói thêm 2. Autodesk.AutoCAD.Interop: dùng các thư viện Autodesk.AutoCAD.Interop.... Loại này cũng khá hay và đa dạng. Bạn AnhCos đã hướng dẫn rất nhiều. Ưu điểm là có thể viết 1 file *.exe chạy đọc lập và can thiệp vào Autocad. Đoạn mã của bạn đưa ra như sau: Dim AcadApp As Autodesk.AutoCAD.Interop.AcadApplication Dim ThisDrawing As Autodesk.AutoCAD.Interop.AcadDocument Bạn phải dùng code này vì chương trình *.exe độc lập truy cập Autocad thông qua Interop. 3. Autocad.Net: dùng các thư viện Autodesk.AutoCAD.... không có Interop. Loại này xuất ra *.dll. Load bằng lệnh NetLoad trong cad. File *.Dll chỉ chạy trong phạm vi Autocad và từ đó truy xuất dữ liệu của Cad. Dùng đoạn mã 2: Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument Chúc bạn thành công! 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
Detailing 281 Báo cáo bài đăng Đã đăng Tháng 3 24, 2011 Chào bạn! Hình như bạn nhầm về cách phân biệt các loại trên. Có nhiều cách can thiệp vào Database của Autocad, mình chỉ nói 3 loại mà hiện nay cũng nhiều người quan tâm. 1. ObjectArx: lập trình bằng VC++. Loại này xuất ra file *.Arx như Nova... Món này mình không rành. Thôi không nói thêm 2. Autodesk.AutoCAD.Interop: dùng các thư viện Autodesk.AutoCAD.Interop.... Loại này cũng khá hay và đa dạng. Bạn AnhCos đã hướng dẫn rất nhiều. Ưu điểm là có thể viết 1 file *.exe chạy đọc lập và can thiệp vào Autocad. Đoạn mã của bạn đưa ra như sau: Dim AcadApp As Autodesk.AutoCAD.Interop.AcadApplication Dim ThisDrawing As Autodesk.AutoCAD.Interop.AcadDocument Bạn phải dùng code này vì chương trình *.exe độc lập truy cập Autocad thông qua Interop. 3. Autocad.Net: dùng các thư viện Autodesk.AutoCAD.... không có Interop. Loại này xuất ra *.dll. Load bằng lệnh NetLoad trong cad. File *.Dll chỉ chạy trong phạm vi Autocad và từ đó truy xuất dữ liệu của Cad. Dùng đoạn mã 2: Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument Chúc bạn thành công! Thanks 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
nguyentuyen6 130 Báo cáo bài đăng Đã đăng Tháng 3 25, 2011 Bác anhcos làm 1 cái về C# nữa đi :P 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
anhcos 196 Báo cáo bài đăng Đã đăng Tháng 3 25, 2011 Bác anhcos làm 1 cái về C# nữa đi :P Bài về VB.NET vẫn còn, tuy nhiên mọi người vẫn không mặn mà lắm với hướng này. C# với AutoCAD thì phức tạp hơn vì C# không hỗ trợ late-binding, vì vậy phải add thêm vào các thư viện của CAD. Nếu thích C# thì dùng NET API thôi. 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
Kitty Ostolazaq 0 Báo cáo bài đăng Đã đăng Tháng 3 27, 2011 Hello. And Bye. 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
ketxu 2994 Báo cáo bài đăng Đã đăng Tháng 3 27, 2011 4room vẫn đang chờ loạt Tut VB.net của bác anhcos đây :"> 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
phamngoctukts 714 Báo cáo bài đăng Đã đăng Tháng 3 27, 2011 Bài về VB.NET vẫn còn, tuy nhiên mọi người vẫn không mặn mà lắm với hướng này. C# với AutoCAD thì phức tạp hơn vì C# không hỗ trợ late-binding, vì vậy phải add thêm vào các thư viện của CAD. Nếu thích C# thì dùng NET API thôi. Bác Anhcos hoặc Các Bác trên diễn đàn cho em hỏi cách lấy dữ liệu của các row trong table của access. Hiện em chỉ lấy được 1 row đầu tiê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
phamngoctukts 714 Báo cáo bài đăng Đã đăng Tháng 3 31, 2011 Bác nào cho em hỏi cách tạo Dim và dùng dim vừa tạo làm dim hiện hành. Em bị lỗi cái method ActiveDimstyle "Mem not found". 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
Detailing 281 Báo cáo bài đăng Đã đăng Tháng 3 31, 2011 Bác nào cho em hỏi cách tạo Dim và dùng dim vừa tạo làm dim hiện hành. Em bị lỗi cái method ActiveDimstyle "Mem not found". Bạn nói vậy là đã tạo được Dim rồi, muốn set active dimension style bạn set properties của Dimstyle trong Database. 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
phamngoctukts 714 Báo cáo bài đăng Đã đăng Tháng 3 31, 2011 Bạn nói vậy là đã tạo được Dim rồi, muốn set active dimension style bạn set properties của Dimstyle trong Database. Không hiểu ý của bạn. Nói tóm lại mình có đoạn code sau: Sub Create_Dim_Style(ByVal tDimScale) Dim tText tText = "D" & Trim(Str(tDimScale)) Dim cds As Object AcadApp.ActiveDocument.ActiveDimStyle = AcadApp.ActiveDocument.DimStyles.Item("D1") cds = AcadApp.ActiveDocument.DimStyles.Add(tText) AcadApp.ActiveDocument.SetVariable("DIMLFAC", tDimScale) cds.CopyFrom(AcadApp.ActiveDocument) End Sub bị lỗi đoạn màu đỏ. Trong bản vẽ mình đã có dim D1 rồi. Mình muốn tạo ra một dim khác tù dim D1. 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 196 Báo cáo bài đăng Đã đăng Tháng 3 31, 2011 4room vẫn đang chờ loạt Tut VB.net của bác anhcos đây :"> Sẽ sớm có bài viết tiếp theo, mọi người vui lòng chờ. Bác Anhcos hoặc Các Bác trên diễn đàn cho em hỏi cách lấy dữ liệu của các row trong table của access. Hiện em chỉ lấy được 1 row đầu tiên. Mình truy xuất với file mdb hồi xưa dùng với VB6, giờ không dùng nữa nên quên mất. Bạn post sơ bộ đoạn code đọc lên xem có giúp được gì không? Bác nào cho em hỏi cách tạo Dim và dùng dim vừa tạo làm dim hiện hành. Em bị lỗi cái method ActiveDimstyle "Mem not found". Nếu bạn dùng later-binding thì có lỗi này, tôi cũng không biết như thế nào nữa. Dùng ActiveLayout cũng có lỗi tương tự. Cách giải quyết tạm thời là dùng SendCommand. Hiện tại mình dang nghiên cứu phần kết hợp giữa chèn thư viện CAD + later binding, vừa dễ coding và chạy được trên nhiều nền cad. 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
phamngoctukts 714 Báo cáo bài đăng Đã đăng Tháng 3 31, 2011 Mình truy xuất với file mdb hồi xưa dùng với VB6, giờ không dùng nữa nên quên mất. Bạn post sơ bộ đoạn code đọc lên xem có giúp được gì không? Cái này em đã xử lý được rồi ^^. Nếu bạn dùng later-binding thì có lỗi này, tôi cũng không biết như thế nào nữa. Dùng ActiveLayout cũng có lỗi tương tự. Cách giải quyết tạm thời là dùng SendCommand. Hiện tại mình dang nghiên cứu phần kết hợp giữa chèn thư viện CAD + later binding, vừa dễ coding và chạy được trên nhiều nền cad. Cám ơn bác đành dùng cách cổ điển vậy (may mà còn thằng sencommand). 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
khatamxd 21 Báo cáo bài đăng Đã đăng Tháng 3 31, 2011 Các anh cho em xin code tạo leader line với. Đọc sách thì người ta cho code bên dưới nhưng em chạy hoài ko đc (test trên cad 2007) toàn bị báo lổi: "The specified module could not be found. (Exception from HRESULT: 0x8007007E)". Imports Autodesk.AutoCAD.Runtime Imports Autodesk.AutoCAD.ApplicationServices Imports Autodesk.AutoCAD.DatabaseServices Imports Autodesk.AutoCAD.Geometry <CommandMethod("CreateLeader")> _ Public Sub CreateLeader() '' Get the current database Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument Dim acCurDb As Database = acDoc.Database '' Start a transaction Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction() '' Open the Block table for read Dim acBlkTbl As BlockTable acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, _ OpenMode.ForRead) '' Open the Block table record Model space for write Dim acBlkTblRec As BlockTableRecord acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), _ OpenMode.ForWrite) '' Create the leader Dim acLdr As Leader = New Leader() acLdr.SetDatabaseDefaults() acLdr.AppendVertex(New Point3d(0, 0, 0)) acLdr.AppendVertex(New Point3d(4, 4, 0)) acLdr.AppendVertex(New Point3d(4, 5, 0)) acLdr.HasArrowHead = True '' Add the new object to Model space and the transaction acBlkTblRec.AppendEntity(acLdr) acTrans.AddNewlyCreatedDBObject(acLdr, True) '' Commit the changes and dispose of the transaction acTrans.Commit() End Using End Sub Sao với VB6 nó đơn giản mà sang VB.net rối thế.hixhix 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
phamngoctukts 714 Báo cáo bài đăng Đã đăng Tháng 3 31, 2011 Hề hề! Em lại làm phiền các Bác chút. Em gạp sự cố với hatch với code sau Dim OuterLoop(0 To 0) As Object OuterLoop(0) = plineObj Add_plHatch = AcadApp.ActiveDocument.ModelSpace.AddHatch(0, hName, True) Add_plHatch.AppendOuterLoop(OuterLoop) bị lỗi "Invalid object array" thật bó tay với cái .net này. 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
phuonghuynhduy 4 Báo cáo bài đăng Đã đăng Tháng 4 1, 2011 Các anh cho em xin code tạo leader line với. Đọc sách thì người ta cho code bên dưới nhưng em chạy hoài ko đc (test trên cad 2007) toàn bị báo lổi: "The specified module could not be found. (Exception from HRESULT: 0x8007007E)". Imports Autodesk.AutoCAD.Runtime Imports Autodesk.AutoCAD.ApplicationServices Imports Autodesk.AutoCAD.DatabaseServices Imports Autodesk.AutoCAD.Geometry <CommandMethod("CreateLeader")> _ Public Sub CreateLeader() '' Get the current database Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument Dim acCurDb As Database = acDoc.Database '' Start a transaction Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction() '' Open the Block table for read Dim acBlkTbl As BlockTable acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, _ OpenMode.ForRead) '' Open the Block table record Model space for write Dim acBlkTblRec As BlockTableRecord acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), _ OpenMode.ForWrite) '' Create the leader Dim acLdr As Leader = New Leader() acLdr.SetDatabaseDefaults() acLdr.AppendVertex(New Point3d(0, 0, 0)) acLdr.AppendVertex(New Point3d(4, 4, 0)) acLdr.AppendVertex(New Point3d(4, 5, 0)) acLdr.HasArrowHead = True '' Add the new object to Model space and the transaction acBlkTblRec.AppendEntity(acLdr) acTrans.AddNewlyCreatedDBObject(acLdr, True) '' Commit the changes and dispose of the transaction acTrans.Commit() End Using End Sub Sao với VB6 nó đơn giản mà sang VB.net rối thế.hixhix Chào bạn lỗi (Exception from HRESULT: 0x8007007E) thường không phải do sai code mà thường là các khai báo reference của bạn ban đầu không đúng. Mình hay dùng tools DotNetARXToolsForVS2008 để thiết lập ban đầu. Bạn tự tìm và sử dụng có lẽ khắc phục được. Chúc ban thành cô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
khatamxd 21 Báo cáo bài đăng Đã đăng Tháng 4 1, 2011 Chào bạn lỗi (Exception from HRESULT: 0x8007007E) thường không phải do sai code mà thường là các khai báo reference của bạn ban đầu không đúng. Mình hay dùng tools DotNetARXToolsForVS2008 để thiết lập ban đầu. Bạn tự tìm và sử dụng có lẽ khắc phục được. Chúc ban thành công. Cảm ơn anh! đúng là do lỗi ở khai báo reference rồi. Nhưng ko bít xử lý thế nào nhỉ! Em đang dùng win7 64bit, cad2007, VS2008. Em đã thử xóa hết lệnh chỉ còn chừa lại dòng: Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument Thì bị báo lỗi Could not load file or assembly 'acmgd, Version=17.0.54.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format. Có phải là do dùng cad2007 cũ quá ko phù hợp với VS2008 nên file acmgd load vào bị lỗi ko nhỉ. còn cái tools DotNetARXToolsForVS2008 em down về cài đặt xong rồi chẳng bít mở hay sử dụng thế nào cả.Mong a hướng dẫn dùm 1 xí. Em cũng mới bít VB được hơn nữa năm còn VB.net thì được vài tuần nên nhìu cái cơ bản vẫn ko nắ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