revit系列-關(guān)于查表函數(shù)與管件活族
一、查表函數(shù)size_lookup()
在Revit公式中有一個(gè)函數(shù):Size_lookup()這個(gè)函數(shù)的功能就是查表,在官方介紹里,
它的語法如下:

把上面的總結(jié)一下,就是根據(jù)你提供的數(shù)據(jù),在格式為CSV的表格里查找數(shù)據(jù),主要用于機(jī)電族。通過預(yù)先定義的表格,可以根據(jù)表格中的規(guī)則來控制零件的大小數(shù)量。并且在公式中留下了余地,在找不到時(shí)也可以自己指定值。
新建一個(gè)族,創(chuàng)建一個(gè)使用查找表格公式的參數(shù)來舉例。
首先我們定義好如下的參數(shù)

Revit中自帶的表格默認(rèn)在這個(gè)路徑
C:\ProgramData\Autodesk\RVT 2018\Lookup Tables\Pipe
標(biāo)紅的是隱藏文件夾,標(biāo)黃的隨revit版本變化。
這里我們選用Tee - Generic.csv這個(gè)文件。首先我們打開它,觀察它的結(jié)構(gòu)。
可以看到,就是一張表。

它的結(jié)構(gòu)是這樣的,第一列不參與查找,只是每一行的一個(gè)命名而已,每一行都是一組數(shù)據(jù)。
后面的列會參加查找,除了第一列,每一列的第一行都有標(biāo)題。
這個(gè)標(biāo)題的格式很重要,在revit的官方幫助中,對它的描述如下

翻譯過來,標(biāo)題的格式如下
?? 參數(shù)名稱##參數(shù)類型##參數(shù)單位
第一個(gè),參數(shù)的名稱,這個(gè)就是在查找表格函數(shù)中第二個(gè)參數(shù)的來源,函數(shù)中用這個(gè)來定位要查找后要返回的列,如果要自定義的話,寫中文也無所謂。
第二個(gè)參數(shù)的類型,這個(gè)與revit中的參數(shù)類型對應(yīng),但這里填寫時(shí)必須是英文,并且文檔中也說了,這里支持它給出的幾種參數(shù)。英文對印的是(NUMBER整數(shù),LENGTH長度,AREA面積,VOLUME體積,ANGLE角度,OTHER其他),查找之后返回的參數(shù)就是這個(gè)類型。
第三個(gè),參數(shù)的單位這個(gè),就不用說了就是單位而已,也必需填寫英文。填寫revit中支持的單位。需要注意的是哪怕是面積體積等,填寫單位也只要填米(meters)或毫米(millimeters)等底層單位,而不必填平方米(Square meters)等單位。同樣查找后返回的參數(shù)的單位就是這個(gè)單位。
現(xiàn)在我們了解了Revit中CSV文件的格式了,甚至可以自己建立一個(gè)CSV文件。于是我們就可以輕松的使用size_lookup函數(shù)了??催@個(gè)函數(shù)。

括號中第一個(gè)值"Tee - Generic",這是表格的名稱,注意,加引號表示這是字符串,如果不加引號,就代表這是參數(shù)。
第二個(gè)值"FOD",這是第三列標(biāo)題中的參數(shù)名稱,這就代表我要返回的值來自于第三列。
第三個(gè)值2000 mm,這是查找不成功的時(shí)候要返回的值,由于這里是演示,我隨時(shí)打了個(gè)2000。方便體現(xiàn)查找不成功的效果,
第四個(gè)值 公稱直徑,這是我自己定義的參數(shù),函數(shù)會在第二列中尋找這個(gè)參數(shù)的值,最后返回指定的列中與它在同一行的值。



但是這個(gè)函數(shù)還不只有4個(gè)輸入值,看它的說明

它后面還可以輸入更多的值,當(dāng)然,后面的值同上面的公稱直徑一樣,是用于查找的,并且這些值在查找時(shí)是依次查找的第四個(gè)值在第二列中查找,第五個(gè)值就在第三列中查找。并且這些值之間是一個(gè)“且”的關(guān)系,也就是說要同一行中要找的到這兩個(gè)值才會查找成功。
我將公式更改,可以看到,第四個(gè)值在第二列中存在,第五個(gè)值在第三列中不存在,所以查找失敗了。

這里我將值改一改,將第五個(gè)值改為第三列中存在,但不與第四個(gè)值在同一行,可以看到,依舊是查找失敗。

