我正在一个项目中,我需要通过revit文档中的代码创建屋顶。 我已经通过以下链接:
但是以上所有链接建议先选择墙壁。 我可以在不创建墙的情况下创建屋顶吗?
任何帮助将不胜感激。
谢谢
答案 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 );