Chuyển đến nội dung
Diễn đàn CADViet
anhcos

Hướng dẫn lập trình với AutoCAD bằng VB.NET

Các bài được khuyến nghị

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

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

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

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 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

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 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

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

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

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

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

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.

  • Vote giảm 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

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.

  • Vote tă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

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

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

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

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

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

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

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

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

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.

  • Vote tă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

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

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

×