Syntax FACTORY_DEF ConnectionFactory [FACTORY_NAME ] [INPUT FEATURE_TYPE [ ]* []*]* [HANDLE_ARCS [(YES|NO)]] [BREAK_BEFORE_FIELD_CHANGE []+] [BREAK_AFTER_FIELD_CHANGE []+] [END_CURRENT_WHEN ]+ [START_NEW_WHEN ]+ [ACCUM_INPUT_ATTRS ] [LIST_NAME {}] [LIST_ATTRS_TO_INCLUDE []* ] [LIST_ATTRS_TO_INCLUDE_MODE (ALL|SELECTED)] [MESH_MERGE_MODE [(YES|NO)]] [DEAGGREGATE_INPUT (Deaggregate|Reject)] [REJECT_INVALID_GEOM (Yes|No)] [OUTPUT (POINT|LINE|POLYGON|BAD_INPUT|PATH|AGGREGATE|MESH) FEATURE_TYPE [ ]* []*]* Overview This factory is used to construct new features from a collection of input features. The factory accepts features with point or linear geometry and outputs features that have a combination of the input features' geometry. Any feature received that does not have a geometry of POINT or LINE is output by the BAD_INPUT output tag. At any given time the factory is creating only one feature. The current feature being constructed is output whenever any of the following cases is true: The values of any of the BREAK_BEFORE_FIELD_CHANGE fields change from one feature to the next. When this occurs, the newly received input feature is not part of the flushed feature but rather is part of the next feature to be constructed. Values of attributes named in these clauses are transferred to the output features. KeyBuilder has been added in PR#68219 to preserve those attributes even when "Drop Incoming Attributes" accumulation mode is chosen. In the future, those fields may be substituted by keyValue strings. The values of any of the BREAK_AFTER_FIELD_CHANGE fields change from one feature to the next. When this occurs, the newly received input feature is part of the flushed feature. Values of attributes named in these clauses are transferred to the output features. The values of any of the END_CURRENT_WHEN clauses evaluate to true. When this occurs, the newly received input feature is part of the flushed feature. The values of any of the START_NEW_WHEN clauses evaluate to true. When this occurs, the newly received input feature is not part of the flushed feature but instead is the first part of the next feature. The ACCUM_INPUT_ATTRS clause is used to choose what should be done with input features' attribute. There are three choices: NONE corresponds with "Drop All Incoming Attributes", ALL - with "Merge Incoming Attributes", and ONE - with "Get Attributes from One Representative Feature". The optional LIST_NAME clause is used to retain and associate attributes that came from each component of the output feature. When the output feature is created, all attributes of each feature joining to form the output feature are added as members of the specified attribute list. The index in the list corresponds to the index of the feature's contribution to the output feature's final geometry. 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. Path Assembly Mode: If the PATH output tag is given, the factory operates in a different mode. It accepts linear (i.e. line, arc, or path) features and assembles paths from them. Paths are assembled in the same order as the segments enter the factory. All the same break methods described above can be used to designate when to output the path currently under construction. Note: Input paths are allowed. If any paths are received and LIST_NAME is given, then the number of list elements will differ from the number of path segments. The FEATURE_CONNECTION clause is invalid in this mode. In addition, the POLYGON, LINE, and POINT output tags may not be used. The output features in this mode are always paths (that is, even if only one segment arrives, it will be output as the sole segment of a path). Closed paths will be output as paths, not changed to polygons. Mesh Merge Mode: If the MESH output tag is given or MESH_MERGE_MODE keyword is YES, the factory operates in a different mode. It accepts features containing meshes only (including Aggregate, Composite Surface and MultiSurface collections of meshes). Meshes are assembled in the same order as the input meshes enter the factory. The clauses BREAK_BEFORE_FIELD_CHANGE, BREAK_AFTER_FIELD_CHANGE, FEATURE_CONNECTION, END_CURRENT_WHEN, and START_NEW_WHEN are all invalid in this mode. In addition, the POLYGON, LINE, PATH and POINT output tags may not be used. If the BAD_INPUT tag is present, any mesh features input to the factory will be output with that tag. Assumptions The features to be connected are assumed to enter the factory in the correct order. If features are to be connected by joining at equivalent start and end points, then the ArcFactory should be used. Output Tags The ConnectionFactory supports the following output tags. POLYGON Polygon features constructed by the factory are output by this tag. LINE Linear features constructed by the factory are output using this tag. POINT Features which remain as points are output here. PATH Specifying this output tag causes the factory to operate in Path Assembly Mode; please see the description of this mode above. MESH Specifying this output tag causes the factory to operate in Mesh Merge Mode; please see the description of this mode above. BAD_INPUT Any feature whose geometry is not a point or a line (in regular mode) or an arc/line/path (in path assembly mode) is output with this tag. AGGREGATE This output tag is obsolete. Nothing is ever output with it but we still allow it to be specified because apparently it did something in the past.