點(diǎn)亮建筑新夢想
LIGHT BUILDING NEW DREAM
企業(yè)BIM定制培訓(xùn)服務(wù)經(jīng)典案例
每日一技 | 1070 Dynamo輸出指定區(qū)間內(nèi)的三維曲線(文/腿腿教學(xué)網(wǎng)) 二維碼
每日一技 | 1070 Dynamo輸出指定區(qū)間內(nèi)的三維曲線 【文 / 腿腿教學(xué)網(wǎng)】 【審核 / 許述超】 在“BIM每日一技”(ID:bimDaily)第1066期(每日一技 | 1066 Dynamo將三維曲線轉(zhuǎn)換為公制體量)中的方法只能夠輸出全部的三維曲線,但是有時我們需要輸出指定里程區(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。 2. 獲取投影的曲線 2.1 由于里程的計(jì)算是根據(jù)平曲線的弧長,因此需要將三維曲線轉(zhuǎn)換為平曲線。 2.2 通過節(jié)點(diǎn)Curve.Project將樣條曲線投影至平面XY,投影的方向是向量(0,0,-1)。 2.3 投影的結(jié)果存放在列表中,因此將其用x[0][0]提取出來。 3. 輸出指定里程區(qū)間的起點(diǎn)與終點(diǎn) 3.1 節(jié)點(diǎn)CodeBlock中需要三個參數(shù),cur表示投影后的平曲線,len1表示里程區(qū)間的起點(diǎn),len2表示里程區(qū)間的終點(diǎn)。 3.2 節(jié)點(diǎn)Curve.PlaneAtSegmentLength可以獲取指定弧長位置的平面,得到兩個平面以后將它們存放在列表中。 3.3 節(jié)點(diǎn)Geometry.IntersectAll可以求幾何圖形的交集,我們求的交集是三維曲線與兩個平面的交集。 3.4 線與平面的交集是點(diǎn),因此我們就得到了指定里程區(qū)間中三維曲線對應(yīng)的起點(diǎn)與終點(diǎn)。 4. 獲取里程區(qū)間內(nèi)的曲線 4.1 節(jié)點(diǎn)Curve.ParameterAtPoint可以獲取里程的起點(diǎn)與終點(diǎn)在三維曲線上的參數(shù)值。 4.2 通過x[0][0]和x[1][0]獲取這兩個參數(shù)值。 4.3 節(jié)點(diǎn)Curve.TrimByParameter可以保留指定參數(shù)區(qū)間的曲線,保留的結(jié)果就是指定里程區(qū)間的三維曲線。 5. 導(dǎo)出三維曲線 5.1 通過節(jié)點(diǎn)Curve.PointAtParameter獲取里程區(qū)間內(nèi)三維曲線的點(diǎn),點(diǎn)的數(shù)量與CodeBlock有關(guān),圖中是101個點(diǎn)。 5.2 通過節(jié)點(diǎn)ReferencePoint.ByPoint將點(diǎn)轉(zhuǎn)換為公制體量中的參照點(diǎn)。 5.3 通過節(jié)點(diǎn)CurveByPoints.ByReferencePoints連接參照點(diǎn)生成模型線,輸入端isReferenceLine控制是否為參照線。 6. 應(yīng)用程序
文章分類:
每日一技
|