新加载的Revit API系列中的GetFamilySymbolsId为null

时间:2019-03-14 01:56:00

标签: c# revit

我很好奇下面代码片段的结果。我想用名字来命名一个家庭,并插入该家庭中发现的第一个符号。

这对于带有多个符号的家庭适用。但是,对于那些没有特定类型定义的对象,有时symId.Count() = 1有时会返回null异常。为什么会这样?

  Element el1 = new FilteredElementCollector(doc).OfClass(typeof(Autodesk.Revit.DB.Family)).FirstOrDefault(x => x.Name == familyName);

                Autodesk.Revit.DB.Family fam = el1 as Autodesk.Revit.DB.Family;

                ISet<ElementId> symIds = fam.GetFamilySymbolIds();

                foreach (ElementId elid in symIds)
                {
                    FamilySymbol symbol = doc.GetElement(elid) as FamilySymbol;
                    try
                    {
                        uidoc.PromptForFamilyInstancePlacement(symbol);
                    }
                    catch { }
                    break;
                }

有趣的跟进。当我进入基本系列时,添加一些类型,删除fom项目,然后重新加载-我遇到相同的错误。

1 个答案:

答案 0 :(得分:0)

您说,“有时会返回null异常”。

那不是很具体。

我建议您逐步调试代码,并确切确定哪个API调用引发了异常,并确定异常消息的内容。

这可能会澄清正在发生的事情。