2017-10-07 118 views
0

我尝试当我打开一看,运行代码不止一次从Autodesk帮助为什么来自Autodesk的此代码不起作用?

http://help.autodesk.com/view/RVT/2014/ENU/?guid=GUID-B6FB80F2-7A17-4242-9E95-D6056090E85B

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 encounterd一个argumentException。名称的给定值已被用作过滤元素名称参数名称:名称在ParameterFilterElement parameterFilterElement = ParameterFilterElement.Create(doc,“Comments = foo”,categories)。我看不到的地方发生这种情况中的代码。(OBS我改变GET_PARAMETER在原始代码lookupparameter上述,因为第一已弃用)

+0

什么行会抛出异常? – mjwills

回答

0

按照docsCreate方法的第二个参数是name。错误消息指出您已经在使用名称“Comments = Foo”。所以我认为你最好的选择是动态生成名称或为用户指定名称提供一种方法。

0

经过一番思考,我明白了。实际上,我应该从殴打那里做到这一点。无论如何,prgram创建过滤器,它现在在视图中,所以当我再次运行该命令已经有一个。谢谢。

相关问题