接着昨天的示例,继续创建梁,这次展示以椭圆弧、Nurbs为轴线。
创建以椭圆弧为轴线的梁
椭圆弧曲线的创建:
# 创建椭圆弧
def CreateEllipse(ctx : MyContext, z: float) -> DB.Curve:
"""
create a horizontal partial ellipse instance with specified z coordinate value
"""
session = ctx.session
center = 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.session
numPoints = 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 value
ctrPoints = DB.ListXYZ.ctor(session)
for i in range(numPoints * 2):
angleDeg = startAngleDeg - i * 360.0 / (numPoints * 2)
angleRad = angleDeg * math.pi / 180.0
if i % 2 == 1:
radius = outerRadius
else:
radius = innerRadius
x = 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博客
#SystemIntegration #Revit #RevitAPI #Python #Automation #DesignAutomation #BIM #Interop #AEC #DigitalTwin #Workflow