1.2. Section [CreationOptions(is3d)...] - Key "FileName"

Name for file in pool directory, file extension "prt" for part, "asm" for assembly. Also see keys "PoolPath", "Material", "MaterialDBFile" and block "MatMap".

Default:

FileName(isCreaOptNotSet,is3dpart)=?GetObject("iface.calcnameservice").start(0)
 .Format("<GenNAME(25)><MATERIAL(_)>").alnum("_").ToLower().MaxLen(28).add(".prt").value()

FileName(isCreaOptNotSet,is3dAsm)=?GetObject("iface.calcnameservice").start(0)
 .Format("<GenNAME(25)><MATERIAL(_)>").alnum("_").ToLower().MaxLen(28).add(".asm").value()

(There are two categories: one for parts and one for assemblies.)

<GENNAME><MATERIAL(_)>: The file name contains the Standard Name (NB) and the material (if existing). Additional information on Material with or without integration is found below.

toFileName("_"): Not allowed characters are automatically replaced by an underscore.

Examples

The following examples may show how differentiated the file name can be build. However, we recommend to approve such complex adjustments by a consultant to avoid any side effects.

Example 1:

Take over prefixes in file name.

"<PREFIXLIST(_)>" is inserted.

For projects that contain more than one prefix, these are automatically inserted into the file name with underscore as separator (e.g. Norm9, core hole)

Declare once for part (is3dpart) and once for assembly (is3dasm).

FileName(isCreaOptNotSet,is3dpart)=?GetObject("iface.calcnameservice").start(0).Format
 ("<PREFIXLIST(_)><GENNAME><MATERIAL(_)>").toFileName("_").add("<.FileExtension>").value()

FileName(isCreaOptNotSet,is3dasm)=?GetObject("iface.calcnameservice").start(0).Format
 ("<PREFIXLIST(_)><GENNAME><MATERIAL(_)>").toFileName("_").add("<.FileExtension>").value()

Example 2:

Take over catalog names in the file name.

"<CATALOG>_" is prefixed to the file name.

Declaration once for part (is3dpart) and once for assembly (is3dasm).

FileName(isCreaOptNotSet,is3dpart)=?GetObject("iface.calcnameservice").start(0).Format
 ("<CATALOG>_<GENNAME><MATERIAL(_)>").toFileName("_").add("<.FileExtension>").value()

FileName(isCreaOptNotSet,is3dasm)=?GetObject("iface.calcnameservice").start(0).Format
 ("<CATALOG>_<GENNAME><MATERIAL(_)>").toFileName("_").add("<.FileExtension>").value()

Example 3:

<GenNAME(25)>: Restrict length of file name

alnum("_"): Only allow alphanumerical characters; all others are replaced by an underscore

ToLower(): Convert all characters into lower-case characters

MaxLen(28): The entire length of the file name is restricted to 28 characters

FileName(isCreaOptNotSet,is3dpart)=?GetObject("iface.calcnameservice").start(0).Format
 ("<GenNAME(25)><MATERIAL(_)>").alnum("_").ToLower().MaxLen(28).add(".prt").value()

Example 4:

This example covers the file name creation with existing ERP-connection.

The file name is built from GENNAME (NB) and material by default.

FileName(isCreaOptNotSet,is3dasm)=?GetObject("iface.calcnameservice").start(0).Format
 ("<GENNAME><MATERIAL(_)>").alnum("_").add("<.FileExtension>").value()

However, you can build the file name using the ERP number. The advantage would be to get an absolutely unique file name.

FileName(isCreaOptNotSet,is3dasm)=?GetObject("iface.calcnameservice").start(0).Format
 ("<ATTR(ERP_PDM_NUMBER)>").alnum("_").add("<.FileExtension>").value()

Using <ATTR(any_ERP_column)> you can refer to any ERP column.

FileName(isCreaOptNotSet,is3dasm)=?GetObject("iface.calcnameservice").start(0).Format
 ("<ATTR(any_ERP_column)>").alnum("_").add("<.FileExtension>").value()

The creation via ERP number + standard name (NB) is an option as well in order to have a meaningful section in the name.

FileName(isCreaOptNotSet,is3dasm)=?GetObject("iface.calcnameservice").start(0).Format
 ("<ATTR(ERP_PDM_NUMBER)>_<GENNAME>").alnum("_").add("<.FileExtension>").value()

Example 5:

In this complex example an ERP integration is used. The file name shall be overtaken from an ERP column.

The FileName key is defined three times with the help of categories:

The file name definition for assembly and part is standard syntax, such as known from the preceding examples. The SubParts of the assembly shall combine the file name with...

;Assembly
FileName(isCreaOptNotSet,is3dAsm)=?GetObject("iface.calcnameservice").start(0).Format
 ("<ATTR(xy)>").alnum("_").ToLower().MaxLen(28).add(".iam").value()

;Part
FileName(isCreaOptNotSet,is3dpart)=?GetObject("iface.calcnameservice").start(0).Format
 ("<ATTR(xy)>").alnum("_").ToLower().MaxLen(28).add(".ipt").value()

;SubPart
FileName(isCreaOptNotSet,is3dpart,isSubPart)=?GetObject("iface.calcnameservice").start(0)
 .SetObj(GetObject("iface.metaoptionservice").GetRoot()).Format("<ATTR(xy)>_")
 .value()+GetObject("iface.calcnameservice").start(0).Format("<GenNAME(25)>").alnum("_")
 .ToLower().MaxLen(28).add(".ipt").value()

Example:

If "AAAA" is the value from the ERP column "xy", the result would look like this:

AAAA.assembly
   AAAA_part1
   AAAA_part2

Explanations:

isSubPart: For SubParts a category is set. That's why this special key is only valid for SubParts.

The expression before the plus sign reads the content from the ERP column.

The expression behind the plus sign creates the file name such as in the preceding examples.