如何在Revit API C中创建屋顶而不创建墙壁

时间:2018-07-09 15:27:08

标签: c# revit-api revit

我正在一个项目中,我需要通过revit文档中的代码创建屋顶。 我已经通过以下链接:

但是以上所有链接建议先选择墙壁。 我可以在不创建墙的情况下创建屋顶吗?

任何帮助将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:0)

好的。您可以使用NewFootPrintRoof method并为它提供CurveArray来定义轮廓线。

Labs2.cs示例代码中AdnRevitApiLabsXtra中的外部命令Lab2_0_CreateLittleHouse演示了如何:

      corners[0] -= w * ( XYZ.BasisX + XYZ.BasisY );
      corners[1] += w * ( XYZ.BasisX - XYZ.BasisY );
      corners[2] += w * ( XYZ.BasisX + XYZ.BasisY );
      corners[3] -= w * ( XYZ.BasisX - XYZ.BasisY );

      CurveArray profile = new CurveArray();

      for( int i = 0; i < 4; ++i )
      {
        Line line = Line.CreateBound( // 2014
          corners[i], corners[3 == i ? 0 : i + 1] );

        profile.Append( line );
      }

      List<Element> roofTypes
        = new List<Element>(
          LabUtils.GetElementsOfType(
            doc, typeof( RoofType ),
            BuiltInCategory.OST_Roofs ) );

      RoofType roofType = roofTypes
        .Cast<RoofType>()
        .FirstOrDefault<RoofType>( typ
          => null != typ.GetCompoundStructure() );

      ModelCurveArray modelCurves
        = new ModelCurveArray();

      FootPrintRoof roof
        = createDoc.NewFootPrintRoof( profile,
          levelTop, roofType, out modelCurves );