This article is a cumbersome and very detailed overview of the XML elements available to use in RC DNA generation. For a top level description of the _SRC XML files, see

Editing _SRC files

XML elements in DNA

Below is an overview of the RC DNA elements. The structure of the presentation indicates how the elements are structured logically in the DNA XML.

<RailwayObjectTypeDefinitions> | XML element which contains the entire XML code for a specific instance of RailCOMPLETE object type definitions (Definition of Netork Assets = DNA). | | <DnaIdentification>============================================= | | Element which contains metadata about the present specific DNA: administrator, descriptive text, version number etc. | | Attributes: Name - String - To be presented to a user when selecting between available DNA version. E.g., "NO-BN 2022.a (beta 2022-08-07)". | | | | <DnaIri>===================================================== | | | Element which contains information such as railway administration, DNA's date/time. "IRI" is short for "Internationalized Resource Identifier", see Wikipedia. | | | | | | <AdministrationCountry>----------------------------------- | | | An ISO 3166-2 two-letter uppercased Adm's country name abbreviation. E.g. "NO" for Norway. | | | | | | <AdministrationDelimiter>--------------------------------- | | | Delimiting character between Administration Country and Administration Code. E.g., "-" | | | | | | <AdministrationCode>-------------------------------------- | | | A 2-letter uppercased code which identifies the railway administration within its country, e.g. "BN" for "Bane NOR". | | | | | | <AgentCountry>-------------------------------------------- | | | An ISO 3166-2 two-letter uppercased Agent's country name abbreviation. E.g. "NO" for Norway. | | | | | | <AgentDelimiter>------------------------------------------ | | | Delimiting character between Agent Country and Agent Code. E.g., "." | | | | | | <AgentCode>----------------------------------------------- | | | A four-digit number which identifies the Agent. A codebook for recognized Agents is kept at Railcomplete AS and published on its web pages. | | | | | | <DateTime>------------------------------------------------ | | | Time/date when the DNA was last updated. Format: "YYYY-MM-DD-Thh:mm+hh:mm" where the hh:mm after the '+' is time difference relative to GMT. | | | | | | <VersionNumber>------------------------------------------- | | | DNA Version number. Format: YYYY.xx. Eks: 2022.a or 2022.b etc. It is suggested to use a letter suffix for DNAs, and number suffic for RC application. | | </DnaIri>==================================================== | | | | <Description>------------------------------------------------ | | Text string with a short human-readable description of the DNA's contents. E.g., "RailCOMPLETE(r) Definition of Network Assets (DNA) for Bane NOR". | | | | <AdministrationName>----------------------------------------- | | The railway administration's name. | | | | <AgentName>-------------------------------------------------- | | The DNA Agent's name. | </DnaIdentification>============================================ | | <StyleDefinitions>---------------------------------------------- | Element containing style settings for the DNA, Linetypes, text styles etc. See further documentation below |

