如何在revit api c#中将创建的墙类型转换为族文件
Posted
技术标签:
【中文标题】如何在revit api c#中将创建的墙类型转换为族文件【英文标题】:How to convert a created wall type to a family file in revit api c# 【发布时间】:2021-02-08 13:10:44 【问题描述】:我正在使用 Revit API 处理一个我需要的项目
-
创建墙,
使用材料创建新的墙类型
向墙壁和材料添加类型参数
为其生成 rfa 文件
我做了前 3 部分,但是当我过滤以提取家庭时
FilteredElementCollector collector = new FilteredElementCollector(doc);
Family famType = collector.OfClass(typeof(Family)).FirstOrDefault(x => x.Name == "Basic Wall") as Family;
这将返回 null。
所以我尝试了家庭实例,因为我也创建了墙。
List<FamilyInstance> list = new FilteredElementCollector(RevitData.Document).OfCategory(BuiltInCategory.OST_Walls).OfClass(typeof(FamilyInstance)).Cast<FamilyInstance>().ToList<FamilyInstance>();
但这也返回了 null
在附加的图像中,项目浏览器显示了 Basic Wall Family 类型中的“Test wall”。
我们真的可以将墙类型提取为 .rfa 吗?
如果这是可能的,有人可以指导我完成这个。
谢谢你
【问题讨论】:
【参考方案1】:墙是系统系列,您不能将它们保存为 *.rfa 文件。
您的收集器无法正常工作,因为您在过滤器中使用了错误的类,Wall 或 WallType 类是正确的。
要在项目之间交换 WallTypes,您可以传输 Project Standards -> Wall Types,但是没有用于此的 API。作为替代方案,您可以使用 ElementTransformUtils.CopyElements() 方法来复制 Wall 或 WallType,或者尝试使用现有的 WallType 和 Duplicate 方法在源文档中设置所有参数来重新生成目标文档中的 WallType。
【讨论】:
感谢您的回复,实际上,我想允许用户使用 LoadFamilies 方法将家庭添加到文档中,因此试图创建 rfa 文件。以上是关于如何在revit api c#中将创建的墙类型转换为族文件的主要内容,如果未能解决你的问题,请参考以下文章
Revit API - 创建新的 ScheduleField