IFC 4.3.0.1 (IFC4X3) development

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 de58beac-4e7c-47c9-bdd2-9ec3078af439

Get an IFC viewer

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

Images

  • Figure bb7b5ab0-4cab-4cef-9ea9-35f2df364643
  • Figure ff4ad16c-cecd-492b-af8c-881aba5369e5
  • Figure ecf7757d-c7e6-4b0e-9585-487227cf8dc3

IFC-SPF source

ISO-10303-21;
HEADER;
FILE_DESCRIPTION ((''), '2;1');
FILE_NAME ('', '2020-02-02T10:55:51', (''), (''), 'Processor version 0.0.0.0', 'Brain', '');
FILE_SCHEMA (('IFC4X1'));
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: 01 */

/* Basic concepts of alignments and linear referencing are based on IFC4x1. Current proposals around CANT alignment are not taken into consideration yet. */
/* 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,$);

/* -- 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',#2,'alignmentName_notDefined','alignmentDescription_notDefined',$,#12,$,#20,$);
#20=IFCALIGNMENTCURVE(#21,#22,$);
#21=IFCALIGNMENT2DHORIZONTAL($,(#25));
#22=IFCALIGNMENT2DVERTICAL((#26));
#23=IFCLINESEGMENT2D(#24,0.,10.);
#24=IFCCARTESIANPOINT((0.,0.));
#25=IFCALIGNMENT2DHORIZONTALSEGMENT($,$,$,#23);
#26=IFCALIGNMENT2DVERSEGLINE($,$,$,0.,10.,1.,0.1);

/* -- 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=IFCBUILDINGELEMENTPROXY('1VW3Fmm5X3vgtYmvrSeApE',#2,'linear positioned: 0',$,$,#37,#31,$,$);
#31=IFCPRODUCTDEFINITIONSHAPE($,$,(#277));

#33=IFCDISTANCEEXPRESSION(0.,0.,-0.2,0.,.T.);
#34=IFCDIRECTION((0.,0.175,0.9846));
#35=IFCDIRECTION((1.,0.,0.));
#36=IFCORIENTATIONEXPRESSION(#35,#34);
#37=IFCLINEARPLACEMENT(#20,#33,#36,$);

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

#42=IFCDISTANCEEXPRESSION(1.,0.,-0.2,0.,.T.);
#43=IFCDIRECTION((0.,0.1361,0.9907));
#44=IFCDIRECTION((1.,0.,0.));
#45=IFCORIENTATIONEXPRESSION(#44,#43);
#46=IFCLINEARPLACEMENT(#20,#42,#45,$);

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

#51=IFCDISTANCEEXPRESSION(2.,0.,-0.2,0.,.T.);
#52=IFCDIRECTION((0.,0.0972,0.9953));
#53=IFCDIRECTION((1.,0.,0.));
#54=IFCORIENTATIONEXPRESSION(#53,#52);
#55=IFCLINEARPLACEMENT(#20,#51,#54,$);

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

#60=IFCDISTANCEEXPRESSION(3.,0.,-0.2,0.,.T.);
#61=IFCDIRECTION((0.,0.0583,0.9983));
#62=IFCDIRECTION((1.,0.,0.));
#63=IFCORIENTATIONEXPRESSION(#62,#61);
#64=IFCLINEARPLACEMENT(#20,#60,#63,$);

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

#69=IFCDISTANCEEXPRESSION(4.,0.,-0.2,0.,.T.);
#70=IFCDIRECTION((0.,0.0194,0.9998));
#71=IFCDIRECTION((1.,0.,0.));
#72=IFCORIENTATIONEXPRESSION(#71,#70);
#73=IFCLINEARPLACEMENT(#20,#69,#72,$);

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

#78=IFCDISTANCEEXPRESSION(5.,0.,-0.2,0.,.T.);
#79=IFCDIRECTION((0.,-0.0194,0.9998));
#80=IFCDIRECTION((1.,0.,0.));
#81=IFCORIENTATIONEXPRESSION(#80,#79);
#82=IFCLINEARPLACEMENT(#20,#78,#81,$);

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

#87=IFCDISTANCEEXPRESSION(6.,0.,-0.2,0.,.T.);
#88=IFCDIRECTION((0.,-0.0583,0.9983));
#89=IFCDIRECTION((1.,0.,0.));
#90=IFCORIENTATIONEXPRESSION(#89,#88);
#91=IFCLINEARPLACEMENT(#20,#87,#90,$);

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

#96=IFCDISTANCEEXPRESSION(7.,0.,-0.2,0.,.T.);
#97=IFCDIRECTION((0.,-0.0972,0.9953));
#98=IFCDIRECTION((1.,0.,0.));
#99=IFCORIENTATIONEXPRESSION(#98,#97);
#100=IFCLINEARPLACEMENT(#20,#96,#99,$);

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

#105=IFCDISTANCEEXPRESSION(8.,0.,-0.2,0.,.T.);
#106=IFCDIRECTION((0.,-0.1361,0.9907));
#107=IFCDIRECTION((1.,0.,0.));
#108=IFCORIENTATIONEXPRESSION(#107,#106);
#109=IFCLINEARPLACEMENT(#20,#105,#108,$);

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

#114=IFCDISTANCEEXPRESSION(9.,0.,-0.2,0.,.T.);
#115=IFCDIRECTION((0.,-0.1750,0.9846));
#116=IFCDIRECTION((1.,0.,0.));
#117=IFCORIENTATIONEXPRESSION(#116,#115);
#118=IFCLINEARPLACEMENT(#20,#114,#117,$);


ENDSEC;
END-ISO-10303-21;

Edit on Github


Is this page difficult to understand? Let us know!