You are here: FME Readers and Writers > Bentley MicroStation Design Reader/Writer > Writer Overview

Writer Overview

To create a new Design file, header information is obtained from an existing Design file, called a seed file. The IGDS writer first copies the seed file’s header information to the destination file, and then extracts the conversion parameters required to translate coordinates from feature coordinate units to internal IGDS UORs1Since coordinates in Design files are ultimately stored as integer UORs, it is possible for precision to be lost or overflow to occur when they are output. Care must be taken to ensure that the conversion parameters in the seed file preserve the data precision and range.. This header information includes type 68 FRAMME elements for V7 only, and type 100 external file reference elements. The IGDS writer uses the seed file to determine whether the destination file will be two-dimensional or three-dimensional. The V8 Design file writer also uses the seed file to set up the models which may have elements written to them.

Because seed files with a sufficient ground range and resolution may be difficult to obtain, the IGDS V7 writer allows seed parameters to be overridden in the mapping file. When a seed file with insufficient range available is used, the IGDS V7 writer will report that features were outside of the bounds of the seed file, and suggest values for the global origin and UOR/subunit/master unit ratios to use. FME can also automatically adjust the V7 Design file by setting the COMPUTE_SEED_FILE_PARAMS flag to yes. Note that this facility has been taken away from the V8 writer – it is no longer necessary since V8 has a much larger design plane than V7.

When translating from DGN version 8 to DGN version 7 or vice versa in FME Workbench, by default a v8 seed file is chosen from the set of seed files as provided by FME. This has to be changed to an appropriate version 7 or version 8 seed file in order to achieve a successful conversion. The seed file is used to determine which version the user intends to write. Also note that if the user picked a v7 seed file at the time of generating the workspace, the same workspace can be used to write to v7 or v8 by changing the seed file accordingly. But if a workspace was initially generated to write to v8, then it cannot be used to write to v7.

A cell library file may optionally be used by both V7 and V8 writer. Cell libraries contain named symbol definitions which can be used to depict point features. If a cell library is specified, the IGDS writer reads in all the cell definitions for later when cell features are output. The IGDS writer can use either 2- or 3-dimensional cell libraries, and will automatically convert the cell definitions to be of the correct dimension for output.

The IGDS writer then outputs each FME feature it is given. Most often, a single FME feature corresponds to a single IGDS element. If any linkages are specified for the element, they are also output. However, some of the IGDS element types cause several elements to be output as a complex unit, with the complex bit turned on. This occurs when a multi-line text object, a cell, or a closed shape or linear feature with more than 101 coordinates (5000 coordinates in V8) is output. The IGDS writer hides all of the details of complex element output.

The IGDS writer can be configured to do one of two things with linear features that have exactly two points. By default, a type 4 linestring will be created for such features. However, if IGDS_CREATE_LINE_ELEMENTS is set to yes in the mapping file, then a type 3 line element will be created for the two-point linear feature.

Design files (V7) can be a maximum of 32 MB in size. Files larger than this will not be completely read by Microstation. The IGDS writer will automatically split any design file it is writing into pieces to avoid overrunning this maximum size. When this happens, features that would have caused the size limit to be exceeded are written to additional design files as necessary. The additional files are named <basename>_#.dgn, where # starts at 1 and increases.