C#Revit API,如何使用ExternalCommand创建简单的墙?

时间:2018-12-25 09:58:48

标签: revit-api

我只是想学习Revit API并使用ExternalCommand创建简单的墙。但我不知道... 我认为我的问题在这里:

.o

var symbolId = document.GetDefaultFamilyTypeId(new ElementId(BuiltInCategory.OST_Walls));调试时始终为-1。

您能帮我解决此代码段的问题吗?

symbolId

1 个答案:

答案 0 :(得分:1)

遍历Revit API getting started material,将对所有内容进行说明。这样可以为您和其他人节省许多其他问题和答案。

无论如何要解决这个特定问题,GetDefaultFamilyTypeId可能并没有满足您对墙元素的期望。在GetDefaultFamilyTypeId method API documentation中,它用于结构列,结构列是由单个RFA文件托管的标准可加载族。墙是内置的系统系列,其行为有所不同。也许GetDefaultFamilyTypeId仅适用于非系统系列。

要检索任意(非默认)墙类型,请使用过滤的元素收集器检索所有WallType元素,然后选择找到的第一个元素。

这是一个代码段,它从The Building CoderCreating Face Wall and Mass Floor 讨论中选择了第一个具有特定名称的代码:

WallType wType = new FilteredElementCollector( doc )
  .OfClass( typeof( WallType ) )
  .Cast<WallType>().FirstOrDefault( q
    => q.Name == "Generic - 6\" Masonry" );