接著昨天的示例,繼續創建梁,這次展示以橢圓弧、Nurbs為軸線。
創建以橢圓弧為軸線的梁
橢圓弧曲線的創建:
# 創建橢圓弧
def CreateEllipse(ctx : MyContext, z: float) -> DB.Curve:"""create a horizontal partial ellipse instance with specified z coordinate value"""session = ctx.sessioncenter = DB.XYZ.ctor(session, m2feet(15), m2feet(-10), z);radX = m2feet(3.0)radY = m2feet(5.0)xVec = DB.XYZ.ctor(session, 1, 0, 0);yVec = DB.XYZ.ctor(session, 0, 1, 0);param0 = deg2rad(0)param1 = deg2rad(180)ellpise = DB.Ellipse.CreateCurve(session, center, radX, radY, xVec, yVec, param0, param1)return ellpise
批量創建梁:
與昨天的一樣,只需要將curve = CreateArc(ctx, levelZ) 替換為?curve = CreateEllipse(ctx, levelZ)即可。生成結果:
3D
創建以Nurbs為軸線的梁
Nurbs的創建:
# 創建Nurbs曲線
def CreateNurbSpline(ctx : MyContext, z: float) -> DB.Curve:"""create a horizontal nurbspline instance with specified z coordinate value"""session = ctx.sessionnumPoints = 5;outerRadius = 5.0;innerRadius = outerRadius * math.cos(math.pi / 10) / math.cos(3 * math.pi / 10)startAngleDeg = 90.0;weights = Revit.ListDouble.ctor(session)# create control points with same z valuectrPoints = DB.ListXYZ.ctor(session)for i in range(numPoints * 2):angleDeg = startAngleDeg - i * 360.0 / (numPoints * 2)angleRad = angleDeg * math.pi / 180.0if i % 2 == 1:radius = outerRadiuselse:radius = innerRadiusx = radius * math.cos(angleRad)y = radius * math.sin(angleRad)ctrPoints.Add(DB.XYZ.ctor(session, m2feet(x), m2feet(y), z))weights.Add(1)nurbSpline = DB.NurbSpline.CreateCurve(session, ctrPoints, weights)return nurbSpline
批量創建梁:
同樣,只需要將curve = CreateArc(ctx, levelZ) 替換為?curve = CreateNurbSpline(ctx, levelZ)即可(注:不同的Nurbs幾何形狀/大小會影響FamilySymbol實例的創建,可能會因約束不滿足而創建失敗。這是正常的與手工創建無異)。生成結果:
3D
自動完成:啟動Revit => 創建項目 => 批量創建 => 保存項目文檔 => 結束Revit 全程無需手工操作。有了DRVT的加持,Revit插件的核心能力可以在外面用Python腳本輕松駕馭。
相關文章
Python+DRVT 從外部調用 Revit:從外部啟動 Revit-CSDN博客
Python+DRVT 從外部調用 Revit:打開項目文件-CSDN博客
Python+DRVT 從外部調用 Revit:獲取項目信息-CSDN博客
Python+DRVT 從外部調用 Revit:更新項目信息-CSDN博客
Python+DRVT 從外部調用 Revit:第一個完整示例-CSDN博客
Python+DRVT 從外部調用 Revit:創建新項目-CSDN博客
Python+DRVT 從外部調用 Revit:創建族文檔-CSDN博客
Python+DRVT 從外部調用 Revit:批量創建軸網-CSDN博客
Python+DRVT 從外部調用 Revit:批量創建標高-CSDN博客
Python+DRVT 從外部調用 Revit:創建風管系統加勁肋-CSDN博客
Python+DRVT 從外部調用 Revit:創建剖面-CSDN博客
Python+DRVT 從外部調用 Revit:創建桁架族-CSDN博客
Python+DRVT 從外部調用 Revit:批量創建墻-CSDN博客
Python+DRVT 從外部調用 Revit:批量創建門-CSDN博客
Python+DRVT 從外部調用 Revit:批量創建門和窗-CSDN博客
Python+DRVT 從外部調用 Revit:批量創建梁-CSDN博客
深度嵌入數字化工作流:DRVT 的思考與實踐-CSDN博客
從插件化走向系統集成——Revit-CSDN博客
Revit變身智能組件,BIM未來可期-CSDN博客
#SystemIntegration #Revit #RevitAPI #Python #Automation #DesignAutomation #BIM #Interop #AEC #DigitalTwin #Workflow