2017-10-07 4 views
0

私はオートデスクのヘルプオートデスクのヘルプからこのコードが機能しないのはなぜですか?

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次のエラーを取得するからコードを実行しようとしています引数exception指定されたnameの値は、すでにFilter要素名のパラメータ名として使用されています:ParameterFilterElement parameterFilterElement = ParameterFilterElement.Create(doc、 "Comments = foo"、categories)のname。これはコードで起こった場合、私が見ることができない。(私は最初は推奨されているため、GET_PARAMETERは、上記元のコードにlookupparameterに変化OBS)

+0

どのような行が例外をスローしますか? – mjwills

答えて

0

docsによれば、Create方法の2番目のパラメータでありますname。エラーメッセージは、既に "コメント= Foo"という名前を使用していることを示します。だから私はあなたの最善の策は、動的に名前を生成するか、ユーザーが名前を指定する方法を提供することだと思います。

0

ちょっと考えたら、私はそれを手に入れます。実際には、私はそれをすべきであるからやるべきです。とにかく、プリグラムはフィルタを作成し、それがビューに表示されるので、もう一度コマンドを実行すると既に1つあります。ありがとうございました。

関連する問題