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

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

NULL

ad.jpg

Dynamo輸出指定區(qū)間內(nèi)的三維曲線

發(fā)布于:2019-06-04 10:57:36

來(lái)福

更多

在技術(shù)文章Dynamo將三維曲線轉(zhuǎn)換為公制體量 http://photo.tuituisoft.com/blog/2747.html 中的方法只能夠輸出全部的三維曲線,但是有時(shí)我們需要輸出指定里程區(qū)間內(nèi)的三維曲線。

1、獲取樣條曲線

1.1 節(jié)點(diǎn)Select Model Element拾取Revit中導(dǎo)入的圖紙。

1.2 節(jié)點(diǎn)Element.Geometry將獲取的圖元轉(zhuǎn)換為Dynamo中的幾何圖形。

1.3 將PolyCurve轉(zhuǎn)換為NurbsCurve http://photo.tuituisoft.com/blog/2101.html 。

01 獲取三維曲線.png

2、獲取投影的曲線

2.1 由于里程的計(jì)算是根據(jù)平曲線的弧長(zhǎng),因此需要將三維曲線轉(zhuǎn)換為平曲線。

2.2 通過(guò)節(jié)點(diǎn)Curve.Project將樣條曲線投影至平面XY,投影的方向是向量(0,0,-1)。

2.3 投影的結(jié)果存放在列表中,因此將其用x[0][0]提取出來(lái)。

02 將曲線投影.png

3、輸出指定里程區(qū)間的起點(diǎn)與終點(diǎn)

3.1 節(jié)點(diǎn)CodeBlock中需要三個(gè)參數(shù),cur表示投影后的平曲線,len1表示里程區(qū)間的起點(diǎn),len2表示里程區(qū)間的終點(diǎn)。

3.2 節(jié)點(diǎn)Curve.PlaneAtSegmentLength可以獲取指定弧長(zhǎng)位置的平面,得到兩個(gè)平面以后將它們存放在列表中。

3.3 節(jié)點(diǎn)Geometry.IntersectAll可以求幾何圖形的交集,我們求的交集是三維曲線與兩個(gè)平面的交集。

3.4 線與平面的交集是點(diǎn),因此我們就得到了指定里程區(qū)間中三維曲線對(duì)應(yīng)的起點(diǎn)與終點(diǎn)

03 獲取交點(diǎn).png

4、獲取里程區(qū)間內(nèi)的曲線

4.1 節(jié)點(diǎn)Curve.ParameterAtPoint可以獲取里程的起點(diǎn)與終點(diǎn)在三維曲線上的參數(shù)值。

4.2 通過(guò)x[0][0]x[1][0]獲取這兩個(gè)參數(shù)值。

4.3 節(jié)點(diǎn)Curve.TrimByParameter可以保留指定參數(shù)區(qū)間的曲線,保留的結(jié)果就是指定里程區(qū)間的三維曲線

04 獲取曲線.png

5、導(dǎo)出三維曲線

5.1 通過(guò)節(jié)點(diǎn)Curve.PointAtParameter獲取里程區(qū)間內(nèi)三維曲線的點(diǎn),點(diǎn)的數(shù)量與CodeBlock有關(guān),圖中是101個(gè)點(diǎn)。

5.2 通過(guò)節(jié)點(diǎn)ReferencePoint.ByPoint將點(diǎn)轉(zhuǎn)換為公制體量中的參照點(diǎn)。

5.3 通過(guò)節(jié)點(diǎn)CurveByPoints.ByReferencePoints連接參照點(diǎn)生成模型線,輸入端isReferenceLine控制是否為參照線。

05 導(dǎo)出曲線.png6、應(yīng)用程序

06 運(yùn)行程序.gif

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

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

上一篇:在Revit的三維視圖中如何快速淡顯土建構(gòu)件

下一篇:Revit 如何在墻體上直接剪切矩形洞口?