| <PropertySets> ============================================ | | Element that contains Property Sets that will be included in the AutoCAD document if AutoCAD Civil3D is used. | | | | <ExtendedDataPropertySet> ----------------------------------- | | | Property Set that will be inclueded. | | | Attributes: Name - String - the name of the Property Set. | | | IsVisible - Boolean - Indicates if the Property Set should be visible or not. | | | IsWritable - Boolean - Indicates if the Property Set is writable. | | | IsLocked - Boolean - Indicats if the Property Set is locked. | | | Description - String - A description of the property set. | | | <Properties> ================================= | | | | Element containing Extended Data Properties | | | | | | | | <ExtendedDataProperty> -------------------------------- | | | | Extended Data Property that will be included in Property Set | | | | Attributes: Name - String - the name of the Extended Data Property. | | | | DataType - String - the data type of the Extended Data Property | | | | Valid values: "Integer", "Real", "Text", "TrueFalse", "AutoIncrement", "AlphaIncrement", "List", "Graphic". | | | | DefaultValue - String - default value of Extended Data Property. | | | | IsVisible - Boolean - Indicates if the Extended Data Property should be visible or not. | | | | DisplayOrder - Integer - the display order number for this Extended Data Property. | | | | Description - String - A description of the property. | | | </Properties> | | | | | </ExtendedDataPropertySet> | | | </PropertySets> | | <Relations>===================================================== | | Specifies a group of relations for objects sharing a certain SourceSpace | | | | <SourceSpace>------------------------------------------------ | | States the relation's SourceSpace. | | Each RC object states zero or one source space, which will be added to the database in the sequence they appear | | in the DNA. See element <RelationSourceSpace>. A relation declaration may reference multiple source spaces. | | | | <Relation>=================================================== | | | Element that defines a relation. | | | Attributes: Name - String - The name of the relation. It must be unique within the possible combinations of available source spaces. | | | AskForRelation - Bool - If true, asks the user, during object creation, to select an object to which the relation will be established. | | | AskForReverseRelation - Bool - If true, asks for a source end object at object creation time, to which the reverse relation will be established. | | | Color - String - Denotes the color for the transient or permament annotation of the relation line. Stated by color name, by index or by RGB code. | | | LineType - String - Denotes the linetype (continuous, dashed etc) to use for relation line annotations. | | | LineWeight - String - Denotes the lineweight to use for relation line annotations. NB: Use only predefined AutoCAD lineweight types. | | | | | | <TargetSpace>--------------------------------------------- | | | States the relation's target space. | | | A target space is created due to mention in an RC object type declaration. A relation declaration may have multiple target spaces. | | | | | | <RelatesTo>----------------------------------------------- | | | Specifies the forward relation from an object in a sourcespace towards an object in a targetspace. | | | Attributes: Prompt - String - The message (prompt) that the user sees when the relation is about to be established | | | WarnAtSaturation - Bool - Warns the used if the source object is already at its max, and offers to break an existing relation to make space. | | | Min - Positive integer / default 0 - States the minimum allowed number of forward relations from a given object in sourcespace. | | | Max - Positive integer or 'Inf' / default '1' - States the maximum allowed number of forward relations from a given object in sourcespace. | | | | | | <ReverseRelatesTo>---------------------------------------- | | | Specifies the reverse relation from an object in a targetspace towards an object in a sourcespace. | | | WarnAtSaturation - Bool - Warns the used if the target object is already at its max. The user is notified but blocked from adding | | | a reverse relation beyond the relation's maximum for reverse connections. | | | Min - Positive integer / default 0 - States the minimum allowed number of reverse relations from a given object in targetspace. | | | Max - Positive integer or 'Inf' / default '1' - States the maximum allowed number of reverse relations from a given object in targetspace. | | </Relation>================================================== | | | </Relations>==================================================== | | <DistanceAcrossScreenAtDocumentStart>--------------------------- | Zoom level at start of a RailCOMPLETE-dokument. Default: 250. | <OwnAlignmentJigHighlightingGlobalWidthRelativeToScreenSize>------------------ | OwnAlignment highlighting width relative to screen size when inserting point objects. | Default 0.005 | <DefaultGeometry3dFileType>----------------------------------------- | Cardinality: 0..infinite | | <PropertyCategory>----------------------------------------------- | | | | The principal naming source for the RC-ManageProperties tool is the ResX language system: | | | | Category names in RC-ManageProperties ==> Resources\PropertiesResources\PropertyCategoriesResources | | Property names in RC-ManageProperties ==> Resources\PropertiesResources\PropertyDisplayNameResources | | Property descriptions in RC-ManageProperties ==> Resources\PropertiesResources\PropertyDescriptionResources | | | | The individual intrinsic property categories such as 'Basic', 'General', '3D' etc have display names | | already stated in the ResX language system for each language (selected by installing an AutoCAD language pack). | | | | ----------------------------------------------------------------------------------------------------------------- | | To reduce confusion, only the neutral language category names are stated in ResX, identical to the ResX keys. | | But the properties' locale names have been subject to translation in ResX. | | ----------------------------------------------------------------------------------------------------------------- | | | | Each intrinsic attribute has a key in RC source code to its corresponding ResX language system text. Each | | property has a display name in ResX and a description. The display name will be shown in the RC-ManageProperties | | tool, but the real underlying name (to be used with Lua code) will be shown as a tooltip text together | | with the descritption from ResX. | | | | Since AutoCAD doesn't come with language packs for every possible language in the world, the DNA allows | | the RC agent to override the ResX displayname and description. | | | | The language system of RC states a display name for each property category (the 'tabs' in | | RC-ManageProperties). However, if a DisplayName is declared inside a PropertyCategory element, then | | this display name will override the language system's word. Collapsed="true"/"false" decides whether the | | category's tab in Property Manager is closed or open at startup. | | | | Note: The order of appearance of the PropertyCategory elements in DNA dictates the categories' order of appearance | | in the Manage Properties tool | | | | Property[Attribute]Override | | =========================== | | The individual intrinsic properties such as 'dir', 'name', 'poleRouting' etc have display names already stated | | in the ResX language system for each language (selected by installing an AutoCAD language pack). | | | | In ResX, declare display name and description for intrinsic attributes in all available languages. The display name | | will be the preferred name to display in RC-ManageProperties. The underlying 'real' name must be used in Lua. | | The tooltip in RC-ManageProperties will show the underlying 'real' name as well as the description. | | | | The language system of RC states an alternative name for each property (the 'rows' in RC-ManageProperties | | inside a category). However, if a DisplayName is declared inside a PropertyOverride element, then | | this display name will override the language system's word. | | The order of appearance of the PropertyOverride elements dictate their order of appearance in the Manage Properties tool, | | within the category. The category's ordering is controlled by the ordering of the PropertyCategory elements in DNA. | | | | Note: In order to change name for a built-in property's category, you must first declare the | | core category as collapsed, and then declare the property as a built-in property with the | | new category name mentioned. | | | | Example: | | Move the 'geoCoord triplet from the core category 'Geographical data' to '3D': | | | | <PropertyCategory Name="Geographical data" Collapsed="true" /> | | <PropertyOverride Name="geoCoord" Category="3D" | | Description="The 'geoCoord' built-in property [Triplet {X,Y,Z}] holds the 'real' position." /> | | | | | | | | railML wiki | | =========== | | XML-file-wide unique, machine-interpretable identity, required for later referencing that element | | internally. For a detailed explanation see https://wiki.railml.org/index.php?title=Dev:identities. | | The general railML® description states the following contraints: | | | | id: xs:ID, required, a string, starting with a letter (a..zA..Z) or an underscore (), followed by a non-colonized and | | non-spaced string consisting of letters, digits, points (.), dashes (-) or underscores (). | | | | (Please note: a Nil UUID shall not be used; UUID's Version 4 is commonly used. Due to the limitations of the ID type by | | www.w3.org in railML® 2 the ID shall begin with a letter!). | | | | Nil UUID link: https://en.wikipedia.org/wiki/Universally_unique_identifier#Nil_UUID | | Version 4 UUID link: https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_4_(random) | | | | =========================================================================================================--> | | | | | | Use these declarations to manage the naming, order of appearence and on-file-opening open/collaspsed | | state in RC-ManageProperties. You may also suppress a particular property from appearing in RC-M.P. | | | | Category names and display names are case sensitive. | | 'True' / 'true' and 'False' / 'false' may be used interchangeably. | | | | 'Intrinsic' means that the category is known in C#, and its display name is given by the ResX language system. | | 'Custom' means that the category has been declared in at least one CustomAttribute DNA declaration somewhere. | | | | The property declarations' order of appearance in the assembled DNA file decides their order of appearance | | in the Manage Properties tool. | | | | NOTE : Property overrides for properties may contain a displayname, but we presume that all intrinsic properties have already been translated in ResX. | | Any custom property is assumed to have been assigned a sensible locale name, so it does not need a (different) display name. | | | | Note: Identifiers that stem from railML are camelCased, such as 'name' and 'additionalNames'. | | | | | | Ordering and naming and collapsed/open state for Property Manager tabs. | | Attributes: Name - string - Unique full name/key of category | | DisplayName - string - Overrides the assigned name (which is rather pointless to do). | | Collapsed - bool - Determines wether the tab is open whenever the DNA is read (file Start, change active document, update DNA in drawing).default false | </PropertyCategory> | | <PropertyOverride>------------------------------------------ | | Override ordering and naming for properties, either built-in properties in RailCOMPLETE or DNA defined custom properties | | Attributes: Name - string | | Intrinsic To find the correct name to use, hover over its left column in Manage Properties. | | Custom The name that the property's DNA declaration assigns to the property (not the display name). Use this one. | | DisplayName - string | | Intrinsic Overrides the display name given in the ResX language system for this language pack. This is useful in | | cases where the CAD system does not support the language of the DNA's administration. | | Custom Overrides the assigned name (which is rather pointless to do). | | Example: 'SwitchControlAndLocking' is the name, 'Basculer / Contrôler' is the CustomAttribute's declaration's display name. | | Category - string - The name of the category that this property shall appear under in the Manage Properties tool. | | Description - string - | | SortOrderPriority - int - default int.max | | Suppressed - bool - Default 'false'. | | If 'true' the property will not be shown in its category's tab in the Manage Properties tool. If 'Suppressed' | | and 'Category' used in the same PropertyOverride moves the property to its new category, but doesn't show it | | - so this is rather pointless. | | If 'false', the property will appear in its original category, or in its new category if 'Category' is non-empty. | |

| | Note 1: The attribute is still available in the Lua interpreter, but auto-fill will not suggest it. | |

| | Note 2: Rather use the <CustomAttribute> element's attribute 'HideFromUser="true"' if you want to hide a property | | from the Lua editor's auto-fill and to not show it in the property manager. This is recommended over declaring it | | as visible with HideFromUser="false" in the CustomAttribute declaration, and subsequently suppressing it with a | | PropertyOverride element. | |

