提起與AutoCAD進行資料互動,相信99%的人會想到連結或者匯入DWG檔案,再對連結的ImportInstance進行處理。但是Dynamo內建節點處理這種ImportInstance的能力還很差,只能提取出其中的曲線,還分不出層來,連結檔案內的文字等資訊也統統缺失。

好在有軟體包可以擴充,對於讀取連結的DWG,BimorphNodes軟體包可以幫助我們對連結檔案內的曲線進行按層的提取,這大大方便了工作流程,不必在AutoCAD中按層輸出多個DWG,再全部連結進Revit而只需要連結主體一個DWG即可,按層的曲線分解工作可以在Dynamo中進行。

Dynamo應用秘籍:21:利用ActiveX打通與AutoCAD的實時資料傳遞

Dynamo應用秘籍:21:利用ActiveX打通與AutoCAD的實時資料傳遞

然後還有DynamoCAD軟體包,可以提供對當前AutoCAD文件的一些實時連結讀取。透過Dynamo裡面的Python Script節點呼叫System資源,可以實現與ActiveX技術的對接,這種對接可以幫助我們實現一種非常酷的應用靈活度:直接與當前的AutoCAD文件進行實時互動。這也是DynamoCAD軟體包的基本核心思路。

透過對BimorphNodes軟體包及DynamoCAD軟體包的分析和參考,KozMos擴充了一個LinkDWG的軟體包,將處理DWG圖形資料的方式按照實時連結(ActiveX)和Revit內檔案連結(ImportInstance)兩種,並已經編制了幾個基本的處理節點:

Dynamo應用秘籍:21:利用ActiveX打通與AutoCAD的實時資料傳遞

Dynamo應用秘籍:21:利用ActiveX打通與AutoCAD的實時資料傳遞

如ActiveX。GetLayers節點可以直接讀取到當前AutoCAD文件中的圖層列表,執行後如下圖:

Dynamo應用秘籍:21:利用ActiveX打通與AutoCAD的實時資料傳遞

Dynamo應用秘籍:21:利用ActiveX打通與AutoCAD的實時資料傳遞

因為還沒有做足夠的測試,LinkDWG暫時不會公開對外發布。這裡只是介紹一下啟動連結當前AutoCAD的Python Script程式碼,非常簡單,只需要三行:

import System

app = System。Runtime。InteropServices。Marshal。GetActiveObject(“AutoCAD。Application”)

OUT = app。ActiveDocument

這段程式碼就能捕捉到當前活動的AutoCAD文件,後面就可以使用ActiveX技術對DOC進行一層層的解析來獲取相應的資料,但那就是另外一番天地的故事了,有興趣的可以進行學習研究。

Dynamo應用秘籍:21:利用ActiveX打通與AutoCAD的實時資料傳遞

Dynamo應用秘籍:21:利用ActiveX打通與AutoCAD的實時資料傳遞

PS:

如果把“AutoCAD。Application”換成“Excel。Application”,也是可以捕捉到當前的Excel文件的。

連載連結:

上一篇 << ooo >> 下一篇