#! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! GUI IGNORE SourceDataset_GEODATABASE_FILE_1,GEODATABASE_FILE_IN_WHERE_GEODATABASE_FILE_1,GEODATABASE_FILE_IN_TRANSLATE_SPATIAL_DATA_ONLY_GEODATABASE_FILE_1,GEODATABASE_FILE_IN_RESOLVE_DOMAINS_GEODATABASE_FILE_1,GEODATABASE_FILE_IN_RESOLVE_SUBTYPE_NAMES_GEODATABASE_FILE_1,GEODATABASE_FILE_IN_IGNORE_NETWORK_INFO_GEODATABASE_FILE_1,GEODATABASE_FILE_IN_IGNORE_RELATIONSHIP_INFO_GEODATABASE_FILE_1,GEODATABASE_FILE_IN_SPLIT_COMPLEX_EDGES_GEODATABASE_FILE_1,GEODATABASE_FILE_IN_SPLIT_MULTI_PART_ANNOS_GEODATABASE_FILE_1,GEODATABASE_FILE_IN_SEARCH_ENVELOPE_MINX_GEODATABASE_FILE_1,GEODATABASE_FILE_IN_SEARCH_ENVELOPE_MINY_GEODATABASE_FILE_1,GEODATABASE_FILE_IN_SEARCH_ENVELOPE_MAXX_GEODATABASE_FILE_1,GEODATABASE_FILE_IN_SEARCH_ENVELOPE_MAXY_GEODATABASE_FILE_1,GEODATABASE_FILE_IN_CLIP_TO_ENVELOPE_GEODATABASE_FILE_1,_GEODB_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEODATABASE_FILE_1,_GEODBInSearchFeature_GEODATABASE_FILE_1,_GEODBInSearchOrder_GEODATABASE_FILE_1,_GEODBInSearchMethod_GEODATABASE_FILE_1,_GEODBInFeatureReadMode_GEODATABASE_FILE_1,_GEODBInCheckSimpleGeom_GEODATABASE_FILE_1,_GEODBMergeFeatLinkedAnnos_GEODATABASE_FILE_1,_GEODBInBeginSql_GEODATABASE_FILE_1,_GEODBInEndSql_GEODATABASE_FILE_1,DestDataset_DGNV8_1,_SEED_DGNV8_1,_OUT_UNITS_DGNV8_1,_COMPUTE_SEED_DGNV8_1,_TYPE3_DGNV8_1,_ALLOW_FILL_DGNV8_1,_WRITE_TAGS_DGNV8_1,_CELLLIB_DGNV8_1,_MANGLE_DBCS_TEXT_DGNV8_1,_UOR_GLOBAL_ORIGIN_X_DGNV8_1,_UOR_GLOBAL_ORIGIN_Y_DGNV8_1,_UOR_GLOBAL_ORIGIN_Z_DGNV8_1,_MASTER_UNIT_NAME_DGNV8_1,_SUB_UNIT_NAME_DGNV8_1,_SUBS_PER_MASTER_DGNV8_1,_UORS_PER_SUB_DGNV8_1,_DEFAULT_CELL_NAME_DGNV8_1 DEFAULT_MACRO SourceDataset_GEODATABASE_FILE GUI SOURCE_GEODATABASE SourceDataset_GEODATABASE_FILE Source ESRI Geodatabase (File-based) File: DEFAULT_MACRO DestDataset_DGNV8 GUI FILENAME DestDataset_DGNV8 Design_Files(*.dgn)|*.dgn|All_files(*.*)|*.* Destination Bentley MicroStation Design File: INCLUDE [ if {{$(SourceDataset_GEODATABASE_FILE)} == {}} { puts_real {Parameter 'SourceDataset_GEODATABASE_FILE' must be given a value.}; exit 1; }; ] INCLUDE [ if {{$(DestDataset_DGNV8)} == {}} { puts_real {Parameter 'DestDataset_DGNV8' must be given a value.}; exit 1; }; ] #! START_HEADER #! START_WB_HEADER READER_TYPE GEODATABASE_FILE READER_KEYWORD GEODATABASE_FILE_1 READER_GEN_DIRECTIVES USE_SEARCH_ENVELOPE,NO,TRANSLATE_SPATIAL_DATA_ONLY,no,_MERGE_SCHEMAS,YES,RESOLVE_SUBTYPE_NAMES,yes,SEARCH_ENVELOPE_MAXY,0,SEARCH_ENVELOPE_MAXX,0,SPLIT_COMPLEX_EDGES,no,IGNORE_RELATIONSHIP_INFO,yes,SPLIT_MULTI_PART_ANNOS,no,IGNORE_NETWORK_INFO,no,WHERE,,SEARCH_ENVELOPE_MINX,0,GEODATABASE_FILE_EXPOSE_FORMAT_ATTRS,,TABLELIST,,CLIP_TO_ENVELOPE,NO,SEARCH_ENVELOPE_MINY,0,RESOLVE_DOMAINS,no WRITER_TYPE DGNV8 WRITER_KEYWORD DGNV8_1 #! END_WB_HEADER #! START_WB_HEADER MACRO WB_KEYWORD "GEODATABASE_FILE_1" #! END_WB_HEADER #! START_SOURCE_HEADER GEODATABASE_FILE GEODATABASE_FILE_1 # ============================================================================ # The following GUI line prompts for a file to be used as the source. # The user input is stored in a macro, which is then used to define # the dataset to be read. # The dataset this mapping file was generated from was: #! END_SOURCE_HEADER #! START_WB_HEADER DEFAULT_MACRO SourceDataset INCLUDE [ if {{$(SourceDataset)} != ""} { \ puts {DEFAULT_MACRO SourceDataset_GEODATABASE_FILE_1 $(SourceDataset)} \ } ] #! END_WB_HEADER #! START_SOURCE_HEADER GEODATABASE_FILE GEODATABASE_FILE_1 DEFAULT_MACRO SourceDataset_GEODATABASE_FILE_1 $(SourceDataset_GEODATABASE_FILE) GUI SOURCE_GEODATABASE SourceDataset_GEODATABASE_FILE_1 Source ESRI Geodatabase (File-based) File: # Translation flags. # # ======================================================================== # The following defines the global where clause to be used when retrieving # features from the Geodatabase. DEFAULT_MACRO GEODATABASE_FILE_IN_WHERE_GEODATABASE_FILE_1 GEODATABASE_FILE_1_WHERE "$(GEODATABASE_FILE_IN_WHERE_GEODATABASE_FILE_1)" GUI OPTIONAL TEXT GEODATABASE_FILE_IN_WHERE_GEODATABASE_FILE_1 WHERE Clause: #============================================================================== # Determines whether non-spatial data, such as tables, subtypes, domains, # and relationship classes, get translated DEFAULT_MACRO GEODATABASE_FILE_IN_TRANSLATE_SPATIAL_DATA_ONLY_GEODATABASE_FILE_1 no GEODATABASE_FILE_1_TRANSLATE_SPATIAL_DATA_ONLY "$(GEODATABASE_FILE_IN_TRANSLATE_SPATIAL_DATA_ONLY_GEODATABASE_FILE_1)" GUI CHECKBOX GEODATABASE_FILE_IN_TRANSLATE_SPATIAL_DATA_ONLY_GEODATABASE_FILE_1 yes%no Spatial Data Only #============================================================================== # Determines whether to resolve domains DEFAULT_MACRO GEODATABASE_FILE_IN_RESOLVE_DOMAINS_GEODATABASE_FILE_1 no GEODATABASE_FILE_1_RESOLVE_DOMAINS "$(GEODATABASE_FILE_IN_RESOLVE_DOMAINS_GEODATABASE_FILE_1)" GUI CHECKBOX GEODATABASE_FILE_IN_RESOLVE_DOMAINS_GEODATABASE_FILE_1 yes%no Resolve Domains #============================================================================== # Determines whether to resolve the subtype associated with a feature to the # text description linked to the subtype value. The text description will # be added as an attribute on the feature. DEFAULT_MACRO GEODATABASE_FILE_IN_RESOLVE_SUBTYPE_NAMES_GEODATABASE_FILE_1 yes GEODATABASE_FILE_1_RESOLVE_SUBTYPE_NAMES "$(GEODATABASE_FILE_IN_RESOLVE_SUBTYPE_NAMES_GEODATABASE_FILE_1)" GUI CHECKBOX GEODATABASE_FILE_IN_RESOLVE_SUBTYPE_NAMES_GEODATABASE_FILE_1 yes%no Resolve Subtypes #============================================================================== # Determines whether to ignore the network info associated with a feature # coming from a network feature class. When set to 'yes', junctions will be # treated as point features, and edges will be treated as polyline features, # with the geodb_type being set to geodb_point and geodb_polyline, respectively. # Caution should be taken when changing the value for this keyword to a different # value than was specified when creating the mapping file/workspace. DEFAULT_MACRO GEODATABASE_FILE_IN_IGNORE_NETWORK_INFO_GEODATABASE_FILE_1 no GEODATABASE_FILE_1_IGNORE_NETWORK_INFO "$(GEODATABASE_FILE_IN_IGNORE_NETWORK_INFO_GEODATABASE_FILE_1)" GUI CHECKBOX GEODATABASE_FILE_IN_IGNORE_NETWORK_INFO_GEODATABASE_FILE_1 yes%no Ignore Network Info # ======================================================================== # Determines whether to ignore the relationship info associated with a feature # coming from a feature class containing relationships. When set to 'yes', simple # relationships will not be read, and attributed relationships will be read as # tables. Caution should be taken when changing the value for this keyword to a # different value than was specified when creating the mapping file/workspace. DEFAULT_MACRO GEODATABASE_FILE_IN_IGNORE_RELATIONSHIP_INFO_GEODATABASE_FILE_1 yes GEODATABASE_FILE_1_IGNORE_RELATIONSHIP_INFO "$(GEODATABASE_FILE_IN_IGNORE_RELATIONSHIP_INFO_GEODATABASE_FILE_1)" GUI CHECKBOX GEODATABASE_FILE_IN_IGNORE_RELATIONSHIP_INFO_GEODATABASE_FILE_1 yes%no Ignore Relationship Info #============================================================================== # Determines whether complex edge features should be split up and each edge # element read as a separate feature. The default behaviour is to treat an # entire edge *feature* as an FME feature, rather than an edge *element* as an # FME feature. Returning edge elements ensures that all network connectivity # information on complex edges is read. DEFAULT_MACRO GEODATABASE_FILE_IN_SPLIT_COMPLEX_EDGES_GEODATABASE_FILE_1 no GEODATABASE_FILE_1_SPLIT_COMPLEX_EDGES "$(GEODATABASE_FILE_IN_SPLIT_COMPLEX_EDGES_GEODATABASE_FILE_1)" GUI CHECKBOX GEODATABASE_FILE_IN_SPLIT_COMPLEX_EDGES_GEODATABASE_FILE_1 yes%no Split Complex Edges #============================================================================== # Determines whether annotation features should be split up and each part # element read as a separate feature. The default behaviour is to treat an # entire annotation *feature* as an FME feature, rather than an annotation # *element* as an FME feature. Returning edge elements ensures that all # rotation and positional information for each element is preserved. DEFAULT_MACRO GEODATABASE_FILE_IN_SPLIT_MULTI_PART_ANNOS_GEODATABASE_FILE_1 yes GEODATABASE_FILE_1_SPLIT_MULTI_PART_ANNOS "$(GEODATABASE_FILE_IN_SPLIT_MULTI_PART_ANNOS_GEODATABASE_FILE_1)" GUI CHECKBOX GEODATABASE_FILE_IN_SPLIT_MULTI_PART_ANNOS_GEODATABASE_FILE_1 yes%no Split Multi-Part Annotations # Include this file in source setting section to add native search envelope processing # Zero as a default means we don't do any search -- this makes workbench happier # =========================================================================== DEFAULT_MACRO GEODATABASE_FILE_IN_SEARCH_ENVELOPE_MINX_GEODATABASE_FILE_1 0 GEODATABASE_FILE_1_SEARCH_ENVELOPE "$(GEODATABASE_FILE_IN_SEARCH_ENVELOPE_MINX_GEODATABASE_FILE_1)" GUI OPTIONAL FLOAT GEODATABASE_FILE_IN_SEARCH_ENVELOPE_MINX_GEODATABASE_FILE_1 Minimum X: # =========================================================================== DEFAULT_MACRO GEODATABASE_FILE_IN_SEARCH_ENVELOPE_MINY_GEODATABASE_FILE_1 0 GEODATABASE_FILE_1_SEARCH_ENVELOPE "$(GEODATABASE_FILE_IN_SEARCH_ENVELOPE_MINY_GEODATABASE_FILE_1)" GUI OPTIONAL FLOAT GEODATABASE_FILE_IN_SEARCH_ENVELOPE_MINY_GEODATABASE_FILE_1 Minimum Y: # =========================================================================== DEFAULT_MACRO GEODATABASE_FILE_IN_SEARCH_ENVELOPE_MAXX_GEODATABASE_FILE_1 0 GEODATABASE_FILE_1_SEARCH_ENVELOPE "$(GEODATABASE_FILE_IN_SEARCH_ENVELOPE_MAXX_GEODATABASE_FILE_1)" GUI OPTIONAL FLOAT GEODATABASE_FILE_IN_SEARCH_ENVELOPE_MAXX_GEODATABASE_FILE_1 Maximum X: # =========================================================================== DEFAULT_MACRO GEODATABASE_FILE_IN_SEARCH_ENVELOPE_MAXY_GEODATABASE_FILE_1 0 GEODATABASE_FILE_1_SEARCH_ENVELOPE "$(GEODATABASE_FILE_IN_SEARCH_ENVELOPE_MAXY_GEODATABASE_FILE_1)" GUI OPTIONAL FLOAT GEODATABASE_FILE_IN_SEARCH_ENVELOPE_MAXY_GEODATABASE_FILE_1 Maximum Y: # =========================================================================== DEFAULT_MACRO GEODATABASE_FILE_IN_CLIP_TO_ENVELOPE_GEODATABASE_FILE_1 NO GEODATABASE_FILE_1_CLIP_TO_ENVELOPE "$(GEODATABASE_FILE_IN_CLIP_TO_ENVELOPE_GEODATABASE_FILE_1)" GUI OPTIONAL CHECKBOX GEODATABASE_FILE_IN_CLIP_TO_ENVELOPE_GEODATABASE_FILE_1 YES%NO Clip to Search Envelope # ============================================================================ # Search Envelope Coordinate System DEFAULT_MACRO _GEODB_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEODATABASE_FILE_1 GUI OPTIONAL COORDSYS _GEODB_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEODATABASE_FILE_1 Search Envelope Coordinate System: GEODATABASE_FILE_1_SEARCH_ENVELOPE_COORDINATE_SYSTEM "$(_GEODB_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEODATABASE_FILE_1)" # ======================================================================== # The following determines whether to vectorize arcs. If SPLIT_AT_ARCS # is set to yes, then arcs do not get vectorized and lines/polygons # containing arcs get split up into line segments and arc segments. # # Update: This keyword is not applicable when using rich geometry. Since # all new mapping files/workspaces have FME_USE_RICH_GEOMETRY set to YES then # we do not need to expose this keyword. #DEFAULT_MACRO _GEODBInSplitAtArcs no #DEFAULT_MACRO _GEODBInSplitAtArcs NO #GUI OPTIONAL CHOICE _GEODBInSplitAtArcs yes%no Split at Arcs #GEODATABASE_FILE_SPLIT_AT_ARCS "$(_GEODBInSplitAtArcs_GEODATABASE_FILE_1)" # # ======================================================================== # The following defines the search feature for the query. It defines an # arbitrarily complex search feature as a spatial contraint. It is in the # form _SEARCH_FEATURE [ ]+. DEFAULT_MACRO _GEODBInSearchFeature_GEODATABASE_FILE_1 GUI OPTIONAL TEXT _GEODBInSearchFeature_GEODATABASE_FILE_1 Search Feature: GEODATABASE_FILE_1_SEARCH_FEATURE $(_GEODBInSearchFeature_GEODATABASE_FILE_1) # ======================================================================== # Determines whether the spatial component or the attribute component of a # query is performed first. This is only applicable when both spatial and # non-spatial searches are being performed. DEFAULT_MACRO _GEODBInSearchOrder_GEODATABASE_FILE_1 SPATIAL_FIRST GUI OPTIONAL CHOICE _GEODBInSearchOrder_GEODATABASE_FILE_1 SPATIAL_FIRST%ATTRIBUTE_FIRST Search Order: GEODATABASE_FILE_1_SEARCH_ORDER $(_GEODBInSearchOrder_GEODATABASE_FILE_1) # ======================================================================== # Determines which type of search method to use. This keyword is only applicable # when either the keyword SEARCH_ENVELOPE or the keyword SEARCH_FEATURE is specified. DEFAULT_MACRO _GEODBInSearchMethod_GEODATABASE_FILE_1 GEODB_INTERSECTS GUI OPTIONAL CHOICE _GEODBInSearchMethod_GEODATABASE_FILE_1 GEODB_INTERSECTS%GEODB_ENVELOPE_INTERSECTS%GEODB_TOUCHES%GEODB_OVERLAPS%GEODB_CROSSES%GEODB_WITHIN%GEODB_CONTAINS Search Method GEODATABASE_FILE_1_SEARCH_METHOD $(_GEODBInSearchMethod_GEODATABASE_FILE_1) # ======================================================================== # The following determines whether to read features from the geodatabase # tables/feature classes or to read metadata from those tables/feature # classes. DEFAULT_MACRO _GEODBInFeatureReadMode_GEODATABASE_FILE_1 Features GUI CHOICE _GEODBInFeatureReadMode_GEODATABASE_FILE_1 Features%Metadata Feature Read Mode: GEODATABASE_FILE_1_FEATURE_READ_MODE "$(_GEODBInFeatureReadMode_GEODATABASE_FILE_1)" # ======================================================================== # The following specifies that simple geometry should be checked for # when reading features. DEFAULT_MACRO _GEODBInCheckSimpleGeom_GEODATABASE_FILE_1 no GUI CHOICE _GEODBInCheckSimpleGeom_GEODATABASE_FILE_1 yes%no Check for Simple Geometry: GEODATABASE_FILE_1_CHECK_SIMPLE_GEOM $(_GEODBInCheckSimpleGeom_GEODATABASE_FILE_1) # ======================================================================== # The following specifies whether feature-linked annotations should # be merged onto the main feature as a text list attribute when reading. DEFAULT_MACRO _GEODBMergeFeatLinkedAnnos_GEODATABASE_FILE_1 no GUI CHOICE _GEODBMergeFeatLinkedAnnos_GEODATABASE_FILE_1 yes%no Merge Feature Linked Annotations: GEODATABASE_FILE_1_MERGE_FEAT_LINKED_ANNOS $(_GEODBMergeFeatLinkedAnnos_GEODATABASE_FILE_1) # ============================================================================== # The following specifies an SQL command to execute before opening the first # Geodatabase table. DEFAULT_MACRO _GEODBInBeginSql_GEODATABASE_FILE_1 GUI OPTIONAL TEXT_EDIT_SQL _GEODBInBeginSql_GEODATABASE_FILE_1 SQL Statement To Execute Before Translation: GEODATABASE_FILE_1_BEGIN_SQL{0} "$(_GEODBInBeginSql_GEODATABASE_FILE_1)" # ============================================================================== # The following specifies an SQL command to execute after closing all the # Geodatabase tables. DEFAULT_MACRO _GEODBInEndSql_GEODATABASE_FILE_1 GUI OPTIONAL TEXT_EDIT_SQL _GEODBInEndSql_GEODATABASE_FILE_1 SQL Statement To Execute After Translation: GEODATABASE_FILE_1_END_SQL{0} "$(_GEODBInEndSql_GEODATABASE_FILE_1)" GEODATABASE_FILE_1_DATASET "$(SourceDataset_GEODATABASE_FILE_1)" #! END_SOURCE_HEADER #! START_WB_HEADER MACRO WB_KEYWORD "DGNV8_1" #! END_WB_HEADER #! START_DEST_HEADER DGNV8 DGNV8_1 # ============================================================================ # The following GUI lines prompt for a design file to be used as the # the destination of the data, and a seed file to be used as the base # for the created design file. # Commented out prompts are also provided to define cell library # file, which might be needed if any cells are to be placed in the # created dataset. In such a case, they should be uncommented. #! END_DEST_HEADER #! START_WB_HEADER DEFAULT_MACRO DestDataset INCLUDE [ if {"$(DestDataset)" != ""} { \ puts {DEFAULT_MACRO DestDataset_DGNV8_1 $(DestDataset)} \ } ] #! END_WB_HEADER #! START_DEST_HEADER DGNV8 DGNV8_1 DEFAULT_MACRO DestDataset_DGNV8_1 $(DestDataset_DGNV8) GUI FILENAME DestDataset_DGNV8_1 Design_Files(*.dgn)|*.dgn|All_files(*.*)|*.* Destination Bentley MicroStation Design File: DEFAULT_MACRO _SEED_DGNV8_1 $(FME_HOME)design\seed3d_m_v8.dgn GUI FILENAME_MUSTEXIST _SEED_DGNV8_1 Design_Files(*.dgn)|*.dgn|All_files(*.*)|*.* V8 Seed File: DGNV8_1_SEED_FILE "$(_SEED_DGNV8_1)" # ============================================================================ # The following line controls how all the FME coordinates written to the # design file will be interpreted. # Valid values IGDS_MASTER_UNITS -- FME coordinates are treated as Master Units # IGDS_SUB_UNITS -- FME coordinates are treated as Sub Units # IGDS_UORS -- FME coordinates are treated as UORs DEFAULT_MACRO _OUT_UNITS_DGNV8_1 IGDS_MASTER_UNITS GUI CHOICE _OUT_UNITS_DGNV8_1 IGDS_MASTER_UNITS%IGDS_SUB_UNITS%IGDS_UORS Output Units: DGNV8_1_UNITS $(_OUT_UNITS_DGNV8_1) # ============================================================================ # If this is set to YES, then the input data will be analyzed and # optimal seed file settings will be computed for the output design file DEFAULT_MACRO _COMPUTE_SEED_DGNV8_1 no GUI CHOICE _COMPUTE_SEED_DGNV8_1 yes%no Compute Optimal Seed File Parameters: DGNV8_1_COMPUTE_SEED_FILE_PARMS $(_COMPUTE_SEED_DGNV8_1) # ============================================================================ # And set whether or not we allow type 3 elements to be created for 2 point # lines. DEFAULT_MACRO _TYPE3_DGNV8_1 yes GUI CHOICE _TYPE3_DGNV8_1 yes%no Type 3 Elements: DGNV8_1_CREATE_LINE_ELEMENTS $(_TYPE3_DGNV8_1) # ============================================================================ # And set whether or not we allow area filling # lines. DEFAULT_MACRO _ALLOW_FILL_DGNV8_1 yes GUI CHOICE _ALLOW_FILL_DGNV8_1 yes%no Allow Area Color Fills: DGNV8_1_ALLOW_FILL $(_ALLOW_FILL_DGNV8_1) # ============================================================================ # Allow writing tags DEFAULT_MACRO _WRITE_TAGS_DGNV8_1 no GUI CHOICE _WRITE_TAGS_DGNV8_1 yes%no Write tags: DGNV8_1_WRITE_TAGS $(_WRITE_TAGS_DGNV8_1) # ============================================================================ # These settings override the global offset and unit information # contained in the seed file. By default they are set to blank # which means the seed file settings will be used. #GUI OPTIONAL FLOAT _UOR_GLOBAL_ORIGIN_X UOR X Global Origin: DEFAULT_MACRO _UOR_GLOBAL_ORIGIN_X_DGNV8_1 DGNV8_1_UOR_GLOBAL_ORIGIN_X $(_UOR_GLOBAL_ORIGIN_X_DGNV8_1) #GUI OPTIONAL FLOAT _UOR_GLOBAL_ORIGIN_Y UOR Y Global Origin: DEFAULT_MACRO _UOR_GLOBAL_ORIGIN_Y_DGNV8_1 DGNV8_1_UOR_GLOBAL_ORIGIN_Y $(_UOR_GLOBAL_ORIGIN_Y_DGNV8_1) #GUI OPTIONAL FLOAT _UOR_GLOBAL_ORIGIN_Z UOR Z Global Origin: DEFAULT_MACRO _UOR_GLOBAL_ORIGIN_Z_DGNV8_1 DGNV8_1_UOR_GLOBAL_ORIGIN_Z $(_UOR_GLOBAL_ORIGIN_Z_DGNV8_1) #GUI OPTIONAL TEXT _MASTER_UNIT_NAME Master Unit Name: DEFAULT_MACRO _MASTER_UNIT_NAME_DGNV8_1 DGNV8_1_MASTER_UNIT_NAME $(_MASTER_UNIT_NAME_DGNV8_1) #GUI OPTIONAL TEXT _SUB_UNIT_NAME Sub Unit Name: DEFAULT_MACRO _SUB_UNIT_NAME_DGNV8_1 DGNV8_1_SUB_UNIT_NAME $(_SUB_UNIT_NAME_DGNV8_1) #GUI OPTIONAL INTEGER _SUBS_PER_MASTER Subs per Master: DEFAULT_MACRO _SUBS_PER_MASTER_DGNV8_1 DGNV8_1_SUBS_PER_MASTER $(_SUBS_PER_MASTER_DGNV8_1) #GUI OPTIONAL INTEGER _UORS_PER_SUB UOR per Sub: DEFAULT_MACRO _UORS_PER_SUB_DGNV8_1 DGNV8_1_UORS_PER_SUB $(_UORS_PER_SUB_DGNV8_1) DEFAULT_MACRO _CELLLIB_DGNV8_1 GUI OPTIONAL MULTIFILE _CELLLIB_DGNV8_1 Cell_Library_Files(*.cel)|*.cel|All_files(*.*)|*.* Cell Library File: DGNV8_1_CELL_LIBRARY "$(_CELLLIB_DGNV8_1)" DEFAULT_MACRO _MANGLE_DBCS_TEXT_DGNV8_1 NO GUI OPTIONAL CHOICE _MANGLE_DBCS_TEXT_DGNV8_1 YES%NO Mangle DBCS Text: DGNV8_1_MANGLE_DBCS_TEXT $(_MANGLE_DBCS_TEXT_DGNV8_1) # ============================================================================ # These settings override the global offset and unit information # contained in the seed file. By default they are set to blank # which means the seed file settings will be used. GUI OPTIONAL FLOAT _UOR_GLOBAL_ORIGIN_X_DGNV8_1 UOR X Global Origin: GUI OPTIONAL FLOAT _UOR_GLOBAL_ORIGIN_Y_DGNV8_1 UOR Y Global Origin: GUI OPTIONAL FLOAT _UOR_GLOBAL_ORIGIN_Z_DGNV8_1 UOR Z Global Origin: GUI OPTIONAL TEXT _MASTER_UNIT_NAME_DGNV8_1 Master Unit Name: GUI OPTIONAL TEXT _SUB_UNIT_NAME_DGNV8_1 Sub Unit Name: GUI OPTIONAL INTEGER _SUBS_PER_MASTER_DGNV8_1 Subs per Master: GUI OPTIONAL INTEGER _UORS_PER_SUB_DGNV8_1 UOR per Sub: #Allow user to specify a default cell to use when a cell is not in cell lib. DEFAULT_MACRO _DEFAULT_CELL_NAME_DGNV8_1 GUI OPTIONAL TEXT _DEFAULT_CELL_NAME_DGNV8_1 Default Cell Name: DGNV8_1_DEFAULT_CELL_NAME $(_DEFAULT_CELL_NAME_DGNV8_1) DGNV8_1_DATASET "$(DestDataset_DGNV8_1)" #! END_DEST_HEADER #! END_HEADER LOG_FILENAME "$(FME_MF_DIR)GeodatabaseAnnoToDgnMultiText.log" LOG_APPEND NO LOG_MAX_FEATURES 200 LOG_MAX_RECORDED_FEATURES 200 FME_REPROJECTION_ENGINE FME FME_GEOMETRY_HANDLING Enhanced FME_STROKE_MAX_DEVIATION 0 LOG_FILTER_MASK -1 DEFAULT_MACRO DATASET_KEYWORD_GEODATABASE_FILE_1 GEODATABASE_FILE_1 DEFAULT_MACRO DATASET_KEYWORD_DGNV8_1 DGNV8_1 # ------------------------------------------------------------------------- GEODATABASE_FILE_1_READER_META_ATTRIBUTES fme_feature_type # ------------------------------------------------------------------------- MULTI_READER_CONTINUE_ON_READER_FAILURE No # ------------------------------------------------------------------------- MACRO WORKSPACE_NAME GeodatabaseAnnoToDgnMultiText MACRO FME_VIEWER_APP fmedatainspector # ------------------------------------------------------------------------- GEODATABASE_FILE_1_DEF IdrografiaLineare_A166 geodb_type geodb_annotation geodb_oid integer geodb_subtype_name char(254) OBJECTID integer FeatureID integer ZOrder integer AnnotationClassID integer SymbolID integer Status smallint TextString char(255) FontName char(255) FontSize double Bold smallint Italic smallint Underline smallint VerticalAlignment smallint HorizontalAlignment smallint XOffset double YOffset double Angle double FontLeading double WordSpacing double CharacterWidth double CharacterSpacing double FlipAngle double Override integer SHAPE_Length double SHAPE_Area double # ------------------------------------------------------------------------- Lookup ___KnownFeatureTypes___ IdrografiaLineare_A166 yes "" no FACTORY_DEF * TeeFactory FACTORY_NAME "GEODATABASE_FILE_1 Merger" INPUT FEATURE_TYPE * OUTPUT FEATURE_TYPE "IdrografiaLineare_A166" # ------------------------------------------------------------------------- FACTORY_DEF * TestFactory FACTORY_NAME "Unexpected Input Remover" INPUT FEATURE_TYPE * TEST @Lookup(___KnownFeatureTypes___,@FeatureType()) == yes OUTPUT PASSED FEATURE_TYPE * # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "Source -> Generic" INPUT FEATURE_TYPE * OUTPUT FEATURE_TYPE * @Transform(GEODATABASE_FILE,FME_GENERIC,PRESERVE_GEOMETRY) DEFAULT_MACRO WB_CURRENT_CONTEXT # ------------------------------------------------------------------------- INCLUDE [ set COMMENT { -- Determine the pieces which define the @Count domain: - Global count domains from attributes use @Count(fme_attribute_name,...) - Count domains with encoded literal values use @Count(fme_encoded,...) - Other count domains which are not encoded use standard @Count(...) for efficiency. }; set domainDirective {}; set domainPrefix {}; set domain [FME_DecodeText {text}]; if { ($domain != {text}) && ([string range $domain 0 0] != "&") } { set domainDirective "fme_encoded,"; set domain {text}; }; set useTclCommand 0; if {{Global} == {Local}} { set domainPrefix {Counter_}; if {[string range $domain 0 0] == "&"} { set COMMENT { -- To get encodings right, we have to use @Tcl when working with -- local counters based on attribute values. }; set attrName [string range $domain 1 end]; set tempAttrName {__Counter_Domain__}; puts "Tcl2 proc Counter_IncrementCounter {} {FME_SetAttribute {$tempAttrName} \"$domainPrefix\[FME_GetAttribute {$attrName}]\"; set result \[FME_Execute Count fme_attribute_name {$tempAttrName} 0]; FME_UnsetAttributes {$tempAttrName}; return \$result }"; set useTclCommand 1; } } elseif {[string range $domain 0 0] == "&"} { set domainDirective "fme_attribute_name,"; set domain [string range $domain 1 end] }; if { $useTclCommand } { puts "MACRO Counter_INCREMENT_FUNCTION @Tcl2(Counter_IncrementCounter)"; } else { set domainPieces $domainDirective$domainPrefix$domain; puts "MACRO Counter_INCREMENT_FUNCTION @Count($domainPieces,0)"; }; ] FACTORY_DEF * TeeFactory FACTORY_NAME Counter INPUT FEATURE_TYPE IdrografiaLineare_A166 OUTPUT FEATURE_TYPE Counter_OUTPUT "_text_id" $(Counter_INCREMENT_FUNCTION) # ------------------------------------------------------------------------- Tcl2 proc StringLengthCalculator_calc_len {} { FME_SetAttribute {_length} [string length [FME_GetAttribute {geodb_text_string}]] } FACTORY_DEF * TeeFactory FACTORY_NAME StringLengthCalculator INPUT FEATURE_TYPE Counter_OUTPUT OUTPUT FEATURE_TYPE StringLengthCalculator_OUTPUT @Tcl2(StringLengthCalculator_calc_len) # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME Cloner INPUT FEATURE_TYPE StringLengthCalculator_OUTPUT NUMBER_OF_COPIES @Value(_length) COPY_NUMBER_ATTRIBUTE _copynum OUTPUT FEATURE_TYPE Cloner_COPY FACTORY_DEF * TeeFactory FACTORY_NAME "Cloner COPY Splitter" INPUT FEATURE_TYPE Cloner_COPY OUTPUT FEATURE_TYPE Cloner_COPY_0 OUTPUT FEATURE_TYPE Cloner_COPY_1 OUTPUT FEATURE_TYPE Cloner_COPY_2 # ------------------------------------------------------------------------- # Since the Tcl "END" index specification starts at -1 for the second # last character, and we've defined -1 to be the last charater, we've got # small bit of fiddling to do Tcl2 proc SubstringExtractor_fixLastIndex {lastValue} { if {$lastValue < -1} { incr lastValue; return "end$lastValue"; } elseif {$lastValue == -1} { return "end"; } else { return $lastValue; } } Tcl2 proc SubstringExtractor_extract {startIdx endIdx} { FME_SetAttribute {_substring} [string range [FME_GetAttribute {geodb_text_string}] [SubstringExtractor_fixLastIndex $startIdx] [SubstringExtractor_fixLastIndex $endIdx]] } FACTORY_DEF * TeeFactory FACTORY_NAME SubstringExtractor INPUT FEATURE_TYPE Cloner_COPY_2 OUTPUT FEATURE_TYPE SubstringExtractor_OUTPUT @Tcl2("SubstringExtractor_extract @Value(_copynum) -1") # ------------------------------------------------------------------------- FACTORY_DEF * TextStrokerFactory FACTORY_NAME TextStroker_2 INPUT FEATURE_TYPE SubstringExtractor_OUTPUT TEXT_STRING_ATTR "_substring" TEXT_FONT "@Value(FontName)" TEXT_FONT_WIDTH_MULTIPLIER "1.0" TEXT_PADDING "0" TEXT_ROTATION "0" BUILD_POLYGONS "NO" OUTPUT STROKED FEATURE_TYPE TextStroker_2_STROKED # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME BoundsExtractor_3 INPUT FEATURE_TYPE TextStroker_2_STROKED OUTPUT FEATURE_TYPE BoundsExtractor_3_OUTPUT @Bounds(_xmin,_xmax2,_ymin,_ymax,_zmin,_zmax,GEOMETRIC) # ------------------------------------------------------------------------- FACTORY_DEF * TextStrokerFactory FACTORY_NAME TextStroker INPUT FEATURE_TYPE Cloner_COPY_1 TEXT_STRING_ATTR "geodb_text_string" TEXT_FONT "@Value(FontName)" TEXT_FONT_WIDTH_MULTIPLIER "1.0" TEXT_PADDING "0" TEXT_ROTATION "0" BUILD_POLYGONS "NO" OUTPUT STROKED FEATURE_TYPE TextStroker_STROKED # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME BoundsExtractor INPUT FEATURE_TYPE TextStroker_STROKED OUTPUT FEATURE_TYPE BoundsExtractor_OUTPUT @Bounds(_xmin,_xmax1,_ymin,_ymax,_zmin,_zmax,GEOMETRIC) # ------------------------------------------------------------------------- Tcl2 set {StringConcatenator_valList} [split &_text_id,_,&_copynum ,]; # We use Tcl here instead of @Concatenate because Tcl is more flexible. Tcl2 proc StringConcatenator_concatter {} { global {StringConcatenator_valList}; set val {}; foreach {valEnc} [set {StringConcatenator_valList}] { append val [FME_DecodeTextOrAttr $valEnc]; }; FME_SetAttribute {_link} $val; } FACTORY_DEF * TeeFactory FACTORY_NAME StringConcatenator INPUT FEATURE_TYPE BoundsExtractor_OUTPUT INPUT FEATURE_TYPE BoundsExtractor_3_OUTPUT OUTPUT FEATURE_TYPE StringConcatenator_OUTPUT @Tcl2(StringConcatenator_concatter) # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME TextLocationExtractor INPUT FEATURE_TYPE Cloner_COPY_0 OUTPUT FEATURE_TYPE TextLocationExtractor_OUTPUT @Geometry(REMOVE_TEXT) # ------------------------------------------------------------------------- FACTORY_DEF * SpikeRemoverFactory FACTORY_NAME SpikeRemover INPUT FEATURE_TYPE TextLocationExtractor_OUTPUT SPIKE_ANGLE 10 OUTPUT UNCHANGED FEATURE_TYPE SpikeRemover_UNCHANGED OUTPUT CHANGED FEATURE_TYPE SpikeRemover_CHANGED # ------------------------------------------------------------------------- Tcl2 set {StringConcatenator_2_valList} [split &_text_id,_,&_copynum ,]; # We use Tcl here instead of @Concatenate because Tcl is more flexible. Tcl2 proc StringConcatenator_2_concatter {} { global {StringConcatenator_2_valList}; set val {}; foreach {valEnc} [set {StringConcatenator_2_valList}] { append val [FME_DecodeTextOrAttr $valEnc]; }; FME_SetAttribute {_link} $val; } FACTORY_DEF * TeeFactory FACTORY_NAME StringConcatenator_2 INPUT FEATURE_TYPE SpikeRemover_CHANGED INPUT FEATURE_TYPE SpikeRemover_UNCHANGED OUTPUT FEATURE_TYPE StringConcatenator_2_OUTPUT @Tcl2(StringConcatenator_2_concatter) # ------------------------------------------------------------------------- FACTORY_DEF * ReferenceFactory FACTORY_NAME FeatureMerger INPUT REFERENCER FEATURE_TYPE StringConcatenator_2_OUTPUT INPUT REFERENCEE FEATURE_TYPE StringConcatenator_OUTPUT REFERENCE_INFO ATTRIBUTES REFERENCEE_FIELDS "_link" REFERENCER_FIELDS "_link" MERGE_ATTRIBUTES Yes MANAGE_FME_TYPE Yes MODE COMPLETE PROCESS_DUPLICATE_REFERENCEES Yes BUILD_INCOMPLETE_REFERENCERS Yes OUTPUT COMPLETE FEATURE_TYPE FeatureMerger_COMPLETE # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME ExpressionEvaluator INPUT FEATURE_TYPE FeatureMerger_COMPLETE OUTPUT FEATURE_TYPE ExpressionEvaluator_OUTPUT _label_start @Evaluate("((@Value(_xmax1)-@Value(_xmax2))/(@Value(_xmax1)-@Value(_xmin)))*100.0") # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME ExpressionEvaluator_2 INPUT FEATURE_TYPE ExpressionEvaluator_OUTPUT OUTPUT FEATURE_TYPE ExpressionEvaluator_2_OUTPUT _label_end @Evaluate("@Value(_label_start)+.2") # ------------------------------------------------------------------------- # The Snipper takes the constant "end" to mean the last vertex of the line, # but Workbench won't let us put an alpha string into the "last vertex" textfield. # We'll interpret an ending vertex of -1 as being the same as "end". # This is used only in the distance and percentage. Tcl2 proc Snipper_fixIndex {numIndex} { if {$numIndex < 0} { return "end"; } else { return $numIndex; } } INCLUDE [ if { ({PERCENTAGE} == {DISTANCE} || {PERCENTAGE} == {PERCENTAGE}) } { puts {MACRO Snipper_snipFunc @Snip(@Tcl2("Snipper_fixIndex @Value(_label_start)"),@Tcl2("Snipper_fixIndex @Value(_label_end)"),PERCENTAGE,2D)}; } elseif { ({PERCENTAGE} == {MEASURE_RELATIVE_FROM_START} || {PERCENTAGE} == {MEASURE_REAL_VALUES}) } { puts {MACRO Snipper_snipFunc @Snip(@Value(_label_start), @Value(_label_end), , PERCENTAGE)}; } elseif { ({PERCENTAGE} == {VERTEX}) } { puts {MACRO Snipper_snipFunc @Snip(,,VERTEX)}; } ] FACTORY_DEF * TeeFactory FACTORY_NAME Snipper INPUT FEATURE_TYPE ExpressionEvaluator_2_OUTPUT OUTPUT FEATURE_TYPE Snipper_OUTPUT $(Snipper_snipFunc) # ------------------------------------------------------------------------- # Since the Tcl "END" index specification starts at -1 for the second # last character, and we've defined -1 to be the last charater, we've got # small bit of fiddling to do Tcl2 proc SubstringExtractor_2_fixLastIndex {lastValue} { if {$lastValue < -1} { incr lastValue; return "end$lastValue"; } elseif {$lastValue == -1} { return "end"; } else { return $lastValue; } } Tcl2 proc SubstringExtractor_2_extract {startIdx endIdx} { FME_SetAttribute {igds_text_string} [string range [FME_GetAttribute {geodb_text_string}] [SubstringExtractor_2_fixLastIndex $startIdx] [SubstringExtractor_2_fixLastIndex $endIdx]] } FACTORY_DEF * TeeFactory FACTORY_NAME SubstringExtractor_2 INPUT FEATURE_TYPE Snipper_OUTPUT OUTPUT FEATURE_TYPE SubstringExtractor_2_OUTPUT @Tcl2("SubstringExtractor_2_extract @Value(_copynum) @Value(_copynum)") # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME ExpressionEvaluator_3 INPUT FEATURE_TYPE SubstringExtractor_2_OUTPUT OUTPUT FEATURE_TYPE ExpressionEvaluator_3_OUTPUT igds_text_size @Evaluate("@Value(geodb_text_size)*0.75") # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME ExpressionEvaluator_4 INPUT FEATURE_TYPE ExpressionEvaluator_3_OUTPUT OUTPUT FEATURE_TYPE ExpressionEvaluator_4_OUTPUT igds_text_width_multiplier @Evaluate("@Value(geodb_text_character_width)*0.75") # ------------------------------------------------------------------------- DEFAULT_MACRO Labeller_OVERLAP_LINES INCLUDE [if {"No" == "Yes"} {puts {MACRO Labeller_OVERLAP_LINES LABEL_FIELD "igds_text_string" LABEL_HEIGHT "@Value(igds_text_size)" AVERAGE_CHAR_WIDTH "@Value(igds_text_width_multiplier)"} }] FACTORY_DEF * LabelFactory FACTORY_NAME Labeller INPUT FEATURE_TYPE ExpressionEvaluator_4_OUTPUT PLACEMENT LEFT LABEL_ENDS no PLACEMENT_DISTANCE 0 PLACEMENT_SPACING 1000 MINIMUM_LENGTH 0 $(Labeller_OVERLAP_LINES) OUTPUT POINT FEATURE_TYPE Labeller_LABEL @GeometryType(fme_text,@Value(igds_text_string),@Value(igds_text_size),@Value(LabelRotation)) @RenameAttributes(_label_rotation,LabelRotation) @RenameAttributes(igds_rotation,ParallelRotation) # ------------------------------------------------------------------------- FACTORY_DEF * TestFactory FACTORY_NAME CoordinateExtractor INPUT FEATURE_TYPE Labeller_LABEL TEST @Dimension() == 2 OUTPUT PASSED FEATURE_TYPE CoordinateExtractor_OUTPUT x @Coordinate(x,0,FLATTEN_AGGREGATE) y @Coordinate(y,0,FLATTEN_AGGREGATE) @SupplyAttributes(z,0) OUTPUT FAILED FEATURE_TYPE CoordinateExtractor_OUTPUT x @Coordinate(x,0,FLATTEN_AGGREGATE) y @Coordinate(y,0,FLATTEN_AGGREGATE) z @Coordinate(z,0,FLATTEN_AGGREGATE) # ------------------------------------------------------------------------- Lookup AttributeValueMapper_LOOKUP_TABLE top 0 center 1 bottom 2 baseline 2 "" "" ENCODED FACTORY_DEF * TeeFactory FACTORY_NAME AttributeValueMapper INPUT FEATURE_TYPE CoordinateExtractor_OUTPUT OUTPUT FEATURE_TYPE AttributeValueMapper_OUTPUT "_vert_just" @Lookup(AttributeValueMapper_LOOKUP_TABLE,"geodb_v_align",FORWARD|ENCODED_ATTR) # ------------------------------------------------------------------------- Lookup AttributeValueMapper_2_LOOKUP_TABLE top 0 center 6 bottom 12 baseline 12 "" "" ENCODED FACTORY_DEF * TeeFactory FACTORY_NAME AttributeValueMapper_2 INPUT FEATURE_TYPE AttributeValueMapper_OUTPUT OUTPUT FEATURE_TYPE AttributeValueMapper_2_OUTPUT "_hor_just" @Lookup(AttributeValueMapper_2_LOOKUP_TABLE,"geodb_h_align",FORWARD|ENCODED_ATTR) # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME ExpressionEvaluator_5 INPUT FEATURE_TYPE AttributeValueMapper_2_OUTPUT OUTPUT FEATURE_TYPE ExpressionEvaluator_5_OUTPUT igds_justification @Evaluate("(@Value(_hor_just)+@Value(_vert_just))") # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME AttributeKeeper INPUT FEATURE_TYPE ExpressionEvaluator_5_OUTPUT OUTPUT FEATURE_TYPE AttributeKeeper_OUTPUT @KeepAttributes(_text_id,geodb_subtype_name,igds_rotation,igds_text_size,igds_text_string,igds_text_width_multiplier,x,y,z,fme_regexp_match,^fme_) # ------------------------------------------------------------------------- DEFAULT_MACRO Aggregator_BREAK_ATTR INCLUDE [if {"No" == "Yes"} {puts "MACRO Aggregator_BREAK_ATTR BREAK_BEFORE_FIELD_CHANGE _text_id" }] FACTORY_DEF * AggregateFactory FACTORY_NAME Aggregator INPUT FEATURE_TYPE AttributeKeeper_OUTPUT GROUP_BY _text_id $(Aggregator_BREAK_ATTR) LIST_NAME igds_text_elements{} ACCUMULATE_ATTRIBUTES Yes OUTPUT AGGREGATE FEATURE_TYPE Aggregator_AGGREGATE # ------------------------------------------------------------------------- FACTORY_DEF * TestFactory FACTORY_NAME 3DPointReplacer INPUT FEATURE_TYPE Aggregator_AGGREGATE TEST &fme_type = fme_text OUTPUT PASSED FEATURE_TYPE 3DPointReplacer_POINT @XValue("@Value(x)",RESET) @YValue("@Value(y)") @ZValue("@Value(z)") OUTPUT FAILED FEATURE_TYPE 3DPointReplacer_POINT @XValue("@Value(x)",RESET) @YValue("@Value(y)") @ZValue("@Value(z)") @GeometryType(fme_point) # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME AttributeCreator INPUT FEATURE_TYPE 3DPointReplacer_POINT OUTPUT FEATURE_TYPE AttributeCreator_OUTPUT @SupplyAttributes(ENCODED,igds_type,igds_multi_text) # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "AttributeCreator_OUTPUT -> Text Correlator" INPUT FEATURE_TYPE AttributeCreator_OUTPUT OUTPUT FEATURE_TYPE __GO_TO_FINAL_OUTPUT_ROUTER__ @Transform(FME_GENERIC,DGNV8) @SupplyAttributes(fme_template_feature_type,Text) @CopyAttributes(__wb_out_feat_type__,geodb_subtype_name) # ------------------------------------------------------------------------- FACTORY_DEF * TestFactory FACTORY_NAME "Final Output Feature Type Router" INPUT FEATURE_TYPE * TEST @Value(__wb_out_feat_type__) != "" OUTPUT PASSED FEATURE_TYPE * @FeatureType(@Value(__wb_out_feat_type__)) OUTPUT FAILED FEATURE_TYPE __nuke_me__ @Tcl2("FME_StatMessage 818059 {@Value(fme_template_feature_type)} 818060 818061 fme_warn") # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "Final Output Nuker" INPUT FEATURE_TYPE __nuke_me__ # ------------------------------------------------------------------------- DGNV8_1_DEF Text igds_level "" igds_level_comment "" igds_level_color "" igds_level_style "" igds_level_weight ""