| | Note 3: If either suppressed or declared as HideFromUser="true", all three ways of addressing the attribute in a | | Lua snippet using either 'MyPropName' or 'getPropertyValue("MyPropName")' or 'fromDisplayName("MyPropDisplayName")' | | will work, but the Lua editor auto-fill function will just not suggest them. | </PropertyOverride> | | <DefaultSettingsForCommands>--------------------------------- | | Stores default values for train dimensions. | | <DefaultTrainDimensions>--------------------------------- | | Attributes: CarWidth - The default width in meters of a railway car. | | AxleSeparation - The default axle separation in meters of a railway car. | | NoseLength - The default nose length in meters of a railway car, i.e. the distance from the front of the car to its first axle. | | TailLength - The default tail length in meters of a railway car, i.e. the distance from the last axle of the car to its end. | | CarCount - The default number of railway cars in a train. | | CarSeparation - The default distance in meters between two consecutive railway cars. | </DefaultSettingsForCommands> | | <FoulingPointSetting>------------------------------------------------ | A FoulingPointSetting is used to make a LuaFunction available to the show fouling points command. | Attributes: Name - Name of the FoulingPointSetting. | MaxSearchLength - Maximum search length (m) when looking for a fouling point. Default 200. | LuaFunctionName - Reference to a LuaFunction. This function should take the arguments | Point? foulingPointCandidate, RailwayPath path1, RailwayPath path2, bool path1IsLeftOf2, bool shunting. | It should return the fouling distance between the paths path1 and path2 at the point foulingPointCandidate. | FoulingPointGraphicsType - int - The graphics that will be drawn when creating transient annotations. Valid values are 0-5. | SetAsDefault - bool - If this is set to true, then this FoulingPointSetting is selected by default in the settings manager. | If multiple FoulingPointSettings have this attribute set to true, then the first FoulingPointSetting encountered will be selected. | | <PositionToolSettings>--------------------------------------------- | | PositionToolSettings is used to make a LuaFunction available to the show position command. | | Attributes: Name - string - Name of the PositionToolSettings. | | <PositionToolTextLines>---------------------------------------- | | | Description of transient text lines produced by the position tool. | | | <!-- The following text line specifications are all based on the same structure--> | | | The common attributes are as follows | | | Attributes: PositionToolFormatLuaFunctionName - string - The name of a declared lua function that takes a PositionToolInfo and outputs a string. | | | A PositionToolInfo element has the following fields: | | | PositionToolInfo | | | { | | | Point CursorPosition; | | | AlignmentPos OwnAlignmentPos; | | | AlignmentPos RefAlignmentPos; | | | | | | double? Value; | | | | | | string DefaultAlignment; | | | bool? DefaultMileageMarkerFront; | | | }, | | | where either Value is not nil or DefaultAlignment and DefaultMileageMarkerFront is not nil. | | | OrderPriority - int - Decides the order of text lines displayed by the position tool. Lower numbered text lines are placed closer to the bottom by the alignment. | | | <OwnAlignmentNameOrCodeOrId> | | | <ReferenceAlignmentNameOrCodeOrId> | | | <OwnAlignmentDistanceToAlignment> | | | <ReferenceAlignmentDistanceToAlignment> | | | <OwnAlignmentElevation> | | | <ReferenceAlignmentElevation> | | | <OwnAlignmentMileage> | | | <ReferenceAlignmentMileage> | | | <OwnAlignmentPos> | | | <ReferenceAlignmentPos> | </PositionToolSettings> | | <ReferenceAlignmentProjectionMethod>------------------------------- | Choice of reference alignment projection method. Given a 2D point in model space and an alignment, the chosen method decides which point on a reference alignment corresponds to that point. | The following choices are available: | - Default: Use default method specified in C# (TwoStep). | - Direct: BaneNOR method. For a point close to an own alignment, it's reference alignment point is calculated by projecting it directly onto the reference alignment. | - TwoStep: ISO method. For a point close to an own alignment, it's reference alignment point is calculated by first projecting it onto it's own-alignment, then from there onto the reference alignment. | | <DisplayGaugeSettings>------------------------------------------ | | Settings for DisplayGauge function. | | <Profiles>-------------------------------------------------- | | | | | | <Profile>----------------------------------------------- | | | | Attributes: Name - string | | | | <HalfProfile>-------------------------------------- | | | | | <Point>---------------------------------------- | | | | | | <X>---------------------------------------- | | | | | | Double | | | | | | <Y>---------------------------------------- | | | | | | Double | | | | | </Point> | | | | </HalfProfile> | | | </Profile> | | </Profiles> | </DisplayGaugeSettings> | | <SwitchGeometryFile>-------------------------------------------- | The path and filename to the XML file which describes the available switch (turnout) geometries to use in pattern matching for automated connection of tracks. | The root folder is the installation folder under 'RC.bundle', located under the CAD program's roaming application data folder. | | <RightSideOfAlignmentPositive>---------------------------------- | Bool - If true, then objects to the right of an alignment, seen in its drawn direction, are viewed as having a positive lateral offset (X) from its alignment. | Default: True | | <SymbolLibraryPath>--------------------------------------------- | Specifies the filne names of the 2D symbol libraries relative to the administration folder. | Example: <SymbolLibraryPath>..\2D\JBV-2D-JBTSI.dwg</SymbolLibraryPath> | | <Geometry3DLibraryFolder>------------------------------------------ | Default folder for 3D symbol library. | | <StandardUnknown3DModelFileName>------------------------------------------ | DEPRECATED, use DefaultUnresolved3DModelFileName instead | Default name of 3D model used for unknown or missing models | | <DefaultUnresolved3DModelFileName> | Default name of the standard model used for "unknown" 3Dmodels | | <Geometry3DLayerMappingFolder>------------------------------------- | Default folder for 3D layer mapping file. | <ObjectThumbnailsPath>------------------------------------------ | Default path to SymbolThumbnails.rc | <SwitchGeometryPath>----------------------------------------- | [2019.1] The switch geometry definitions path associated with one or more DNAs (absolute or relative to bundled adm home folder). | Example: 'Dna\Switches\NO-BN-2019.1-Switches.dwg'. The switch geometry definitions are used to identify the switch variant to be | inserted in RC-ASSISTCREATECONNECTIONOBJECTS. See XSD for switch geometry syntax. | <DnaMappingFolder>---------------------------------------------- | Default path to folder containing Dna mappings | <FaqPath>------------------------------------------------------- | FAQ paths | <WebPagesPath>-------------------------------------------------- | Web Links Paths | <LuaTooltipPagesFolder>----------------------------------------- | Lua tooltip pages | <LuaTooltipImagesPath>------------------------------------------ | Lua tooltip images | <TutorialsFolder>----------------------------------------------- | Tutorials folder path | <InfrastructureManagerImagePath> | Path to Infrastructure Manager's logo. | | | <DefaultStagePattern>=========================================== | | Default layer name pattern to be used for the stage manager. | | | | <Prefix>----------------------------------------------------- | | Default prefix. String | | <MainStageDigits>----------------------------------------------------- | | Default no. of main stage digits. Int | | <SubStageDigits>----------------------------------------------------- | | Default no. of sub stage digits. Int | | <DigitSeparator>----------------------------------------------------- | | Default digit separator. String | | <StageSeparator>----------------------------------------------------- | | Default stage separator. String | | <Suffix>----------------------------------------------------- | | Default suffix. String | </DefaultStagePattern>========================================== | | | <Export3DSettings>============================================== | | Contains settings for export of certain object types to 3D | | | | <AlignmentSetting>=========================================== | | | Contains settings for export of Alignments (polylines) | | | | | | <MinimumStepLength>--------------------------------------- | | | Indicates minimum step lenght in the algorithm that goes through alignments to export to a 3DPolyline | | | default: 0.0001 | | | | | | <MaximumStepLength>--------------------------------------- | | | Indicates maximum step lenght in the algorithm that goes through alignments to export to a 3DPolyline | | | default: 1000 | | </AlignmentSettings>========================================= | | | </Export3DSettings>============================================= | | <Units>========================================================= | | Specifies drawing units when initializing a new RailComplete document. | | | | <DistanceUnitFormat>----------------------------------------- | | Sets the distance unit format | | default: Decimal | | Attributes: Precision {0-8} - number between 0 and 8 indicating standart precision. Default 3 | | | | <AngularUnitFormat>----------------------------------------- | | Sets the angular unit format | | default: Decimal Degrees | | Attributes: Precision {0-8} - number between 0 and 8 indicating standart precision. Default 2 | | Clockwise - boolean indicating if positive rotation direction is clockwise. Default false | | | | <InsertionScaleFormat>-------------------------------------- | | Sets the format for AutoCad InsertionUnits. See AutoCad documentation for system variable INSUNITS | | default: Meters | | | | <LightingFormat>-------------------------------------------- | | Sets the format for AutoCad Lighting. See AutoCad documentation for system variable LIGHTINGUNITS | | default: International | </Units>======================================================= | | <DefaultAutoCADSupportFileSearchFolder>------------------------ | Deprecated use AutocadSupportFileSearchFolder | Sets AutoCAD support file search folder | default: %appdata%\Autodesk\ApplicationPlugins\RC.bundle\Adm\NO-BN\AutoCAD | <AutocadSupportFileSearchFolder>------------------------------- | AutoCAD fonts, color tables etc, to be found by AutoCAD during runtime. | | <DefaultFont>-------------------------------------------------- | Sets default font. | default: iso3098 | | <DefaultStyle>------------------------------------------------- | Sets default style. | default: iso | | <DefaultHeight>------------------------------------------------ | Sets default text height | default: 1.0 | <DefaultTargetDirectory>--------------------------------------- | | <TextAttributeDefault>----------------------------------------- | Declares a property which is to be synced between | Object XML (in extension dictionary) and block reference | attribute (for use in displayed texts in drawing) | | | <ShowLayerMenu>------------------------------------------------ | Sets the behaviour of the ShowLayer drop down menu. | Attributes: HideMissingLayerSets - boolean determining if a layer defined in DNA, but not used in drawing should be shown in drop | down menu. Default true. | | <ShowLayer>==================================================== | | Element that defines a collection of layers that can be turned on and aff through the command RC-ShowLayer | | Attributes: Name - String indicating the name of the layer | | DisplayName - String indicating the name shown in user interfaces | | DefaultOff - bool that determines if the layer is turned off by default when objects are inserted on this layer | | | | <LayerSelection>-------------------------------------------- | | Indicates a layer in the ShowLayer group. A <ShowLayer> can have many <LayerSelection> | | Attributes: Type - {ExactMatch, PartialMatch}. Indicates if the layer name shall match exactly or partially to be included in RC-SHOWLAYER | | CaseSensitive - Bool indicating if RC-SHOWLAYER should ignore uppercase/lowercase | </ShowLayer>=================================================== | | <LuaFunction>================================================== | | Defines a standard Lua function that can be used in the DNA and in RailCOMPLETE drawings using this DNA. | | Attributes: Name - String - Name of the function. | | Description - String - Description of the function. Shown in tooltip in RailCOMPLETE Lua editor. | | ReturnType - Indicates returntype of the function. Shown in tooltip in RailCOMPLETE | | | | <Constructor>---------------------------------------------- | | The function's signature (constructor). Example: isnan(Double value) | | | | <Formula>-------------------------------------------------- | | Lua definition of the function. | </LuaFunction>================================================ | | | <ObjectType>================================================== | | Defines and object type. This makes up most of the DNA. See further documentation below. | | Objects can be point objects (signals, signs, balises, etc.), alignments (tracks, contact wires, cable ducts, etc.), Areas, Xrefs or tables. | </ObjectType>================================================= | | <DefaultInterlockingExportOptions>--------------------------- | | | | <TrainRoutesStartPointFilter> | | <TrainRoutesEndPointFilter> | | <TrainRoutesExcludedObjectsFilter> | | <ExtendedTrainRoutesExcludedStartPointFilter> | | <ShuntingRoutesStartPointFilter> | | <ShuntingRoutesEndPointFilter> | | <ShuntingRoutesExcludedObjectsFilter> | | <ExtendedShuntingRoutesExcludedStartPointFilter> | | <ViaPointFilter> | | <SwitchNameScript> | | <ExtendedRoutePartFormatScript> | </DefaultInterlockingExportOptions> | | <ReleaseNotesFolder>----------------------------------------- | Folder containing release note text files. Files should be named on the format [release name][iso date][][anything].txt | Deprecated elements: | <DefaultModel3dFileType>---------------------------------- | Use DefaultGeometry3dFileType | <Model3DLibraryFolder>---------------------------------- | Use Geometry3DLibraryFolder | <Model3DLayerMappingFolder>---------------------------------- | Use Geometry3DLayerMappingFolder </RailwayObjectTypeDefnitions>===================================

