void f4( Document doc )
{
// Use numeric evaluator and integer rule to test ElementId parameter
// Filter levels whose id is greater than specified id value
BuiltInParameter testParam
= BuiltInParameter.ID_PARAM;
ParameterValueProvider pvp
= new ParameterValueProvider(
new ElementId( (int) testParam ) );
FilterNumericRuleEvaluator fnrv
= new FilterNumericGreater();
// filter elements whose Id is greater than 99
ElementId ruleValId = new ElementId( 99 );
FilterRule paramFr = new FilterElementIdRule(
pvp, fnrv, ruleValId );
ElementParameterFilter epf
= new ElementParameterFilter( paramFr );
FilteredElementCollector collector
= new FilteredElementCollector( doc );
collector.OfClass( typeof( ViewPlan ) )
.WherePasses( epf ); // only deal with ViewPlan
// Use numeric evaluator and integer rule to test bool parameter
// Filter levels whose crop view is false
int ruleValInt = 0;
testParam = BuiltInParameter.VIEWER_CROP_REGION;
pvp = new ParameterValueProvider(
new ElementId( (int) testParam ) );
fnrv = new FilterNumericEquals();
paramFr = new FilterIntegerRule(
pvp, fnrv, ruleValInt );
epf = new ElementParameterFilter( paramFr );
collector = new FilteredElementCollector( doc );
collector.OfClass( typeof( ViewPlan ) )
.WherePasses( epf ); // only deal with ViewPlan
// Use numeric evaluator and double rule to test double parameter
// Filter levels whose top offset is greater than specified value
double ruleValDb = 10;
testParam =
BuiltInParameter.VIEWER_BOUND_OFFSET_TOP;
pvp = new ParameterValueProvider(
new ElementId( (int) testParam ) );
fnrv = new FilterNumericGreater();
paramFr = new FilterDoubleRule(
pvp, fnrv, ruleValDb, double.Epsilon );
collector = new FilteredElementCollector( doc );
collector.OfClass( typeof( ViewPlan ) )
.WherePasses( epf ); // only deal with ViewPlan
// Use string evaluator and string rule to test string parameter
// Filter all elements whose view name contains level
String ruleValStr = "Level";
testParam = BuiltInParameter.VIEW_NAME;
pvp = new ParameterValueProvider(
new ElementId( (int) testParam ) );
FilterStringRuleEvaluator fnrvStr
= new FilterStringContains();
paramFr = new FilterStringRule(
pvp, fnrvStr, ruleValStr, false );
collector = new FilteredElementCollector( doc );
collector.OfClass( typeof( ViewPlan ) )
.WherePasses( epf ); // only deal with ViewPlan
}