mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-05 23:41:44 +00:00
Add IfcFaceSurface example
This commit is contained in:
@@ -169,6 +169,37 @@ int main(int argc, char** argv) {
|
||||
IfcSchema::IfcFace* face = new IfcSchema::IfcFace(bounds);
|
||||
create_testcase(file, face, "imprecise polyloop");
|
||||
}
|
||||
{
|
||||
IfcSchema::IfcCartesianPoint* point1 = file.addTriplet<IfcSchema::IfcCartesianPoint>(+400, 0., 0.);
|
||||
IfcSchema::IfcCartesianPoint* point2 = file.addTriplet<IfcSchema::IfcCartesianPoint>(-400, 0., 0.);
|
||||
IfcSchema::IfcVertexPoint* vertex1 = new IfcSchema::IfcVertexPoint(point1);
|
||||
IfcSchema::IfcVertexPoint* vertex2 = new IfcSchema::IfcVertexPoint(point2);
|
||||
IfcSchema::IfcCircle* circle = new IfcSchema::IfcCircle(file.addPlacement2d(), 400.);
|
||||
IfcSchema::IfcEdgeCurve* edge1 = new IfcSchema::IfcEdgeCurve(vertex1, vertex2, circle, true);
|
||||
IfcSchema::IfcEdgeCurve* edge2 = new IfcSchema::IfcEdgeCurve(vertex2, vertex1, circle, true);
|
||||
IfcSchema::IfcOrientedEdge* oriented_edge1 = new IfcSchema::IfcOrientedEdge(edge1, true);
|
||||
IfcSchema::IfcOrientedEdge* oriented_edge2 = new IfcSchema::IfcOrientedEdge(edge2, true);
|
||||
IfcSchema::IfcOrientedEdge::list::ptr edges(new IfcSchema::IfcOrientedEdge::list);
|
||||
edges->push(oriented_edge1);
|
||||
edges->push(oriented_edge2);
|
||||
IfcSchema::IfcEdgeLoop* loop = new IfcSchema::IfcEdgeLoop(edges);
|
||||
IfcSchema::IfcFaceOuterBound* bound = new IfcSchema::IfcFaceOuterBound(loop, true);
|
||||
|
||||
IfcSchema::IfcFaceBound::list::ptr bounds (new IfcSchema::IfcFaceBound::list);
|
||||
bounds->push(bound);
|
||||
|
||||
IfcSchema::IfcCartesianPoint::list::ptr trim1(new IfcSchema::IfcCartesianPoint::list);
|
||||
IfcSchema::IfcCartesianPoint::list::ptr trim2(new IfcSchema::IfcCartesianPoint::list);
|
||||
trim1->push(point1);
|
||||
trim2->push(point2);
|
||||
IfcSchema::IfcTrimmedCurve* trimmed_curve = new IfcSchema::IfcTrimmedCurve(circle, trim1->generalize(), trim2->generalize(), true, IfcSchema::IfcTrimmingPreference::IfcTrimmingPreference_CARTESIAN);
|
||||
IfcSchema::IfcArbitraryOpenProfileDef* profile = new IfcSchema::IfcArbitraryOpenProfileDef(IfcSchema::IfcProfileTypeEnum::IfcProfileType_CURVE, boost::none, trimmed_curve);
|
||||
IfcSchema::IfcAxis1Placement* place = new IfcSchema::IfcAxis1Placement(file.addTriplet<IfcSchema::IfcCartesianPoint>(0., 0., 0.), file.addTriplet<IfcSchema::IfcDirection>(1., 0., 0.));
|
||||
IfcSchema::IfcSurfaceOfRevolution* surface = new IfcSchema::IfcSurfaceOfRevolution(profile, file.addPlacement3d(), place);
|
||||
|
||||
IfcSchema::IfcFace* face = new IfcSchema::IfcFaceSurface(bounds, surface, true);
|
||||
create_testcase(file, face, "face surface");
|
||||
}
|
||||
const std::string filename = "faces.ifc";
|
||||
file.header().file_name().name(filename);
|
||||
std::ofstream f(filename.c_str());
|
||||
|
||||
+55
-19
@@ -1,7 +1,7 @@
|
||||
ISO-10303-21;
|
||||
HEADER;
|
||||
FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1');
|
||||
FILE_NAME('faces.ifc','2015-05-20T10:50:06',(),(),'IfcOpenShell 0.5.0-dev','IfcOpenShell 0.5.0-dev','');
|
||||
FILE_NAME('faces.ifc','2015-05-21T13:39:45',(),(),'IfcOpenShell 0.5.0-dev','IfcOpenShell 0.5.0-dev','');
|
||||
FILE_SCHEMA(('IFC2X3'));
|
||||
ENDSEC;
|
||||
DATA;
|
||||
@@ -13,37 +13,37 @@ DATA;
|
||||
#6=IFCORGANIZATION($,'IfcOpenShell',$,$,$);
|
||||
#7=IFCPERSONANDORGANIZATION(#5,#6,$);
|
||||
#8=IFCAPPLICATION(#6,'0.5.0-dev','IfcOpenShell','IfcOpenShell');
|
||||
#9=IFCOWNERHISTORY(#7,#8,$,.ADDED.,1432111806,#7,#8,1432111806);
|
||||
#9=IFCOWNERHISTORY(#7,#8,$,.ADDED.,1432208385,#7,#8,1432208385);
|
||||
#10=IFCDIMENSIONALEXPONENTS(0,0,0,0,0,0,0);
|
||||
#11=IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.);
|
||||
#12=IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.);
|
||||
#14=IFCMEASUREWITHUNIT(IFCPLANEANGLEMEASURE(0.017453293),#12);
|
||||
#15=IFCCONVERSIONBASEDUNIT(#10,.PLANEANGLEUNIT.,'Degrees',#14);
|
||||
#16=IFCUNITASSIGNMENT((#11,#15));
|
||||
#17=IFCPROJECT('1HQX190X58kvRECR6voyfc',#9,$,$,$,$,$,(#51),#16);
|
||||
#17=IFCPROJECT('1D905l4Br0_uc_wqTsE$SQ',#9,$,$,$,$,$,(#51),#16);
|
||||
#18=IFCDIRECTION((1.,0.,0.));
|
||||
#19=IFCDIRECTION((0.,0.,1.));
|
||||
#20=IFCCARTESIANPOINT((0.,0.,0.));
|
||||
#21=IFCAXIS2PLACEMENT3D(#20,#19,#18);
|
||||
#22=IFCLOCALPLACEMENT($,#21);
|
||||
#23=IFCSITE('0eyqmWf4z3dANo5Kaef3tu',#9,$,$,$,#22,$,$,.ELEMENT.,$,$,$,$,$);
|
||||
#24=IFCRELAGGREGATES('18QNJy24z3FB9H1omtBuo_',#9,$,$,#17,(#23));
|
||||
#23=IFCSITE('1TYtkB4HH4UewrqJZf8oux',#9,$,$,$,#22,$,$,.ELEMENT.,$,$,$,$,$);
|
||||
#24=IFCRELAGGREGATES('3St43w7tz9nBWtOlIiktKb',#9,$,$,#17,(#23));
|
||||
#25=IFCDIRECTION((1.,0.,0.));
|
||||
#26=IFCDIRECTION((0.,0.,1.));
|
||||
#27=IFCCARTESIANPOINT((0.,0.,0.));
|
||||
#28=IFCAXIS2PLACEMENT3D(#27,#26,#25);
|
||||
#29=IFCLOCALPLACEMENT(#22,#28);
|
||||
#30=IFCBUILDING('3jWWZTz7n64v5lXI7dcOG2',#9,$,$,$,#29,$,$,.ELEMENT.,$,$,$);
|
||||
#31=IFCRELAGGREGATES('3I_AMlVAjD7AJyIfSH193g',#9,$,$,#23,(#30));
|
||||
#30=IFCBUILDING('0qDgO8$bH1SBLKLXh5dNb$',#9,$,$,$,#29,$,$,.ELEMENT.,$,$,$);
|
||||
#31=IFCRELAGGREGATES('0UWVtbmTH3TfqORMdAOh47',#9,$,$,#23,(#30));
|
||||
#32=IFCDIRECTION((1.,0.,0.));
|
||||
#33=IFCDIRECTION((0.,0.,1.));
|
||||
#34=IFCCARTESIANPOINT((0.,0.,0.));
|
||||
#35=IFCAXIS2PLACEMENT3D(#34,#33,#32);
|
||||
#36=IFCLOCALPLACEMENT(#29,#35);
|
||||
#37=IFCBUILDINGSTOREY('1_ImA5b7HELAI8raWFYphY',#9,$,$,$,#36,$,$,.ELEMENT.,$);
|
||||
#38=IFCRELAGGREGATES('29hL9yBXj6lvk6BXb$wnMF',#9,$,$,#30,(#37));
|
||||
#39=IFCBUILDINGELEMENTPROXY('344_rTMFT6RuKWcRH19W6g',#9,'polyloop',$,$,#45,#58,$,$);
|
||||
#40=IFCRELCONTAINEDINSPATIALSTRUCTURE('2RQ$SfpKfBYuSRATxRwC0V',#9,$,$,(#39),#37);
|
||||
#37=IFCBUILDINGSTOREY('1VxMQnAtTAXQR2UcTfUIHM',#9,$,$,$,#36,$,$,.ELEMENT.,$);
|
||||
#38=IFCRELAGGREGATES('1PUOIH_6HB5Qjx5NPLWd9Z',#9,$,$,#30,(#37));
|
||||
#39=IFCBUILDINGELEMENTPROXY('0FDjw35CL6LwLNpj9yQtbC',#9,'polyloop',$,$,#45,#58,$,$);
|
||||
#40=IFCRELCONTAINEDINSPATIALSTRUCTURE('0HUZ_YDbz11wRnci6q82vO',#9,$,$,(#39),#37);
|
||||
#41=IFCDIRECTION((1.,0.,0.));
|
||||
#42=IFCDIRECTION((0.,0.,1.));
|
||||
#43=IFCCARTESIANPOINT((0.,0.,0.));
|
||||
@@ -67,8 +67,8 @@ DATA;
|
||||
#61=IFCDIRECTION((1.,0.));
|
||||
#62=IFCCARTESIANPOINT((0.,0.));
|
||||
#63=IFCAXIS2PLACEMENT2D(#62,#61);
|
||||
#64=IFCBUILDINGELEMENTPROXY('35crzRJnnE9Akf8211DDa3',#9,'circle',$,$,#70,#84,$,$);
|
||||
#65=IFCRELCONTAINEDINSPATIALSTRUCTURE('3gBsuCqwb3me5EkC8o3Mpn',#9,$,$,(#64),#37);
|
||||
#64=IFCBUILDINGELEMENTPROXY('1zqQpq4u5AquAWdex2ZCij',#9,'circle',$,$,#70,#84,$,$);
|
||||
#65=IFCRELCONTAINEDINSPATIALSTRUCTURE('1bern8Pdr5GuS1XXorDBKi',#9,$,$,(#64),#37);
|
||||
#66=IFCDIRECTION((1.,0.,0.));
|
||||
#67=IFCDIRECTION((0.,0.,1.));
|
||||
#68=IFCCARTESIANPOINT((1000.,0.,0.));
|
||||
@@ -100,8 +100,8 @@ DATA;
|
||||
#94=IFCCARTESIANPOINT((300.,300.,0.));
|
||||
#95=IFCCARTESIANPOINT((300.,-300.,0.));
|
||||
#96=IFCCARTESIANPOINT((100.,-300.,0.));
|
||||
#97=IFCBUILDINGELEMENTPROXY('3w09rKcILCYAnKVxlLSjOP',#9,'polyloop with holes',$,$,#103,#114,$,$);
|
||||
#98=IFCRELCONTAINEDINSPATIALSTRUCTURE('2QRyhTXwH8WPAUUlchhb7x',#9,$,$,(#97),#37);
|
||||
#97=IFCBUILDINGELEMENTPROXY('2Bbrp8MXPEO82FjtiQdS0b',#9,'polyloop with holes',$,$,#103,#114,$,$);
|
||||
#98=IFCRELCONTAINEDINSPATIALSTRUCTURE('2g5RymeJj3vBfzT3vUH2Hc',#9,$,$,(#97),#37);
|
||||
#99=IFCDIRECTION((1.,0.,0.));
|
||||
#100=IFCDIRECTION((0.,0.,1.));
|
||||
#101=IFCCARTESIANPOINT((2000.,0.,0.));
|
||||
@@ -126,8 +126,8 @@ DATA;
|
||||
#120=IFCCARTESIANPOINT((400.,400.,0.));
|
||||
#121=IFCCARTESIANPOINT((400.,-400.,0.));
|
||||
#122=IFCCARTESIANPOINT((100.,-400.,0.));
|
||||
#123=IFCBUILDINGELEMENTPROXY('0cxEkTWf97T8imCiw2hTqD',#9,'multiple outer boundaries (invalid)',$,$,#129,#138,$,$);
|
||||
#124=IFCRELCONTAINEDINSPATIALSTRUCTURE('0$orfSvG18vfnhm9zOB5l5',#9,$,$,(#123),#37);
|
||||
#123=IFCBUILDINGELEMENTPROXY('2bQQEiQcn1ovuDTsdKTnBY',#9,'multiple outer boundaries (invalid)',$,$,#129,#138,$,$);
|
||||
#124=IFCRELCONTAINEDINSPATIALSTRUCTURE('2GJUdWCqP1UQCVLD27KrOc',#9,$,$,(#123),#37);
|
||||
#125=IFCDIRECTION((1.,0.,0.));
|
||||
#126=IFCDIRECTION((0.,0.,1.));
|
||||
#127=IFCCARTESIANPOINT((3000.,0.,0.));
|
||||
@@ -146,8 +146,8 @@ DATA;
|
||||
#140=IFCCARTESIANPOINT((400.,-400.,0.));
|
||||
#141=IFCCARTESIANPOINT((400.,400.,0.));
|
||||
#142=IFCCARTESIANPOINT((-400.,400.,0.));
|
||||
#143=IFCBUILDINGELEMENTPROXY('1u73lgHiH3IesmFCYzbd$l',#9,'imprecise polyloop',$,$,#149,#156,$,$);
|
||||
#144=IFCRELCONTAINEDINSPATIALSTRUCTURE('0AV1k6Kl19x9ot0jkkQV8h',#9,$,$,(#143),#37);
|
||||
#143=IFCBUILDINGELEMENTPROXY('1443FjPtnE8Plvz55A4Mvl',#9,'imprecise polyloop',$,$,#149,#156,$,$);
|
||||
#144=IFCRELCONTAINEDINSPATIALSTRUCTURE('12oaoN7EL4LuIW9qLWz5lS',#9,$,$,(#143),#37);
|
||||
#145=IFCDIRECTION((1.,0.,0.));
|
||||
#146=IFCDIRECTION((0.,0.,1.));
|
||||
#147=IFCCARTESIANPOINT((4000.,0.,0.));
|
||||
@@ -160,5 +160,41 @@ DATA;
|
||||
#154=IFCFACEBASEDSURFACEMODEL((#153));
|
||||
#155=IFCSHAPEREPRESENTATION(#51,'Body','SurfaceModel',(#154));
|
||||
#156=IFCPRODUCTDEFINITIONSHAPE($,$,(#155));
|
||||
#157=IFCCARTESIANPOINT((400.,0.,0.));
|
||||
#158=IFCCARTESIANPOINT((-400.,0.,0.));
|
||||
#159=IFCDIRECTION((1.,0.));
|
||||
#160=IFCCARTESIANPOINT((0.,0.));
|
||||
#161=IFCAXIS2PLACEMENT2D(#160,#159);
|
||||
#162=IFCDIRECTION((1.,0.,0.));
|
||||
#163=IFCCARTESIANPOINT((0.,0.,0.));
|
||||
#164=IFCDIRECTION((1.,0.,0.));
|
||||
#165=IFCDIRECTION((0.,0.,1.));
|
||||
#166=IFCCARTESIANPOINT((0.,0.,0.));
|
||||
#167=IFCAXIS2PLACEMENT3D(#166,#165,#164);
|
||||
#168=IFCBUILDINGELEMENTPROXY('1lw_Itcy90MuQm4IvMmHh7',#9,'face surface',$,$,#174,#192,$,$);
|
||||
#169=IFCRELCONTAINEDINSPATIALSTRUCTURE('1h83KReB12S8GfCIblJIVI',#9,$,$,(#168),#37);
|
||||
#170=IFCDIRECTION((1.,0.,0.));
|
||||
#171=IFCDIRECTION((0.,0.,1.));
|
||||
#172=IFCCARTESIANPOINT((5000.,0.,0.));
|
||||
#173=IFCAXIS2PLACEMENT3D(#172,#171,#170);
|
||||
#174=IFCLOCALPLACEMENT($,#173);
|
||||
#175=IFCVERTEXPOINT(#157);
|
||||
#176=IFCVERTEXPOINT(#158);
|
||||
#177=IFCCIRCLE(#161,400.);
|
||||
#178=IFCEDGECURVE(#175,#176,#177,.T.);
|
||||
#179=IFCORIENTEDEDGE(*,*,#178,.T.);
|
||||
#180=IFCEDGECURVE(#176,#175,#177,.T.);
|
||||
#181=IFCORIENTEDEDGE(*,*,#180,.T.);
|
||||
#182=IFCEDGELOOP((#179,#181));
|
||||
#183=IFCFACEOUTERBOUND(#182,.T.);
|
||||
#184=IFCTRIMMEDCURVE(#177,(#157),(#158),.T.,.CARTESIAN.);
|
||||
#185=IFCARBITRARYOPENPROFILEDEF(.CURVE.,$,#184);
|
||||
#186=IFCAXIS1PLACEMENT(#163,#162);
|
||||
#187=IFCSURFACEOFREVOLUTION(#185,#167,#186);
|
||||
#188=IFCFACESURFACE((#183),#187,.T.);
|
||||
#189=IFCOPENSHELL((#188));
|
||||
#190=IFCFACEBASEDSURFACEMODEL((#189));
|
||||
#191=IFCSHAPEREPRESENTATION(#51,'Body','SurfaceModel',(#190));
|
||||
#192=IFCPRODUCTDEFINITIONSHAPE($,$,(#191));
|
||||
ENDSEC;
|
||||
END-ISO-10303-21;
|
||||
|
||||
Reference in New Issue
Block a user