mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-11 18:16:40 +00:00
Add support for ellipses with SemiAxis2 > SemiAxis1
This commit is contained in:
@@ -0,0 +1,148 @@
|
||||
/********************************************************************************
|
||||
* *
|
||||
* This file is part of IfcOpenShell. *
|
||||
* *
|
||||
* IfcOpenShell is free software: you can redistribute it and/or modify *
|
||||
* it under the terms of the Lesser GNU General Public License as published by *
|
||||
* the Free Software Foundation, either version 3.0 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* IfcOpenShell is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* Lesser GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the Lesser GNU General Public License *
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
* *
|
||||
********************************************************************************/
|
||||
|
||||
/********************************************************************************
|
||||
* *
|
||||
* Example that generates profiles of trimmed ellipses. *
|
||||
* *
|
||||
********************************************************************************/
|
||||
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
|
||||
#include "../ifcparse/Ifc2x3.h"
|
||||
#include "../ifcparse/IfcUtil.h"
|
||||
#include "../ifcparse/IfcHierarchyHelper.h"
|
||||
|
||||
typedef std::string S;
|
||||
typedef IfcWrite::IfcGuidHelper guid;
|
||||
boost::none_t const null = (static_cast<boost::none_t>(0));
|
||||
|
||||
typedef struct {
|
||||
double r1;
|
||||
double r2;
|
||||
double t1;
|
||||
double t2;
|
||||
} EllipsePie;
|
||||
|
||||
static int i = 0;
|
||||
|
||||
void create_testcase_for(IfcHierarchyHelper& file, const EllipsePie& pie, Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference pref) {
|
||||
const double deg = 1. / 180. * 3.141592653;
|
||||
double flt1[] = {0. , 0. };
|
||||
double flt2[] = {pie.r1 * cos(pie.t1*deg), pie.r2 * sin(pie.t1*deg)};
|
||||
double flt3[] = {pie.r1 * cos(pie.t2*deg), pie.r2 * sin(pie.t2*deg)};
|
||||
|
||||
std::vector<double> coords1(flt1, flt1 + 2);
|
||||
std::vector<double> coords2(flt2, flt2 + 2);
|
||||
std::vector<double> coords3(flt3, flt3 + 2);
|
||||
|
||||
Ifc2x3::IfcCartesianPoint* p1 = new Ifc2x3::IfcCartesianPoint(coords1);
|
||||
Ifc2x3::IfcCartesianPoint* p2 = new Ifc2x3::IfcCartesianPoint(coords2);
|
||||
Ifc2x3::IfcCartesianPoint* p3 = new Ifc2x3::IfcCartesianPoint(coords3);
|
||||
|
||||
Ifc2x3::IfcCartesianPoint::list points(new IfcTemplatedEntityList<Ifc2x3::IfcCartesianPoint>());
|
||||
points->push(p3);
|
||||
points->push(p1);
|
||||
points->push(p2);
|
||||
file.AddEntities(points->generalize());
|
||||
|
||||
|
||||
Ifc2x3::IfcEllipse* ellipse = new Ifc2x3::IfcEllipse(file.addPlacement2d(), pie.r1, pie.r2);
|
||||
file.AddEntity(ellipse);
|
||||
IfcEntities trim1(new IfcEntityList());
|
||||
IfcEntities trim2(new IfcEntityList());
|
||||
if (pref == Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference_PARAMETER) {
|
||||
trim1->push(new IfcWrite::IfcSelectHelper(pie.t1, Ifc2x3::Type::IfcParameterValue));
|
||||
trim2->push(new IfcWrite::IfcSelectHelper(pie.t2, Ifc2x3::Type::IfcParameterValue));
|
||||
} else {
|
||||
trim1->push(p2);
|
||||
trim2->push(p3);
|
||||
}
|
||||
Ifc2x3::IfcTrimmedCurve* trim = new Ifc2x3::IfcTrimmedCurve(ellipse, trim1, trim2, true, pref);
|
||||
file.AddEntity(trim);
|
||||
|
||||
Ifc2x3::IfcCompositeCurveSegment::list segments(new IfcTemplatedEntityList<Ifc2x3::IfcCompositeCurveSegment>());
|
||||
Ifc2x3::IfcCompositeCurveSegment* s2 = new Ifc2x3::IfcCompositeCurveSegment(Ifc2x3::IfcTransitionCode::IfcTransitionCode_CONTINUOUS, true, trim);
|
||||
|
||||
Ifc2x3::IfcPolyline* poly = new Ifc2x3::IfcPolyline(points);
|
||||
file.AddEntity(poly);
|
||||
Ifc2x3::IfcCompositeCurveSegment* s1 = new Ifc2x3::IfcCompositeCurveSegment(Ifc2x3::IfcTransitionCode::IfcTransitionCode_CONTINUOUS, true, poly);
|
||||
segments->push(s1);
|
||||
|
||||
segments->push(s2);
|
||||
file.AddEntities(segments->generalize());
|
||||
|
||||
Ifc2x3::IfcCompositeCurve* ccurve = new Ifc2x3::IfcCompositeCurve(segments, false);
|
||||
Ifc2x3::IfcArbitraryClosedProfileDef* profile = new Ifc2x3::IfcArbitraryClosedProfileDef(Ifc2x3::IfcProfileTypeEnum::IfcProfileType_AREA, null, ccurve);
|
||||
file.AddEntity(ccurve);
|
||||
file.AddEntity(profile);
|
||||
|
||||
IfcSchema::IfcBuildingElementProxy* product = new IfcSchema::IfcBuildingElementProxy(
|
||||
guid(), 0, S("profile"), null, null, 0, 0, null, null);
|
||||
file.addBuildingProduct(product);
|
||||
product->setOwnerHistory(file.getSingle<IfcSchema::IfcOwnerHistory>());
|
||||
|
||||
product->setObjectPlacement(file.addLocalPlacement(200 * i++));
|
||||
|
||||
IfcSchema::IfcExtrudedAreaSolid* solid = new IfcSchema::IfcExtrudedAreaSolid(profile,
|
||||
file.addPlacement3d(), file.addTriplet<IfcSchema::IfcDirection>(0, 0, 1), 20.0);
|
||||
|
||||
file.AddEntity(solid);
|
||||
|
||||
IfcSchema::IfcRepresentation::list reps (new IfcTemplatedEntityList<IfcSchema::IfcRepresentation>());
|
||||
IfcSchema::IfcRepresentationItem::list items (new IfcTemplatedEntityList<IfcSchema::IfcRepresentationItem>());
|
||||
|
||||
items->push(solid);
|
||||
IfcSchema::IfcShapeRepresentation* rep = new IfcSchema::IfcShapeRepresentation(
|
||||
file.getSingle<IfcSchema::IfcRepresentationContext>(), S("Body"), S("SweptSolid"), items);
|
||||
reps->push(rep);
|
||||
|
||||
IfcSchema::IfcProductDefinitionShape* shape = new IfcSchema::IfcProductDefinitionShape(0, 0, reps);
|
||||
file.AddEntity(rep);
|
||||
file.AddEntity(shape);
|
||||
|
||||
product->setRepresentation(shape);
|
||||
}
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
const std::string filename = "ellipse_pies.ifc";
|
||||
IfcHierarchyHelper file;
|
||||
{ EllipsePie pie = {80., 50., 0., 150.};
|
||||
create_testcase_for(file, pie, Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference_PARAMETER);
|
||||
create_testcase_for(file, pie, Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference_CARTESIAN);}
|
||||
{ EllipsePie pie = {80, 50., 30., 300.};
|
||||
create_testcase_for(file, pie, Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference_PARAMETER);
|
||||
create_testcase_for(file, pie, Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference_CARTESIAN);}
|
||||
{ EllipsePie pie = {80, 50., 300., 30.};
|
||||
create_testcase_for(file, pie, Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference_PARAMETER);
|
||||
create_testcase_for(file, pie, Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference_CARTESIAN);}
|
||||
{ EllipsePie pie = {50., 80., 0., 150.};
|
||||
create_testcase_for(file, pie, Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference_PARAMETER);
|
||||
create_testcase_for(file, pie, Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference_CARTESIAN);}
|
||||
{ EllipsePie pie = {50, 80., 30., 300.};
|
||||
create_testcase_for(file, pie, Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference_PARAMETER);
|
||||
create_testcase_for(file, pie, Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference_CARTESIAN);}
|
||||
{ EllipsePie pie = {50, 80., 300., 30.};
|
||||
create_testcase_for(file, pie, Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference_PARAMETER);
|
||||
create_testcase_for(file, pie, Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference_CARTESIAN);}
|
||||
std::ofstream f(filename.c_str());
|
||||
f << file;
|
||||
}
|
||||
@@ -23,6 +23,8 @@
|
||||
* *
|
||||
********************************************************************************/
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
#include <gp_Pnt.hxx>
|
||||
#include <gp_Vec.hxx>
|
||||
#include <gp_Dir.hxx>
|
||||
@@ -96,7 +98,12 @@ bool IfcGeom::convert(const IfcSchema::IfcCircle::ptr l, Handle(Geom_Curve)& cur
|
||||
bool IfcGeom::convert(const IfcSchema::IfcEllipse::ptr l, Handle(Geom_Curve)& curve) {
|
||||
double x = l->SemiAxis1() * IfcGeom::GetValue(GV_LENGTH_UNIT);
|
||||
double y = l->SemiAxis2() * IfcGeom::GetValue(GV_LENGTH_UNIT);
|
||||
if ( x == 0.0f || y == 0.0f || y > x ) { return false; }
|
||||
if (x < ALMOST_ZERO || y < ALMOST_ZERO) { return false; }
|
||||
// Open Cascade does not allow ellipses of which the minor radius
|
||||
// is greater than the major radius. Hence, in this case, the
|
||||
// ellipse is rotated. Note that special care needs to be taken
|
||||
// when creating a trimmed curve off of an ellipse like this.
|
||||
const bool rotated = y > x;
|
||||
gp_Trsf trsf;
|
||||
IfcSchema::IfcAxis2Placement placement = l->Position();
|
||||
if (placement->is(IfcSchema::Type::IfcAxis2Placement3D)) {
|
||||
@@ -106,7 +113,12 @@ bool IfcGeom::convert(const IfcSchema::IfcEllipse::ptr l, Handle(Geom_Curve)& cu
|
||||
IfcGeom::convert((IfcSchema::IfcAxis2Placement2D*)placement,trsf2d);
|
||||
trsf = trsf2d;
|
||||
}
|
||||
gp_Ax2 ax = gp_Ax2().Transformed(trsf);
|
||||
gp_Ax2 ax = gp_Ax2();
|
||||
if (rotated) {
|
||||
ax.Rotate(ax.Axis(), M_PI / 2.);
|
||||
std::swap(x, y);
|
||||
}
|
||||
ax.Transform(trsf);
|
||||
curve = new Geom_Ellipse(ax, x, y);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -243,6 +243,16 @@ bool IfcGeom::convert(const IfcSchema::IfcTrimmedCurve::ptr l, TopoDS_Wire& wire
|
||||
const double magnitude = line->Dir()->Magnitude();
|
||||
flts[0] *= magnitude; flts[1] *= magnitude;
|
||||
}
|
||||
if ( basis_curve->is(IfcSchema::Type::IfcEllipse) ) {
|
||||
IfcSchema::IfcEllipse* ellipse = static_cast<IfcSchema::IfcEllipse*>(basis_curve);
|
||||
double x = ellipse->SemiAxis1() * IfcGeom::GetValue(GV_LENGTH_UNIT);
|
||||
double y = ellipse->SemiAxis2() * IfcGeom::GetValue(GV_LENGTH_UNIT);
|
||||
const bool rotated = y > x;
|
||||
if (rotated) {
|
||||
flts[0] -= M_PI / 2.;
|
||||
flts[1] -= M_PI / 2.;
|
||||
}
|
||||
}
|
||||
if ( isConic && ALMOST_THE_SAME(fmod(flts[1]-flts[0],(double)(M_PI*2.0)),0.0f) ) {
|
||||
w.Add(BRepBuilderAPI_MakeEdge(curve));
|
||||
} else {
|
||||
|
||||
@@ -0,0 +1,384 @@
|
||||
ISO-10303-21;
|
||||
HEADER;
|
||||
FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1');
|
||||
FILE_NAME('','2014-03-01T19:22:28',(''),('',''),'IfcOpenShell 0.5.0-dev','IfcOpenShell 0.5.0-dev','');
|
||||
FILE_SCHEMA(('IFC2X3'));
|
||||
ENDSEC;
|
||||
DATA;
|
||||
#1=IFCCARTESIANPOINT((-69.282,25.));
|
||||
#2=IFCCARTESIANPOINT((0.,0.));
|
||||
#3=IFCCARTESIANPOINT((80.,0.));
|
||||
#4=IFCDIRECTION((1.,0.));
|
||||
#5=IFCCARTESIANPOINT((0.,0.));
|
||||
#6=IFCAXIS2PLACEMENT2D(#5,#4);
|
||||
#7=IFCELLIPSE(#6,80.,50.);
|
||||
#8=IFCTRIMMEDCURVE(#7,(IFCPARAMETERVALUE(0.)),(IFCPARAMETERVALUE(150.)),.T.,.PARAMETER.);
|
||||
#9=IFCPOLYLINE((#1,#2,#3));
|
||||
#10=IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#9);
|
||||
#11=IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#8);
|
||||
#12=IFCCOMPOSITECURVE((#10,#11),.F.);
|
||||
#13=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#12);
|
||||
#14=IFCPERSON($,$,'',$,$,$,$,$);
|
||||
#15=IFCORGANIZATION($,'IfcOpenShell',$,$,$);
|
||||
#16=IFCPERSONANDORGANIZATION(#14,#15,$);
|
||||
#17=IFCAPPLICATION(#15,'0.5.0-dev','IfcOpenShell','IfcOpenShell');
|
||||
#18=IFCOWNERHISTORY(#16,#17,$,.ADDED.,$,#16,#17,1393698148);
|
||||
#19=IFCDIRECTION((0.,1.,0.));
|
||||
#20=IFCDIRECTION((1.,0.,0.));
|
||||
#21=IFCDIRECTION((0.,0.,1.));
|
||||
#22=IFCCARTESIANPOINT((0.,0.,0.));
|
||||
#23=IFCAXIS2PLACEMENT3D(#22,#21,#20);
|
||||
#24=IFCGEOMETRICREPRESENTATIONCONTEXT('Plan','Model',3,1.E-005,#23,#19);
|
||||
#25=IFCDIMENSIONALEXPONENTS(0,0,0,0,0,0,0);
|
||||
#26=IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.);
|
||||
#27=IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.);
|
||||
#28=IFCMEASUREWITHUNIT(IFCPLANEANGLEMEASURE(0.0174533),#27);
|
||||
#29=IFCCONVERSIONBASEDUNIT(#25,.PLANEANGLEUNIT.,'Degrees',#28);
|
||||
#30=IFCUNITASSIGNMENT((#26,#29));
|
||||
#31=IFCPROJECT('3dCDOYw4n5Y8eJ_0KefHrD',#18,$,$,$,$,$,(#24),#30);
|
||||
#32=IFCDIRECTION((1.,0.,0.));
|
||||
#33=IFCDIRECTION((0.,0.,1.));
|
||||
#34=IFCCARTESIANPOINT((0.,0.,0.));
|
||||
#35=IFCAXIS2PLACEMENT3D(#34,#33,#32);
|
||||
#36=IFCLOCALPLACEMENT($,#35);
|
||||
#37=IFCSITE('0ol03OK$nDUvCKpih6_bvZ',#18,$,$,$,#36,$,$,.ELEMENT.,$,$,$,$,$);
|
||||
#38=IFCRELAGGREGATES('3yCAEqUIb0BPJHU96H8gC2',#18,$,$,#31,(#37));
|
||||
#39=IFCDIRECTION((1.,0.,0.));
|
||||
#40=IFCDIRECTION((0.,0.,1.));
|
||||
#41=IFCCARTESIANPOINT((0.,0.,0.));
|
||||
#42=IFCAXIS2PLACEMENT3D(#41,#40,#39);
|
||||
#43=IFCLOCALPLACEMENT(#36,#42);
|
||||
#44=IFCBUILDING('0R1s4OXGbEtg49f5zLhJ3g',#18,$,$,$,#43,$,$,.ELEMENT.,$,$,$);
|
||||
#45=IFCRELAGGREGATES('0sxw3WgU1Coev9zSyYzWO9',#18,$,$,#37,(#44));
|
||||
#46=IFCDIRECTION((1.,0.,0.));
|
||||
#47=IFCDIRECTION((0.,0.,1.));
|
||||
#48=IFCCARTESIANPOINT((0.,0.,0.));
|
||||
#49=IFCAXIS2PLACEMENT3D(#48,#47,#46);
|
||||
#50=IFCLOCALPLACEMENT(#43,#49);
|
||||
#51=IFCBUILDINGSTOREY('1HvrpjaUD0mAy9OYzypHxq',#18,$,$,$,#50,$,$,.ELEMENT.,$);
|
||||
#52=IFCRELAGGREGATES('2DM$wvbjr0wR$W7fs780rK',#18,$,$,#44,(#51));
|
||||
#53=IFCBUILDINGELEMENTPROXY('30PQ1kM756iReDeYWo3djN',#18,'profile',$,$,#59,#67,$,$);
|
||||
#54=IFCRELCONTAINEDINSPATIALSTRUCTURE('3X4LOUUP1BmBGTSuGACijT',#18,$,$,(#53),#51);
|
||||
#55=IFCDIRECTION((1.,0.,0.));
|
||||
#56=IFCDIRECTION((0.,0.,1.));
|
||||
#57=IFCCARTESIANPOINT((0.,0.,0.));
|
||||
#58=IFCAXIS2PLACEMENT3D(#57,#56,#55);
|
||||
#59=IFCLOCALPLACEMENT($,#58);
|
||||
#60=IFCDIRECTION((0.,0.,1.));
|
||||
#61=IFCDIRECTION((1.,0.,0.));
|
||||
#62=IFCDIRECTION((0.,0.,1.));
|
||||
#63=IFCCARTESIANPOINT((0.,0.,0.));
|
||||
#64=IFCAXIS2PLACEMENT3D(#63,#62,#61);
|
||||
#65=IFCEXTRUDEDAREASOLID(#13,#64,#60,20.);
|
||||
#66=IFCSHAPEREPRESENTATION(#24,'Body','SweptSolid',(#65));
|
||||
#67=IFCPRODUCTDEFINITIONSHAPE($,$,(#66));
|
||||
#68=IFCCARTESIANPOINT((-69.282,25.));
|
||||
#69=IFCCARTESIANPOINT((0.,0.));
|
||||
#70=IFCCARTESIANPOINT((80.,0.));
|
||||
#71=IFCDIRECTION((1.,0.));
|
||||
#72=IFCCARTESIANPOINT((0.,0.));
|
||||
#73=IFCAXIS2PLACEMENT2D(#72,#71);
|
||||
#74=IFCELLIPSE(#73,80.,50.);
|
||||
#75=IFCTRIMMEDCURVE(#74,(#70),(#68),.T.,.CARTESIAN.);
|
||||
#76=IFCPOLYLINE((#68,#69,#70));
|
||||
#77=IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#76);
|
||||
#78=IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#75);
|
||||
#79=IFCCOMPOSITECURVE((#77,#78),.F.);
|
||||
#80=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#79);
|
||||
#81=IFCBUILDINGELEMENTPROXY('1tTkxkpn5CrRC_KrdxI7cs',#18,'profile',$,$,#87,#95,$,$);
|
||||
#82=IFCRELCONTAINEDINSPATIALSTRUCTURE('3jSIc1$rHB1hhu49tyDp0m',#18,$,$,(#81),#51);
|
||||
#83=IFCDIRECTION((1.,0.,0.));
|
||||
#84=IFCDIRECTION((0.,0.,1.));
|
||||
#85=IFCCARTESIANPOINT((200.,0.,0.));
|
||||
#86=IFCAXIS2PLACEMENT3D(#85,#84,#83);
|
||||
#87=IFCLOCALPLACEMENT($,#86);
|
||||
#88=IFCDIRECTION((0.,0.,1.));
|
||||
#89=IFCDIRECTION((1.,0.,0.));
|
||||
#90=IFCDIRECTION((0.,0.,1.));
|
||||
#91=IFCCARTESIANPOINT((0.,0.,0.));
|
||||
#92=IFCAXIS2PLACEMENT3D(#91,#90,#89);
|
||||
#93=IFCEXTRUDEDAREASOLID(#80,#92,#88,20.);
|
||||
#94=IFCSHAPEREPRESENTATION(#24,'Body','SweptSolid',(#93));
|
||||
#95=IFCPRODUCTDEFINITIONSHAPE($,$,(#94));
|
||||
#96=IFCCARTESIANPOINT((40.,-43.3013));
|
||||
#97=IFCCARTESIANPOINT((0.,0.));
|
||||
#98=IFCCARTESIANPOINT((69.282,25.));
|
||||
#99=IFCDIRECTION((1.,0.));
|
||||
#100=IFCCARTESIANPOINT((0.,0.));
|
||||
#101=IFCAXIS2PLACEMENT2D(#100,#99);
|
||||
#102=IFCELLIPSE(#101,80.,50.);
|
||||
#103=IFCTRIMMEDCURVE(#102,(IFCPARAMETERVALUE(30.)),(IFCPARAMETERVALUE(300.)),.T.,.PARAMETER.);
|
||||
#104=IFCPOLYLINE((#96,#97,#98));
|
||||
#105=IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#104);
|
||||
#106=IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#103);
|
||||
#107=IFCCOMPOSITECURVE((#105,#106),.F.);
|
||||
#108=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#107);
|
||||
#109=IFCBUILDINGELEMENTPROXY('2NRk9uETP8nPw_R0$dnPSi',#18,'profile',$,$,#115,#123,$,$);
|
||||
#110=IFCRELCONTAINEDINSPATIALSTRUCTURE('1CkBKQ1DD5HO3W4GCoUn3k',#18,$,$,(#109),#51);
|
||||
#111=IFCDIRECTION((1.,0.,0.));
|
||||
#112=IFCDIRECTION((0.,0.,1.));
|
||||
#113=IFCCARTESIANPOINT((400.,0.,0.));
|
||||
#114=IFCAXIS2PLACEMENT3D(#113,#112,#111);
|
||||
#115=IFCLOCALPLACEMENT($,#114);
|
||||
#116=IFCDIRECTION((0.,0.,1.));
|
||||
#117=IFCDIRECTION((1.,0.,0.));
|
||||
#118=IFCDIRECTION((0.,0.,1.));
|
||||
#119=IFCCARTESIANPOINT((0.,0.,0.));
|
||||
#120=IFCAXIS2PLACEMENT3D(#119,#118,#117);
|
||||
#121=IFCEXTRUDEDAREASOLID(#108,#120,#116,20.);
|
||||
#122=IFCSHAPEREPRESENTATION(#24,'Body','SweptSolid',(#121));
|
||||
#123=IFCPRODUCTDEFINITIONSHAPE($,$,(#122));
|
||||
#124=IFCCARTESIANPOINT((40.,-43.3013));
|
||||
#125=IFCCARTESIANPOINT((0.,0.));
|
||||
#126=IFCCARTESIANPOINT((69.282,25.));
|
||||
#127=IFCDIRECTION((1.,0.));
|
||||
#128=IFCCARTESIANPOINT((0.,0.));
|
||||
#129=IFCAXIS2PLACEMENT2D(#128,#127);
|
||||
#130=IFCELLIPSE(#129,80.,50.);
|
||||
#131=IFCTRIMMEDCURVE(#130,(#126),(#124),.T.,.CARTESIAN.);
|
||||
#132=IFCPOLYLINE((#124,#125,#126));
|
||||
#133=IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#132);
|
||||
#134=IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#131);
|
||||
#135=IFCCOMPOSITECURVE((#133,#134),.F.);
|
||||
#136=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#135);
|
||||
#137=IFCBUILDINGELEMENTPROXY('3ywxxkz8XBKeZa9KdjkKdq',#18,'profile',$,$,#143,#151,$,$);
|
||||
#138=IFCRELCONTAINEDINSPATIALSTRUCTURE('37ivoeNT12jusPi97ysI7W',#18,$,$,(#137),#51);
|
||||
#139=IFCDIRECTION((1.,0.,0.));
|
||||
#140=IFCDIRECTION((0.,0.,1.));
|
||||
#141=IFCCARTESIANPOINT((600.,0.,0.));
|
||||
#142=IFCAXIS2PLACEMENT3D(#141,#140,#139);
|
||||
#143=IFCLOCALPLACEMENT($,#142);
|
||||
#144=IFCDIRECTION((0.,0.,1.));
|
||||
#145=IFCDIRECTION((1.,0.,0.));
|
||||
#146=IFCDIRECTION((0.,0.,1.));
|
||||
#147=IFCCARTESIANPOINT((0.,0.,0.));
|
||||
#148=IFCAXIS2PLACEMENT3D(#147,#146,#145);
|
||||
#149=IFCEXTRUDEDAREASOLID(#136,#148,#144,20.);
|
||||
#150=IFCSHAPEREPRESENTATION(#24,'Body','SweptSolid',(#149));
|
||||
#151=IFCPRODUCTDEFINITIONSHAPE($,$,(#150));
|
||||
#152=IFCCARTESIANPOINT((69.282,25.));
|
||||
#153=IFCCARTESIANPOINT((0.,0.));
|
||||
#154=IFCCARTESIANPOINT((40.,-43.3013));
|
||||
#155=IFCDIRECTION((1.,0.));
|
||||
#156=IFCCARTESIANPOINT((0.,0.));
|
||||
#157=IFCAXIS2PLACEMENT2D(#156,#155);
|
||||
#158=IFCELLIPSE(#157,80.,50.);
|
||||
#159=IFCTRIMMEDCURVE(#158,(IFCPARAMETERVALUE(300.)),(IFCPARAMETERVALUE(30.)),.T.,.PARAMETER.);
|
||||
#160=IFCPOLYLINE((#152,#153,#154));
|
||||
#161=IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#160);
|
||||
#162=IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#159);
|
||||
#163=IFCCOMPOSITECURVE((#161,#162),.F.);
|
||||
#164=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#163);
|
||||
#165=IFCBUILDINGELEMENTPROXY('3S6Y3VY112dxY0tStVXkwt',#18,'profile',$,$,#171,#179,$,$);
|
||||
#166=IFCRELCONTAINEDINSPATIALSTRUCTURE('0FjzxDlhr3dOeY4ayxHlPS',#18,$,$,(#165),#51);
|
||||
#167=IFCDIRECTION((1.,0.,0.));
|
||||
#168=IFCDIRECTION((0.,0.,1.));
|
||||
#169=IFCCARTESIANPOINT((800.,0.,0.));
|
||||
#170=IFCAXIS2PLACEMENT3D(#169,#168,#167);
|
||||
#171=IFCLOCALPLACEMENT($,#170);
|
||||
#172=IFCDIRECTION((0.,0.,1.));
|
||||
#173=IFCDIRECTION((1.,0.,0.));
|
||||
#174=IFCDIRECTION((0.,0.,1.));
|
||||
#175=IFCCARTESIANPOINT((0.,0.,0.));
|
||||
#176=IFCAXIS2PLACEMENT3D(#175,#174,#173);
|
||||
#177=IFCEXTRUDEDAREASOLID(#164,#176,#172,20.);
|
||||
#178=IFCSHAPEREPRESENTATION(#24,'Body','SweptSolid',(#177));
|
||||
#179=IFCPRODUCTDEFINITIONSHAPE($,$,(#178));
|
||||
#180=IFCCARTESIANPOINT((69.282,25.));
|
||||
#181=IFCCARTESIANPOINT((0.,0.));
|
||||
#182=IFCCARTESIANPOINT((40.,-43.3013));
|
||||
#183=IFCDIRECTION((1.,0.));
|
||||
#184=IFCCARTESIANPOINT((0.,0.));
|
||||
#185=IFCAXIS2PLACEMENT2D(#184,#183);
|
||||
#186=IFCELLIPSE(#185,80.,50.);
|
||||
#187=IFCTRIMMEDCURVE(#186,(#182),(#180),.T.,.CARTESIAN.);
|
||||
#188=IFCPOLYLINE((#180,#181,#182));
|
||||
#189=IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#188);
|
||||
#190=IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#187);
|
||||
#191=IFCCOMPOSITECURVE((#189,#190),.F.);
|
||||
#192=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#191);
|
||||
#193=IFCBUILDINGELEMENTPROXY('1thkI63prF1OqBtP3bSL$d',#18,'profile',$,$,#199,#207,$,$);
|
||||
#194=IFCRELCONTAINEDINSPATIALSTRUCTURE('2P$8V2X5XECfS47AXjHiF1',#18,$,$,(#193),#51);
|
||||
#195=IFCDIRECTION((1.,0.,0.));
|
||||
#196=IFCDIRECTION((0.,0.,1.));
|
||||
#197=IFCCARTESIANPOINT((1000.,0.,0.));
|
||||
#198=IFCAXIS2PLACEMENT3D(#197,#196,#195);
|
||||
#199=IFCLOCALPLACEMENT($,#198);
|
||||
#200=IFCDIRECTION((0.,0.,1.));
|
||||
#201=IFCDIRECTION((1.,0.,0.));
|
||||
#202=IFCDIRECTION((0.,0.,1.));
|
||||
#203=IFCCARTESIANPOINT((0.,0.,0.));
|
||||
#204=IFCAXIS2PLACEMENT3D(#203,#202,#201);
|
||||
#205=IFCEXTRUDEDAREASOLID(#192,#204,#200,20.);
|
||||
#206=IFCSHAPEREPRESENTATION(#24,'Body','SweptSolid',(#205));
|
||||
#207=IFCPRODUCTDEFINITIONSHAPE($,$,(#206));
|
||||
#208=IFCCARTESIANPOINT((-43.3013,40.));
|
||||
#209=IFCCARTESIANPOINT((0.,0.));
|
||||
#210=IFCCARTESIANPOINT((50.,0.));
|
||||
#211=IFCDIRECTION((1.,0.));
|
||||
#212=IFCCARTESIANPOINT((0.,0.));
|
||||
#213=IFCAXIS2PLACEMENT2D(#212,#211);
|
||||
#214=IFCELLIPSE(#213,50.,80.);
|
||||
#215=IFCTRIMMEDCURVE(#214,(IFCPARAMETERVALUE(0.)),(IFCPARAMETERVALUE(150.)),.T.,.PARAMETER.);
|
||||
#216=IFCPOLYLINE((#208,#209,#210));
|
||||
#217=IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#216);
|
||||
#218=IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#215);
|
||||
#219=IFCCOMPOSITECURVE((#217,#218),.F.);
|
||||
#220=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#219);
|
||||
#221=IFCBUILDINGELEMENTPROXY('1AX3z4fQj8SBzr9DMlGdSp',#18,'profile',$,$,#227,#235,$,$);
|
||||
#222=IFCRELCONTAINEDINSPATIALSTRUCTURE('1rtDgHYQrEIRwCdKj3BvDs',#18,$,$,(#221),#51);
|
||||
#223=IFCDIRECTION((1.,0.,0.));
|
||||
#224=IFCDIRECTION((0.,0.,1.));
|
||||
#225=IFCCARTESIANPOINT((1200.,0.,0.));
|
||||
#226=IFCAXIS2PLACEMENT3D(#225,#224,#223);
|
||||
#227=IFCLOCALPLACEMENT($,#226);
|
||||
#228=IFCDIRECTION((0.,0.,1.));
|
||||
#229=IFCDIRECTION((1.,0.,0.));
|
||||
#230=IFCDIRECTION((0.,0.,1.));
|
||||
#231=IFCCARTESIANPOINT((0.,0.,0.));
|
||||
#232=IFCAXIS2PLACEMENT3D(#231,#230,#229);
|
||||
#233=IFCEXTRUDEDAREASOLID(#220,#232,#228,20.);
|
||||
#234=IFCSHAPEREPRESENTATION(#24,'Body','SweptSolid',(#233));
|
||||
#235=IFCPRODUCTDEFINITIONSHAPE($,$,(#234));
|
||||
#236=IFCCARTESIANPOINT((-43.3013,40.));
|
||||
#237=IFCCARTESIANPOINT((0.,0.));
|
||||
#238=IFCCARTESIANPOINT((50.,0.));
|
||||
#239=IFCDIRECTION((1.,0.));
|
||||
#240=IFCCARTESIANPOINT((0.,0.));
|
||||
#241=IFCAXIS2PLACEMENT2D(#240,#239);
|
||||
#242=IFCELLIPSE(#241,50.,80.);
|
||||
#243=IFCTRIMMEDCURVE(#242,(#238),(#236),.T.,.CARTESIAN.);
|
||||
#244=IFCPOLYLINE((#236,#237,#238));
|
||||
#245=IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#244);
|
||||
#246=IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#243);
|
||||
#247=IFCCOMPOSITECURVE((#245,#246),.F.);
|
||||
#248=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#247);
|
||||
#249=IFCBUILDINGELEMENTPROXY('0ykGmzZ498eBXWBzoCG67N',#18,'profile',$,$,#255,#263,$,$);
|
||||
#250=IFCRELCONTAINEDINSPATIALSTRUCTURE('3e8$xNZO56mQTEOHJ2UKC8',#18,$,$,(#249),#51);
|
||||
#251=IFCDIRECTION((1.,0.,0.));
|
||||
#252=IFCDIRECTION((0.,0.,1.));
|
||||
#253=IFCCARTESIANPOINT((1400.,0.,0.));
|
||||
#254=IFCAXIS2PLACEMENT3D(#253,#252,#251);
|
||||
#255=IFCLOCALPLACEMENT($,#254);
|
||||
#256=IFCDIRECTION((0.,0.,1.));
|
||||
#257=IFCDIRECTION((1.,0.,0.));
|
||||
#258=IFCDIRECTION((0.,0.,1.));
|
||||
#259=IFCCARTESIANPOINT((0.,0.,0.));
|
||||
#260=IFCAXIS2PLACEMENT3D(#259,#258,#257);
|
||||
#261=IFCEXTRUDEDAREASOLID(#248,#260,#256,20.);
|
||||
#262=IFCSHAPEREPRESENTATION(#24,'Body','SweptSolid',(#261));
|
||||
#263=IFCPRODUCTDEFINITIONSHAPE($,$,(#262));
|
||||
#264=IFCCARTESIANPOINT((25.,-69.282));
|
||||
#265=IFCCARTESIANPOINT((0.,0.));
|
||||
#266=IFCCARTESIANPOINT((43.3013,40.));
|
||||
#267=IFCDIRECTION((1.,0.));
|
||||
#268=IFCCARTESIANPOINT((0.,0.));
|
||||
#269=IFCAXIS2PLACEMENT2D(#268,#267);
|
||||
#270=IFCELLIPSE(#269,50.,80.);
|
||||
#271=IFCTRIMMEDCURVE(#270,(IFCPARAMETERVALUE(30.)),(IFCPARAMETERVALUE(300.)),.T.,.PARAMETER.);
|
||||
#272=IFCPOLYLINE((#264,#265,#266));
|
||||
#273=IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#272);
|
||||
#274=IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#271);
|
||||
#275=IFCCOMPOSITECURVE((#273,#274),.F.);
|
||||
#276=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#275);
|
||||
#277=IFCBUILDINGELEMENTPROXY('3Yv68bQsf3pfiGsNMB4bcb',#18,'profile',$,$,#283,#291,$,$);
|
||||
#278=IFCRELCONTAINEDINSPATIALSTRUCTURE('0J_NVsO4H8hfbG5IlS7ZVW',#18,$,$,(#277),#51);
|
||||
#279=IFCDIRECTION((1.,0.,0.));
|
||||
#280=IFCDIRECTION((0.,0.,1.));
|
||||
#281=IFCCARTESIANPOINT((1600.,0.,0.));
|
||||
#282=IFCAXIS2PLACEMENT3D(#281,#280,#279);
|
||||
#283=IFCLOCALPLACEMENT($,#282);
|
||||
#284=IFCDIRECTION((0.,0.,1.));
|
||||
#285=IFCDIRECTION((1.,0.,0.));
|
||||
#286=IFCDIRECTION((0.,0.,1.));
|
||||
#287=IFCCARTESIANPOINT((0.,0.,0.));
|
||||
#288=IFCAXIS2PLACEMENT3D(#287,#286,#285);
|
||||
#289=IFCEXTRUDEDAREASOLID(#276,#288,#284,20.);
|
||||
#290=IFCSHAPEREPRESENTATION(#24,'Body','SweptSolid',(#289));
|
||||
#291=IFCPRODUCTDEFINITIONSHAPE($,$,(#290));
|
||||
#292=IFCCARTESIANPOINT((25.,-69.282));
|
||||
#293=IFCCARTESIANPOINT((0.,0.));
|
||||
#294=IFCCARTESIANPOINT((43.3013,40.));
|
||||
#295=IFCDIRECTION((1.,0.));
|
||||
#296=IFCCARTESIANPOINT((0.,0.));
|
||||
#297=IFCAXIS2PLACEMENT2D(#296,#295);
|
||||
#298=IFCELLIPSE(#297,50.,80.);
|
||||
#299=IFCTRIMMEDCURVE(#298,(#294),(#292),.T.,.CARTESIAN.);
|
||||
#300=IFCPOLYLINE((#292,#293,#294));
|
||||
#301=IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#300);
|
||||
#302=IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#299);
|
||||
#303=IFCCOMPOSITECURVE((#301,#302),.F.);
|
||||
#304=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#303);
|
||||
#305=IFCBUILDINGELEMENTPROXY('0jeK5u9hv3weg2QiWppkHa',#18,'profile',$,$,#311,#319,$,$);
|
||||
#306=IFCRELCONTAINEDINSPATIALSTRUCTURE('1NPKNrJLHA3978HBP7HqY5',#18,$,$,(#305),#51);
|
||||
#307=IFCDIRECTION((1.,0.,0.));
|
||||
#308=IFCDIRECTION((0.,0.,1.));
|
||||
#309=IFCCARTESIANPOINT((1800.,0.,0.));
|
||||
#310=IFCAXIS2PLACEMENT3D(#309,#308,#307);
|
||||
#311=IFCLOCALPLACEMENT($,#310);
|
||||
#312=IFCDIRECTION((0.,0.,1.));
|
||||
#313=IFCDIRECTION((1.,0.,0.));
|
||||
#314=IFCDIRECTION((0.,0.,1.));
|
||||
#315=IFCCARTESIANPOINT((0.,0.,0.));
|
||||
#316=IFCAXIS2PLACEMENT3D(#315,#314,#313);
|
||||
#317=IFCEXTRUDEDAREASOLID(#304,#316,#312,20.);
|
||||
#318=IFCSHAPEREPRESENTATION(#24,'Body','SweptSolid',(#317));
|
||||
#319=IFCPRODUCTDEFINITIONSHAPE($,$,(#318));
|
||||
#320=IFCCARTESIANPOINT((43.3013,40.));
|
||||
#321=IFCCARTESIANPOINT((0.,0.));
|
||||
#322=IFCCARTESIANPOINT((25.,-69.282));
|
||||
#323=IFCDIRECTION((1.,0.));
|
||||
#324=IFCCARTESIANPOINT((0.,0.));
|
||||
#325=IFCAXIS2PLACEMENT2D(#324,#323);
|
||||
#326=IFCELLIPSE(#325,50.,80.);
|
||||
#327=IFCTRIMMEDCURVE(#326,(IFCPARAMETERVALUE(300.)),(IFCPARAMETERVALUE(30.)),.T.,.PARAMETER.);
|
||||
#328=IFCPOLYLINE((#320,#321,#322));
|
||||
#329=IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#328);
|
||||
#330=IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#327);
|
||||
#331=IFCCOMPOSITECURVE((#329,#330),.F.);
|
||||
#332=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#331);
|
||||
#333=IFCBUILDINGELEMENTPROXY('2lsWCBXwrDFBgKu7CQXEqX',#18,'profile',$,$,#339,#347,$,$);
|
||||
#334=IFCRELCONTAINEDINSPATIALSTRUCTURE('3fSDbMu$n37xOik9QDF6lB',#18,$,$,(#333),#51);
|
||||
#335=IFCDIRECTION((1.,0.,0.));
|
||||
#336=IFCDIRECTION((0.,0.,1.));
|
||||
#337=IFCCARTESIANPOINT((2000.,0.,0.));
|
||||
#338=IFCAXIS2PLACEMENT3D(#337,#336,#335);
|
||||
#339=IFCLOCALPLACEMENT($,#338);
|
||||
#340=IFCDIRECTION((0.,0.,1.));
|
||||
#341=IFCDIRECTION((1.,0.,0.));
|
||||
#342=IFCDIRECTION((0.,0.,1.));
|
||||
#343=IFCCARTESIANPOINT((0.,0.,0.));
|
||||
#344=IFCAXIS2PLACEMENT3D(#343,#342,#341);
|
||||
#345=IFCEXTRUDEDAREASOLID(#332,#344,#340,20.);
|
||||
#346=IFCSHAPEREPRESENTATION(#24,'Body','SweptSolid',(#345));
|
||||
#347=IFCPRODUCTDEFINITIONSHAPE($,$,(#346));
|
||||
#348=IFCCARTESIANPOINT((43.3013,40.));
|
||||
#349=IFCCARTESIANPOINT((0.,0.));
|
||||
#350=IFCCARTESIANPOINT((25.,-69.282));
|
||||
#351=IFCDIRECTION((1.,0.));
|
||||
#352=IFCCARTESIANPOINT((0.,0.));
|
||||
#353=IFCAXIS2PLACEMENT2D(#352,#351);
|
||||
#354=IFCELLIPSE(#353,50.,80.);
|
||||
#355=IFCTRIMMEDCURVE(#354,(#350),(#348),.T.,.CARTESIAN.);
|
||||
#356=IFCPOLYLINE((#348,#349,#350));
|
||||
#357=IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#356);
|
||||
#358=IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#355);
|
||||
#359=IFCCOMPOSITECURVE((#357,#358),.F.);
|
||||
#360=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#359);
|
||||
#361=IFCBUILDINGELEMENTPROXY('10MMN93$P59Ak3_qhH2141',#18,'profile',$,$,#367,#375,$,$);
|
||||
#362=IFCRELCONTAINEDINSPATIALSTRUCTURE('1qdtvGqIrEoBlOfpqJ0hf4',#18,$,$,(#361),#51);
|
||||
#363=IFCDIRECTION((1.,0.,0.));
|
||||
#364=IFCDIRECTION((0.,0.,1.));
|
||||
#365=IFCCARTESIANPOINT((2200.,0.,0.));
|
||||
#366=IFCAXIS2PLACEMENT3D(#365,#364,#363);
|
||||
#367=IFCLOCALPLACEMENT($,#366);
|
||||
#368=IFCDIRECTION((0.,0.,1.));
|
||||
#369=IFCDIRECTION((1.,0.,0.));
|
||||
#370=IFCDIRECTION((0.,0.,1.));
|
||||
#371=IFCCARTESIANPOINT((0.,0.,0.));
|
||||
#372=IFCAXIS2PLACEMENT3D(#371,#370,#369);
|
||||
#373=IFCEXTRUDEDAREASOLID(#360,#372,#368,20.);
|
||||
#374=IFCSHAPEREPRESENTATION(#24,'Body','SweptSolid',(#373));
|
||||
#375=IFCPRODUCTDEFINITIONSHAPE($,$,(#374));
|
||||
ENDSEC;
|
||||
END-ISO-10303-21;
|
||||
Reference in New Issue
Block a user