【问题标题】:How can I get nested FamilySymbols inside of a family document如何在家庭文档中获取嵌套的 FamilySymbols
【发布时间】:2018-02-28 16:54:55
【问题描述】:

如果我在项目文档中运行此代码,一切都会完美,但是在家庭文档中时,我会收到错误。

代码

Document pDoc = uiapp.ActiveUIDocument.Document;
FilteredElementCollector fec = new FilteredElementCollector(pDoc);
IList<Element> ec = fec.OfClass(typeof(FamilySymbol)).OfCategory(BuiltInCategory.OST_SpecialityEquipment).ToElements();

错误

异常信息

函数的输入参数“文档” `anonymous-namespace'::FilteredElementCollector_constructor 或一个 集合中的项目在文件的第 326 行为空 ...\APIFilteredElementCollectorProxy.cpp.

参数名称:文档

堆栈跟踪

at ?A0x3fe3c5fb.FilteredElementCollectorProxy_constructor(文档文档)

在 Autodesk.Revit.DB.FilteredElementCollector..ctor(文档文档)

myNamespace.myExternalCommandName.Execute(UIApplication uiapp)

【问题讨论】:

    标签: c# revit-api


    【解决方案1】:

    uiapp.ActiveUIDocument 是活动项目文档。

    您需要为家庭提供不同的东西,除非家庭当前活动的文档。

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

    The Building Coder 在Family APILoading a Family 的主题组中为此提供了许多示例。

    【讨论】:

    • 家庭 .rfa 文件文档在我的测试用例中唯一的活动文档。
    • 别管我了,在处理完代码之后,我才意识到这只是我指责的最初阶段,结果我从引发的事件中运行了相同的代码,我需要由于嵌套,将我的 pDoc 转换为全局可访问的变量引用,以返回相同的上下文。我未能根据上下文将我的 pDoc 移动到家庭文档(即使我认为默认情况下这将是相同的 我错了,我需要采取额外的步骤并移动变量范围来处理它正如你提到的项目)。很抱歉给您带来麻烦。
    【解决方案2】:

    真正的罪魁祸首是我再次陷入了 ExternalEvents 的困境。真的和这段代码的逻辑无关。

    【讨论】:

      猜你喜欢
      • 2020-07-21
      • 1970-01-01
      • 1970-01-01
      • 2016-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-04
      相关资源
      最近更新 更多