sanderson 发表于 2022-7-6 22:33:30

获取图形属性externa

你好:
 
在这里度过了一上午的大部分时间http://docs.autodesk.com/ACD/2010/ENU/AutoCAD%20.NET%20Developer's%20指南/索引。html和无处可去,我张贴这个线程。
 
我试图指向AutoCAD图形,并从中获取一些系统变量信息,以应用于外部SQL Server数据库。代码非常简单,如下所示:
 

GetInternalACADData(fil)

 
fil是文件名及其完整路径。当我运行代码时(我将在最后展示),我得到一个未处理的FileNotFoundException-找不到指定的模块。(HRESULT的例外:0x8007007E)。奇怪的是,在后续代码中尝试执行有关文件的任何操作之前,就会发生此错误:
 

Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.Runtime

Module ACAD_Functions
PublicSub GetInternalACADData(ByVal fil AsString)
      Dim acCurDb As Database = New Database(False, True)
      acCurDb.ReadDwgFile(fil, System.IO.FileShare.Read, True, "")
      Dim strString As String = acCurDb.Tdupdate.ToString

EndSub

EndModule

 
如果您对此有任何想法,以及关于使用AutoCAD API的任何其他信息,请告诉我。
 
非常感谢。

fixo 发表于 2022-7-6 22:52:46

尝试像这样将类添加到项目中
只需在接下来的3行中更改项目名称和类名:

<Assembly: CommandClass(GetType(MyProject.MyClass))>
Namespace MyProject
Public Class MyClass

 
更改代码中的文件名:
 

Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.Geometry
<Assembly: CommandClass(GetType(MyProject.MyClass))>
Namespace MyProject
Public Class MyClass
<CommandMethod("ReadFileTest", "rft", CommandFlags.Session Or CommandFlags.Modal)> _
Public Sub TestInternalData()
GetInternalACADData("C:\Test\WorkingDrawing.dwg")
End Sub

Public Sub GetInternalACADData(ByVal fil As String)
Dim acCurDb As Database = New Database(False, True)
acCurDb.ReadDwgFile(fil, System.IO.FileShare.Read, True, "")
Dim strString As String = acCurDb.Tdupdate.ToString
acCurDb.CloseInput(True)
acCurDb.Dispose()
MsgBox(strString)
End Sub
End Class
End Namespace

 
~'J'~

sanderson 发表于 2022-7-6 22:57:11

谢谢,但是没有帮助。无论如何,这个类已经在它自己的模块中了。我想知道DLL没有正确映射是否有问题,尽管我可以在Windows 7-64位和Windows XP-32位中产生错误botn。
 
这些进口产品都很好用。我用于AutoCAD 2010的文件引用是acdbmgd。dll和acmgd。dll。不确定这是否正确,尽管我在某处读到它是正确的。可能有一个问题,我需要更多的dll的依赖。如果你知道那些可能是什么,请告诉我。
 
再次感谢!

fixo 发表于 2022-7-6 23:11:05

对不起,朋友,
我对这个问题一无所知
也许其他人会更好地解释你
我担心我英语不好,会把你引向错误的方向
 
当做
 
~'J'~

SEANT 发表于 2022-7-6 23:16:33

该线程的描述“从外部获取图形属性–问题”的确切含义是什么?我问的原因是一个外部。NET exe必须使用不同的工具集与AutoCAD交互。NET dll在AutoCAD中运行。
 
在调试期间,exe可能会立即引发异常,类似于您所描述的。

sanderson 发表于 2022-7-6 23:28:49

那么,我应该使用什么参考文献呢?这是因为intellisense功能强大,可以显示所有系统变量以及人们希望在AutoCAD中看到的其他内容?
 
目前,我正在使用acdbmgd和acmgd,我需要的导入似乎可以工作。是否需要更多的参考资料,或者这些是错误的?
 
谢谢

SEANT 发表于 2022-7-6 23:39:01

下图显示了从外部EXE访问AutoCAD所需的参考。截图是在我在Visual Studio 2010中打开此线程第17页的解决方案文件时捕获的(实际上,一些参考必须从该附件中更新)。
 
 
 
http://www.cadtutor.net/forum/showthread.php?39166
https://www.cadtutor.net/forum/uploads/monthly_2012_03/References.jpg.cbb51d053d5f43f310cb5a0c46fa839f.jpg
页: [1]
查看完整版本: 获取图形属性externa