c# - 如何在revit api c#中创建屋顶而不创建墙壁
问题描述
我正在做一个项目,我需要通过 revit 文档中的代码创建屋顶。我浏览了以下链接:
- https://forums.autodesk.com/t5/revit-api-forum/help-creating-roof/td-p/5828076
- 创建屋顶函数
- http://www.revitapidocs.com/2016/110741bf-b041-9f78-0832-ec9f5892cebc.htm
但以上所有链接都建议先选择墙壁。我可以在不创建墙壁的情况下创建屋顶吗?
任何帮助,将不胜感激。
谢谢
解决方案
当然。您可以使用该NewFootPrintRoof
方法并为其提供 CurveArray 来定义足迹。
AdnRevitApiLabsXtra示例代码Lab2_0_CreateLittleHouse
中Labs2.cs中的外部命令演示了如何:
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 );
推荐阅读
- python - 如何操纵 GAN 的潜在空间?
- python - VS Code Jupyter Notebook Run Cell Advance to Next below
- python - Pandas 按列滚动可与 np.float64 一起使用,但使用 np.float32 和 np.float16 返回空数组
- html - 如何使用引导程序 5 在页眉和页脚之间制作 100% 高度的侧边栏
- npm - 列出类似于 lerna ls 的 NPM 工作区
- php - 为什么php在尝试包含文件时会返回找不到文件的错误?
- r - 在 R 中将 pmax/pmin 与变量字符串名称的向量一起使用
- javascript - 大写一个javascript函数
- python - 使用 python,将数据从 S3 加载到 AWS RDS Postgres 的标准方法?
- google-cloud-platform - 如何在运行时使用自定义容器向 Dataflow 作业提供 Google ADP 凭据?