現(xiàn)在將值更改為在同一行的,現(xiàn)在才查找成功。

上半部分總結(jié):經(jīng)過了這么長的篇幅,相信你基本完全弄懂了size_lookup函數(shù)的用法了,也弄懂了CSV文件的結(jié)構(gòu)了。
這個(gè)函數(shù)其實(shí)就是在構(gòu)件的對應(yīng)尺寸形狀變化增量或減量不均勻,無法使用簡單的公式來控制尺寸時(shí)的一個(gè)替代方案。
所以其實(shí)你不使用這個(gè)函數(shù)也能建立活族,但想做出這種公稱直徑對應(yīng)實(shí)際內(nèi)外徑的效果,就一定需要這個(gè)函數(shù)。
并且這個(gè)函數(shù)不一定要用在管件族,對應(yīng)那種有規(guī)范的,有附屬零件按表變化的構(gòu)件你都可以自定義CSV文件以使用這個(gè)函數(shù)。
二、管件族建立
這里就來進(jìn)行實(shí)際的使用,通過這個(gè)函數(shù),來制作可隨公稱直徑更改外徑的大小的管件活族。這個(gè)族參照網(wǎng)上的視頻,但我對它進(jìn)行了優(yōu)化,主要參數(shù)更少,轉(zhuǎn)向更靈活。
這里我們來建立一個(gè)變徑三通,首先我們以公制常規(guī)模型創(chuàng)建一個(gè)族,對照三通的形狀來創(chuàng)建一個(gè)基本的模型。
創(chuàng)建一條參照線,這是主管的路徑。

將線鎖定到這個(gè)水平參照平面上

要確定鎖定的位置時(shí),可以使用對齊這個(gè)命令。將要對齊的兩個(gè)要素對齊就會自動彈出鎖定按鈕,現(xiàn)在畫第二條線,這是支管路徑,將支管的一個(gè)端點(diǎn)與上面的那個(gè)水平參照平面對齊鎖定,再將這個(gè)端點(diǎn)與垂直的參照平面對齊鎖定。對齊時(shí)一定要選到參照線的端點(diǎn),使用TAB鍵切換對齊的對象。
這是為了讓參照線可以按參照平面的交點(diǎn)旋轉(zhuǎn)。


對齊鎖定后,添加尺寸約束與參數(shù),更改參數(shù),測試一下這個(gè)鎖定是否達(dá)到了效果,很明顯,達(dá)到了我的要求。


這里插一句,測試族是很重要的,官方的文檔里都有明確說明。

現(xiàn)在我們來創(chuàng)建一部分參數(shù)并關(guān)聯(lián),這里我們參考官方族庫里的族,先創(chuàng)建這些參數(shù),要注意的是,在管件族中,所有的尺寸標(biāo)注都是實(shí)例參數(shù),我列一下這些參數(shù)。
主管公稱直徑、主管外徑,中心到主管端點(diǎn)距離,支管公稱直徑,支管外徑,中心到支管端點(diǎn)距離 ,角度。這些參數(shù)的名字都很明了,由名字就了解了這些參數(shù)的作用。

這里,為了使用查找表格函數(shù),點(diǎn)擊管理表格,將要使用的表格導(dǎo)入進(jìn)來,這里還是使用
“Tee - Generic.CSV”這個(gè)表格文件。導(dǎo)入的方式上文已經(jīng)說了,這里就不再贅述。
但是為了更方便的更改表格并且在創(chuàng)建后易于檢查表格名稱,所以我再創(chuàng)建一個(gè)參數(shù),“查找表格名稱”類型選為文字,分類到其他里面,并且這個(gè)是類型參數(shù)。

給這些參數(shù)給一個(gè)初始值,使輸入公式時(shí)不會被零除,關(guān)聯(lián)參數(shù)時(shí)不會報(bào)錯。查找表格名稱的值填寫為導(dǎo)入表格的名稱。

現(xiàn)在在創(chuàng)建圖形的同時(shí)關(guān)聯(lián)參數(shù)。這里先關(guān)聯(lián)“中心到主管端點(diǎn)距離”“中心到支管端點(diǎn)距離”這兩個(gè)參數(shù)到參照線上并且eq等分主管的路徑,注意,關(guān)聯(lián)“中心到支管端點(diǎn)距離”時(shí),尺寸約束一定要約束到兩個(gè)端點(diǎn)上。

