處理ImportInstance的原理及區別
Dynamo內置節點對於ImportInstance的圖形提取,僅僅是簡單的將所有的線條提取出來,而線條所包含的額外信息如圖層等,是不進行解析輸出的。這樣的節點提取出來的數據,將無法區分是WALL還是WINDOWS,在後繼的分類處理中明顯十分不便。而且對於這樣一股腦的輸出,也沒有辦法通過程序演算法來對這些線進行分類和分組,畢竟線條在節點內重構時,僅有基本信息而沒有額外的附加信息。
但是這種附加信息在ImportInstance中其實是存在的,只不過藏得比較深,需要多一些挖掘。曲線的圖層信息保存在圖形的GraphicsStyle裡面,通過獲取圖形對應的GraphicsStyle及其Category的名稱(Name),我們就可以獲取到曲線所在的DWG圖層名稱。這個Python代碼如下:
## input:crvnLayerName = DOC.GetElement(crv.GraphicsStyleId).GraphicsStyleCategory.Namen
通過這個簡單的挖掘,就可以將每條曲線對應所在的圖層提取出來,而這樣的圖層的組合,也是我們可以從ImportInstance裡面提取的圖層名稱信息。
BimporphNodes軟體包和LinkDWG軟體包都是使用相同的方法來對ImportInstance中的曲線進行按層的分組,但是兩者也略有不同,主要是對Polyline的處理:
- BimporphNodes軟體包將Polyline轉換成直線段的組合,並與其他平級的曲線放在一起。會增加整體的曲線數量
- LinkDWG軟體包
將Polyline轉換成僅有直線段的PolyCurve,保持與Polyline的對應,不增加曲線數量

同時請注意:此截圖非正式發布版本,僅為過程版本,正式版本將有更多選項控制和輸出,詳細請跳轉到處理ImportInstance的擴充
在對ImportInstance數據的解析代碼方面,LinkDWG軟體包因為是重新設計,也相對要精簡的多,更加容易讀懂和理解。同時,LinkDWG軟體包還輸出API曲線列表,形式為Autodesk.Revit.DB.Line、Autodesk.Revit.DB.Arc、Autodesk.Revit.DB.Polyline等,方便後繼主要在這些曲線的基礎上進一步做處理工作。
這些區別的視頻演示已經錄製完成並上線,歡迎加入姑娘課堂的Dynamo的ActiveX技術應用:LinkDWG課程進行觀看學習。
推薦閱讀:
※為什麼像國內的廣聯達,斯維爾出的模型,不能被叫做 BIM?
※關於 BIM 遇到的技術、流程、軟體上的問題,應該去哪裡找資料和答案?
※Revit 的前景如何?
※不做什麼事情能讓BIM更順利實施?
※使用Revit時,是否碰到過模型損壞無法打開的問題?碰到這種問題,你們項目團隊是如何解決的?
TAG:AutoDeskRevit | AutoCAD | BIM |
