我目前正在重新编译代码以与AutoCAD 2013兼容。
原始代码是使用“魔术宏”创建的,用于将VBA代码转换为VB。NET代码使用COM接口。
我在尝试创建ThisDrawing属性以供其余代码使用时遇到了一个问题。
在AutoCAD 2012中,这种方式效果很好:
-
- Public ReadOnly Property ThisDrawing() As AcadDocument
- Get
- Return Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.AcadDocument
- End Get
- End Property
但在AutoCAD 2013中,这种方式不再有效。
我得到了一个“无法转换类型的COM对象”系统__ComObject“to interface type”Autodesk。AutoCAD。互操作。“AcadDocument”例外。
我尝试了几种不同的方法来实现这一点。许多人在网上举出了例子,但都没有用。
一些失败的尝试:
-
- Public ReadOnly Property ThisDrawing() As AcadDocument
- Get
- Return DocumentExtension.GetAcadDocument(Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument)
- End Get
- End Property
-
- Public ReadOnly Property ThisDrawing() As AcadDocument
- Get
- Return CType(DocumentExtension.GetAcadDocument(Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument), AcadDocument)
- End Get
- End Property
-
- Public ReadOnly Property ThisDrawing() As Object
- Get
- Dim DotNetDoc As Autodesk.AutoCAD.ApplicationServices.Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
- Dim oDoc As Object = DocumentExtension.GetAcadDocument(DotNetDoc)
- Return oDoc
- End Get
- End Property
-
- Public ReadOnly Property ThisDrawing() As AcadDocument
- Get
- Dim tAcadDoc As Autodesk.AutoCAD.ApplicationServices.Document
- Dim tAcadDocCOM As Autodesk.AutoCAD.Interop.AcadDocument
- tAcadDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
- tAcadDocCOM = CType(Autodesk.AutoCAD.ApplicationServices.DocumentExtension.GetAcadDocument(tAcadDoc), Autodesk.AutoCAD.Interop.AcadDocument)
- Return tAcadDocCOM
- End Get
- End Property
其他人有没有遇到过这个问题,或者已经知道如何使用AutoCAD 2013实现这一点?
非常感谢。
克劳特1976 |