C# 如何在族文档中获取嵌套的族符号

C# 如何在族文档中获取嵌套的族符号,c#,revit-api,C#,Revit Api,如果我在项目文档中运行这段代码,一切都会很完美,但是在族文档中运行时,我会出错 代码 Document pDoc = uiapp.ActiveUIDocument.Document; FilteredElementCollector fec = new FilteredElementCollector(pDoc); IList<Element> ec = fec.OfClass(typeof(FamilySymbol)).OfCategory(BuiltInCategory.OST_

如果我在项目文档中运行这段代码,一切都会很完美,但是在族文档中运行时,我会出错

代码

Document pDoc = uiapp.ActiveUIDocument.Document;
FilteredElementCollector fec = new FilteredElementCollector(pDoc);
IList<Element> ec = fec.OfClass(typeof(FamilySymbol)).OfCategory(BuiltInCategory.OST_SpecialityEquipment).ToElements();
Document pDoc=uiapp.ActiveUIDocument.Document;
FilteredElementCollector fec=新的FilteredElementCollector(pDoc);
IList ec=类别(内置类别。OST_特殊设备)。ToElements()的类(类型(家族符号));
错误

异常消息

函数的输入参数“document” `匿名命名空间“::FilterDeleteCollector_构造函数或一个 集合中的项在文件的第326行为null …\APIFilteredElementCollectorProxy.cpp

参数名称:文档

堆栈跟踪

at?A0x3fe3c5fb.过滤器删除收集器Proxy_构造函数(文件)

位于Autodesk.Revit.DB.FilterDeleteCollector..ctor(文档)

myNamespace
myExternalCommandName
。执行(UIApplication-uiapp)


uiapp.activeui文档
是活动项目文档

除非族是当前活动文档,否则族需要不同的内容

如果项目文档当前处于活动状态,并且族已加载到其中,则可以使用
EditFamily
方法检索族文档的
文档
实例


建筑编码员在和上的主题组中提供了许多这样的例子。

真正的罪魁祸首是再次将我的头缠绕在外部事件上。它真的与代码的逻辑无关。

在我的测试用例中,family.rfa file文档是唯一的活动文档。不管怎样,在处理代码之后,我才意识到这只是我所指责的第一次传递,结果证明我运行的是来自引发事件的相同代码,由于嵌套,我需要将我的pDoc转换成一个全局可访问的变量引用,返回到相同的上下文中。我未能在上下文中将我的pDoc移动到族文档中(尽管我认为默认情况下这是一样的,但我完全错了,我需要执行额外的步骤并移动变量范围,以将其视为您提到的项目)。抱歉给你添麻烦了。