IFC 2x3_Tekla

Below examples of data files in IFC 2x3 version and changing in code there:

Let's look to IFC file that contains Metal Structure Frame (file you can find at Data Samples chapter)

#6= IFCCARTESIANPOINT((0.,0.,0.));
#7= IFCDIRECTION((1.,0.,0.));
#8= IFCDIRECTION((0.,1.,0.));
#9= IFCDIRECTION((0.,0.,1.));
#10= IFCAXIS2PLACEMENT3D(#6,#9,#7);
#11= IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,1.E-005,#10,$);
...
#25= IFCPROJECT('3LqIkX5yX4MgPwnJrIARO8',#5,'Trimble Solutions Corporation',$,$,$,$,(#11),#24);
#26= IFCLOCALPLACEMENT($,#10);

To add coordinate transformation parameters we need following next steps:

  1. Create new parameter #(N+1)= IFCCARTESIANPOINT((dX, dY, dZ)), where dX, dY, dZ - calculated values, where N is count of all IFC's file strings (that contains symbol '#')

  2. Create new parameter #(N+2)= IFCDIRECTION((Cos(ωz),-Sin(ωz),0.))

  3. Create new parameter #(N+3)= IFCAXIS2PLACEMENT3D(#(N+1),#9,#(N+2));

  4. Create new parameter #(N+4)= IFCAXIS2PLACEMENT3D(#6,$,$);

  5. Change some parameter in #11= IFCGEOMETRICREPRESENTATIONCONTEXT such as #13 → #(N+4), 1.E-005→ 0.

  6. Change #26= IFCLOCALPLACEMENT($,#(N+3));

Let's write parameters above in new IFC code below:

#6= IFCCARTESIANPOINT((0.,0.,0.));
#80000= IFCCARTESIANPOINT((2216684287.644,529878673.601,141055));
#80001= IFCDIRECTION((0.533997274,-0.845486198,0.));
#80002= IFCAXIS2PLACEMENT3D(#80000,#9,#80001);
#80003= IFCAXIS2PLACEMENT3D(#6,$,$);
#7= IFCDIRECTION((1.,0.,0.));
#8= IFCDIRECTION((0.,1.,0.));
#9= IFCDIRECTION((0.,0.,1.));
#10= IFCAXIS2PLACEMENT3D(#6,#9,#7);
#11= IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,0.,#80003,$);
...
#25= IFCPROJECT('3LqIkX5yX4MgPwnJrIARO8',#5,'Trimble Solutions Corporation',$,$,$,$,(#11),#24);
#26= IFCLOCALPLACEMENT($,#80002);

Last updated