IFC 4.3.0.1 (IFC4X3_TC1)

Annex E Examples - LinearPlacement_2

Example overview


Intent

This scenario demonstrates the usage of IfcLinearPlacement in combination with IfcAxis2PlacementLinear and IfcPointByDistanceExpression.

Prerequisites

This scenario builds upon following other scenarios: - ProjectSetup_1 - basic spatial structure containing an IfcProject and an IfcSite entity

Content

This scenario covers the following concepts and/or IFC entities: - project structure - IfcProject - IfcSite - alignment - IfcAlignment - IfcGradientCurve - linear placement - IfcLinearPlacement - IfcAxis2PlacementLinear - IfcPointByDistanceExpression

This scenario might be extended by the following concepts: - GeoRef (see Georeferencing_1 scenario) - advanced spatial structure - Element assemblies and aggregations - advanced geometry representations

Supporting files

Following files correspond to this scenario:

Filename Description
UT_LinearPlacement_2.ifc the exported content as IFC document
UT_LinearPlacement_2_4X1.ifc the exported content as IFC 4X1 document
UT_LinearPlacement_2_1.png screenshot from the KIT FZK Viewer
UT_LinearPlacement_2_2.png screenshot from the KIT FZK Viewer
Table 323d2132-dd21-4c94-87f9-c9dc459d138e

Get an IFC viewer

KIT FZK Viewer: Download Also check out the OpenInfraPlatform : GitHub

Images

  • Figure 3c295c6a-f0d1-4c1c-87fd-c60a1eeb4448
  • Figure 349dd088-705e-4ea8-8757-4af14d08a2e9
  • Figure 9611afc3-5189-4f0d-b3bb-367a865aae78

IFC-SPF source

ISO-10303-21;
HEADER;
FILE_DESCRIPTION (('ViewDefinition []'), '2;1');
FILE_NAME ('', '2020-02-02T10:55:51', (''), (''), 'Processor version 0.0.0.0', 'Brain', '');
FILE_SCHEMA (('IFC4X3_RC2'));
ENDSEC;
DATA;

/* IFC InfraDeployment  */
/* Author: Sebastian Esser; Technical University of Munich, Chair of Computational Modeling and Simulation. In cooperation with Autodesk. */
/* Mail: sebastian.esser@tum.de */
/* github: seb-esser */

/* Please note: This sample is partially hand-coded and may contain (major) mistakes. */
/* Version: 02 */
/* Update 01->02: updating from _RC1 to _RC2 by Stefan Jaud; see entities #1000+ */

/* !!! Manually upgraded from IFC4x1 to IFC4x3_RC2 !! */
/* Basic concepts of alignments and linear referencing are based on IFC4x3_RC2. */
/* The chosen values for the sleeper positions might not be aligned with common approaches (i.e., 1m might be wrong in reality!) */
/* --- --- --- --- --- --- --- --- */

/* -- Base setup: project, credits, units, ... */

#1=IFCPROJECT('3jGvDUYQfAjRs5R4Pesxus',#2,'Sample_SleeperPlacement',$,$,$,$,(#15),#7);
#2=IFCOWNERHISTORY(#5,#6,$,.ADDED.,1580640952,$,$,0);
#3=IFCPERSON($,'Esser','Sebastian',$,$,$,$,$);
#4=IFCORGANIZATION($,'Chair of Computational Modeling and Simulation - Technical University of Munich',$,$,$);
#5=IFCPERSONANDORGANIZATION(#3,#4,$);
#6=IFCAPPLICATION(#4,'1.0','TUM_CMS_IfcRoadPrototyper','notDefined');
#7=IFCUNITASSIGNMENT((#8,#9,#10,#11));
#8=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.);
#9=IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.);
#10=IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.);
#11=IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.);
#12=IFCLOCALPLACEMENT($,#13);
#13=IFCAXIS2PLACEMENT3D(#14,$,$);
#14=IFCCARTESIANPOINT((0.,0.,0.));
#15=IFCGEOMETRICREPRESENTATIONCONTEXT($,'GeometricRepresentationContext',3,$,#13,$);

#1002=IFCOWNERHISTORY(#5,#6,$,.MODIFIED.,1580680952,#1005,#1006,0);
#1003=IFCPERSON($,'Jaud','Stefan',$,$,$,$,$);
#1005=IFCPERSONANDORGANIZATION(#1003,#4,$);
#1006=IFCAPPLICATION(#4,'3.0','Sublime Text','notDefined');

