最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Dynamo數(shù)據(jù)淘金——03//批量修改編碼并排序

2023-01-13 16:06 作者:非天生建筑師  | 我要投稿

常見(jiàn)需要編碼的數(shù)據(jù)有門(mén)窗、房間的編號(hào),一般情況下,在Revit建立好門(mén)窗、房間后,需要手動(dòng)輸入對(duì)應(yīng)信息.隨著模型的深入,這些構(gòu)件將不斷增加,數(shù)據(jù)也陡增.當(dāng)需要修改大量編碼時(shí),再按照前期手動(dòng)單個(gè)修改數(shù)據(jù)的辦法將是巨大的人力浪費(fèi).尤其是后期增刪部分編碼,需要對(duì)原有編碼進(jìn)行重新排序或統(tǒng)一格式時(shí),如何避免手動(dòng)修改的浪費(fèi)與錯(cuò)誤呢?這些問(wèn)題都將在本期解決.

以門(mén)編碼的修改為例.假設(shè)模型有200多個(gè)門(mén)編碼需要修改,本來(lái)是按照1\2\3\4\……202\203……這種順序排列的,后期因模型調(diào)整,增刪了多個(gè)門(mén),導(dǎo)致排序錯(cuò)亂,需要重新排序;而且要求門(mén)編號(hào)應(yīng)該增加統(tǒng)一前綴,改成M-AA-001\ M-AA-002\ M-AA-003\……的編碼形式.

在解決這個(gè)編碼問(wèn)題前,我們先看一下解決排序的經(jīng)典數(shù)學(xué)方法.

假定需要對(duì)下面幾個(gè)元素進(jìn)行排序(預(yù)定好了順序).

我們沿著順序繪制一條曲線,試圖從中找到他們排序的數(shù)學(xué)邏輯.

從每個(gè)元素的中心向曲線找最近點(diǎn),該點(diǎn)到起點(diǎn)的曲線長(zhǎng)度與曲線總長(zhǎng)度之比,分別為0.05、0.45、0.65、0.95.那么按照新得到的數(shù)字進(jìn)行排序,就是元素的順序.

好了,現(xiàn)在清楚了排序的數(shù)學(xué)邏輯.我們?cè)贇w納一遍.首先選擇全部元素(五邊形、圓形、四邊形、三角形),分別從元素的中心找到距離曲線最近的點(diǎn),每個(gè)點(diǎn)具有的參數(shù)(長(zhǎng)度占比參數(shù))就傳遞給了各個(gè)元素,按照這個(gè)參數(shù)對(duì)元素進(jìn)行排序即完成了排序目標(biāo).

回歸Revit,打開(kāi)一個(gè)案例文件,選擇一個(gè)門(mén)后,查看編號(hào)所對(duì)應(yīng)的參數(shù)——屬性列表中的”標(biāo)記”.然后在Dynamo中進(jìn)行操作.

(1)?選擇需要排序的門(mén)

為了方便演示,將使用Select Model Elements節(jié)點(diǎn)通過(guò)框選來(lái)選擇多個(gè)元素,但是框選會(huì)造成選擇不相關(guān)的元素(比如墻體等),這時(shí)就直接采用以下節(jié)點(diǎn)組合來(lái)實(shí)現(xiàn)框選后僅選擇門(mén)的操作.

框選后,門(mén)202-206將被選中,形成一個(gè)無(wú)序的列表.

通過(guò)Watch節(jié)點(diǎn)來(lái)觀察選中的元素列表.從中可以看出一共5個(gè)元素,即5個(gè)0915X2134mm的門(mén).

(2)?繪制參照曲線

繪制上述提到排序用的曲線,假定我們按照從左到右的順序?qū)@6個(gè)門(mén)進(jìn)行排序即,206變成了1的序號(hào),205變成2的序號(hào),204變成3的序號(hào),203變成4的序號(hào),202變成5的序號(hào),201變成6的序號(hào).那么,按照這個(gè)順序繪制曲線,保證曲線盡量靠近門(mén)即可.如下圖:

按照之前定下的原則,完成如下節(jié)點(diǎn).形成如下節(jié)點(diǎn)組合(理解大致思路即可,不用糾結(jié)每個(gè)節(jié)點(diǎn)),最后得到了這些點(diǎn)的參數(shù).

