我只是想学习Revit API并使用ExternalCommand创建简单的墙。但我不知道... 我认为我的问题在这里:
.o
var symbolId = document.GetDefaultFamilyTypeId(new ElementId(BuiltInCategory.OST_Walls));
调试时始终为-1。
您能帮我解决此代码段的问题吗?
symbolId
答案 0 :(得分:1)
遍历Revit API getting started material,将对所有内容进行说明。这样可以为您和其他人节省许多其他问题和答案。
无论如何要解决这个特定问题,GetDefaultFamilyTypeId
可能并没有满足您对墙元素的期望。在GetDefaultFamilyTypeId
method API documentation中,它用于结构列,结构列是由单个RFA文件托管的标准可加载族。墙是内置的系统系列,其行为有所不同。也许GetDefaultFamilyTypeId
仅适用于非系统系列。
要检索任意(非默认)墙类型,请使用过滤的元素收集器检索所有WallType
元素,然后选择找到的第一个元素。
这是一个代码段,它从The Building Coder的Creating Face Wall and Mass Floor 讨论中选择了第一个具有特定名称的代码:
WallType wType = new FilteredElementCollector( doc )
.OfClass( typeof( WallType ) )
.Cast<WallType>().FirstOrDefault( q
=> q.Name == "Generic - 6\" Masonry" );