/* -- site -- */
#16=IFCSITE('2yJVWSbBL4o8jgoIGLXXIa',#2,'SleeperSite','SiteItem',$,#12,$,$,$,$,$,0.,$,$);
#17=IFCRELAGGREGATES('2PpVQkRczD6ubpe3Te4Uxa',#2,$,$,#1,(#16));

/* -- link products to site -- */
#18=IFCRELCONTAINEDINSPATIALSTRUCTURE('2NuS7UgsfCOvS2cWMNQuAK',#2,$,$,(#19,#29,#38,#47,#56,#65,#74,#83,#92,#101,#110),#16);

/* -- alignment as LRS -- */
#19=IFCALIGNMENT('02BIp4ee1CgxJ6X6gY_ke6',#1002,'alignmentName_notDefined','alignmentDescription_notDefined',$,#12,$,#1020,$);

#1020=IFCGRADIENTCURVE(#1021,(#1030),$);
#1021=IFCCOMPOSITECURVE((#1022),.F.);
#1022=IFCCURVESEGMENT(.DISCONTINUOUS.,#1027,IFCPARAMETERVALUE(0.0),IFCPARAMETERVALUE(1.0),#1023);
#1023=IFCLINE(#1024,#1025);
#1024=IFCCARTESIANPOINT((0.,0.,0.));
#1025=IFCVECTOR(#1026,10.);
#1026=IFCDIRECTION((1.,0.,0.));
#1027=IFCAXIS2PLACEMENT2D(#1024,#1026);
#1029=IFCDIRECTION((0.,0.,1.));
#1030=IFCCURVESEGMENT(.DISCONTIUNOUS.,#1031,IFCPARAMETERVALUE(0.0),IFCPARAMETERVALUE(1.0),#1022);
#1031=IFCAXIS2PLACEMENTLINEAR(#1032,#1029,#1026);
#1032=IFCPOINTBYDISTANCEEXPRESSION(IFCPARAMETERVALUE(0.),$,$,$,#1022);