ObjectType element - defines RC objects

<ObjectType> Declares an object type, which is used as a template for initializing and handling an object in the RailCOMPLETE document. The RailCOMPLETE object will be added to the drawing as a CAD entity, which entity type depends on the specified Class of the object type. Attributes: DataType= Name of XmlDataType defined in RailCOMPLETE.

		An instantiation of a given type will lead to an object being created in the database. RC objects will also be created as a result of using the CAD system's
		commands such as COPY, MIRROR,  COPYBASE, because these commands are listened to and RailCOMPLETE adds its data to the basic CAD system object when those commands are being used Note
		that these CAD system commands, if their command name is preceded by certain control characters, will prevent RailCOMPLETE from applying command
		overloading.Each time a new object is created by RailCOMPLETE or by overloading one of the object creating CAD system commands, then the new object will
		receive a globally unique ID(GUID). Note that if CAD system copy commands are used without running the RailCOMPLETE plugin, or if control characters are used to
		suppress RailCOMPLETE overloading, then objects will appear with the same GUID.This can be repaired later using the &lt;Audit_StartAuditUniqueIds&gt; command.

		Constraints
		===========
		- If the object type class is a RailwayAlignment, then the data type must implement the IAlignment interface.
		- If the object type class is a RailwayPlacedObject, then the data type must implement the IPlacedObjectBase interface.
		- If the object type class is a RcXRef, then the data type must be a RailCOMPLETEXref.
		- If the object type class is a RcTable, then the data type must be a RailCOMPLETETable.

		Data types which are based on railML 2.2
		========================================
		- eTrack           railML data type for tracks.
		- eSwitch          railML data type which inherits from class tPlacedElement. Used by RailCOMPLETE to identify switches.
		- tStrictOrientedElement railML data type used by objects with directions "up" or "down".
		- tSignal          railML data type for signals.
		- tBalise          railML data type for balises. tSpeedChange railML data type for speed changes, inherits from tStrictOrientedElement.
		- tOrientedElement railML data type used by objects with directions "up", "down", "both", "none" or "unknown". Used by points, point frogs, locks, etc.
						   "both" is used by objects visible in both 'driving directions' (or facing the alignment).
						   "none" is not visible in any direction and is used by objects facing away from the alignment.
						   "unknown" is used by objects that have direction, but the direction is unknown. The resulting symbol rotation is to be further specified
						   in the DNA.

		Extension data types which have been added
		==========================================
		- tSign                   Inherits from railML class tSignal.
		- tMarker                 Inherits from railML class tOrientedElement.
		- tStrictOrientedElement  Inherits from railML class  tPlacedElement.
		- tElementWithAlignment	  Inherits from railML class.
		- tElementWithIDAndName   Used for alignments which are not defined in railML, such as cable ducts, catenary wires, etc.
		- RailCOMPLETELabel       Inherits from railML class.
		- tConnection             Inherits from railML class tElementWithIDAndName.
		- RAILCOMPLETECloneObject Inherits from railML class tElementWithIDAndName.
		- RailCOMPLETETable       Inherits from railML class tElementWithIDAndName.
		- RailCOMPLETEXref        Inherits from railML class tElementWithIDAndName.

	Class:
		The RailwayObjectType class of the object. Available types are RailAlignment, RailwayPlacedObject, RailwayArea, RCXref, RcTable and CloneRailwayObject.
		RailwayAlignment: The graphical representation is a CAD polyline.Requires that the XmlDataType implements the IAlignment interface.
		RailwayPlacedObject: The graphical representation is a CAD anonymous block reference.Requires that the XmlDataType implements the IPlacedObjectBase interface
		RailwayArea : The graphical representation is a closed CAD polyline.
		RCXref: The graphical representation is a CAD xref.
		RcTable: The graphical representation is a CAD table.
		CloneRailwayObject: The graphical representation is any CAD entity.

	Name:
		Name of RailCOMPLETE type. The name is used as a key and should be unique.

	LuaName:
		Alias for the current object type to be used in Lua code. Similar object's across different DNA's and administrations should have the same LuaName.

	DisplayName:
		Name to be shown to the end user. The Name is shown if DisplayName is omitted. Empty string is allowed (nothing is shown).

	Layer:
		Determines the value of the CAD text attribute's Layer property. The referenced Layer should be declared elsewhere in the DNA

  	Color:
		The CAD color assigned to the object type.

	DrawTail:
		If true, a polyline tail will be drawn from the attachment point to the insertion point during the inserting jig.

	DrawTailExtension:
		If true, a polyline tail will be drawn from the attachment point to the insertion point during the inserting jig.

	Group:
		Group name of XmlDataType. Used for grouping loaded types into dropdowns in the ribbon.

	AttAddX:
		X-value added to all the CAD text attributes at object creation. Accepts DotLiquid markup. Parsed to double.
		Example: AttAddX="{%if Dir == 'down' %}-13.503{% else %}13.503{% endif %}"

	AttAddY:
		Y-value added to all the CAD text attributes at object creation. Accepts DotLiquid markup. Parsed to double.

	AttMirrorX:
		Mirror the 2D symbol's text attributes' X-coordinates about the symbol's Y-axis. Accepts DotLiquid markup. Parsed to Boolean.
		Example: AttMirrorX="{% if dir == 'up' %}true{% else %}false{% endif %}"

	AttMirrorY:
		Mirror the 2D symbol's text attributes' Y-coordinates about the symbol's X-axis. Accepts DotLiquid markup. Parsed to Boolean.
		Example: AttMirrorY="{% if RightSided %}true{% else %}false{% endif %}

	Linetype:
		The CAD LineType assigned to the object type. Valid for areas only.
		Example: Linetype="{% if AreaType == 'Arbeidsområde' %}RC-Arbeidsområde{% else %}RC-Udefinert{% endif %}"