關(guān)聯(lián)好這兩個(gè)參數(shù)后,使用放樣拾取參照線為路徑創(chuàng)建主管與支管,并把主管與支管的外徑關(guān)聯(lián)到草圖上


使用連接功能后就是這個(gè)樣子。測試一下參數(shù),正常

現(xiàn)在來對參數(shù)輸入公式
首先,使用size_lookup函數(shù)將公稱直徑與外徑對應(yīng)起來

然后,問題來了,就是支管的旋轉(zhuǎn)角度與中心到端點(diǎn)的兩個(gè)距離關(guān)系。
看下圖,現(xiàn)在是90度,沒有問題

現(xiàn)在將支管的角度改為30度,問題來了,支管啃進(jìn)主管里了。

這個(gè)時(shí)候,我們來理一理思路。
第一點(diǎn),為什么會這樣:支管的長度太短,從連接中心處發(fā)后截面還沒有完全露出來。反之,如果主管的長度太短。那么也會出現(xiàn)這樣的問題。
第二點(diǎn),要怎么解決:觀察它們的關(guān)系,如果要它們永遠(yuǎn)不會出現(xiàn)不完全露出的問題,那么就需要與兩個(gè)與管道長度相關(guān)的參數(shù)是同時(shí)變化的,那就需要公式,既然是角度導(dǎo)致了這個(gè)問題,決定這兩個(gè)參數(shù)的值的公式中的變量一定有角度。
那么,下面就來看具體的解決辦法,首先需要推導(dǎo)出公式,我們到平面圖里做幾條輔助線來看看。

那條曲線不用管,我是直接在revit里截的圖,那是構(gòu)件連接處。由這幅圖可以得出,如果從主管與支管的交接處來看,將由這個(gè)交接處作垂直線到支管中心線,在支管上所截出的長度就剛好是C+D:如果做垂線到主管中心,那截出的長度就是A+B。
那么問題就解決了,如果讓中心到支管(主管)端點(diǎn)的長度永遠(yuǎn)都比C+D(A+B)大一點(diǎn),那么就永遠(yuǎn)不會出現(xiàn)啃進(jìn)去的問題了
那現(xiàn)在就需要使用已知的條件推導(dǎo)出ABCD的長就好了,現(xiàn)在已知支管外半徑,主管外半徑與旋轉(zhuǎn)角度。經(jīng)過推導(dǎo),是可以得出ABCD的,不需要添加條件。推導(dǎo)的過程就不寫了,就是一個(gè)相似三角形,然后三角函數(shù)就可以了。
為了計(jì)算要定義一個(gè)角a,當(dāng)旋轉(zhuǎn)角度大于90度時(shí)等于旋轉(zhuǎn)角度-90度,當(dāng)旋轉(zhuǎn)角度小于90-旋轉(zhuǎn)角度。得出ABCD的長度如下。
?
A = tan(a)*主管外半徑
B = 支管外半徑/COS(a)
C = 主管外半徑/cos(a)
D = tan(a)*支管外半徑
?
現(xiàn)在來添加公式與參數(shù),由上文可知需要定義一個(gè)角a,這里我就新建一個(gè)角度參數(shù)余角,并給它添加公式,并且新建ABCD四個(gè)參數(shù),便于檢查。

將上面這些參數(shù)添加到“中心到支管(主管)端點(diǎn)”這兩個(gè)參數(shù)中去,并加個(gè)40mm。

好,參數(shù)方面就徹底完工了,測試一下,效果還可以,其實(shí)還能細(xì)化,這里就不演示了。



然后,為了讓它能連接管道,還需要給它添加管道連接口,先更改族類型為管件。零件類型為三通。

然后添加管道連接口,第一個(gè)管道連接口一定要放在主管上,放好之后將連接口的系統(tǒng)分類改為管件。

然后將連接口關(guān)聯(lián)上對應(yīng)的參數(shù),對應(yīng)的公稱直徑,這里關(guān)聯(lián)的參數(shù)它的值一定不能是由公式定義的。否則在布管系統(tǒng)中無法按管徑變化大小。

對應(yīng)于支管上的連接口,還要關(guān)聯(lián)上角度參數(shù),否則布管系統(tǒng)無法對應(yīng)角度

然后將主管上的兩個(gè)連接口鏈接起來,表明在同一條管上。

出現(xiàn)了雙向箭頭,就連接成功了。

新建一個(gè)項(xiàng)目,載入這個(gè)族,將它配置進(jìn)布管系統(tǒng)。測試一下,

效果如下。
?
二維效果

三維效果
