Writer-Specific Directives

When the Generic writer is used, it is sometimes useful to pre-configure directives that would be specific to individual output formats. For example, to write to a Design file, a seed file must be specified.

There are two ways of accomplishing this. The first way, if you are using a mapping file, would be to just specify the settings using the format short name of the target writer. For example, these lines specify the seed file and cell library file for a design file writer:

IGDS_SEED_FILE c:/seed3d.dgn
IGDS_CELL_LIBRARY c:/cells.cel

The second way, and the way that is recommended if you are using Workbench, is to add an additional writer to a workspace. This causes Workbench to think that there is more than one output format, and forces Workbench to create a MULTIWRITER for the workspace. The first writer in the multi-writer will be the GENERIC one, and this one should/will have all the output feature types. The second writer will have no feature types, but will be used to communicate any format-specific writer settings to the Generic writer, when that format is used as the format for the Generic writer.

In such a situation, the underlying mapping file will contain configuration lines like this:

WRITER_TYPE MULTI_WRITER
MULTI_WRITER_TYPE{0} GENERIC
MULTI_WRITER_KEYWORD{0} GENERIC_1
MULTI_WRITER_TYPE{1} IGDS
MULTI_WRITER_KEYWORD{1} IGDS_1
IGDS_1_SEED_FILE "$(_SEED_IGDS_1)"
IGDS_1_UNITS $(_OUT_UNITS_IGDS_1)
IGDS_1_COMPUTE_SEED_FILE_PARMS $(_COMPUTE_SEED_IGDS_1)

So, if the GENERIC_1_FORMAT is set to IGDS, the settings specified for the IGDS_1 reader will be transferred to the IGDS writer that the Generic writer will use.

If the Generic writer is configured to write to a format requiring a filename as a dataset, the Generic writer will turn the output folder into a filename by appending a file extension to the last portion of the folder name. When format-specific settings are present, this extension is taken from the dataset specified for the specific format. The rest of the dataset is ignored.