2017-05-12 7 views
0

要素に独自のブール演算を作成して、FilterRuleとして渡したいとします。 ElementPasses部材の説明は述べ:ElementPassesのオーバーライドを使用してカスタムFilterRuleを作成する方法

派生クラスは、与えられた要素がこのルールを通過するか否かを判定するテストを実施するためにこのメソッドをオーバーライドします。

私は独自の派生クラスを作成しようとしましたが、実装方法を理解できません。私はインターフェイスが利用可能だと思うだろうが、私は何も見つけることができません。うんざりして、私はこれの例を見て覚えているが、私は何かを見つけることができない。

これは、以下で失敗します。静的なクラス 'ParameterDefinitionExists'は、 'FilterRule'タイプから派生することはできません。静的クラスはオブジェクトから派生しなければなりません。

static public class ParameterDefinitionExists : FilterRule 
{ 
    public static bool ElementPasses(Element element) 
    { 
     return true; 
    } 
} 

そして、これがで失敗します。'FilterRule' 0引数

static public class ParameterDefinitionExists : FilterRule 
{ 
    new public bool ElementPasses(Element element) 
    { 
     return true; 
    } 
} 

それはどのようなコンストラクタの引数を取るんを取るコンストラクタが含まれていませんか?

これについて別の方法があるかもしれませんが、私はFilterRulesには何もできません。私はupdaterでトリガーを定義して洗練しようとしていますが、おそらくコマンドに渡された後にその要素を問い合わせるべきです。私はフィルタルールでそれをキャッチするほうが効率的だと思います。あなたはFilterRule由来のRevit APIクラスのいずれかを使用する必要が

答えて

0

継承階層

  • システムオブジェクト
    • Autodesk.Revit.DB FilterRule
      • Autodesk.Revit.DB FilterCategoryRule
      • Autodesk.Revit.DB FilterInverseRule
      • Autodesk.Revit.DB FilterValueRule
      • Autodesk.Revit.DB SharedParameterApplicableRule

Cfとhttp://www.revitapidocs.com/2017/a8f202ca-3c88-ecc4-fa93-549b26a412d7.htm

The Building Coderは、パラメータフィルタを作成し、使用していくつかの例を提供しています。ここでは

http://thebuildingcoder.typepad.com/blog/2010/08/elementparameterfilter-with-a-shared-parameter.html

は全体topic group on filteringです。

関連する問題