上次寫過一篇車位的線性編號,其實以前還寫過乙個根據面積在區域內給車位編號的方法。這兩天整理檔案的時候找到了,便稍稍優化在這裡記錄一下。
這個dynamo檔案的執行邏輯是首先根據選擇的標高和面積的關鍵字找到對應的車位和面積,然後獲取面積的邊界,判定車位是否在各個面積內,最後分別在各個面積內對車位進行計數及編號。
示例:
節點:
要點解析:
1、過濾出對應的面積和車位——一次給整個專案的車位編號也是可以的,但這裡為了執行起來更可控,還是做了乙個基於標高的控制。執行前先選擇乙個標高,然後檢測所有面積和車位的標高引數,把符合條件的元素過濾出來。這裡有個小問題就是通過element.getparametersvaluebyname節點獲取車位的標高的時候返回的是標高元素,同樣方法獲取面積的標高引數返回的卻是標高名稱,所以過濾車位的時候需要增加乙個element.name節點來獲取標高名稱。獲得所有元素的標高名稱後再做乙個判斷,通過布林過濾器就可以獲得對應的圖元了;
2、獲得用於計算的車位位置——雖然獲得了乙個標高的車位,但是一些車位本身可能有高度的偏移量,所以使用了車位位置的x值、y值與標高的高度建立了新的點,用於與面積進行相交判斷;
3、獲取面積邊界——這個其實挺麻煩的,因為沒有可以直接取得面積邊界的自帶節點,一開始的思路是先獲取所有面積邊界線,根據邊界線與面積位置做空間上的判定,最後就取得各個面積的邊界,但實際弄的時候感覺太繁瑣了,最後還是寫了乙個python節點來取得面積的邊界。取了面積邊界後生成一下面,用車位位置與各個面進行相交判斷,就可找出各個面積上對應的車位;
4、編號——編號方法還是要根據實際情況寫的,這裡簡單的用sortbykey節點根據車位位置的x值+y值進行編號,效果就是會由左下致右上編。要注意的是編號前要將沒有車位的面積給剔除掉,不然的話就會報錯。
python節點核心**:
#解包
areas = unwrapelement(in[0])
_list =
#遍歷面積,取得面積邊界
for a in areas:
linelist = list()
options = spatialelementboundaryoptions()
for boundarylist in a.getboundarysegments(options):
for boundary in boundarylist:
out = _list
dynamo方程怎麼寫 Dynamo入門指南
熟練使用dynamo的前提就是熟悉dynamo提供給我們的工具與使用工具的方法,工具就是dynamo內提供的一系列節點包,使用工具的方法就是呼叫節點的計算機語言,主要包括designscript語言 python語言等等。dynamo的節點有點類似於python中 包 或者 模組 的概念,通過反覆呼...
Dynamo開啟之旅 Python Script
在寫這篇文章之前,玩過幾個月的dynamo,當時也是不會revit二次開發,不會程式設計,玩的不好,很痛苦,自己不能做出很好的作品,只能模仿別人的文章,後來轉去學習二次開發,現在程式設計能力大大提高,在回頭來玩dynamo,感覺很簡單,一上手就不想用節點,直接python script敲 不過前面學...
地磁車位檢測
關於地磁車位檢測的演算法,網上 很多,我也看了很多篇此類的 但真正實用的,操作起來也很複雜,有些是根據地磁的偏轉角來實現的,有的是根據乙個z軸來實現的,實施起來,安裝的時候都有方向限制,很不方便。我實現的這個車位檢測演算法,相對簡單很多,我們先看下這個圖 這個是實際出車時候的地磁變化,要實現起來也就...