/* -- BREP representation of a single sleeper -- */
#277= IFCSHAPEREPRESENTATION(#15,'Body','Brep',(#651));
#283= IFCFACE((#359));
#287= IFCCARTESIANPOINT((-0.15,1.29999999999995,-0.21000000000012));
#291= IFCCARTESIANPOINT((-0.15,-1.29999999999995,-0.21000000000012));
#295= IFCCARTESIANPOINT((-0.15,-1.27099999999996,-8.36691826933134E-14));
#299= IFCCARTESIANPOINT((-0.15,-1.03600000000006,-8.36657132463614E-14));
#303= IFCCARTESIANPOINT((-0.15,-0.946999999999889,0.0250000000000073));
#307= IFCCARTESIANPOINT((-0.15,-0.926999999999907,-8.36691826933134E-14));
#311= IFCCARTESIANPOINT((-0.15,-0.61200000000008,-8.36691826933134E-14));
#315= IFCCARTESIANPOINT((-0.15,-0.592000000000098,0.0250000000000073));
#319= IFCCARTESIANPOINT((-0.15,-0.502999999999929,-8.36691826933134E-14));
#323= IFCCARTESIANPOINT((-0.15,-0.202999999999975,-0.042));
#327= IFCCARTESIANPOINT((-0.15,0.202999999999975,-0.042));
#331= IFCCARTESIANPOINT((-0.15,0.502999999999929,-8.36657132463614E-14));
#335= IFCCARTESIANPOINT((-0.15,0.592000000000098,0.0250000000000073));
#339= IFCCARTESIANPOINT((-0.15,0.61200000000008,-8.36691826933134E-14));
#343= IFCCARTESIANPOINT((-0.15,0.926999999999907,-8.36691826933134E-14));
#347= IFCCARTESIANPOINT((-0.15,0.946999999999889,0.0250000000000073));
#351= IFCCARTESIANPOINT((-0.15,1.03600000000006,-8.36691826933134E-14));
#355= IFCCARTESIANPOINT((-0.15,1.27099999999996,-8.36691826933134E-14));
#359= IFCFACEOUTERBOUND(#362,.T.);
#362= IFCPOLYLOOP((#287,#291,#295,#299,#303,#307,#311,#315,#319,#323,#327,#331,#335,#339,#343,#347,#351,#355));
#366= IFCFACE((#442));
#370= IFCCARTESIANPOINT((0.15,0.946999999999889,0.0250000000000073));
#374= IFCCARTESIANPOINT((0.15,0.926999999999907,-8.36875523953006E-14));
#378= IFCCARTESIANPOINT((0.15,0.61200000000008,-8.36875523953006E-14));
#382= IFCCARTESIANPOINT((0.15,0.592000000000098,0.0250000000000073));
#386= IFCCARTESIANPOINT((0.15,0.502999999999929,-8.36875523953006E-14));
#390= IFCCARTESIANPOINT((0.15,0.202999999999974,-0.042));
#394= IFCCARTESIANPOINT((0.15,-0.202999999999975,-0.042));
#398= IFCCARTESIANPOINT((0.15,-0.502999999999929,-8.36875523953006E-14));
#402= IFCCARTESIANPOINT((0.15,-0.592000000000098,0.0250000000000073));
#406= IFCCARTESIANPOINT((0.15,-0.61200000000008,-8.36875523953006E-14));
#410= IFCCARTESIANPOINT((0.15,-0.926999999999907,-8.36875523953006E-14));
#414= IFCCARTESIANPOINT((0.15,-0.946999999999889,0.0250000000000073));
#418= IFCCARTESIANPOINT((0.15,-1.03600000000006,-8.36875523953006E-14));
#422= IFCCARTESIANPOINT((0.15,-1.27099999999996,-8.36875523953006E-14));
#426= IFCCARTESIANPOINT((0.15,-1.29999999999995,-0.21000000000012));
#430= IFCCARTESIANPOINT((0.15,1.29999999999995,-0.21000000000012));
#434= IFCCARTESIANPOINT((0.15,1.27099999999996,-8.36875523953006E-14));
#438= IFCCARTESIANPOINT((0.15,1.03600000000006,-8.36875523953006E-14));
#442= IFCFACEOUTERBOUND(#445,.T.);
#445= IFCPOLYLOOP((#370,#374,#378,#382,#386,#390,#394,#398,#402,#406,#410,#414,#418,#422,#426,#430,#434,#438));
#449= IFCFACE((#453));
#453= IFCFACEOUTERBOUND(#456,.T.);
#456= IFCPOLYLOOP((#430,#287,#355,#434));
#460= IFCFACE((#464));
#464= IFCFACEOUTERBOUND(#467,.T.);
#467= IFCPOLYLOOP((#351,#438,#434,#355));
#471= IFCFACE((#475));
#475= IFCFACEOUTERBOUND(#478,.T.);
#478= IFCPOLYLOOP((#438,#351,#347,#370));
#482= IFCFACE((#486));
#486= IFCFACEOUTERBOUND(#489,.T.);
#489= IFCPOLYLOOP((#343,#374,#370,#347));
#493= IFCFACE((#497));
#497= IFCFACEOUTERBOUND(#500,.T.);
#500= IFCPOLYLOOP((#339,#378,#374,#343));
#504= IFCFACE((#508));
#508= IFCFACEOUTERBOUND(#511,.T.);
#511= IFCPOLYLOOP((#335,#382,#378,#339));
#515= IFCFACE((#519));
#519= IFCFACEOUTERBOUND(#522,.T.);
#522= IFCPOLYLOOP((#331,#386,#382,#335));
#526= IFCFACE((#530));
#530= IFCFACEOUTERBOUND(#533,.T.);
#533= IFCPOLYLOOP((#327,#390,#386,#331));
#537= IFCFACE((#541));
#541= IFCFACEOUTERBOUND(#544,.T.);
#544= IFCPOLYLOOP((#323,#394,#390,#327));
#548= IFCFACE((#552));
#552= IFCFACEOUTERBOUND(#555,.T.);
#555= IFCPOLYLOOP((#319,#398,#394,#323));
#559= IFCFACE((#563));
#563= IFCFACEOUTERBOUND(#566,.T.);
#566= IFCPOLYLOOP((#398,#319,#315,#402));
#570= IFCFACE((#574));
#574= IFCFACEOUTERBOUND(#577,.T.);
#577= IFCPOLYLOOP((#402,#315,#311,#406));
#581= IFCFACE((#585));
#585= IFCFACEOUTERBOUND(#588,.T.);
#588= IFCPOLYLOOP((#406,#311,#307,#410));
#592= IFCFACE((#596));
#596= IFCFACEOUTERBOUND(#599,.T.);
#599= IFCPOLYLOOP((#410,#307,#303,#414));
#603= IFCFACE((#607));
#607= IFCFACEOUTERBOUND(#610,.T.);
#610= IFCPOLYLOOP((#414,#303,#299,#418));
#614= IFCFACE((#618));
#618= IFCFACEOUTERBOUND(#621,.T.);
#621= IFCPOLYLOOP((#295,#422,#418,#299));
#625= IFCFACE((#629));
#629= IFCFACEOUTERBOUND(#632,.T.);
#632= IFCPOLYLOOP((#422,#295,#291,#426));
#636= IFCFACE((#640));
#640= IFCFACEOUTERBOUND(#643,.T.);
#643= IFCPOLYLOOP((#287,#430,#426,#291));
#647= IFCCLOSEDSHELL((#283,#366,#449,#460,#471,#482,#493,#504,#515,#526,#537,#548,#559,#570,#581,#592,#603,#614,#625,#636));
#651= IFCFACETEDBREP(#647);