有一點(diǎn)需要注意.就是5個(gè)門(mén)具有5個(gè)”中心點(diǎn)”,但曲線卻只有一個(gè),在求5個(gè)中心點(diǎn)到曲線的最近點(diǎn)程序時(shí),默認(rèn)表達(dá)是這樣的:

獲取中心點(diǎn)[中心點(diǎn)1,中線點(diǎn)2,中心點(diǎn)3,中心點(diǎn)4,中心點(diǎn)5]到[曲線]的最近點(diǎn).

默認(rèn)是一對(duì)一,就是說(shuō)雖然有5個(gè)中心點(diǎn),由于曲線只有1個(gè),因此,拿取1個(gè)中心點(diǎn)(中心點(diǎn)1)與曲線對(duì)應(yīng).剩下的4個(gè)中心點(diǎn)將不被執(zhí)行.要將以下兩個(gè)節(jié)點(diǎn)連綴屬性改為”最長(zhǎng)”才可以實(shí)現(xiàn)全部執(zhí)行.

連綴是數(shù)據(jù)之間對(duì)應(yīng)的方法,這里不做說(shuō)明.此時(shí),已經(jīng)將5個(gè)門(mén)賦予了新的參數(shù),只需按照他們參數(shù)值進(jìn)行排序就可以實(shí)現(xiàn)排序目標(biāo)了.

在排序之前,我們有必要再引入一些概念.

在上一節(jié)中我們提到了列表的概念.因?yàn)镋xcel的數(shù)據(jù)結(jié)構(gòu)就是以列表的形式呈現(xiàn)的.比如列表list_0=[“非天生建筑師”,”數(shù)據(jù)淘金,100]具有三個(gè)元素(Item),而且每個(gè)元素還都具有索引(Index).

其中的內(nèi)容”非天生建筑師”是一個(gè)字符串,即String = ““非天生建筑師”,而這個(gè)字符串可以看作是一個(gè)”序列”,也就是說(shuō),它的每一個(gè)字符也具有索引(Index).

String[0] = “非”

String[1] = “天”

String[2] = “生”

……

如果Str_0 = “非天生”, Str_1= “建筑師”

那么Str_0 + Str_1---------“非天生建筑師”

也就是說(shuō)字符串(或者說(shuō)序列)可以進(jìn)行多種加減\切片等等多種操作.

因此編碼”M-AA-001”是由”M-AA-”+”001”組成,其中,”M-AA-”是固定字符串,”001”是排序1,前面補(bǔ)充了兩個(gè)0而已(3位數(shù)的排序?qū)懛?.

(3) 根據(jù)參數(shù)排序

再次回歸Dynamo,上述5個(gè)門(mén)已經(jīng)被賦予新的參數(shù),按照新參數(shù)對(duì)其進(jìn)行排序,如下:

那么如何將這些序號(hào)傳給門(mén)呢?有5個(gè)門(mén),因此順序應(yīng)該是1\2\3\4\5,如果有N個(gè)門(mén),則應(yīng)該是1\2\3……N,而N便是列表中元素的個(gè)數(shù).可以用List.Count節(jié)點(diǎn)來(lái)計(jì)算出列表中元素的數(shù)量.再用1..N..1的寫(xiě)法創(chuàng)建序號(hào)列表,最后用Set Parameters By Name節(jié)點(diǎn)將序號(hào)分別傳給門(mén)標(biāo)記.

排序后編碼如下:

(3) 統(tǒng)一編碼格式

1\2\3\4\5的編碼表達(dá)并不符合要求,最后就需要字符串(序列)的相關(guān)方法來(lái)統(tǒng)一編碼標(biāo)準(zhǔn).

最終結(jié)果如下圖:

好啦,大功告成!對(duì)于窗編碼、房間編碼等相關(guān)編碼的操作就完全一樣的啦,那么,今天你學(xué)廢了嗎?

Dynamo數(shù)據(jù)淘金——03//批量修改編碼并排序的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
平邑县| 泾源县| 达日县| 隆化县| 临湘市| 龙海市| 集贤县| 内江市| 江孜县| 阜宁县| 阿拉善盟| 大埔区| 江陵县| 黑水县| 赤城县| 新野县| 黄平县| 元阳县| 马公市| 波密县| 名山县| 龙州县| 万宁市| 蓬溪县| 沅江市| 泰安市| 丽水市| 曲沃县| 社会| 施秉县| 吉水县| 达拉特旗| 巴东县| 依兰县| 博湖县| 乌兰察布市| 东城区| 金堂县| 巴彦淖尔市| 大庆市| 益阳市|