Syntax FACTORY_DEF CSGFactory [FACTORY_NAME ] [INPUT (A|B) FEATURE_TYPE [ ]* []*]* [GROUP_BY []+]* [FLUSH_WHEN_GROUPS_CHANGE (Yes|No)] [ATTR_ACCUM_MODE [HANDLE_CONFLICT|PREFIX_A|PREFIX_B|A_ONLY|B_ONLY]] [ATTR_CONFLICT_RES (A_IF_CONFLICT|B_IF_CONFLICT)] [MERGE_PREFIX ] [LIST_NAME ] [LIST_ATTRS_TO_INCLUDE []* ] [LIST_ATTRS_TO_INCLUDE_MODE (ALL|SELECTED)] [OUTPUT (UNION|DIFFERENCE|INTERSECTION|UNUSED) * FEATURE_TYPE [ ]* []*]* Overview The CSGFactory performs Union, Difference and Intersection Boolean operations on a solid geometry feature from input A against another solid geometry feature from input B, and outputs the result through the output tags UNION, DIFFERENCE and INTERSECTION respectively. The output is a feature with a CSG solid geometry. The factory only takes one solid feature from each input A and B. Any extra features or non-solid features are output through the UNUSED tag. It does not output anything through UNION, DIFFERENCE and INTERSECTION tags unless it can find one solid feature from each input tag. The GROUP_BY clause can be used to perform a Boolean operation for a pair of solids (one from each input tag) that has the same attributes specified by this clause. If the GROUP_BY clause is specified, FLUSH_WHEN_GROUPS_CHANGE (when set to Yes) will cause the factory to process and output the current group immediately when an attribute that does not belong to the current group is encountered. If ATTR_ACCUM_MODE is specified, but no argument is given, then none of the input attributes will be transferred to the output. If one of the arguments is given, the attributes from the input will be transferred according to the argument. HANDLE_CONFLICT will take the attributes from both inputs, and in cases of conflict, it will take the attributes from the input specified by ATTR_CONFLICT_RES. If that argument is not specified, the attributes of A will win. PREFIX_A will preserve the attributes of B, and put the attributes of A on with a prefix. PREFIX_B will preserve the attributes of A, and put the attributes of B on with a prefix. The prefix is specified with the MERGE_PREFIX clause. A_ONLY will only preserve the attributes from A. B_ONLY will only preserve the attributes from B. The LIST_NAME directive specifies a list attribute that will contain all the original attributes of the features that are amalgamated. The optional LIST_ATTRS_TO_INCLUDE_MODE will specify if ALL attributes should be added to a list, or if only the SELECTED attributes (specified with the LIST_ATTRS_TO_INCLUDE clause) should be added to the list. If this value is not specified, it defaults to ALL. Output Tags The CSGFactory supports the following output tags. UNION Result of solid A union with solid B. DIFFERENCE Result of solid A minus solid B. INTERSECTION Result of solid A intersects with solid B. UNUSED Features that are rejected by the factory.