/* -- Product defs -- */

#29=IFCBUILTELEMENT('1VW3Fmm5X3vgtYmvrSeApE',#1002,'linear positioned: 0',$,$,#37,#31,$,$);
#31=IFCPRODUCTDEFINITIONSHAPE($,$,(#277));

#33=IFCPOINTBYDISTANCEEXPRESSION(IFCNONNEGATIVELENGTHMEASURE(0.),0.,-0.2,0.,#1020);
#34=IFCDIRECTION((0.,0.175,0.9846));
#35=IFCDIRECTION((1.,0.,0.));
#36=IFCAXIS2PLACEMENTLINEAR(#33,#34,#35);
#37=IFCLINEARPLACEMENT(#12,$,$,#36,$);

#38=IFCBUILTELEMENT('0QLu06Q0LBIfiMIDl4KKna',#1002,'linear positioned: 1',$,$,#46,#40,$,$);
#40=IFCPRODUCTDEFINITIONSHAPE($,$,(#277));

#42=IFCPOINTBYDISTANCEEXPRESSION(IFCNONNEGATIVELENGTHMEASURE(1.),0.,-0.2,0.,#1020);
#43=IFCDIRECTION((0.,0.1361,0.9907));
#44=IFCDIRECTION((1.,0.,0.));
#45=IFCAXIS2PLACEMENTLINEAR(#42,#43,#44);
#46=IFCLINEARPLACEMENT(#12,$,$,#45,$);

#47=IFCBUILTELEMENT('0v6$InaQLBzeoovfMF6O3C',#1002,'linear positioned: 2',$,$,#55,#49,$,$);
#49=IFCPRODUCTDEFINITIONSHAPE($,$,(#277));

#51=IFCPOINTBYDISTANCEEXPRESSION(IFCNONNEGATIVELENGTHMEASURE(2.),0.,-0.2,0.,#1020);
#52=IFCDIRECTION((0.,0.0972,0.9953));
#53=IFCDIRECTION((1.,0.,0.));
#54=IFCAXIS2PLACEMENTLINEAR(#51,#52,#53);
#55=IFCLINEARPLACEMENT(#12,$,$,#54,$);

#56=IFCBUILTELEMENT('0MWCZEhgb58Ql80GfXhYkV',#1002,'linear positioned: 3',$,$,#64,#58,$,$);
#58=IFCPRODUCTDEFINITIONSHAPE($,$,(#277));

#60=IFCPOINTBYDISTANCEEXPRESSION(IFCNONNEGATIVELENGTHMEASURE(3.),0.,-0.2,0.,#1020);
#61=IFCDIRECTION((0.,0.0583,0.9983));
#62=IFCDIRECTION((1.,0.,0.));
#63=IFCAXIS2PLACEMENTLINEAR(#60,#61,#62);
#64=IFCLINEARPLACEMENT(#12,$,$,#63,$);

