2017-10-07 116 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創建過濾器,它現在在視圖中,所以當我再次運行該命令已經有一個。謝謝。

相關問題