Revit SDK 介绍:WindowWizard 用 API 创建一个窗户

前言

这个例子介绍如何用 API 创建一个窗户。

内容

运行效果:
Revit SDK 介绍:WindowWizard 用 API 创建一个窗户_第1张图片
核心逻辑:

  1. 选择材质 CreateMaterial()
  2. 创建窗框 CreateFrame()
  3. 创建窗格 CreateSash()
  4. 创建玻璃 CreateGlass()
  5. 设置族参数 CombineAndBuild()

创建的核心逻辑:

// DoubleHungWinCreation::Creation
Transaction trans = new Transaction(m_document, "FinishWindowWizard"))
trans.Start();
this.CreateMaterial();
this.CreateFrame();
this.CreateSash();
this.CreateGlass();
this.CombineAndBuild();
trans.Commit();

这个例子里面比较重要的三个点:

  1. 用特征造型的方式创建几何体(可在博客中搜索特征造型,获取更多信息)
  2. 参照平面 ReferencePlane,用于标注
  3. 标注 Dimension,用于约束,可与参数绑定

以部分创建窗框代码为例:

// 创建外窗框
// 创建外窗框的几何图形,用两个矩形的扣减做拉伸
double frameCurveOffset1 = 0.075;
CurveArray curveArr1 = m_extrusionCreator.CreateRectangle(m_width / 2, -m_width / 2, m_sillHeight + m_height, m_sillHeight, 0);
CurveArray curveArr2 = m_extrusionCreator.CreateCurveArrayByOffset(curveArr1, frameCurveOffset1);
CurveArrArray curveArrArray1 = new CurveArrArray();
curveArrArray1.Append(curveArr1);
curveArrArray1.Append(curveArr2);
Extrusion extFrame = m_extrusionCreator.NewExtrusion(curveArrArray1, m_sashPlane, m_wallThickness / 2 + m_wallThickness / 12, -m_windowInset);
extFrame.SetVisibility(CreateVisibility());
m_document.Regenerate();

// 用标注对齐墙和窗框的外表面
exteriorWallFace = GeoHelper.GetWallFace(walls[0], m_rightView, true);  // Get the face again as the document is regenerated.
Face exteriorExtrusionFace1 = GeoHelper.GetExtrusionFace(extFrame, m_rightView, true);
Face interiorExtrusionFace1 = GeoHelper.GetExtrusionFace(extFrame, m_rightView, false);
CreateAlignment alignmentCreator = new CreateAlignment(m_document);
alignmentCreator.AddAlignment(m_rightView, exteriorWallFace, exteriorExtrusionFace1);

总结

代码量比较多,逻辑基本上是一样的,可以作为一个学习 几何造型 + 参数绑定 的范例。

你可能感兴趣的:(Revit,SDK,介绍,C#)