#65=IFCBUILTELEMENT('2gbv_hhLv3ZvOZd2m0OWd2',#1002,'linear positioned: 4',$,$,#73,#67,$,$);
#67=IFCPRODUCTDEFINITIONSHAPE($,$,(#277));

#69=IFCPOINTBYDISTANCEEXPRESSION(IFCNONNEGATIVELENGTHMEASURE(4.),0.,-0.2,0.,#1020);
#70=IFCDIRECTION((0.,0.0194,0.9998));
#71=IFCDIRECTION((1.,0.,0.));
#72=IFCAXIS2PLACEMENTLINEAR(#69,#70,#71);
#73=IFCLINEARPLACEMENT(#12,$,$,#72,$);

#74=IFCBUILTELEMENT('0j_ieFZXHE7hY7go0o_eA1',#1002,'linear positioned: 5',$,$,#82,#76,$,$);
#76=IFCPRODUCTDEFINITIONSHAPE($,$,(#277));

#78=IFCPOINTBYDISTANCEEXPRESSION(IFCNONNEGATIVELENGTHMEASURE(5.),0.,-0.2,0.,#1020);
#79=IFCDIRECTION((0.,-0.0194,0.9998));
#80=IFCDIRECTION((1.,0.,0.));
#81=IFCAXIS2PLACEMENTLINEAR(#78,#79,#80);
#82=IFCLINEARPLACEMENT(#12,$,$,#81,$);

#83=IFCBUILTELEMENT('1654r6x$jBnw283mxlF_PI',#1002,'linear positioned: 6',$,$,#91,#85,$,$);
#85=IFCPRODUCTDEFINITIONSHAPE($,$,(#277));

#87=IFCPOINTBYDISTANCEEXPRESSION(IFCNONNEGATIVELENGTHMEASURE(6.),0.,-0.2,0.,#1020);
#88=IFCDIRECTION((0.,-0.0583,0.9983));
#89=IFCDIRECTION((1.,0.,0.));
#90=IFCAXIS2PLACEMENTLINEAR(#87,#88,#89);
#91=IFCLINEARPLACEMENT(#12,$,$,#90,$);

#92=IFCBUILTELEMENT('3reHzfH0vESAj1YMbRFrqQ',#1002,'linear positioned: 7',$,$,#100,#94,$,$);
#94=IFCPRODUCTDEFINITIONSHAPE($,$,(#277));

#96=IFCPOINTBYDISTANCEEXPRESSION(IFCNONNEGATIVELENGTHMEASURE(7.),0.,-0.2,0.,#1020);
#97=IFCDIRECTION((0.,-0.0972,0.9953));
#98=IFCDIRECTION((1.,0.,0.));
#99=IFCAXIS2PLACEMENTLINEAR(#96,#97,#98);
#100=IFCLINEARPLACEMENT(#12,$,$,#99,$);

#101=IFCBUILTELEMENT('0w4xaytUrCqfcr6vnNsJVB',#1002,'linear positioned: 8',$,$,#109,#103,$,$);
#103=IFCPRODUCTDEFINITIONSHAPE($,$,(#277));

#105=IFCPOINTBYDISTANCEEXPRESSION(IFCNONNEGATIVELENGTHMEASURE(8.),0.,-0.2,0.,#1020);
#106=IFCDIRECTION((0.,-0.1361,0.9907));
#107=IFCDIRECTION((1.,0.,0.));
#108=IFCAXIS2PLACEMENTLINEAR(#105,#106,#107);
#109=IFCLINEARPLACEMENT(#12,$,$,#108,$);

#110=IFCBUILTELEMENT('1YvMfJlXD9L9WMtOup4vKD',#1002,'linear positioned: 9',$,$,#118,#112,$,$);
#112=IFCPRODUCTDEFINITIONSHAPE($,$,(#277));

#114=IFCPOINTBYDISTANCEEXPRESSION(IFCNONNEGATIVELENGTHMEASURE(9.),0.,-0.2,0.,#1020);
#115=IFCDIRECTION((0.,-0.1750,0.9846));
#116=IFCDIRECTION((1.,0.,0.));
#117=IFCAXIS2PLACEMENTLINEAR(#114,#115,#116);
#118=IFCLINEARPLACEMENT(#12,$,$,#117,$);


ENDSEC;
END-ISO-10303-21;