我工作的公司正在转向Pandas,并希望在IronPython中重建旧的C#应用程序。我正在尝试将我用C#构建的AutoCAD自动化转换为IronPython我遇到了错误。我正在尝试使用clr从AutoCAD的API库加载dll。
参考代码:
import clr
path = "C:\\Program Files\\Autodesk\\Autodesk AutoCAD Civil 3D 2014\\"
clr.AddReferenceToFileAndPath(path + "AcCoreMgd.dll")
clr.AddReferenceToFileAndPath(path + "AcDbMgd.dll")
clr.AddReferenceToFileAndPath(path + "AcMgd.dll")
clr.AddReferenceToFileAndPath(path + "AcMgdInternal.dll")
错误:
SystemError:无法加载文件或程序集'accoremgd,Version = 19.1.0.0,Culture = neutral,PublicKeyToken = null'。这个程序集是为不同的处理器编译的。
我有点困惑,因为我在Visual Studio中使用我目前用来将其转换为IronPython的同一台机器上构建了自动化。
答案 0 :(得分:0)
我不是Python(也不是IronPython)专家......但实际上AutoCAD安装文件夹中的DLL是包含所有引用的实际DLL。如果您从ObjectARX SDK中获取DLL,在\ inc \文件夹中,那么您将拥有一个没有辅助引用的干净引用。从www.objectarx.com下载此sdk。
请注意,如果您使用这些DLL,则必须在AutoCAD上加载您的应用程序。不确定是否可以使用Python(不是专家)来完成。我知道你可以NETLOAD(适用于.NET应用程序)。
如果您正在开发一个与AutoCAD通信的外部应用程序,那么您应该使用COM Interop。请参阅此帖子中的评论:Trying to read data from a DWG using Autodesk.AutoCAD.DatabaseService What DLL do I need to reference to?
答案 1 :(得分:0)
我正在使用AutoCAD 2015而不是加载' acmgdinternal.dll'我加载了以下dll' accoremgd.dll'和' acdbmgdbrep.dll'像这样
#clr.AddReferenceToFileAndPath(path + 'acmgdinternal.dll')
clr.AddReferenceToFileAndPath(path + 'accoremgd.dll')
clr.AddReferenceToFileAndPath(path + 'acdbmgdbrep.dll')
我不确定是否需要两个dll,所以我加载它们。我之所以选择它们是因为我在使用C#调试dll时使用它们,例如PythonLoader和PYLOAD来自Kean Walmsley的文章here
我希望这会有所帮助。