The xml files from the directories indicated below are used when
there are no files referenced in
Data Setup.
Logical Name
|
Resource Type
|
Mandatory
|
Criteria
|
Description
|
Supported Standards
|
XML Document
available in
win_b64\startup\Civil\aecstd
|
|
-
|
Defines the supported standards.
|
Building Information Modeling
Definition
|
XML Document
available in
win_b64\resources\standard\aec
|
|
-
|
Defines the IFC/OmniClass/UniFormat
extensions that can be set on Building & Civil objects.
Provides the list of IFC/OmniClass/UniFormat extensions that
can be assigned to
Building & Civil
objects at creation. Also provides the list of
extensions that can be added manually by the designer during edition.
|
Alignment Design Rules
Definition
|
XML Document
available in
win_b64\resources\standard\aec
|
|
-
|
Defines the design rules to check an
alignment definition.
|
Alignment Design
Customization
|
XML Document
available in
win_b64\resources\standard\aec
|
|
-
|
Customizes the behavior of alignment
features.
|
Building Information Modeling
Customization
|
Know-how component
available in win_b64\startup\Civil\BIM\
|
|
-
|
Defines the customized extensions that can be
set on Building and Civil features.
|
Concrete Design
Customization
|
XML Document
available in
win_b64\startup\Civil\ConcreteDesign
|
-
|
-
|
Customizes the behavior of concrete features.
|
Road attainment methods
|
Business Rule
available in
win_b64\resources\knowledge\scripts
|
-
|
-
|
Defines the road attainment methods.
|
Railway attainment methods
|
Business Rule
available in
win_b64\resources\knowledge\scripts
|
-
|
-
|
Defines the railway attainment methods.
|
Railway cant and transition length
rules
|
Business Rule
available in
win_b64\resources\knowledge\scripts
|
-
|
-
|
Defines the railway cant and transition
length values.
|
BIM Attribute Completion
|
Business Rule
win_b64\resources\knowledge\scripts
|
-
|
The script (BIMAttributeCompletionRule_Sample.CATRule) of the
Runtime View will be read,
- if the rule is UNSET in Data Setup
- or if the rule is SET and the Fact Type contains"Any
Value".
Script files are located in the following runtime view
directory:
<os>\resources\knowledge\scripts .
The script (BIMAttributeCompletionRule_Sample.CATRule ) of the
Data Setup will be read, if the rule is SET and if the Fact Type contains the
"VPMReference" value.
|
Defines the BIM Attribute Completion behavior.
From the
BIM Completeness dialog box, the missing
attributes of Civil Engineering objects are automatically defined/computed
through the script of the Business Rules, and set directly in the
BIM Attributes panel.
|
About Building & Civil Resources
The xml files from the directories indicated in the table above are
used when there are no files referenced in
Data Setup.
A building & civil resource is an XML document that describes
building and civil objects along with their expected behaviors at creation and
in edition mode. Sample files are available in
win_b64\resources\standard\aec
or
win_b64\resources\knowledge\scripts
. You can modify
the xml files of interest by specifying values for
AddAtCreation
and
AtEdition
attributes for each extension (Yes or No) or you can add
customized extensions in a new xml file. The extract below shows an example for
the
IfcPset_ChimneyCommon
extension.
Note:
For more information, see About Adding Customized Extensions in Building and Civil Assemblies.
XML File Example
<BusinessObject name = "AecDoor">
<BaseExtensions>
<BaseExtension default = "true" exposed = "true" name = "IfcDoor"/>
<BaseExtension exposed = "true" name = "IfcDoorStandardCase"/>
</BaseExtensions>
<Extension level = "100" name = "OmniClass"/>
<Extension level = "100" name = "UniFormatBuilding"/>
<Extension deletable = "true" exposed = "true" level = "100" name = "IfcPset_DoorCommon"/>
<Extension deletable = "true" level = "300" name = "IfcPset_DoorWindowGlazingType"/>
<Extension deletable = "true" level = "300" name = "IfcPset_DoorWindowShadingType"/>
<Extension deletable = "true" level = "300" name = "IfcPset_ConcreteElementGeneral"/>
<Extension deletable = "true" level = "300" name = "IfcPset_PrecastConcreteElementFabrication"/>
<Extension deletable = "true" level = "300" name = "IfcPset_PrecastConcreteElementGeneral"/>
<Extension deletable = "true" level = "300" name = "IfcPset_Condition"/>
<Extension deletable = "true" level = "300" name = "IfcPset_EnvironmentalImpactIndicators"/>
<Extension deletable = "true" level = "300" name = "IfcPset_EnvironmentalImpactValues"/>
<Extension deletable = "true" level = "300" name = "IfcPset_ManufacturerOccurrence"/>
<Extension deletable = "true" level = "300" name = "IfcPset_ManufacturerTypeInformation"/>
<Extension deletable = "true" level = "300" name = "IfcPset_PackingInstructions"/>
<Extension deletable = "true" level = "300" name = "IfcPset_ServiceLife"/>
<Extension deletable = "true" level = "300" name = "IfcPset_Warranty"/>
<Extension deletable = "true" exposed = "true" level = "100" name = "IfcQto_DoorBaseQuantities"/>
</BusinessObject>
Description of XML Elements
The table below describes elements and their possible attributes.
Element
|
Attribute (s)
|
Description
|
BusinessObject
|
name |
Specifies whether an extension is to be
added if not present.
|
BaseExtensions
|
|
A base extension is assigned to a type of object (created with the
object). When there are two base extensions, they are exclusive. At
least one base extension is mandatory, with a combination of
default : when there are two base
extensions, only one is set to true . The
default attribute allows to determine
which base extension will be used. In the user interface,
you can switch to the other base extension with the BIM
Manager editor.
exposed exposes a base extension as a
parameter set. The PLM attributes are exposed as parameters
in the 3D shape. You can use these parameters to modify
geometry.
|
Extension |
deletable
exposed
level
name
|
An extension is assigned to a type of object, with
a combination of
deletable when set to
true , it means that you can delete the
extension.
exposed exposes an extension as a parameter
set. The PLM attributes are exposed as parameters in the 3D
shape. You can use these parameters to modify geometry.
level : the value corresponds to the Level
Of Development (LOD). If the value is equal to100, the
extension is assigned to Building & Civil object at
creation. If the value is over 100, the extension will not
be visible and can be added manually by the designer in the
user interface.
name corresponds to the Ifc extension.
|
With the BIM Completeness command, you can check extensions according
to the given LOD above, and identify the lacks of information (attributes). You can
also analyze the mockup from a global point of view within the Building and Civil Assemblies
app.
Supported Standards
- Example of Supported Standards
-
standards version="1">
<standard name="IFC4" activated="true"/>
<standard name="OmniClass_Table_11" activated="false"/>
<standard name="OmniClass_Table_12" activated="false"/>
<standard name="OmniClass_Table_13" activated="false"/>
<standard name="OmniClass_Table_14" activated="false"/>
<standard name="OmniClass_Table_21" activated="false"/>
<standard name="OmniClass_Table_22" activated="false"/>
<standard name="OmniClass_Table_23" activated="false"/>
<standard name="OmniClass_Table_31" activated="false"/>
<standard name="OmniClass_Table_32" activated="false"/>
<standard name="OmniClass_Table_33" activated="false"/>
<standard name="OmniClass_Table_34" activated="false"/>
<standard name="OmniClass_Table_35" activated="false"/>
<standard name="OmniClass_Table_36" activated="false"/>
<standard name="OmniClass_Table_41" activated="false"/>
<standard name="OmniClass_Table_49" activated="false"/>
<standard name="Uniformat_II_Elemental_Classification" activated="false"/>
<standard name="Proposed_Uniformat_II_Bridge_Elements" activated="false"/>
</standards>
Alignment Design Rules Definition
- Example of Radius Table
-
<Alignments>
<!-- ********************* -->
<!-- Radius Tables -->
<!-- ********************* -->
<RadiusTables>
<!-- Sample Radius Table by speed values -->
<RadiusTable Name="DefaultRadiusBySpeed">
<HorizontalRadiusTable>
<Radius Speed="40km_h" Minimum="40m"/>
<Radius Speed="60km_h" Minimum="120m"/>
<Radius Speed="80km_h" Minimum="240m"/>
<Radius Speed="100km_h" Minimum="400m"/>
<Radius Speed="120km_h" Minimum="665m"/>
</HorizontalRadiusTable>
<VerticalRadiusTable>
<CrestRadiusTable>
<Radius Speed="40km_h" Minimum="500m"/>
<Radius Speed="60km_h" Minimum="1500m"/>
<Radius Speed="80km_h" Minimum="3000m"/>
<Radius Speed="100km_h" Minimum="6000m"/>
<Radius Speed="120km_h" Minimum="12000m"/>
</CrestRadiusTable>
<SagRadiusTable>
<Radius Speed="40km_h" Minimum="700m"/>
<Radius Speed="60km_h" Minimum="1500m"/>
<Radius Speed="80km_h" Minimum="2200m"/>
<Radius Speed="100km_h" Minimum="3000m"/>
<Radius Speed="120km_h" Minimum="4200m"/>
</SagRadiusTable>
</VerticalRadiusTable>
</RadiusTable>
<!-- Sample Radius Table by category values -->
<RadiusTable Name="DefaultRadiusByCategory">
<HorizontalRadiusTable>
<Radius Category="R60" Minimum="120m"/>
<Radius Category="R80" Minimum="240m"/>
<Radius Category="T80" Minimum="240m"/>
<Radius Category="T100" Minimum="425m"/>
</HorizontalRadiusTable>
<VerticalRadiusTable>
<CrestRadiusTable>
<Radius Category="R60" Minimum="1500m"/>
<Radius Category="R80" Minimum="3000m"/>
<Radius Category="T80" Minimum="3000m"/>
<Radius Category="T100" Minimum="6000m"/>
</CrestRadiusTable>
<SagRadiusTable>
<Radius Category="R60" Minimum="1500m"/>
<Radius Category="R80" Minimum="2200m"/>
<Radius Category="T80" Minimum="2200m"/>
<Radius Category="T100" Minimum="3000m"/>
</SagRadiusTable>
</VerticalRadiusTable>
</RadiusTable>
</RadiusTables>
- Design Rules: Example of Length Table
-
<!-- ********************* -->
<!-- Length Tables -->
<!-- ********************* -->
<LengthTables>
<!-- Sample Length Table by speed values -->
<LengthTable Name="DefaultLengthBySpeed">
<HorizontalLengthTable>
<LineLengthTable>
<Length Speed="40km_h" Minimum="110m"/>
<Length Speed="60km_h" Minimum="150m"/>
<Length Speed="80km_h" Minimum="210m"/>
<Length Speed="100km_h" Minimum="260m"/>
<Length Speed="120km_h" Minimum="280m"/>
</LineLengthTable>
<ArcLengthTable>
<Length Speed="40km_h" Minimum="40m"/>
<Length Speed="60km_h" Minimum="50m"/>
<Length Speed="80km_h" Minimum="70m"/>
<Length Speed="100km_h" Minimum="90m"/>
<Length Speed="120km_h" Minimum="110m"/>
</ArcLengthTable>
<TransitionLengthTable>
<Length Speed="40km_h" Minimum="40m"/>
<Length Speed="60km_h" Minimum="50m"/>
<Length Speed="80km_h" Minimum="70m"/>
<Length Speed="100km_h" Minimum="90m"/>
<Length Speed="120km_h" Minimum="110m"/>
</TransitionLengthTable>
</HorizontalLengthTable>
<VerticalLengthTable>
<LineLengthTable>
<Length Speed="40km_h" Minimum="110m"/>
<Length Speed="60km_h" Minimum="150m"/>
<Length Speed="80km_h" Minimum="210m"/>
<Length Speed="100km_h" Minimum="260m"/>
<Length Speed="120km_h" Minimum="280m"/>
</LineLengthTable>
<CrestParabolaLengthTable>
<Length Speed="50km_h" Minimum="150m"/>
<Length Speed="70km_h" Minimum="200m"/>
<Length Speed="90km_h" Minimum="250m"/>
<Length Speed="110km_h" Minimum="300m"/>
</CrestParabolaLengthTable >
<SagParabolaLengthTable >
<Length Speed="50km_h" Minimum="120m"/>
<Length Speed="70km_h" Minimum="180m"/>
<Length Speed="90km_h" Minimum="220m"/>
<Length Speed="110km_h" Minimum="260m"/>
</SagParabolaLengthTable >
</VerticalLengthTable>
</LengthTable>
</LengthTables>
- Design Rules: Example of Gradient Table
-
<!-- ********************* -->
<!-- Gradient Tables -->
<!-- ********************* -->
<GradientTables>
<!-- Sample Gradient Table by speed values -->
<GradientTable Name="DefaultGradientBySpeed">
<Gradient Speed="40km_h" Maximum="7%"/>
<Gradient Speed="60km_h" Maximum="7%"/>
<Gradient Speed="80km_h" Maximum="6%"/>
<Gradient Speed="100km_h" Maximum="5%"/>
<Gradient Speed="120km_h" Maximum="5%"/>
</GradientTable>
<!-- Sample Gradient Table by category values -->
<GradientTable Name="DefaultGradientByCategory">
<Gradient Category="R60" Maximum="7%"/>
<Gradient Category="R80" Maximum="6%"/>
<Gradient Category="T80" Maximum="6%"/>
<Gradient Category="T100" Maximum="5%"/>
</GradientTable>
</GradientTables>
- Design Rules: Example of Superelevation Table
-
Superelevation attainment methods can be defined in a dedicated Business
Rule called Alignment superelevation rules
available the Building & Civil Resources
resource table.
The script below is a stationing script. If no
XML resource file is set in Data Setup, the AlignmentDesign.xml file
delivered in startup\Civil\AlignmentDesign
is used.
When you create a new alignment superelevation rule and assign it
to a resource, the resource's input "ThisObject" must be set to
"AECAlignment3D" type.
<SuperelevationTables>
<SuperelevationTable Name="MySuperelevationTable">
<SuperelevationDesignSpeed Speed="20km_h">
<Superelevation Radius="75m" tLength="15m" eRate="2.2%"/>
<Superelevation Radius="51m" tLength="16m" eRate="2.4%"/>
<Superelevation Radius="38m" tLength="18m" eRate="2.6%"/>
<Superelevation Radius="30m" tLength="19m" eRate="2.8%"/>
<Superelevation Radius="24m" tLength="20m" eRate="3%"/>
<Superelevation Radius="20m" tLength="22m" eRate="3.2%"/>
<Superelevation Radius="17m" tLength="23m" eRate="3.4%"/>
<Superelevation Radius="14m" tLength="24m" eRate="3.6%"/>
<Superelevation Radius="12m" tLength="26m" eRate="3.8%"/>
<Superelevation Radius="8m" tLength="27m" eRate="4%"/>
</ SuperelevationDesignSpeed >
</SuperelevationTable
<SuperelevationTables>
where:
Element |
Description |
Speed (input)
|
Corresponds to the design speed
defined in Alignment. The speed value defined in
Alignment must match precisely the attribute value Speed
defined in the XML design rules. Otherwise the matching
table containing rule values will not be found. For
example: Ex: if Alignment design speed = 25km/h, no
table will be found since parameter Speed = 20km/h.
|
Radius (input)
|
Corresponds to the curve radius as per
Alignment geometries. If the radius of alignment curve
does not match precisely the attribute value Radius, for
safety reason the closest lower radius value will always
be selected. For example: if curve radius = 28m, select
a node the attribute value of which is Radius =24m.
|
tLength (output)
|
Corresponds to the transition length.
|
eRate
|
Corresponds to the superelevation
rate. |
- Design Rules: Example of Horizontal Radius Tables Depending on
Superelevation Rate
-
<RadiusTable Name="MyRadiusTableSpeed">
<HorizontalRadiusTable eRate="2%">>
<Radius Speed="50km_h" Minimum="86m"/>
<Radius Speed="70km_h" Minimum="203m"/>
<Radius Speed="80km_h" Minimum="280m"/>
<Radius Speed="90km_h" Minimum="375m"/>
<Radius Speed="100km_h" Minimum="492m"/>
</HorizontalRadiusTable>
<HorizontalRadiusTable eRate="3%">
<Radius Speed="50km_h" Minimum="78m"/>
<Radius Speed="70km_h" Minimum="186m"/>
<Radius Speed="80km_h" Minimum="240m"/>
<Radius Speed="90km_h" Minimum="322m"/>
<Radius Speed="100km_h" Minimum="415m"/>
</HorizontalRadiusTable>
</RadiusTable>
- Design Rule: Example of Cant Design Table
-
<CantTables>
<CantTable Name="MyCantTable">
<CantDesignSpeed Speed="20km_h">
<Cant radius="90m" Cant="5mm" tLength="5m"/>
</CantDesignSpeed>
</CantTable>
<CantTable Name="MyCantTableByFormula" formulaId="France">
<CantTables>
where:
Element |
Description |
Speed (input) |
Designs speed defined in Alignment.
|
Radius (input) |
Corresponds to curve radius as per
Alignment geometries. |
tLength (ouput) |
Corresponds to transition length.
|
Cant (ouput) |
Corresponds to superelevation rate.
|
formulaId (input) |
Corresponds to identifier to switch
from a formula to another one in dedicated Business rule
(see next paragraph). |
If no Design Rules are set in Data Setup, default cant tables
are provided in
startup\Civil\AlignmentDesignRules\RailwayAlignmentDesignRules_Default.xml
and are used by default.
Alignment Design Customization
The script below is a stationing script.
If no XML resource file is set in Data Setup, the AlignmentDesign.xml file delivered in
startup\Civil\AlignmentDesign
is used.
<AlignmentDesign>
<Units>
<DefaultValues>
<!-- Default values are used while creating a new alignment, road/railway surface, road/railway design -->
<!-- Ulterior Data Setup modifications do not impact existing entities -->
<Speed value="km_h"/> <!--km_h, mph-->
<Gradient value="%_angle"/> <!--%_angle, m_m, deg, rad, grad, in_ft--> <!-- NOT USED -->
<Superelevation value="%_angle"/> <!--%_angle, m_m, deg, rad, grad, in_ft-->
<Cant value="%_angle"/> <!--%_angle, m_m, deg, rad, grad, in_ft--> <!-- NOT USED -->
<CrossSection>
<SmallAngle value="%_angle"/> <!--%_angle, m_m, deg, rad, grad, in_ft-->
<LargeAngle value="m_m"/> <!--%_angle, m_m, deg, rad, grad, in_ft-->
<LimitSmallLarge value="20%_angle"/>
</CrossSection>
</DefaultValues>
</Units>
<Stationings>
<!-- Default values are used while creating a new alignment or the first stationing -->
<!-- Ulterior Data Setup modifications do not impact existing alignments or stationings -->
<DefaultValues>
<MajorInterval value="100m"/>
<!-- Can be expressed in any length unit e.g. "100 feet"-->
<MinorInterval value="20m"/>
<!-- Can be expressed in any length unit e.g. "100 feet"-->
<StationTextHeightRatio value="0.02"/>
<!-- Expressed as a ratio of the MajorInterval-->
<StationOffsetRatio value="1"/>
<!-- Offset between the alignment and the station text. Expressed as a ratio of TextHeight -->
</DefaultValues>
<!-- Global values are shared among all alignments contained in a given PLM representation -->
<!-- They are stored in this representation during the first alignment creation -->
<!-- Ulterior Data Setup modifications do not impact PLM representations in which alignments were already created -->
<GlobalValues>
<!-- Alignment -->
<LockIntervals value="false"/>
<!-- true: Major\Minor intervals parameter cannot be edited -->
<!-- Numbers -->
<LengthDecimalPlaces value="3"/>
<LengthDisplayTrailingZeros value="false"/>
<!-- Station annotation -->
<StationTailRatio value="1"/>
<!-- Expressed as a ratio of the TextHeight -->
<StationOverrunRatio value="1"/>
<!-- Expressed as a ratio of the TextHeight -->
<!-- Station equation annotation -->
<StationEquationBackLabel value="@unset"/>
<!-- @unset to have an internationalized value equivalent to 'BACK' -->
<StationEquationAheadLabel value="@unset"/>
<!-- @unset to have an internationalized value equivalent to 'AHEAD' -->
<StationEquationSideOffsetRatio value="1"/>
<!-- Expressed as a ratio of the TextHeight -->
<StationEquationTailRatio value="1"/>
<!-- Expressed as a ratio of the TextHeight -->
<StationEquationOverrunRatio value="1"/>
<!-- Expressed as a ratio of the TextHeight -->
</GlobalValues>
</Stationings>
</AlignmentDesign>
where:
Element |
Description |
MajorInterval
|
Corresponds to the major interval of stationing at
alignment creation. This value is stored on the alignment when
creating this alignment. It is not updated if the value is modified
later in Data Setup. The value used at creation is
kept. |
MinorInterval
|
Corresponds to the minor interval of stationing at
alignment creation. This value is stored on the alignment when
creating this alignment. It is not updated if the value is modified
later in Data Setup. The value used at creation is
kept. |
StationTextHeightRatio
|
Corresponds to the text height at alignment
creation. Expressed as a ratio of the major interval value. This
value is stored on the alignment when creating this alignment. It is
not updated if the value is modified later in Data Setup. The value used at creation is
kept. For example, it could be 0.02, which results in a text height
of 2m if the major interval is set to 100m. |
StationOffsetRatio
|
Corresponds to the distance between the station
name and the alignment. Expressed as a ratio of the text height.
This value is stored on the alignment when creating this alignment.
It is not updated if the value is modified later in Data Setup. The value used at creation is
kept. |
LockIntervals
|
Locks/unlocks the edition of minor and major
intervals at 3D Shape level. This value is stored on the alignment
when creating this alignment. It is not updated if the value is
modified later in Data Setup. The value used at creation is
kept. |
LenghtDecimalPlaces
|
Gives the number of significant decimals for
stations. |
LenghtDisplayTrailingZeros
|
Displays trailing zeros for stations. |
StationTailRatio
|
Corresponds to the length of the station
annotation beyond the alignment (i.e. the opposite side of the
text). This value is stored on the alignment when creating this
alignment. It is not updated if the value is modified later in Data Setup. The value used at creation is
kept. |
StationOverrunRatio
|
Corresponds to the length of the station
annotation from the alignment (i.e. on the side of the text). This
value is stored on the alignment when creating this alignment. It is
not updated if the value is modified later in Data Setup. The value used at creation is
kept. |
StationEquationBackLabel
|
Corresponds to the back label at first stationing
point creation. This value is stored on the alignment when creating
this alignment. It is not updated if the value is modified later in
Data Setup. The value used at creation is
kept. |
StationEquationAheadLabel
|
Corresponds to the ahead label at first stationing
point creation. This value is stored on the alignment when creating
this alignment. It is not updated if the value is modified later in
Data Setup. The value used at creation is
kept. |
StationEquationSideOffsetRatio
|
Corresponds to the distance between the equation
texts and the line perpendicular to the alignment. This value is
stored on the alignment when creating this alignment. It is not
updated if the value is modified later in Data Setup. The value used at creation is
kept. |
StationEquationTailRatio
|
Corresponds to the length of the station equation
annotation beyond the alignment (i.e. the opposite side of the
text). This value is stored on the alignment when creating this
alignment. It is not updated if the value is modified later in Data Setup. The value used at creation is
kept. |
StationEquationTailRatio
|
Corresponds to the length of the station equation
annotation beyond the text (i.e. on the side of the text). This
value is stored on the alignment when creating this alignment. It is
not updated if the value is modified later in Data Setup. The value used at creation is
kept. |
Speed
|
Corresponds to the speed value of the vehicle on
the infrastructure. |
Gradient
|
Corresponds to the longitudinal slope of the
alignment. |
Superelevation |
Corresponds to the Superelevation value for roads.
|
Cant
|
Corresponds to the Cant value for railways.
|
CrossSection
|
Corresponds to the CrossSection value for ditches,
filling and excavation. The unit is chosen according to the angle
value. |
Concrete Design Customization
- Example of Concrete Design Customization
-
<ConcreteDesign>
<Numberings>
<!-- Rounding values are used in numbering and report -->
<RoundingValues>
<!-- Use Rounding -->
<UseRounding value="true"/>
<!-- true: calculated lengths are rounded with following parameters -->
<!-- false: calculated lengths keep their exact values -->
<!-- Dimension Rounding Direction -->
<DimensionRoundingDirection value="nearest"/>
<!-- Acceptable values are up, down and nearest"-->
<!-- Total Length Rounding Direction -->
<TotalLengthRoundingDirection value="nearest"/>
<!-- Acceptable values are up, down and nearest"-->
<DimensionRoundingAccuracy value="5mm"/>
<!-- Can be expressed in any length unit e.g. "1 feet"-->
<TotalLengthRoundingAccuracy value="25mm"/>
<!-- Can be expressed in any length unit e.g. "1 feet"-->
</RoundingValues>
<!-- Numbering values are used in numbering -->
<NumberingValues>
<!-- Adaptive Layers -->
<AdaptiveLayersIndividually value="true"/>
<!-- true: Number bars individually else Number bars as a whole -->
<!--Prefix For Coupler-->
<PrefixForCoupler value="(C)"/>
<!--Prefix added to the layer bar mark symbolizing the coupler relation-->
</NumberingValues>
<!-- Numbering display -->
<Display>
<!-- Separator used for display between Group and Number -->
<Separator value="."/>
</Display>
</Numberings>
</ConcreteDesign>
Railway Attainment Methods
/* ========================================================================== */
/* RailwayAttainmentMethods.CATRule */
/* */
/* Sample file to customize Railway attainment methods. */
/* User can customize this file for each project. */
/* */
/* ========================================================================== */
/* Defines formulae for the various transition lengths */
/* for attaining Cant */
/* Based on the following variables */
/* {l} - spiral length from geometry */
/* {t} - transition length from table */
/* {m} - maximum cant value on Tangent */
/* {a} - applied cant for the curve */
/* {p} - fractional part of transition length achieved before curve point */
/* ========================================================================== */
/* Defines the following transition lengths (where approriate) */
/* LRtoFC - Level Rail to Full Cant */
/* LRtoBC - Level Rail to Beginning of Curve */
/* ========================================================================== */
/* Get inputs */Let l(real)Let t(real)Let m(real)Let a(real)Let p(real)l = Parameters.GetAttributeReal("sLength")t =
Parameters.GetAttributeReal("tLength")m = Parameters.GetAttributeReal("MaxCantOnTangent")a =
Parameters.GetAttributeReal("Cant")p = ThisObject.GetAttributeReal("TRate")
/* Compute outputs */Let LRtoFC(real)Let LRtoBC(real)if(l>0){ LRtoFC=l LRtoBC=l*p}else { LRtoFC=t if ( a>0 AND m>0)
{ Let threshold(real) threshold=m/a if(threshold<p ){ LRtoBC=t*threshold } else { LRtoBC=t*p } }
else { LRtoBC=t*p }}/* Write outputs */Parameters.SetAttributeReal("LRtoFC",
LRtoFC)Parameters.SetAttributeReal("LRtoBC", LRtoBC)
Railway Cant and Transition Length Rules
/* ========================================================================== */
/* RailwayCantAndTransitionLengthRules_Sample.CATRule */
/* */
/* Sample file to calculat cant and transition length. */
/* User can customize this file for each project. */
/* */
/* ========================================================================== */
/* Defines formulas for Cant and transition length. */
/* Based on the following variables */
/* {Id} - formula identifier given by design rules */
/* -"France": "China" and "CantDeficiency" */
/* Cant(mm) = 6*Speed^2/radius */
/* tLength(m) = max(50,5.8*Speed*Speed*Speed/(180*radius)) */
/* -"China": */
/* Cant(mm) = 0.64*t*Speed*Speed/(3.6*3.6*g*radius) */
/* tLength(m) = 0.01*Cant*Speed */
/* -"CantDeficiency": */
/* Cant(mm) = ceil((eqCant-md)*2)/2 */
/* tLength(m) = 0.012*cantDeficiency*Speed */
/* {t} - track width (m) */
/* {s} - current design speed (m/s) */
/* {r} - Curve radius from geometry (m) */
/* {md} - maximum allowable cant deficiency (m) */
/* {me} - maximum allowable cant excess (m) */
/* {smax} - maximum speed (m/s) */
/* {smin} - minimum speed (m/s) */
/* {g} - gravity acceleration (m/s^2) */
/* ========================================================================== */
/* Defines cant and transition length values */
/* cant - Applied cant for the curve (m) */
/* tLength - Transition length (m) */
/* ========================================================================== */
/* Get inputs */
Let Id (String)
Let t (real)Let s (real)
Let r (real)Let md (real)
Let me (real)Let smax(real)
Let smin(real)
Id = Parameters.GetAttributeString("FormulaId")
t = Parameters.GetAttributeReal("TrackWidth")
s = Parameters.GetAttributeReal("Speed")
r = Parameters.GetAttributeReal("Radius")
md = Parameters.GetAttributeReal("MaxCantDeficiency")
me = Parameters.GetAttributeReal("MaxCantExcess")
smax = Parameters.GetAttributeReal("MaxSpeed")
smin = Parameters.GetAttributeReal("MinSpeed")
/* Compute outputs */
Let cant(real)
Let tLength(real)
/* Local attributs */
Let g (real) /*Gravity*/
Let eqCant(real) /*Equilibrium cant*/
g=9.806
/* Convert Speeds in km_h*/
Let Speed(real)
Let maxSpeed(Real)
Speed=s*3.6
maxSpeed =smax*3.6
if(Id=="France"){
cant=round(6*Speed*Speed/r)/1000
tLength=round(max(10,5.8*Speed*Speed*Speed/(180*r)))
}
else if (Id=="China")
{
cant=round(0.64*t*1000*Speed*Speed/(3.6*3.6*g*r))/1000
tLength=round(0.01*cant*1000*Speed)
}
else if(Id=="CantDeficiency")
{
eqCant=round(t*1000*maxSpeed*maxSpeed/(127*r))/1000
cant=ceil((eqCant-md)*2000)/2000
Let cantDeficiency(real)
cantDeficiency=round(t*1000*maxSpeed*maxSpeed/(127*r))/1000-cant
tLength=round(0.012*cantDeficiency*1000*Speed)
}
cant=max(cant,0.005)
tLength=max(tLength,5)
/* Write outputs */
Parameters.SetAttributeReal("Cant", cant)
Parameters.SetAttributeReal("tLength", tLength)
BIM Attribute Completion
You can customize the behavior of BIM attributes by giving them a
value through a Business Rule in Data Setup.
To perform an automatic completion of missing IFC attributes in the
BIM Attributes panel, you can use the
BIM Completeness command that activates the
BIM Attribute Completion Business Rule you have
assigned to the
Building & Civil Resources resource table.
Several attributes can be defined/computed in
BIM Attributes at the same time which saves time
in design.
The Business Rule script below is an example. If no XML resource file
is set in
Data Setup,
the BIMAttributeCompletionRule_Sample.CATRule file delivered in
win_b64\resources\knowledge\scripts
is used. There is
a condition on the Slab Reference and Gross Volume Attributes in the script.
Then the Gross Volume is computed and, its value and the slab reference are
added in the corresponding attribute boxes in the
BIM Attributes panel.
/* ========================================================================== */
/* BIMAttributeCompletionRule_Sample.CATRule */
/* */
/* Sample file to automatize the completion of IFC attribute */
/* */
/* ========================================================================== */
/* Based on the following variables */
/* {attributeName} */
/* ========================================================================== */
/* Defines attribute value */
/* {attributeValue} */
/* ========================================================================== */
/* Get inputs */
Let attributeName (String)
attributeName = Parameters.GetAttributeString("AttributeName")
/* Write outputs */
if(attributeName=="IfcPset_SlabCommon_Reference"){
(ThisObject:IfcPset_SlabCommon).IfcPset_SlabCommon_Reference="18.12.0456"
Parameters.SetAttributeString("AttributeValue", "18.12.0456")
}
if(attributeName=="IfcQto_SlabBaseQuantities_GrossVolume"){
Let partBodyList(List)
partBodyList = ThisObject ->Query("BodyFeature","x.Name like \"*PartBody*\"")
if(partBodyList.Size() > 0)
{
Let volume(VOLUME)
volume = smartVolume(partBodyList->GetItem(1))
Let skeletonList(List)
skeletonList = ThisObject ->Query("Feature","x.Name like \"*Skeleton Representation*\"")
if(skeletonList.Size() > 0)
{
Let skeleton(Feature)
skeleton = skeletonList->GetItem(1)
Let childrenListParam(List)
childrenListParam = skeleton->Query("AdvisorParameterSet","x.Name like \"Parameters*\"")
Let paramSet(AdvisorParameterSet)
paramSet = childrenListParam->GetItem(1)
paramSet->SetAttributeReal("IfcQto_SlabBaseQuantities_GrossVolume",volume)
Parameters.SetAttributeReal("AttributeValue", volume)
}else{
(ThisObject:IfcQto_SlabBaseQuantities).IfcQto_SlabBaseQuantities_GrossVolume=volume
Parameters.SetAttributeReal("AttributeValue", volume)
}
}
}