如何创建具有 ElementPasses 覆盖的自定义 FilterRule
How do I create a custom FilterRule with an override for ElementPasses
我想在元素上创建自己的布尔运算以作为 FilterRule 传入。 ElementPasses 成员描述指出:
Derived classes override this method to implement the test that determines whether the given element passes this rule or not.
我试图创建自己的派生 class 但我不知道如何实现它。我认为可以使用一个接口,但我找不到任何东西。烦人的是,我记得看到过这样的例子,但我似乎找不到任何东西。
这失败了:静态 class 'ParameterDefinitionExists' 无法派生自类型 'FilterRule'。静态 classes 必须派生自对象。
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 无能为力。我正在尝试在更新程序中定义和完善触发器,但也许我应该在将元素传递到命令后查询该元素。我想用过滤规则捕捉它会更有效率。
您必须使用从 FilterRule
:
派生的 Revit API 类 之一
继承层次结构
- 系统对象
- Autodesk.Revit.DB 过滤规则
- Autodesk.Revit.DB FilterCategoryRule
- Autodesk.Revit.DB FilterInverseRule
- Autodesk.Revit.DB 过滤值规则
- Autodesk.Revit.DB SharedParameterApplicableRule
比照。 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。
我想在元素上创建自己的布尔运算以作为 FilterRule 传入。 ElementPasses 成员描述指出:
Derived classes override this method to implement the test that determines whether the given element passes this rule or not.
我试图创建自己的派生 class 但我不知道如何实现它。我认为可以使用一个接口,但我找不到任何东西。烦人的是,我记得看到过这样的例子,但我似乎找不到任何东西。
这失败了:静态 class 'ParameterDefinitionExists' 无法派生自类型 'FilterRule'。静态 classes 必须派生自对象。
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 无能为力。我正在尝试在更新程序中定义和完善触发器,但也许我应该在将元素传递到命令后查询该元素。我想用过滤规则捕捉它会更有效率。
您必须使用从 FilterRule
:
继承层次结构
- 系统对象
- Autodesk.Revit.DB 过滤规则
- Autodesk.Revit.DB FilterCategoryRule
- Autodesk.Revit.DB FilterInverseRule
- Autodesk.Revit.DB 过滤值规则
- Autodesk.Revit.DB SharedParameterApplicableRule
- Autodesk.Revit.DB 过滤规则
比照。 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。