Elements:
	<Variants>:
		The element defines the possible variants for the current object type. At insertion or when changing the variant, the SetValues and LuaExpressions expressions of that variant will be executed.

		Attributes:
			DefaultValue="..."
				Specifies the default variant.

		Elements:
			<Variant>
				The variant declares a subtype of the object type. The variant is identified by the variant name.
				Attributes:
					Name:
						Variant name. This is used as a key.

					Description:
						Description of the variant.
				Elements:
					<LuaExpression>:
						See ObjectType.LuaExpression
					</LuaExpression>
					<TextPositionLuaExpression>:
						See ObjectType.TextPositionLuaExpression
					</TextPositionLuaExpression>
					<SetValue>:
						Value setters executed at insertion of the current variant or whenever the Variant changes.
						See ObjectType.SetValue
					</SetValue>
					<DynamicProperty>:
						Dynamic property setters executed at insertion of the current variant.
						Attributes:
							Type:
								Valid values depend on the Object Type's Class:
									RailwayPlacedObject:
										[Representation|ProjectionCollection]
									RailwayAlignment:
										Representation
							SubType:
								Valid values depend on the Object Type's Class and this DynamicProperty's Type:
									RailwayPlacedObject.Representation:
										[ Geometry3D | Annotation3D | CoordinateSystemChange3D ]
									RailwayAlignment.Representation3D:
										[ SweptGeometry3D | IteratedGeometry3D | IteratedAnnotation3D | CoordinateSystemChange3D ]
									RailwayPlacedObject.ProjectionCollection:
										[ Projection ]
						Elements:
							<SetValue>:
								Value setters executed at creation of the dynamic property. The Key property is relative to the dynamic object instead of the base object.
								See ObjectType.SetValue
							</SetValue>
							<LuaExpression>:
								The Name property is relative to the dynamic object instead of the base object.
								See ObjectType.LueExpression
							</LuaExpression>
					</DynamicProperty>
			</Variant>
	</Variants>
	<CustomAttribute>:
		Custom attribute to be added to the data object and stored in the database
		Attributes:
			DataType:
				.NET type name from list of allowable type names (e.g. "String", "Double", "Boolean", "UInt16", "Byte", etc.).
				Indicates that the current RailwayObjectAttribute must be of this type. However, it must be representable
				as a string, as all data is saved as strings.
				<https://msdn.microsoft.com/en-us/library/hfa3fa08(v=vs.110).aspx>
			Name:
				Name key of the custom attribute.
			DisplayName:
				Name to be shown to the end user. The Name is shown if DisplayName is omitted.
			Description:
				Description of the custom attribute.
			DefaultValue:
				Default value of the custom attribute.
			Category:
				Category string used category header in menus. If not defined, the custom attribute will be placed in the "Custom properties" category.
			ReadOnly:
				Boolean determining whether the attribute can be changed
			ExtendedDataPropertySet:
				Extended Data Property Set this custom attribute will be mapped to.
			ExtendedDataPropertyDefinition:
				Extended data property within the extended data property set this custom attribute will be mapped to.
			StandardValuesFromLuaFormula:
				If true, custom attribute will get its standard values from lua formula specified in element "StandardValuesLuaFormula".
				Applicable only if DataType is "String".
			StandardValuesExclusive:
				If true, only standard values are valid values for this custom attribute.
				Not valid for data type "Enumeration"
			DotLiquidExpression:
				If defined, the expression is parsed and the result is saved for the custom attribute value. Not valid if DataType is Enumeration.
				Example: DotLiquidExpression="{{TIL_KM | minus:FRA_KM | times:1000000 | plus:TIL_MM | minus:FRA_MM | todouble | divided_by:1000}}"
				See more about available standard filters (pipes '|') and custom filters added by RC, under 'DotLiquid' elsewhere in this manual.
			InvertOnAlignmentReverse:
				Boolean
			HideFromUser:
				If true, the property is hidden (Browsable(false)) from the user the property is also hidden in Lua editor (Lua autocomplete will not show property name).

		Elements:
			<StandardValuesLuaFormula>:
				The Lua formula (string) from which the custom attribute gets its standard values
			</StandardValuesLuaFormula>
			<Values>:
				Valid if DataType is Enumeration. Used when different variants have different enumeration values.
				Attributes:
					Variant
					DefaultValueOverride:
						The default value for the variant. Overrides the CustomProperty default value.
				Elements:
					<Value>:
						Attributes:
							DisplayName
							Description
						Text:
							Key
					</Value>
			</Values>
		Deprecated Elements:
			<Value>:
				Use Values.
			</Value>
	</CustomAttribute>
	<ObjectTypeAttribute>
		Attribute which is not stored in the database, but which can be referred to in DotLiquid code snippets.
		Attributes:
			Key:
				To obtain the value, refer to this key.
			Value:
				The desired value of the attribute.
	</ObjectTypeAttribute>
	<SymbolDefinition>:
		Available if the object's DNA Class is 'RailwayPlacedObject'.
		Defines a list of CAD system graphical elements (CAD system block references) to be added to the RC object's CAD system anonymous block.
		Each block reference introduces graphical entities which will introduce definitions of layers, fonts, line types, colors etc. as required.
		These definitions may be removed from the drawing with a CAD system PURGE command when all objects using those resources have been deleted.
		Attributes:
			X:
				Offset in X direction. DotLiquid code can be used
			Y:
				Offset in Y direction. DotLiquid code can be used
			RotationCenter:
				Enum: OwnPosition or Origin, default OwnPosition
			DefaultBlockName:
				Block name which is shown when jigging.
			DrawOrder:
				Allow moving of symbols independently of object block.
			AllowSymbolMove:
				Allow moving of symbols independently of object block.
			Layer:
				Name of layer to place object.
			Color:
				Color of object. "bylayer" or "byblock"
			Linetype
			Lineweight
			Transparency

		Elements:
			<BlockNameFormat>:
				Format string for finding the name of the block to be inserted.
				Attributes:
					JoinBy
				Text:
					TemplateString
			</BlockNameFormat>
			<Rotation>:
				Attributes:
					AddAngle
					DoNotRotateWithAlignment
					Add180DegreesIfDirIsDown
			</Rotation>
			<SymbolAttribute>:
				Attributes:
					Tag
					DataType
				Elements:
					<Value>:
						Text: Value
					</Value>
			</SymbolAttribute>
	</SymbolDefinition>
	<Model3DDefinition>:
		DEPRECATED, use GeometryDefinition
		Defines a Model3DDefinition for the object type, which is used to set attributes of the 3D BlockReference when viewing the 3D representation of the object type.
		Elements:
			"Attribute":
				Attributes:
					Tag
					DataType
				Elements:
					<Value>:
						Text: Value
					</Value>
	</Model3DDefinition>
	<GeometryDefinition>:
		Defines a Model3DDefinition for the object type, which is used to set attributes of the 3D BlockReference when viewing the 3D representation of the object type.
		Elements:
			"Attribute":
				Attributes:
					Tag
					DataType
				Elements:
					<Value>:
						Text: Value
					</Value>
	</GeometryDefinition>
	<INSERT OPTIONS>:
		This is not an element but common properties of the elements InsertPointobject, InsertTable, InsertAlignment, InsertArea. Those elements have the following properties in addition to those documented under their own headers.
		Attributes:
			DisplayName:
				Text to be shown to the end user. The Name is shown if DisplayName is omitted.
			Name:
				Name of the item to be inserted. If not defined, the default variant will be inserted.
			DisplayBlockName:
				Name of the block in the current 2D symbol library to display in the ribbon's associated object creation menu.
				For point objects the block is also used as a preview symbol during jigging,
				i.e. shown on the computer screen before you place the object with a mouse click.
			Group:
				Object insertion declarations for areas, alignments, point objects and tables can be associated with a Group name.
				Stating a group name Group='foo' as an attribute for the InsertX (X = Area, Alignment, PointObject or Table)
				declaration element has an effect on the GUI for the various RC-CreateX commands (X = Area,Alignment, PointObject or Table).
				With each new group name encountered, the insertion ribbon menus will add a row with that name. Subsequent InsertX declarations in the DNA
				will append more object type declarations to the same row in the GUI. Subgroups can be created by stating the group name followed by a
				slash character '/' and a subgroup name. More subgroups can be named by adding slash and a new subgroup name, etc.

				Example:
				- Group="foo"       A group is created, named 'foo' *)
				- Group="foo/bar1"  A group is created, named 'foo', with a subgroup named 'bar1' *)
				- Group="foo/bar2"  A group is created, named 'foo', with a subgroup named 'bar2' *)
				*) The group/subgroup names are reused if already declared higher up in the DNA file.
			SubGroup:
				Object insertion declarations for areas, alignments, point objects and tables can be associated with a SubGroup name. Stating a subgroup name adds
				a slash '/' and the subgroup name to the insertion declaration's group name. Subgroup names are handy if you have an object type with group='foo'
				and you need many different insertion declarations for that object type, but you want them all to use the same RcType. If half of them should appear
				in the RC-CreateX (X = Area, Alignment, PointObject or Table) ribbon sub-group 'bar1' and the rest should appear as 'bar2', then you must declare
				the first insertion declarations with attribute SubGroup='bar1' and the remaining with attribute SubGroup='bar2'.
			DEPRECATED: VariantName:
				Use Name.
		Elements:
			<SetValue>:
				See ObjectType.SetValue
			</SetValue>
			<LuaExpression>:
				See ObjectType.LuaExpression
			</LuaExpression>
			<PropertyPrompt>:
				See ObjectType.PropertyPrompt
			</PropertyPrompt>
	</INSERT OPTIONS>:
	<InsertPointObject>:
		Valid for RailwayPlacedObject class only.
		Defines how the point object is previewed and inserted into to RailCOMPLETE document.
		See INSERT OPTIONS
		Attributes:
			AskForAttachment
			AskMatchPosition:
				If true, the user is prompted to match position with another object after object is inserted.
			InsertOnce:
				If false, continue inserting objects until the user aborts.
			Thumbnail3DModel
			SnapToAlignment:
				If true, the point object will snap to the alignment with an offset distance as specified by SnapDistance or SecondSnapDistance.
				Snaps to visible alignments only. Alignments located in xrefs are also available.
			SnapDistance:
				Preset distance to alignment to snap the object to. Default 0.
			SecondSnapDistance:
				If defined, a second snap distance (from alignment) becomes available.
			SnapSensitivityDistance:
				Maximum snap distance. The point object will target the closest alignment within the maximum snap distance.
			    When the object is inserted, its own alignment property is set to the targeted alignment.
				Default 3.0
			DefaultSnapMode:
				Defines the default snap mode to use when jigging. The following values are available:
			    - Alignment:Snap to an alignment. Toggle alignment snap mode on/off with keyboard shortcut 'A' during insertion.
			    Is turned off of point snapping is turned on.
			    - Point: Snap to a snap point. Toggle point snap mode on/off with keyboard shortcut 'P' during insertion.
			    Is turned off if alignment snapping is turned on.
			    - None: No snapping.
		Elements:
			<JigSymbolAppearance>:
				 Definition of the InsertSymbol jig. Describes options to modify the rotation of the 2D symbol while jigging.
				 Attributes:
					RotateIfRightSideOfAlignment:
						Adds 180 degrees to 2D symbol rotation if the cursor is on the right side of the alignment.
						Dot Liquid markup is not available.
					RotateIfLeftSideOfAlignment:
						Adds 180 degrees to 2D symbol rotation if the cursor is on the left side of the alignment.
						Dot Liquid markup is not available.
					RotateWithUcs:
						Adds 180 degrees to 2D symbol rotation if the tangent deviates by more than 90 degrees from the current User Coordinate System's positive x-axis.
						Note: The current UCS x-axis does not necessarily point to the right hand side of the screen.
						Dot Liquid markup is not available.
					MirrorAboutJigYAxisIfRightSideOfAlignment:
						Mirror 2D symbol about jig Y-axis when on the right side of the alignment.
						Dot Liquid markup is not available.
					MirrorAboutJigYAxisIfLeftSideOfAlignment:
						Mirror 2D symbol about jig Y-axis when on the left side of the alignment.
						Dot Liquid markup is not available.
					MirrorAboutJigXAxisIfRightSideOfAlignment:
						Mirror 2D symbol about jig X-axis when on the right side of the alignment.
						Dot Liquid markup is not available.
					MirrorAboutJigXAxisIfLeftSideOfAlignment:
						Mirror 2D symbol about jig X-axis when on the left side of the alignment.
						Dot Liquid markup is not available.
					AddAngle:
						Adds a constant angle [DD] to the 2D symbol rotation. 0 means that the symbol's own Y-axis points upwards when in CAD editor Top view and North is up.
						Dot Liquid markup is available.
					EnableDirectionSetting:
						If true: Keyboard shortcut 'd' becomes available. If 'd' is pressed during the insertion jig, 180 degrees are added to the 2D symbol's rotation angle.
						Dot Liquid markup is not available.
					DoNotRotateWithAlignment:
						If false: the symbol will be oriented along its own alignment. If true, the symbol will be oriented along the current UCS (the CAD system's user coordinate system).
						Dot Liquid markup is not available.
			</JigSymbolAppearance>
			<OwnAlignmentTargetSpace>:
				The relation space the alignment the object belongs to.
				Text:
					The name of the relation space
			</OwnAlignmentTargetSpace>
		Deprecated Elements:
			<Rotation>
				Use JigSymbolAppearance
			</Rotation>
	</InsertPointObject>
	<InsertTable>:
		See INSERT OPTIONS
		Elements:
			<TableSpecification>:
				To be documented later, see examples for now.
			</TableSpecification>
	</InsertTable>
	<InsertAlignment>:
		Valid for RailwayAlignment class only.
		Defines how the alignment object is previewed and inserted into to RailCOMPLETE document.
		See INSERT OPTIONS
		Attributes:
			DefaultToTangentContinuity:
				If true, RailCOMPLETE will initially draw segments using the differentiable menu setting '1' when inserting alignment. I.e., the tangent vector will be continued from one segment to the next.
		Elements:
			<IncludeSegmentType>:
				If no segment types are explicitly included, all segment types are included.
				Text:
					Available types for alignment horizontal geometry segments. More segment types may be added in later versions of RC.
					- Tangent: A straight-line segment.
					- Curve:   A circular curve (arc), characterized by its length L and its radius R.
					- Spiral:  A spiral of type 'clothoid', also known as a Euler spiral, characterized by its start radius r (default Inf),
			        its end radius R, its length L and
			        its curvature change rate parameter A = R*L.
			</IncludeSegmentType>
	</InsertAlignment>
	<InsertArea>:
		Valid for RCArea class only.
		Defines how the alignment object is previewed and inserted into to RailCOMPLETE document.
		See INSERT OPTIONS
		Attributes:
			DefaultToTangentContinuity:
				If true, RailCOMPLETE will initially draw segments using the differentiable menu setting '1' when inserting alignment. I.e., the tangent vector will be continued from one segment to the next.
		Elements:
			<IncludeSegmentType>:
				If no segment types are explicitly included, all segment types are included.
				Text:
					Available types for alignment horizontal geometry segments. More segment types may be added in later versions of RC.
					- Tangent: A straight-line segment.
					- Curve:   A circular curve (arc), characterized by its length L and its radius R.
					- Spiral:  A spiral of type 'clothoid', also known as a Euler spiral, characterized by its start radius r (default Inf),
			        its end radius R, its length L and
			        its curvature change rate parameter A = R*L.
			</IncludeSegmentType>
	</InsertArea>

	<TextAttribute>:
		Attributes:
			BindingProperty:
				Identifies the name of the object property the CAD text attribute's value should be bound to.
				The binding works both ways, so updating the object's property, will update the CAD text attribute and vice versa.
				Ex: BindingProperty="name" will bind the text attribute's text to the object's name.
			CadAttributeTag:
				CAD tag of the text attribute.
			DefaultValue
			X:
				Specifies X-offset of the text attribute with respect to the insertion point.
			Y:
				Specifies Y-offset of the text attribute with respect to the insertion point.
			Layer:
				Determines the value of the CAD text attribute's Layer property. The referenced Layer should be declared elsewhere in the DNA.
			Linetype:
				Determines the value of the CAD text attribute's Linetype property. The referenced LineType should be declared elsewhere in the DNA.
			Color
			Lineweight:
				Determines the value of the CAD text attribute's Lineweight property.
			Transparency:
				Determines the value of the CAD text attribute's Transparency property.
				Possible values: 1-255, ByLayer or ByBlock
			Style:
				Determines the value of the CAD text attribute's Style property. Overrides DefaultStyle in RailwayObjectTypeDefinitions.
                The referenced text style should be declared elsewhere
			Justify:
				Determines the value of the CAD text attribute's Justify property.
			Height:
				Determines the value of the CAD text attribute's Height property. Overrides DefaultTextHeight in RailwayObjectTypeDefinitions
			Width:
				Determines the value of the CAD text attribute's Width property.
			Annotative:
				Determines if the TextAttribute is Annotative.
			ObliqueAngle:
				Determines the value of the CAD text attribute's ObliqueAngle property.
			Constant
			Invisible:
				Determines the value of the CAD text attribute Invisible's property.
			Lock:
				Determines the value of the CAD text attribute's Lock property.
			Mtext:
				Determines the value of the CAD text attribute's MText property.
	</TextAttribute>

	<LuaExpression>:
		Lua expression private to the object type it is declared in, associated with one object property. Lua expressions are evaluated whenever
	    their host object is refreshed, which happens either at the user's refresh request or as a result of another object's direct or indirect
        reading of the object's properties. To read a property's current value without triggering its associated expressions to execute, please
		address the property through the intrinsic method getPropertyValue().
		Attributes:
			Name:
				A name key identifying the host object's associated property, into which the Lua expression's formula will return its result(s).
			IsModelCheck:
				If true, the Lua expression implements a *model check*. A model check is a Lua expression associated with a custom property, with the
				IsModelCheck flag set to 'true'. Flagging a property as a model check blocks the user from reading the property's model checking Lua
				formula and from tampering with the model check's evaluated result. It is customary to return one of the symbols [_ok,_warning,_error]
				as a visual feedback to the property data grid and to the object data grid.

				Hint: The resulting symbols from an object's model checks may be read by a formula associated with the built-in SymbolFrame property, in order to set a suitable
				symbol frame reference. The available symbol frames must be declared in StyleDefinitions elements.

                Example:
                 - Declare a symbol frame "Error" as thick red circle around objects which have one or more model checks that return the _error symbol.
		         - Declare a symbol frame "Warning" as dashed orange circle around objects which have one or more model checks that return the _warning symbol, but no _error symbols.
		Elements:
			<Formula>:
				Lua code snippet which is run whenever the object's associated property value is to be updated by this Lua expression.
			    The return value consists of a single value, an optional feedback symbol [_nosymbol (default), _ok, _warning, _error], and an optional _info(String).
			    The ordering of the three return elements is arbitrary.
				Text:
					The Lua formula
			</Formula>
	</LuaExpression>
	<TextPositionLuaExpression>:
		A Lua expression that governs a text attributes position relative to the objects insertion point.
		The expression must return two or three numbers (X, Y, Z in WCS)
	</TextPositionLuaExpression>
	<TextRotationLuaExpression>:
		A Lua expression that governs a text attribute's rotation.
		The expression must evaluate to a number representing the rotation in degrees.
	</TextRotationLuaExpressions>
	<DynamicProperty>:
		Attribute:
			Type
			Subtype
		Elements:
			<SetValue>:
				See ObjectType.SetValue
			</SetValue>
			<LuaExpression>:
				See ObjectType.LuaExpression
			</LuaExpression>
	</DynamicProperty>
	<SetValue>:
		Attributes:
			Key:
				Property key
			Value:
				Property value
	</SetValue>
	<PropertyPrompt>:
		Property prompt to be shown to user at the conclusion of an object creation process, to ask for input from the user.
		The object's property matching Key will be set to the obtained input value. Property prompts can be used to set built-in
        and custom (DNA-declared) properties.
		Attributes:
			Key:
				A key identifying an object's property identifier (built-in or custom property).
			DefaultValue:
				Default value suggested to user.
			AcceptEmptyValue:
				If true, empty value from user is accepted.

	</PropertyPrompt>
	<RelationSpace>:
		Defines a source space for the present object type, be it an area, alignment or point object. The space name is added to the
        list of available spaces (within the present database context) when a DNA object type declaration brings in a new space name.
        Each space may be used as either the source space or the target space in a DNA declaration of a custom relation. Space names
        given to the various DNA alignment declarations may be referenced in DNA object type declarations to restrict an object such
        that it can only snap to and have an alignment of that space type as its 'own alignment'. - As the source and target spaces
        in custom-declared binary relations, but also by generic functions such as limiting the available alignment types which a point
        object may be snapped to at creation, or defining the spaces that a given connection object may connect to.
		Note 1: Currently you can only have ONE source space per object type.
		Note 2: The mathematical notation for a relation 'R' is AxB => {true,false}, i.e. a named assignment of true/false to each ordered
		tuple (a,b) from AxB. A and B may be the same space. See more under <Relations>.
		Text:
			The name of the relation space
	</RelationSpace>
	<LuaFunction>:
		Lua function scoped to the current object type. See above for more details
	</LuaFunction>
	<AttachTo>:
		This object is an attachment source which targets the given attachment category.
		Attributes:
			Category:
				Identification string for an attachment category to which this object type can be attached.
			DrawTail:
				If true, a polyline tail will be drawn from the attaching object's symbol offset location to the host object's CAD system insertion point.
	</AttachTo>
	<AttachmentCategory>:
		Defines an attachment category for other objects' use when targeting the declaring object's type during an attachment operation.
        Only object types that refer to the attachment category by an AttachTo reference, can attach to this object.
		Attributes:
			Name:
				Category name for this attachment target. Used as key.
                - If the name is 'not defined' then this object can only be attached to by objects targeting the 'any' category.
                - If the name is 'any' then any object can attach to this category.
                - If the name is '' then no object can attach to this category.
			PassAttachmentToTarget:
				If true, the attached object (the 'attachment child') will inherit its insertion point from the target object (the 'attachment parent').
                By repeated attaching of objects to other objects, you will build a 'family tree' holding exactly one top object (the family tree root).
	</AttachmentCategory>
	<DockPointDefinitions>:
		Declares lists of locations (2D points) to be used as custom snap points.
		Attributes:
			Annotative:
				Boolean default true
		Elements:
			<SnapPoints>:
				Attributes:
					Variant
					MirrorAboutAlignmentTangent
					MirrorAboutAlignmentNormal
				Elements:
					<SnapPoint>:
						Attributes:
							X
							Y
							Z
							TargetSpace
					</SnapPoint>
			</SnapPoints>
	</DockPointDefinitions>
	<DisplayPointDefinitions>:
		Declares a list of points where a new created object offers the user to place the 2D symbol's display point (the graphics).
        If the object's declaration sets tail-drawing to true, then a tail will be drawn from the object's insertion point
        to the applied display point.
		Attributes:
			Annotative:
				Boolean default true
		Elements:
			<SnapPoints>:
				Attributes:
					Variant
					MirrorAboutAlignmentTangent
					MirrorAboutAlignmentNormal
				Elements:
					<SnapPoint>:
						Attributes:
							X
							Y
							Z
							TargetSpace
					</SnapPoint>
			</SnapPoints>
	</DisplayPointDefinitions>

StyleDefinitions element - defines styles for drawings

<StyleDefinitions> Attributes: Description: Culture: Either omit the 'Culture' attribute, or assign values from one of these (not case sensitive): [ nor | fr | de | usa ] Elements: <TextStyle> TEXT STYLES, FONTS Font files are .SHX fonts which will be located by AutoCAD as soon as the search folder for fonts has been correctly declared. Cardinality: 0..infinite Attributes: Name Font Height </TextStyle> <LineType> Element to define an AutoCAD linetype. .lin files can also be placed in the AutoCAD support folder. Cardinality: 0..infinite Attributes: Name: Specifies the line type name PatternLenght: Specifies the line type pattern length IsScaledToFit Description Elements: <Dash> Specifies the length of a dash. The total extent should add up to the total pattern length. Positive "Dash" attribute gives a solid line Negative "Dash" attribute gives no 'ink' Value zero (0) for "Dash" gives a dot Cardinality: 0..infinite Text: The number </Dash> <ComplexDash> Class containing properties to be able to create complex line types in CAD software. Attributes: Dashlength Text ShapeScale ShapeRotation ShapeName ShapeStyle ShapeIsUcsOriented ShapeOffset </ComplexDash> </LineType> <Layer> Define layer properties. Layers will be referenced by TextAttribute and ObjectType elements. When a layer is used in a 2D symbol during object creation, and this layer already exists, then the symbol's constituent parts will be placed directly on that layer. The layer's properties such as on/off, frozen/thawed etc are not altered. If the layer in question does not already exist, then it will be created. If there is a layer definition in the current RailCOMPLETE Style Definitions, then this newly created layer's properties will be set as defined by the style definitions. If one ore more layer properties have not been given definite values in Style Definitions, then these properties will be cloned from the non-purgable layer 0.

<!--========================================================================================================

RailCOMPLETE Agent's User Guide