Conditional Filtering

The relational operators just described are binary operators. You can also test groups by creating nested Boolean expressions that use conditional operators. The conditional operators are also specified by -4 groups, but they must be paired.

The following sample code selects all circles in the drawing with a radius of 1.0 and all lines on the layer “ABC”.

struct resbuf* prb;
prb = acutBuildList(-4, "<or",-4, "<and", RTDXF0,
    "CIRCLE", 40, 1.0, -4, "and>", -4, "<and", RTDXF0, 
    "LINE", 8, "ABC", -4, "and>", -4, "or>", 0); 
acedSSGet("X", NULL, NULL, prb, ssname1); 

The conditional operators are not case sensitive; you can use lowercase equivalents.

Note: Conditional expressions that test for extended data using the -3 group can contain only -3 groups. See Filtering for Extended Data.

To select all circles that have extended data registered to either “APP1” or “APP2” but not both, you could use the following code.

prb = acutBuildList(-4, "<xor", -3, "APP1", -3, "APP2", 
    -4, "xor>", 0); 
acedSSGet("X", NULL, NULL, prb, ssname1);