【问题标题】:view filter in the help doesn't work帮助中的查看过滤器不起作用
【发布时间】:2018-03-14 22:12:53
【问题描述】:

我正在尝试运行 Autodesk 帮助中的代码

http://help.autodesk.com/view/RVT/2014/ENU/?guid=GUID-B6FB80F2-7A17-4242-9E95-D6056090E85B 但它似乎不起作用。代码“FirstElement ().get_Parameter("评论");" 不工作。没有这个功能。

我收到以下错误:

Revit 遇到了 System.MissingMethodException;找不到方法:'AutoDesk.Revit.DB.Parameter Autodesk.Revit.DB.Element.get_Parameter(System.String)

这段代码有什么问题?

  private void CreateViewFilter(Autodesk.Revit.DB.Document doc, View view)
    {
    List<ElementId> categories = new List<ElementId>();
    categories.Add(new ElementId(BuiltInCategory.OST_Walls));
    ParameterFilterElement parameterFilterElement = 
    ParameterFilterElement.Create(doc, "Comments = foo", categories);

    FilteredElementCollector parameterCollector = new FilteredElementCollector
    (doc);
    Parameter parameter = parameterCollector.OfClass(typeof(Wall)).FirstElement
    ().get_Parameter("Comments");

    List<FilterRule> filterRules = new List<FilterRule>();
    filterRules.Add(ParameterFilterRuleFactory.CreateEqualsRule  
    (parameter.Id, "foo", true));
      parameterFilterElement.SetRules(filterRules);


     OverrideGraphicSettings filterSettings = new OverrideGraphicSettings();
    // outline walls in red            
    filterSettings.SetProjectionLineColor(new Color(255, 0, 0));
    view.SetFilterOverrides(parameterFilterElement.Id, filterSettings);
    }

【问题讨论】:

  • 能否提供更多信息,例如错误信息等?
  • 我收到以下错误:“Revit 遇到 System.MissingMethodException;找不到方法:'AutoDesk.Revit.DB.Parameter Autodesk.Revit.DB.Element.get_Parameter(System.String)”
  • 感谢它与lookupparameter一起使用,但是当我多次重复该命令时出现另一个错误。错误说:Revit遇到了argumentException。 name 的给定值已用作过滤器元素名称参数名称: ParameterFilterElement 处的名称 parameterFilterElement = ParameterFilterElement.Create(doc, "Comments= foo", categories);

标签: c# api view filter revit


【解决方案1】:

我猜您使用的 Revit 版本与帮助版本 (2014) 不同?

我认为get_Parameter 已被弃用,因为有几个版本。

你可以试试LookupParameter

...FirstElement().LookupParameter("Comments");

或最终GetParameters,但要小心,这个返回一个集合:

...FirstElement().GetParameters("Comments");

(链接指的是最新版本,但您可以轻松地在同一站点上检查另一个版本,这两种方法自 Revit 2015 以来看起来没有变化。)

【讨论】:

  • 感谢它与lookupparameter一起使用,但是当我多次重复该命令时出现另一个错误。错误说:Revit遇到了argumentException。 name 的给定值已用作过滤器元素名称参数名称: ParameterFilterElement 处的名称 parameterFilterElement = ParameterFilterElement.Create(doc, "Comments= foo", categories);
  • 有趣,我不知道为什么会发生这个错误,你如何准确地重复代码?当您为 2 个过滤器提供相同的名称时,应该会发生这种错误(name 是第二个参数 "Comments= foo")。最好用代码写另一个关于这个问题的问题,异常......这将有助于其他人。 (顺便说一句,你应该接受你在这里得到的一些答案,它可以帮助下一个访问者发现解决方案,并且让作者感到高兴;-))
  • 谢谢!我想知道你所说的接受答案是什么意思?我找不到一个按钮或类似的东西来标记“正确”的答案,但我确实提到你的答案有效。有没有其他办法?
  • 我找到了答案。当我再次尝试运行该程序时,视图中有一个过滤器,该过滤器的名称是我第一次运行时创建的。
猜你喜欢
  • 1970-01-01
  • 2010-12-31
  • 1970-01-01
  • 2010-12-26
  • 2021-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多