C#Revit API-如何从AutoCAD文件中提取信息

问题描述 投票:1回答:1

过去一个月我一直在努力,正在努力建立最终的联系。

到目前为止,我可以打开Revit,通过Revit按钮执行Autocad DLL,但是我不知道如何将信息拉回到Revit API中。我尝试了几种不同的方法,但是我碰壁了。这是我尝试过并在下面进行解释的选项

1)使用类将DLL文件和Revit Button API文件组合为一个。--->尝试这种方法时,加载现有的CAD文件时会出错。如果我正在创建新的CAD文件,或者在Autocad设置为Debug的情况下自行运行DLL,则不会出现此错误。

Grabbing CAD file failed. 
Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
e.StackTrace: 
   at AcDbDatabase.{ctor}(AcDbDatabase* , Boolean , Boolean )
   at Autodesk.AutoCAD.DatabaseServices.Database..ctor(Boolean buildDefaultDrawing, Boolean noDocument)
   at CAD2Revit.AutoCadOperations.grabCAD(String filepath)
   at CAD2Revit.Command.Execute(ExternalCommandData commandData, String& message, ElementSet elements)

尝试运行此行时:

// Create a database and try to load the file
Autodesk.AutoCAD.DatabaseServices.Database db = new Database(false, true); // error occuring here often

我已经对该错误进行了一些研究,这是唯一的一次失败

2)分开放置->在此选项中,我已经弄清楚了如何以编程方式打开AutoCAD,净加载DLL,然后执行它以获取文件信息,但随后我无法将信息返回给Revit API

关于如何处理此问题的任何智慧或建议,我们都会感激不尽。

这是我所见过的与此类似的最近的帖子,但我认为它在VB中已经超出我的范围。https://forums.autodesk.com/t5/net/system-accessviolationexception-attempted-to-read-or-write/td-p/4796397

c# autocad revit-api autocad-plugin
1个回答
0
投票

我看不出为什么会出现这样的问题。如果其他所有方法均失败,则可以始终单击use IPC to separate the two processes。但是,实际上并不需要这样做。

© www.soinside.com 2019 - 2024. All rights reserved.