完善主體資料,免費(fèi)贈(zèng)送VIP會(huì)員!
* 主體類(lèi)型
* 企業(yè)名稱(chēng)
* 信用代碼
* 所在行業(yè)
* 企業(yè)規(guī)模
* 所在職位
* 姓名
* 所在行業(yè)
* 學(xué)歷
* 工作性質(zhì)
請(qǐng)先選擇行業(yè)
您還可以選擇以下福利:
行業(yè)福利,領(lǐng)完即止!

下載app免費(fèi)領(lǐng)取會(huì)員

NULL

ad.jpg

Dynamo樣例文件解析之Core_Math(三)

發(fā)布于:2019-08-12 18:30:09

來(lái)福

更多

該樣例文件主要是介紹Dynamo中與Math相關(guān)的應(yīng)用,Dynamo中的數(shù)學(xué)可以通過(guò)公式節(jié)點(diǎn)“Formula”、代碼塊“Code Block”或者節(jié)點(diǎn)庫(kù)中與數(shù)學(xué)相關(guān)的節(jié)點(diǎn)完成。

10、這個(gè)例子以點(diǎn)的網(wǎng)格為起點(diǎn),計(jì)算點(diǎn)的Z坐標(biāo),然后生成曲面。

10.1 通過(guò)節(jié)點(diǎn)Code Block輸入公式“-10..10..#20”,生成一個(gè)從-10到10間距相等、項(xiàng)數(shù)為20的列表。

10.2 通過(guò)節(jié)點(diǎn)Point.ByCoordinates生成點(diǎn)圖元,連綴方式為叉積。

10.3 將生成的點(diǎn)列表經(jīng)過(guò)節(jié)點(diǎn)Flatten展平以后,獲取點(diǎn)的X分量和點(diǎn)的Y分量。

10.4 通過(guò)節(jié)點(diǎn)Math.Pow求步驟10.3中X分量的二次方和Y分量的二次方,然后用一個(gè)數(shù)字滑塊計(jì)算第三個(gè)二次方的結(jié)果。

10.5 做兩個(gè)加法運(yùn)算,獲得三個(gè)二次方結(jié)果的和。然后通過(guò)節(jié)點(diǎn)Math.Sqrt計(jì)算總和的平方根。由于X分量的二次方與Y分量的二次方都有不同的數(shù)值,因此它們的和也是不同的。

10.6 節(jié)點(diǎn)Math.RadiansToDegrees可以將以弧度為單位的角度轉(zhuǎn)化為以度為單位的角度,然后通過(guò)節(jié)點(diǎn)Math.Sin計(jì)算正弦值。最后正弦值的結(jié)果除以弧度后乘以一個(gè)系數(shù),這個(gè)系數(shù)由一個(gè)滑塊控制。

10.7 通過(guò)節(jié)點(diǎn)Point.ByCoordinates生成點(diǎn)圖元,點(diǎn)坐標(biāo)的X分量與Y分量和之前的點(diǎn)一樣,點(diǎn)坐標(biāo)的Z分量為步驟10.6中計(jì)算的結(jié)果。

10.8 有了點(diǎn)的列表之后,將大列表用節(jié)點(diǎn)List.Chop拆分為20個(gè)子列表,拆分后子列表的項(xiàng)數(shù)為步驟10.2中子列表的數(shù)量。

10.9 經(jīng)過(guò)節(jié)點(diǎn)NurbsCurve.ByPoints連線,可以直觀地查看到上一步子列表中點(diǎn)的存放規(guī)律,同一個(gè)子列表中的點(diǎn)生成一條樣條曲線,共20條。

10.10 最后用節(jié)點(diǎn)Surface.ByLoft將生成的樣條曲線通過(guò)融合命令生成曲面。

10.11 調(diào)整其中的兩個(gè)滑塊,可以調(diào)整整個(gè)圖形的形狀。

11、通過(guò)Python Script完成相同的效果。

11.1 打開(kāi)節(jié)點(diǎn)Python Script,在第5行將與數(shù)學(xué)相關(guān)的模塊導(dǎo)入。

11.2 第8行至第11行創(chuàng)建四個(gè)參數(shù)amp、x、y和c,分別對(duì)應(yīng)著四個(gè)輸入端IN[0]、IN[1]、IN[2]和IN[3]。

11.3 第14行創(chuàng)建一個(gè)空的列表,名稱(chēng)為z。

11.4 第17行創(chuàng)建一個(gè)for循環(huán)。參數(shù)x是一個(gè)列表,該列表共有20個(gè)索引項(xiàng),因此將會(huì)循環(huán)20次。

11.5 第18行至第21行是循環(huán)的主體,整個(gè)過(guò)程與步驟10中相關(guān)的節(jié)點(diǎn)功能一致。

11.6 第24行將第21行的結(jié)果放進(jìn)列表z,直到循環(huán)結(jié)束。

11.7 第27行將整個(gè)python Script的輸出結(jié)果定義為z,因此這個(gè)節(jié)點(diǎn)輸出的結(jié)果為列表z中的數(shù)值。

12、通過(guò)節(jié)點(diǎn)Formula完成相同的效果。

12.1 整個(gè)流程與普通節(jié)點(diǎn)的流程一致,不同點(diǎn)是節(jié)點(diǎn)Formula應(yīng)用的函數(shù)是屬于外部函數(shù),并不是Dynamo內(nèi)部的函數(shù),因此將角度處理為弧度。

12.2 在節(jié)點(diǎn)Formula中輸入公式“A * sin( sqrt( pow(x,2) + pow(y,2) + pow(c,2) ) ) / sqrt( pow(x,2) + pow(y,2) + pow(c,2) )”。

13、通過(guò)節(jié)點(diǎn)Code Block完成相同的效果。

13.1 節(jié)點(diǎn)Code Block調(diào)用的函數(shù)與Dynamo自帶的函數(shù)是一樣的,因此Code Block中的表達(dá)與普通節(jié)點(diǎn)是一樣的,因此運(yùn)用的函數(shù)名稱(chēng)與Dynamo中自帶的函數(shù)相匹配。

13.2 節(jié)點(diǎn)Code Block中依次輸入四行內(nèi)容。

13.3 第一行“ sum = Math.Pow(x,2) + Math.Pow(y,2) + Math.Pow(c,2);”。

13.4 第二行“num1 = Math.Sqrt(sum);”取平方根。

13.5 第三行“num2 = Math.Sin( Math.RadiansToDegrees(num1) );”將弧度轉(zhuǎn)化為度后計(jì)算正弦值。

13.6 第四行“A * num2 / num1;”。這四行內(nèi)容中應(yīng)用到的節(jié)點(diǎn)名稱(chēng)與普通節(jié)點(diǎn)的名稱(chēng)是一樣的,但是能夠添加參數(shù),讓表達(dá)更靈活、更簡(jiǎn)潔。

本文版權(quán)歸腿腿教學(xué)網(wǎng)及原創(chuàng)作者所有,未經(jīng)授權(quán),謝絕轉(zhuǎn)載。

未標(biāo)題-1.jpg

上一篇:Dynamo樣例文件解析之Core_Math(二)

下一篇:Revit放置風(fēng)管附件并調(diào)試設(shè)置?