Annex E
(informative)
Examples
E.10.4 - Polygonal Face Tessellation
Example overview
The various examples demonstrate the use of tessellated items with vertex list and index, and optionally normal list and index.
The example shows a cube with a recess being tessellated using polygonal faces without and with voids. Figure E.A displays the rendering in a target application.
IFC-SPF source
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('ViewDefinition [notYetAssigned]'),'2;1');
FILE_NAME(
/* name */ 'polygonal-face-tessellation.ifc',
/* time_stamp */ '2016-05-26T17:38:29',
/* author */ ('redacted'),
/* organization */ ('redacted'),
/* preprocessor_version */ 'redacted',
/* originating_system */ 'redacted',
/* authorization */ 'None');
FILE_SCHEMA (('IFC4X3_DEV_7e95fe8'));
ENDSEC;
DATA;
#1= IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,0.01,#3,$);
#2= IFCCARTESIANPOINT((0.0,0.0,0.0));
#3= IFCAXIS2PLACEMENT3D(#3058,#3059,#3060);
#4= IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Axis','Model',*,*,*,*,#1,$,.MODEL_VIEW.,$);
#5= IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Model',*,*,*,*,#1,$,.MODEL_VIEW.,$);
#6= IFCCARTESIANPOINT((0.0,0.0,0.0));
#7= IFCDIRECTION((1.0,0.0,0.0));
#8= IFCDIRECTION((0.0,1.0,0.0));
#9= IFCDIRECTION((0.0,0.0,1.0));
#10= IFCCARTESIANPOINT((0.0,0.0));
#11= IFCAXIS2PLACEMENT2D(#10,$);
#12= IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.);
#13= IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.);
#14= IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.);
/* ------------------------------------------------------------------------- */
/* polygonal face set geometry representation */
#15= IFCCARTESIANPOINTLIST3D(((-10000.0,-10000.0,-10000.0),(10000.0,-10000.0,-10000.0),(10000.0,10000.0,-10000.0),(-10000.0,10000.0,-10000.0),(-10000.0,-10000.0,10000.0),(10000.0,-10000.0,10000.0),(10000.0,10000.0,10000.0),(-10000.0,10000.0,10000.0),(-5000.0,-5000.0,-5000.0),(5000.0,-5000.0,-5000.0),(5000.0,5000.0,-5000.0),(-5000.0,5000.0,-5000.0),(5000.0,-5000.0,10000.0),(-5000.0,-5000.0,10000.0),(5000.0,5000.0,10000.0),(-5000.0,5000.0,10000.0)),$);
#16= IFCINDEXEDPOLYGONALFACE((2,6,5,1));
#17= IFCINDEXEDPOLYGONALFACE((3,7,6,2));
#18= IFCINDEXEDPOLYGONALFACE((4,8,7,3));
#19= IFCINDEXEDPOLYGONALFACE((1,5,8,4));
#20= IFCINDEXEDPOLYGONALFACE((4,3,2,1));
#21= IFCINDEXEDPOLYGONALFACEWITHVOIDS((6,7,8,5),((14,16,15,13)));
#22= IFCINDEXEDPOLYGONALFACE((13,10,9,14));
#23= IFCINDEXEDPOLYGONALFACE((15,11,10,13));
#24= IFCINDEXEDPOLYGONALFACE((16,12,11,15));
#25= IFCINDEXEDPOLYGONALFACE((14,9,12,16));
#26= IFCINDEXEDPOLYGONALFACE((9,10,11,12));
#27= IFCPOLYGONALFACESET(#15,.T.,(#16,#17,#18,#19,#20,#21,#22,#23,#24,#25,#26),$);
#28= IFCSHAPEREPRESENTATION(#5,'Body','Tessellation',(#27));
#29= IFCPRODUCTDEFINITIONSHAPE($,$,(#28));
/* ------------------------------------------------------------------------- */
/* assigned as shape representation to a proxy */
#30= IFCBUILDINGELEMENTPROXY('1csV6umSb0px7vDxobGEN_',#3054,'NOTDEFINED',$,$,#32,#29,$,.NOTDEFINED.);
#31= IFCAXIS2PLACEMENT3D(#2,$,$);
#32= IFCLOCALPLACEMENT(#3047,#31);
#3047= IFCLOCALPLACEMENT($,#3);
/* ------------------------------------------------------------------------- */
/* definition of the minimal building structure, units, owner history */
#3048= IFCBUILDING('2tMIBeIVfClPSrbOosOJDI',#3054,'Grasshopper Building','GH Building',$,#3047,$,'GH Building',$,0.0,0.0,$);
#3049= IFCPERSONANDORGANIZATION(#3050,#3051,$);
#3050= IFCPERSON('redacted','redacted',$,$,$,$,$,$);
#3051= IFCORGANIZATION($,'redacted',$,$,$);
#3052= IFCAPPLICATION(#3053,'redacted','redacted','redacted');
#3053= IFCORGANIZATION($,'redacted',$,$,$);
#3054= IFCOWNERHISTORY(#3049,#3052,$,.ADDED.,1464284014,$,$,1464284014);
#3055= IFCRELCONTAINEDINSPATIALSTRUCTURE('3_FDRX0_zCNwiRAZP_mk8l',#3054,'Building','Building Container for Elements',(#30),#3048);
#3056= IFCAXIS2PLACEMENT3D(#2,$,$);
#3058= IFCCARTESIANPOINT((0.0,0.0,0.0));
#3059= IFCDIRECTION((0.0,0.0,1.0));
#3060= IFCDIRECTION((1.0,0.0,0.0));
#3061= IFCPROJECT('37E0t9DhPDuPXM8sgxexaw',#3054,'Grasshopper Project',$,$,$,$,(#1),#3062);
#3062= IFCUNITASSIGNMENT((#3063,#13,#14,#3064,#3065));
#3063= IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.);
#3064= IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.);
#3065= IFCSIUNIT(*,.TIMEUNIT.,$,.SECOND.);
#3066= IFCRELAGGREGATES('1jnXpsMarCZQ$Xxt61uMb4',#3054,'Project Container','Project Container for Buildings',#3061,(#3048));
#3070= IFCAXIS2PLACEMENT3D(#2,$,$);
ENDSEC;
END-ISO-10303-21;