Implementations for more parameterized profile definitions

This commit is contained in:
Thomas Krijnen
2014-03-08 17:21:39 +00:00
parent ec2ed06272
commit 7597f25db0
8 changed files with 406 additions and 97 deletions
+8 -8
View File
@@ -93,10 +93,10 @@ int main(int argc, char** argv) {
null, 0, 50.0, 25.0, 5.0, 5.0, 2.0, 2.0, null, null));
profiles->push(new Ifc2x3::IfcUShapeProfileDef(
IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA,
null, 0, 50.0, 25.0, 5.0, 5.0, null, null, 0.1, null));
null, 0, 50.0, 25.0, 5.0, 5.0, null, null, 4.0, null));
profiles->push(new Ifc2x3::IfcUShapeProfileDef(
IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA,
null, 0, 50.0, 25.0, 5.0, 5.0, 1.0, 3.0, 0.1, null));
null, 0, 50.0, 25.0, 5.0, 5.0, 1.0, 3.0, 6.0, null));
create_testcase_for(profiles); }
{ IfcSchema::IfcProfileDef::list profiles (new IfcTemplatedEntityList<IfcSchema::IfcProfileDef>());
@@ -108,10 +108,10 @@ int main(int argc, char** argv) {
null, 0, 50.0, 25.0, 5.0, 5.0, 2.0, 2.0, 2.0, null, null, null));
profiles->push(new Ifc2x3::IfcTShapeProfileDef(
IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA,
null, 0, 50.0, 25.0, 5.0, 5.0, null, null, null, 0.1, 0.1, null));
null, 0, 50.0, 25.0, 5.0, 5.0, null, null, null, 2.0, 2.0, null));
profiles->push(new Ifc2x3::IfcTShapeProfileDef(
IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA,
null, 0, 50.0, 25.0, 5.0, 5.0, 1.0, 2.0, 3.0, 0.1, 0.2, null));
null, 0, 50.0, 25.0, 5.0, 5.0, 3.0, 2.0, 1.0, 2.0, 2.0, null));
create_testcase_for(profiles); }
{ IfcSchema::IfcProfileDef::list profiles (new IfcTemplatedEntityList<IfcSchema::IfcProfileDef>());
@@ -126,10 +126,10 @@ int main(int argc, char** argv) {
{ IfcSchema::IfcProfileDef::list profiles (new IfcTemplatedEntityList<IfcSchema::IfcProfileDef>());
profiles->push(new Ifc2x3::IfcEllipseProfileDef(
IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA,
null, 0, 50.0, 25.0));
null, 0, 25.0, 15.0));
profiles->push(new Ifc2x3::IfcEllipseProfileDef(
IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA,
null, 0, 25.0, 50.0));
null, 0, 15.0, 25.0));
create_testcase_for(profiles); }
{ IfcSchema::IfcProfileDef::list profiles (new IfcTemplatedEntityList<IfcSchema::IfcProfileDef>());
@@ -150,10 +150,10 @@ int main(int argc, char** argv) {
null, 0, 50.0, 25.0, 5.0, 2.0, 2.0, null, null, null));
profiles->push(new Ifc2x3::IfcLShapeProfileDef(
IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA,
null, 0, 50.0, 25.0, 5.0, null, null, 0.1, null, null));
null, 0, 50.0, 25.0, 5.0, null, null, 2.0, null, null));
profiles->push(new Ifc2x3::IfcLShapeProfileDef(
IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA,
null, 0, 50.0, 25.0, 5.0, 1.0, 2.0, 0.3, null, null));
null, 0, 50.0, 25.0, 5.0, 1.0, 2.0, 2.0, null, null));
create_testcase_for(profiles); }
{ IfcSchema::IfcProfileDef::list profiles (new IfcTemplatedEntityList<IfcSchema::IfcProfileDef>());
+317 -15
View File
@@ -208,7 +208,7 @@ bool IfcGeom::convert(const IfcSchema::IfcRectangleProfileDef::ptr l, TopoDS_Fac
const double x = l->XDim() / 2.0f * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double y = l->YDim() / 2.0f * IfcGeom::GetValue(GV_LENGTH_UNIT);
if ( x == 0.0f || y == 0.0f ) {
if ( x < ALMOST_ZERO || y < ALMOST_ZERO ) {
Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l->entity);
return false;
}
@@ -218,13 +218,92 @@ bool IfcGeom::convert(const IfcSchema::IfcRectangleProfileDef::ptr l, TopoDS_Fac
double coords[8] = {-x,-y,x,-y,x,y,-x,y};
return IfcGeom::profile_helper(4,coords,0,0,0,trsf2d,face);
}
bool IfcGeom::convert(const IfcSchema::IfcRoundedRectangleProfileDef::ptr l, TopoDS_Face& face) {
const double x = l->XDim() / 2.0f * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double y = l->YDim() / 2.0f * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double r = l->RoundingRadius() * IfcGeom::GetValue(GV_LENGTH_UNIT);
if ( x < ALMOST_ZERO || y < ALMOST_ZERO || r < ALMOST_ZERO ) {
Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l->entity);
return false;
}
gp_Trsf2d trsf2d;
IfcGeom::convert(l->Position(),trsf2d);
double coords[8] = {-x,-y, x,-y, x,y, -x,y};
int fillets[4] = {0,1,2,3};
double radii[4] = {r,r,r,r};
return IfcGeom::profile_helper(4,coords,4,fillets,radii,trsf2d,face);
}
bool IfcGeom::convert(const IfcSchema::IfcRectangleHollowProfileDef::ptr l, TopoDS_Face& face) {
const double x = l->XDim() / 2.0f * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double y = l->YDim() / 2.0f * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double d = l->WallThickness() * IfcGeom::GetValue(GV_LENGTH_UNIT);
const bool fr1 = l->hasInnerFilletRadius();
const bool fr2 = l->hasInnerFilletRadius();
const double r1 = fr2 ? l->OuterFilletRadius() * IfcGeom::GetValue(GV_LENGTH_UNIT) : 0.;
const double r2 = fr1 ? l->InnerFilletRadius() * IfcGeom::GetValue(GV_LENGTH_UNIT) : 0.;
if ( x < ALMOST_ZERO || y < ALMOST_ZERO ) {
Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l->entity);
return false;
}
TopoDS_Face f1;
TopoDS_Face f2;
gp_Trsf2d trsf2d;
IfcGeom::convert(l->Position(),trsf2d);
double coords1[8] = {-x ,-y, x ,-y, x, y, -x, y };
double coords2[8] = {-x+d,-y+d, x-d,-y+d, x-d,y-d, -x+d,y-d};
double radii1[4] = {r1,r1,r1,r1};
double radii2[4] = {r2,r2,r2,r2};
int fillets[4] = {0,1,2,3};
bool s1 = IfcGeom::profile_helper(4,coords1,fr1 ? 4 : 0,fillets,radii1,trsf2d,f1);
bool s2 = IfcGeom::profile_helper(4,coords2,fr2 ? 4 : 0,fillets,radii2,trsf2d,f2);
if (!s1 || !s2) return false;
TopExp_Explorer exp1(f1, TopAbs_WIRE);
TopExp_Explorer exp2(f2, TopAbs_WIRE);
TopoDS_Wire w1 = TopoDS::Wire(exp1.Current());
TopoDS_Wire w2 = TopoDS::Wire(exp2.Current());
BRepBuilderAPI_MakeFace mf(w1, false);
mf.Add(w2);
ShapeFix_Shape sfs(mf.Face());
sfs.Perform();
face = TopoDS::Face(sfs.Shape());
return true;
}
bool IfcGeom::convert(const IfcSchema::IfcTrapeziumProfileDef::ptr l, TopoDS_Face& face) {
const double x1 = l->BottomXDim() / 2.0f * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double w = l->TopXDim() * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double dx = l->TopXOffset() * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double y = l->YDim() / 2.0f * IfcGeom::GetValue(GV_LENGTH_UNIT);
if ( x1 < ALMOST_ZERO || w < ALMOST_ZERO || y < ALMOST_ZERO ) {
Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l->entity);
return false;
}
gp_Trsf2d trsf2d;
IfcGeom::convert(l->Position(),trsf2d);
double coords[8] = {-x1,-y, x1,-y, dx+w-x1,y, dx-x1,y};
return IfcGeom::profile_helper(4,coords,0,0,0,trsf2d,face);
}
bool IfcGeom::convert(const IfcSchema::IfcIShapeProfileDef::ptr l, TopoDS_Face& face) {
const double x = l->OverallWidth() / 2.0f * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double y = l->OverallDepth() / 2.0f * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double d1 = l->WebThickness() / 2.0f * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double d2 = l->FlangeThickness() * IfcGeom::GetValue(GV_LENGTH_UNIT);
bool doFillet = l->hasFilletRadius();
double f;
double f = 0.;
if ( doFillet ) {
f = l->FilletRadius() * IfcGeom::GetValue(GV_LENGTH_UNIT);
}
@@ -242,19 +321,52 @@ bool IfcGeom::convert(const IfcSchema::IfcIShapeProfileDef::ptr l, TopoDS_Face&
double radii[4] = {f,f,f,f};
return IfcGeom::profile_helper(12,coords,doFillet ? 4 : 0,fillets,radii,trsf2d,face);
}
bool IfcGeom::convert(const IfcSchema::IfcZShapeProfileDef::ptr l, TopoDS_Face& face) {
const double x = l->FlangeWidth() * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double y = l->Depth() / 2.0f * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double dx = l->WebThickness() / 2.0f * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double dy = l->FlangeThickness() * IfcGeom::GetValue(GV_LENGTH_UNIT);
bool doFillet = l->hasFilletRadius();
bool doEdgeFillet = l->hasEdgeRadius();
double f1 = 0.;
double f2 = 0.;
if ( doFillet ) {
f1 = l->FilletRadius() * IfcGeom::GetValue(GV_LENGTH_UNIT);
}
if ( doEdgeFillet ) {
f2 = l->EdgeRadius() * IfcGeom::GetValue(GV_LENGTH_UNIT);
}
if ( x == 0.0f || y == 0.0f || dx == 0.0f || dy == 0.0f ) {
Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l->entity);
return false;
}
gp_Trsf2d trsf2d;
IfcGeom::convert(l->Position(),trsf2d);
double coords[16] = {-dx,-y, x,-y, x,-y+dy, dx,-y+dy, dx,y, -x,y, -x,y-dy, -dx,y-dy};
int fillets[4] = {2,3,6,7};
double radii[4] = {f2,f1,f2,f1};
return IfcGeom::profile_helper(8,coords,(doFillet || doEdgeFillet) ? 4 : 0,fillets,radii,trsf2d,face);
}
bool IfcGeom::convert(const IfcSchema::IfcCShapeProfileDef::ptr l, TopoDS_Face& face) {
const double x = l->Depth() / 2.0f * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double y = l->Width() / 2.0f * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double y = l->Depth() / 2.0f * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double x = l->Width() / 2.0f * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double d1 = l->WallThickness() * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double d2 = l->Girth() * IfcGeom::GetValue(GV_LENGTH_UNIT);
bool doFillet = l->hasInternalFilletRadius();
double f1,f2;
double f1 = 0;
double f2 = 0;
if ( doFillet ) {
f1 = l->InternalFilletRadius() * IfcGeom::GetValue(GV_LENGTH_UNIT);
f2 = f1 + d1;
}
if ( x == 0.0f || y == 0.0f || d1 == 0.0f || d2 == 0.0f ) {
if ( x < ALMOST_ZERO || y < ALMOST_ZERO || d1 < ALMOST_ZERO || d2 < ALMOST_ZERO ) {
Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l->entity);
return false;
}
@@ -268,11 +380,15 @@ bool IfcGeom::convert(const IfcSchema::IfcCShapeProfileDef::ptr l, TopoDS_Face&
return IfcGeom::profile_helper(12,coords,doFillet ? 8 : 0,fillets,radii,trsf2d,face);
}
bool IfcGeom::convert(const IfcSchema::IfcLShapeProfileDef::ptr l, TopoDS_Face& face) {
const bool hasSlope = l->hasLegSlope();
const bool doEdgeFillet = l->hasEdgeRadius();
const bool doFillet = l->hasFilletRadius();
const double y = l->Depth() / 2.0f * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double x = l->Width() / 2.0f * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double x = (l->hasWidth() ? l->Width() : l->Depth()) / 2.0f * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double d = l->Thickness() * IfcGeom::GetValue(GV_LENGTH_UNIT);
bool doEdgeFillet = l->hasEdgeRadius();
bool doFillet = l->hasFilletRadius();
const double slope = hasSlope ? (l->LegSlope() * IfcGeom::GetValue(GV_PLANEANGLE_UNIT)) : 0.;
double f1 = 0.0f;
double f2 = 0.0f;
if (doFillet) {
@@ -281,7 +397,85 @@ bool IfcGeom::convert(const IfcSchema::IfcLShapeProfileDef::ptr l, TopoDS_Face&
if ( doEdgeFillet) {
f2 = l->EdgeRadius() * IfcGeom::GetValue(GV_LENGTH_UNIT);
}
if ( x == 0.0f || y == 0.0f || d == 0.0f ) {
if ( x < ALMOST_ZERO || y < ALMOST_ZERO || d < ALMOST_ZERO ) {
Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l->entity);
return false;
}
double xx = -x+d;
double xy = -y+d;
double dy1 = 0.;
double dy2 = 0.;
double dx1 = 0.;
double dx2 = 0.;
if (hasSlope) {
dy1 = tan(slope) * x;
dy2 = tan(slope) * (x - d);
dx1 = tan(slope) * y;
dx2 = tan(slope) * (y - d);
const double x1s = x; const double y1s = -y + d - dy1;
const double x1e = -x + d; const double y1e = -y + d + dy2;
const double x2s = -x + d - dx1; const double y2s = y;
const double x2e = -x + d + dx2; const double y2e = -y + d;
const double a1 = y1e - y1s;
const double b1 = x1s - x1e;
const double c1 = a1*x1s + b1*y1s;
const double a2 = y2e - y2s;
const double b2 = x2s - x2e;
const double c2 = a2*x2s + b2*y2s;
const double det = a1*b2 - a2*b1;
if (ALMOST_THE_SAME(det, 0.)) {
Logger::Message(Logger::LOG_NOTICE, "Legs do not intersect for:",l->entity);
return false;
}
xx = (b2*c1 - b1*c2) / det;
xy = (a1*c2 - a2*c1) / det;
}
gp_Trsf2d trsf2d;
IfcGeom::convert(l->Position(),trsf2d);
double coords[12] = {-x,-y, x,-y, x,-y+d-dy1, xx, xy, -x+d-dx1,y, -x,y};
int fillets[3] = {2,3,4};
double radii[3] = {f2,f1,f2};
return IfcGeom::profile_helper(6,coords,doFillet ? 3 : 0,fillets,radii,trsf2d,face);
}
bool IfcGeom::convert(const IfcSchema::IfcUShapeProfileDef::ptr l, TopoDS_Face& face) {
const bool doEdgeFillet = l->hasEdgeRadius();
const bool doFillet = l->hasFilletRadius();
const bool hasSlope = l->hasFlangeSlope();
const double y = l->Depth() / 2.0f * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double x = l->FlangeWidth() / 2.0f * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double d1 = l->WebThickness() * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double d2 = l->FlangeThickness() * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double slope = hasSlope ? (l->FlangeSlope() * IfcGeom::GetValue(GV_PLANEANGLE_UNIT)) : 0.;
double dy1 = 0.0f;
double dy2 = 0.0f;
double f1 = 0.0f;
double f2 = 0.0f;
if (doFillet) {
f1 = l->FilletRadius() * IfcGeom::GetValue(GV_LENGTH_UNIT);
}
if (doEdgeFillet) {
f2 = l->EdgeRadius() * IfcGeom::GetValue(GV_LENGTH_UNIT);
}
if (hasSlope) {
dy1 = (x - d1) * tan(slope);
dy2 = x * tan(slope);
}
if ( x < ALMOST_ZERO || y < ALMOST_ZERO || d1 < ALMOST_ZERO || d2 < ALMOST_ZERO ) {
Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l->entity);
return false;
}
@@ -289,10 +483,92 @@ bool IfcGeom::convert(const IfcSchema::IfcLShapeProfileDef::ptr l, TopoDS_Face&
gp_Trsf2d trsf2d;
IfcGeom::convert(l->Position(),trsf2d);
double coords[12] = {-x,-y,x,-y,x,-y+d,-x+d,-y+d,-x+d,y,-x,y};
int fillets[3] = {2,3,4};
double radii[3] = {f2,f1,f2};
return IfcGeom::profile_helper(6,coords,doFillet ? 3 : 0,fillets,radii,trsf2d,face);
double coords[16] = {-x,-y, x,-y, x,-y+d2-dy2, -x+d1,-y+d2+dy1, -x+d1,y-d2-dy1, x,y-d2+dy2, x,y, -x,y};
int fillets[4] = {2,3,4,5};
double radii[4] = {f2,f1,f1,f2};
return IfcGeom::profile_helper(8, coords, (doFillet || doEdgeFillet) ? 4 : 0, fillets, radii, trsf2d, face);
}
bool IfcGeom::convert(const IfcSchema::IfcTShapeProfileDef::ptr l, TopoDS_Face& face) {
const bool doFlangeEdgeFillet = l->hasFlangeEdgeRadius();
const bool doWebEdgeFillet = l->hasWebEdgeRadius();
const bool doFillet = l->hasFilletRadius();
const bool hasFlangeSlope = l->hasFlangeSlope();
const bool hasWebSlope = l->hasWebSlope();
const double y = l->Depth() / 2.0f * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double x = l->FlangeWidth() / 2.0f * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double d1 = l->WebThickness() * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double d2 = l->FlangeThickness() * IfcGeom::GetValue(GV_LENGTH_UNIT);
const double flangeSlope = hasFlangeSlope ? (l->FlangeSlope() * IfcGeom::GetValue(GV_PLANEANGLE_UNIT)) : 0.;
const double webSlope = hasWebSlope ? (l->WebSlope() * IfcGeom::GetValue(GV_PLANEANGLE_UNIT)) : 0.;
if ( x < ALMOST_ZERO || y < ALMOST_ZERO || d1 < ALMOST_ZERO || d2 < ALMOST_ZERO ) {
Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l->entity);
return false;
}
double dy1 = 0.0f;
double dy2 = 0.0f;
double dx1 = 0.0f;
double dx2 = 0.0f;
double f1 = 0.0f;
double f2 = 0.0f;
double f3 = 0.0f;
if (doFillet) {
f1 = l->FilletRadius() * IfcGeom::GetValue(GV_LENGTH_UNIT);
}
if (doWebEdgeFillet) {
f2 = l->WebEdgeRadius() * IfcGeom::GetValue(GV_LENGTH_UNIT);
}
if (doFlangeEdgeFillet) {
f3 = l->FlangeEdgeRadius() * IfcGeom::GetValue(GV_LENGTH_UNIT);
}
double xx, xy;
if (hasFlangeSlope) {
dy1 = (x / 2. - d1) * tan(flangeSlope);
dy2 = x / 2. * tan(flangeSlope);
}
if (hasWebSlope) {
dx1 = (y - d2) * tan(webSlope);
dx2 = y * tan(webSlope);
}
if (hasWebSlope || hasFlangeSlope) {
const double x1s = d1/2. - dx2; const double y1s = -y;
const double x1e = d1/2. + dx1; const double y1e = y - d2;
const double x2s = x; const double y2s = y - d2 + dy2;
const double x2e = d1/2.; const double y2e = y - d2 - dy1;
const double a1 = y1e - y1s;
const double b1 = x1s - x1e;
const double c1 = a1*x1s + b1*y1s;
const double a2 = y2e - y2s;
const double b2 = x2s - x2e;
const double c2 = a2*x2s + b2*y2s;
const double det = a1*b2 - a2*b1;
if (ALMOST_THE_SAME(det, 0.)) {
Logger::Message(Logger::LOG_NOTICE, "Web and flange do not intersect for:",l->entity);
return false;
}
xx = (b2*c1 - b1*c2) / det;
xy = (a1*c2 - a2*c1) / det;
} else {
xx = d1 / 2;
xy = y - d2;
}
gp_Trsf2d trsf2d;
IfcGeom::convert(l->Position(),trsf2d);
double coords[16] = {d1/2.-dx2,-y, xx,xy, x,y-d2+dy2, x,y, -x,y, -x,y-d2+dy2, -xx,xy, -d1/2.+dx2,-y};
int fillets[6] = {0,1,2,5,6,7};
double radii[6] = {f2,f1,f3,f3,f1,f2};
return IfcGeom::profile_helper(8, coords, (doFillet || doWebEdgeFillet || doFlangeEdgeFillet) ? 6 : 0, fillets, radii, trsf2d, face);
}
bool IfcGeom::convert(const IfcSchema::IfcCircleProfileDef::ptr l, TopoDS_Face& face) {
const double r = l->Radius() * IfcGeom::GetValue(GV_LENGTH_UNIT);
@@ -338,4 +614,30 @@ bool IfcGeom::convert(const IfcSchema::IfcCircleHollowProfileDef::ptr l, TopoDS_
sfs.Perform();
face = TopoDS::Face(sfs.Shape());
return true;
}
}
bool IfcGeom::convert(const IfcSchema::IfcEllipseProfileDef::ptr l, TopoDS_Face& face) {
double rx = l->SemiAxis1() * IfcGeom::GetValue(GV_LENGTH_UNIT);
double ry = l->SemiAxis2() * IfcGeom::GetValue(GV_LENGTH_UNIT);
if ( rx < ALMOST_ZERO || ry < ALMOST_ZERO ) {
Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l->entity);
return false;
}
const bool rotated = ry > rx;
gp_Trsf2d trsf;
IfcGeom::convert(l->Position(),trsf);
gp_Ax2 ax = gp_Ax2();
if (rotated) {
ax.Rotate(ax.Axis(), M_PI / 2.);
std::swap(rx, ry);
}
ax.Transform(trsf);
BRepBuilderAPI_MakeWire w;
Handle(Geom_Ellipse) ellipse = new Geom_Ellipse(ax, rx, ry);
TopoDS_Edge edge = BRepBuilderAPI_MakeEdge(ellipse);
w.Add(edge);
return IfcGeom::convert_wire_to_face(w, face);
}
+1 -1
View File
@@ -334,7 +334,7 @@ bool IfcGeom::profile_helper(int numVerts, double* verts, int numFillets, int* f
BRepFilletAPI_MakeFillet2d fillet (face);
for ( int i = 0; i < numFillets; i ++ ) {
const double radius = filletRadii[i];
if ( radius < 1e-7 ) continue;
if ( radius < ALMOST_ZERO ) continue;
fillet.AddFillet(vertices[filletIndices[i]],radius);
}
fillet.Build();
+8 -1
View File
@@ -57,12 +57,19 @@ SHAPE(IfcHalfSpaceSolid);
FACE(IfcArbitraryProfileDefWithVoids);
FACE(IfcArbitraryClosedProfileDef);
FACE(IfcRoundedRectangleProfileDef);
FACE(IfcRectangleHollowProfileDef);
FACE(IfcRectangleProfileDef);
FACE(IfcIShapeProfileDef);
FACE(IfcTrapeziumProfileDef)
FACE(IfcCShapeProfileDef);
FACE(IfcIShapeProfileDef);
FACE(IfcLShapeProfileDef);
FACE(IfcTShapeProfileDef);
FACE(IfcUShapeProfileDef);
FACE(IfcZShapeProfileDef);
FACE(IfcCircleHollowProfileDef);
FACE(IfcCircleProfileDef);
FACE(IfcEllipseProfileDef);
FACE(IfcFace);
WIRE(IfcPolyline);
+15 -15
View File
@@ -1,7 +1,7 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1');
FILE_NAME('IfcEllipseProfileDef.ifc','2014-02-23T12:17:26',(''),('',''),'IfcOpenShell 0.5.0-dev','IfcOpenShell 0.5.0-dev','');
FILE_NAME('IfcEllipseProfileDef.ifc','2014-03-08T17:03:55',(''),('',''),'IfcOpenShell 0.5.0-dev','IfcOpenShell 0.5.0-dev','');
FILE_SCHEMA(('IFC2X3'));
ENDSEC;
DATA;
@@ -9,7 +9,7 @@ DATA;
#2=IFCORGANIZATION($,'IfcOpenShell',$,$,$);
#3=IFCPERSONANDORGANIZATION(#1,#2,$);
#4=IFCAPPLICATION(#2,'0.5.0-dev','IfcOpenShell','IfcOpenShell');
#5=IFCOWNERHISTORY(#3,#4,$,.ADDED.,$,#3,#4,1393154246);
#5=IFCOWNERHISTORY(#3,#4,$,.ADDED.,$,#3,#4,1394294635);
#6=IFCDIRECTION((0.,1.,0.));
#7=IFCDIRECTION((1.,0.,0.));
#8=IFCDIRECTION((0.,0.,1.));
@@ -22,30 +22,30 @@ DATA;
#15=IFCMEASUREWITHUNIT(IFCPLANEANGLEMEASURE(0.0174533),#14);
#16=IFCCONVERSIONBASEDUNIT(#12,.PLANEANGLEUNIT.,'Degrees',#15);
#17=IFCUNITASSIGNMENT((#13,#16));
#18=IFCPROJECT('0_vdRtIqnEixeorQe7fhsb',#5,'IfcEllipseProfileDef',$,$,$,$,(#11),#17);
#18=IFCPROJECT('3zPj9qt6b9uuqkZQigbIUL',#5,'IfcEllipseProfileDef',$,$,$,$,(#11),#17);
#19=IFCDIRECTION((1.,0.,0.));
#20=IFCDIRECTION((0.,0.,1.));
#21=IFCCARTESIANPOINT((0.,0.,0.));
#22=IFCAXIS2PLACEMENT3D(#21,#20,#19);
#23=IFCLOCALPLACEMENT($,#22);
#24=IFCSITE('2hlMQd9xTAmA3QL4$jEBzU',#5,$,$,$,#23,$,$,.ELEMENT.,$,$,$,$,$);
#25=IFCRELAGGREGATES('2QzrjG1EfA3u6qQm0y_iXI',#5,$,$,#18,(#24));
#24=IFCSITE('0fzyNsjdH8vOcUjt8$PuFb',#5,$,$,$,#23,$,$,.ELEMENT.,$,$,$,$,$);
#25=IFCRELAGGREGATES('3b6NTLFl90y9B9mkk3Apl7',#5,$,$,#18,(#24));
#26=IFCDIRECTION((1.,0.,0.));
#27=IFCDIRECTION((0.,0.,1.));
#28=IFCCARTESIANPOINT((0.,0.,0.));
#29=IFCAXIS2PLACEMENT3D(#28,#27,#26);
#30=IFCLOCALPLACEMENT(#23,#29);
#31=IFCBUILDING('24TAoH745FCvE7NMBw7_ld',#5,$,$,$,#30,$,$,.ELEMENT.,$,$,$);
#32=IFCRELAGGREGATES('0vCitOI012jxCaQvNTyoQd',#5,$,$,#24,(#31));
#31=IFCBUILDING('2sB5jIogHAcufB_vBdB8z$',#5,$,$,$,#30,$,$,.ELEMENT.,$,$,$);
#32=IFCRELAGGREGATES('3r5mQcTMjAWPCUBO3584B8',#5,$,$,#24,(#31));
#33=IFCDIRECTION((1.,0.,0.));
#34=IFCDIRECTION((0.,0.,1.));
#35=IFCCARTESIANPOINT((0.,0.,0.));
#36=IFCAXIS2PLACEMENT3D(#35,#34,#33);
#37=IFCLOCALPLACEMENT(#30,#36);
#38=IFCBUILDINGSTOREY('3b0h0XhlPAwBbP1wukkTAD',#5,$,$,$,#37,$,$,.ELEMENT.,$);
#39=IFCRELAGGREGATES('0z2w6ibun3NP4uKoW3EOAr',#5,$,$,#31,(#38));
#40=IFCBUILDINGELEMENTPROXY('0$nf4txxD5cg_t$BQXwyiP',#5,'profile',$,$,#46,#58,$,$);
#41=IFCRELCONTAINEDINSPATIALSTRUCTURE('3SFElqODLBmgUGSugeEc2K',#5,$,$,(#40),#38);
#38=IFCBUILDINGSTOREY('21OPnmQjPC7fB2hCmAGxl2',#5,$,$,$,#37,$,$,.ELEMENT.,$);
#39=IFCRELAGGREGATES('0FyTJUr$b0Vx0H9qUG_MEf',#5,$,$,#31,(#38));
#40=IFCBUILDINGELEMENTPROXY('2Obawd97P7S8UAzLkXlrkZ',#5,'profile',$,$,#46,#58,$,$);
#41=IFCRELCONTAINEDINSPATIALSTRUCTURE('0TJZk7Mo95f8zg0_jQmfrn',#5,$,$,(#40),#38);
#42=IFCDIRECTION((1.,0.,0.));
#43=IFCDIRECTION((0.,0.,1.));
#44=IFCCARTESIANPOINT((0.,0.,0.));
@@ -59,12 +59,12 @@ DATA;
#52=IFCDIRECTION((0.,0.,1.));
#53=IFCCARTESIANPOINT((0.,0.,0.));
#54=IFCAXIS2PLACEMENT3D(#53,#52,#51);
#55=IFCELLIPSEPROFILEDEF(.AREA.,$,#49,50.,25.);
#55=IFCELLIPSEPROFILEDEF(.AREA.,$,#49,25.,15.);
#56=IFCEXTRUDEDAREASOLID(#55,#54,#50,20.);
#57=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#56));
#58=IFCPRODUCTDEFINITIONSHAPE($,$,(#57));
#59=IFCBUILDINGELEMENTPROXY('3TIvzP5ij0rR_rajiqvlyC',#5,'profile',$,$,#65,#77,$,$);
#60=IFCRELCONTAINEDINSPATIALSTRUCTURE('0wGwRa4e9AVx9SKA1_NRA3',#5,$,$,(#59),#38);
#59=IFCBUILDINGELEMENTPROXY('0NBhbTBuH8WhOr_fE1ET$R',#5,'profile',$,$,#65,#77,$,$);
#60=IFCRELCONTAINEDINSPATIALSTRUCTURE('0_wTPh_ELEcAwL3MN1Xjzj',#5,$,$,(#59),#38);
#61=IFCDIRECTION((1.,0.,0.));
#62=IFCDIRECTION((0.,0.,1.));
#63=IFCCARTESIANPOINT((100.,0.,0.));
@@ -78,7 +78,7 @@ DATA;
#71=IFCDIRECTION((0.,0.,1.));
#72=IFCCARTESIANPOINT((0.,0.,0.));
#73=IFCAXIS2PLACEMENT3D(#72,#71,#70);
#74=IFCELLIPSEPROFILEDEF(.AREA.,$,#68,25.,50.);
#74=IFCELLIPSEPROFILEDEF(.AREA.,$,#68,15.,25.);
#75=IFCEXTRUDEDAREASOLID(#74,#73,#69,20.);
#76=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#75));
#77=IFCPRODUCTDEFINITIONSHAPE($,$,(#76));
+19 -19
View File
@@ -1,7 +1,7 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1');
FILE_NAME('IfcLShapeProfileDef.ifc','2014-02-23T12:17:26',(''),('',''),'IfcOpenShell 0.5.0-dev','IfcOpenShell 0.5.0-dev','');
FILE_NAME('IfcLShapeProfileDef.ifc','2014-03-08T16:02:03',(''),('',''),'IfcOpenShell 0.5.0-dev','IfcOpenShell 0.5.0-dev','');
FILE_SCHEMA(('IFC2X3'));
ENDSEC;
DATA;
@@ -9,7 +9,7 @@ DATA;
#2=IFCORGANIZATION($,'IfcOpenShell',$,$,$);
#3=IFCPERSONANDORGANIZATION(#1,#2,$);
#4=IFCAPPLICATION(#2,'0.5.0-dev','IfcOpenShell','IfcOpenShell');
#5=IFCOWNERHISTORY(#3,#4,$,.ADDED.,$,#3,#4,1393154246);
#5=IFCOWNERHISTORY(#3,#4,$,.ADDED.,$,#3,#4,1394290923);
#6=IFCDIRECTION((0.,1.,0.));
#7=IFCDIRECTION((1.,0.,0.));
#8=IFCDIRECTION((0.,0.,1.));
@@ -22,30 +22,30 @@ DATA;
#15=IFCMEASUREWITHUNIT(IFCPLANEANGLEMEASURE(0.0174533),#14);
#16=IFCCONVERSIONBASEDUNIT(#12,.PLANEANGLEUNIT.,'Degrees',#15);
#17=IFCUNITASSIGNMENT((#13,#16));
#18=IFCPROJECT('0BRiATKPH3Hwm$t_VULP9z',#5,'IfcLShapeProfileDef',$,$,$,$,(#11),#17);
#18=IFCPROJECT('2F6o6chXDCGf8IWtqYLcn3',#5,'IfcLShapeProfileDef',$,$,$,$,(#11),#17);
#19=IFCDIRECTION((1.,0.,0.));
#20=IFCDIRECTION((0.,0.,1.));
#21=IFCCARTESIANPOINT((0.,0.,0.));
#22=IFCAXIS2PLACEMENT3D(#21,#20,#19);
#23=IFCLOCALPLACEMENT($,#22);
#24=IFCSITE('2_q1ZjXAfA3hDcEWiqQcP8',#5,$,$,$,#23,$,$,.ELEMENT.,$,$,$,$,$);
#25=IFCRELAGGREGATES('2jwFJRTrHA4uIEO78BJ7vf',#5,$,$,#18,(#24));
#24=IFCSITE('1r$PNIWHTDfgdFJV2EfVjI',#5,$,$,$,#23,$,$,.ELEMENT.,$,$,$,$,$);
#25=IFCRELAGGREGATES('3Do_7Shg9CJeA4QWOXR4Ph',#5,$,$,#18,(#24));
#26=IFCDIRECTION((1.,0.,0.));
#27=IFCDIRECTION((0.,0.,1.));
#28=IFCCARTESIANPOINT((0.,0.,0.));
#29=IFCAXIS2PLACEMENT3D(#28,#27,#26);
#30=IFCLOCALPLACEMENT(#23,#29);
#31=IFCBUILDING('203C0jfr53Zvum3lxePGZF',#5,$,$,$,#30,$,$,.ELEMENT.,$,$,$);
#32=IFCRELAGGREGATES('3tfFA1BpnFvfYJXuzkaGw7',#5,$,$,#24,(#31));
#31=IFCBUILDING('2ovX2wxcDF68PBVoIFchfo',#5,$,$,$,#30,$,$,.ELEMENT.,$,$,$);
#32=IFCRELAGGREGATES('2LC9sDH0vCcxGJvN0U3yzz',#5,$,$,#24,(#31));
#33=IFCDIRECTION((1.,0.,0.));
#34=IFCDIRECTION((0.,0.,1.));
#35=IFCCARTESIANPOINT((0.,0.,0.));
#36=IFCAXIS2PLACEMENT3D(#35,#34,#33);
#37=IFCLOCALPLACEMENT(#30,#36);
#38=IFCBUILDINGSTOREY('3YsAmJCTTEuxGf$fQUTq24',#5,$,$,$,#37,$,$,.ELEMENT.,$);
#39=IFCRELAGGREGATES('0yU5eGeC545O7vsSI5o87s',#5,$,$,#31,(#38));
#40=IFCBUILDINGELEMENTPROXY('2k7U$sXB1Fl91zm$hgdUKw',#5,'profile',$,$,#46,#58,$,$);
#41=IFCRELCONTAINEDINSPATIALSTRUCTURE('1nz7J2BqzChRnBLpLBqkDT',#5,$,$,(#40),#38);
#38=IFCBUILDINGSTOREY('0qGsHVrvL798oCPruY7pW1',#5,$,$,$,#37,$,$,.ELEMENT.,$);
#39=IFCRELAGGREGATES('1bd1NxdaT4DxiyalO0UMYQ',#5,$,$,#31,(#38));
#40=IFCBUILDINGELEMENTPROXY('3bwg5itXT1GxeIpCTEe09k',#5,'profile',$,$,#46,#58,$,$);
#41=IFCRELCONTAINEDINSPATIALSTRUCTURE('1UlUmdMDv7sPYSCUlFhaaD',#5,$,$,(#40),#38);
#42=IFCDIRECTION((1.,0.,0.));
#43=IFCDIRECTION((0.,0.,1.));
#44=IFCCARTESIANPOINT((0.,0.,0.));
@@ -63,8 +63,8 @@ DATA;
#56=IFCEXTRUDEDAREASOLID(#55,#54,#50,20.);
#57=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#56));
#58=IFCPRODUCTDEFINITIONSHAPE($,$,(#57));
#59=IFCBUILDINGELEMENTPROXY('0vmXwjt5P7eO2gaREV4Dg0',#5,'profile',$,$,#65,#77,$,$);
#60=IFCRELCONTAINEDINSPATIALSTRUCTURE('1p6TiiVTf1Yfpzfzjb94HM',#5,$,$,(#59),#38);
#59=IFCBUILDINGELEMENTPROXY('3mXvFxL85FoOVKx$hsxICc',#5,'profile',$,$,#65,#77,$,$);
#60=IFCRELCONTAINEDINSPATIALSTRUCTURE('2dAQ2Fu9P8pv53e7CgigoT',#5,$,$,(#59),#38);
#61=IFCDIRECTION((1.,0.,0.));
#62=IFCDIRECTION((0.,0.,1.));
#63=IFCCARTESIANPOINT((100.,0.,0.));
@@ -82,8 +82,8 @@ DATA;
#75=IFCEXTRUDEDAREASOLID(#74,#73,#69,20.);
#76=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#75));
#77=IFCPRODUCTDEFINITIONSHAPE($,$,(#76));
#78=IFCBUILDINGELEMENTPROXY('0I7UAAt6f2je106FVaK1ni',#5,'profile',$,$,#84,#96,$,$);
#79=IFCRELCONTAINEDINSPATIALSTRUCTURE('0ufoBajmXCRO5z3d6cPuSA',#5,$,$,(#78),#38);
#78=IFCBUILDINGELEMENTPROXY('2S9sXjK_n7mQYd8yd$UL$9',#5,'profile',$,$,#84,#96,$,$);
#79=IFCRELCONTAINEDINSPATIALSTRUCTURE('0xWxza9zr5Ch$OeoRWg23b',#5,$,$,(#78),#38);
#80=IFCDIRECTION((1.,0.,0.));
#81=IFCDIRECTION((0.,0.,1.));
#82=IFCCARTESIANPOINT((200.,0.,0.));
@@ -97,12 +97,12 @@ DATA;
#90=IFCDIRECTION((0.,0.,1.));
#91=IFCCARTESIANPOINT((0.,0.,0.));
#92=IFCAXIS2PLACEMENT3D(#91,#90,#89);
#93=IFCLSHAPEPROFILEDEF(.AREA.,$,#87,50.,25.,5.,$,$,0.1,$,$);
#93=IFCLSHAPEPROFILEDEF(.AREA.,$,#87,50.,25.,5.,$,$,2.,$,$);
#94=IFCEXTRUDEDAREASOLID(#93,#92,#88,20.);
#95=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#94));
#96=IFCPRODUCTDEFINITIONSHAPE($,$,(#95));
#97=IFCBUILDINGELEMENTPROXY('2CON0nfuX5Eezhkkl7bUUh',#5,'profile',$,$,#103,#115,$,$);
#98=IFCRELCONTAINEDINSPATIALSTRUCTURE('1j$lyjn0b22g9hJG6$comd',#5,$,$,(#97),#38);
#97=IFCBUILDINGELEMENTPROXY('0OGT8RR7b68wQXNF2jeePW',#5,'profile',$,$,#103,#115,$,$);
#98=IFCRELCONTAINEDINSPATIALSTRUCTURE('3kQYgJFkv06wIcavG1q8vT',#5,$,$,(#97),#38);
#99=IFCDIRECTION((1.,0.,0.));
#100=IFCDIRECTION((0.,0.,1.));
#101=IFCCARTESIANPOINT((300.,0.,0.));
@@ -116,7 +116,7 @@ DATA;
#109=IFCDIRECTION((0.,0.,1.));
#110=IFCCARTESIANPOINT((0.,0.,0.));
#111=IFCAXIS2PLACEMENT3D(#110,#109,#108);
#112=IFCLSHAPEPROFILEDEF(.AREA.,$,#106,50.,25.,5.,1.,2.,0.3,$,$);
#112=IFCLSHAPEPROFILEDEF(.AREA.,$,#106,50.,25.,5.,1.,2.,2.,$,$);
#113=IFCEXTRUDEDAREASOLID(#112,#111,#107,20.);
#114=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#113));
#115=IFCPRODUCTDEFINITIONSHAPE($,$,(#114));
+19 -19
View File
@@ -1,7 +1,7 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1');
FILE_NAME('IfcTShapeProfileDef.ifc','2014-02-23T12:17:26',(''),('',''),'IfcOpenShell 0.5.0-dev','IfcOpenShell 0.5.0-dev','');
FILE_NAME('IfcTShapeProfileDef.ifc','2014-03-08T15:17:03',(''),('',''),'IfcOpenShell 0.5.0-dev','IfcOpenShell 0.5.0-dev','');
FILE_SCHEMA(('IFC2X3'));
ENDSEC;
DATA;
@@ -9,7 +9,7 @@ DATA;
#2=IFCORGANIZATION($,'IfcOpenShell',$,$,$);
#3=IFCPERSONANDORGANIZATION(#1,#2,$);
#4=IFCAPPLICATION(#2,'0.5.0-dev','IfcOpenShell','IfcOpenShell');
#5=IFCOWNERHISTORY(#3,#4,$,.ADDED.,$,#3,#4,1393154246);
#5=IFCOWNERHISTORY(#3,#4,$,.ADDED.,$,#3,#4,1394288223);
#6=IFCDIRECTION((0.,1.,0.));
#7=IFCDIRECTION((1.,0.,0.));
#8=IFCDIRECTION((0.,0.,1.));
@@ -22,30 +22,30 @@ DATA;
#15=IFCMEASUREWITHUNIT(IFCPLANEANGLEMEASURE(0.0174533),#14);
#16=IFCCONVERSIONBASEDUNIT(#12,.PLANEANGLEUNIT.,'Degrees',#15);
#17=IFCUNITASSIGNMENT((#13,#16));
#18=IFCPROJECT('0sXMoyZUb7p9ej64Kh8SIU',#5,'IfcTShapeProfileDef',$,$,$,$,(#11),#17);
#18=IFCPROJECT('3GQ0CKeETFJhiCTOTxPkRY',#5,'IfcTShapeProfileDef',$,$,$,$,(#11),#17);
#19=IFCDIRECTION((1.,0.,0.));
#20=IFCDIRECTION((0.,0.,1.));
#21=IFCCARTESIANPOINT((0.,0.,0.));
#22=IFCAXIS2PLACEMENT3D(#21,#20,#19);
#23=IFCLOCALPLACEMENT($,#22);
#24=IFCSITE('2_68uBtwTEOfNUeWU42Bgs',#5,$,$,$,#23,$,$,.ELEMENT.,$,$,$,$,$);
#25=IFCRELAGGREGATES('1pHM3hhMX3OeoaeCn_CrvQ',#5,$,$,#18,(#24));
#24=IFCSITE('0QoFcGkrr1zBVTtXLlcNRc',#5,$,$,$,#23,$,$,.ELEMENT.,$,$,$,$,$);
#25=IFCRELAGGREGATES('3r1zhJ5TXFK99qcOAYSz67',#5,$,$,#18,(#24));
#26=IFCDIRECTION((1.,0.,0.));
#27=IFCDIRECTION((0.,0.,1.));
#28=IFCCARTESIANPOINT((0.,0.,0.));
#29=IFCAXIS2PLACEMENT3D(#28,#27,#26);
#30=IFCLOCALPLACEMENT(#23,#29);
#31=IFCBUILDING('0UR50UmxXDpu3hRegxtxD$',#5,$,$,$,#30,$,$,.ELEMENT.,$,$,$);
#32=IFCRELAGGREGATES('1_EqpMq_LFjgar6Pv$Ka9U',#5,$,$,#24,(#31));
#31=IFCBUILDING('30x1rIlzf4F9xko$kKqjQ0',#5,$,$,$,#30,$,$,.ELEMENT.,$,$,$);
#32=IFCRELAGGREGATES('3CwaTiqpf8vAHzV32iK$J$',#5,$,$,#24,(#31));
#33=IFCDIRECTION((1.,0.,0.));
#34=IFCDIRECTION((0.,0.,1.));
#35=IFCCARTESIANPOINT((0.,0.,0.));
#36=IFCAXIS2PLACEMENT3D(#35,#34,#33);
#37=IFCLOCALPLACEMENT(#30,#36);
#38=IFCBUILDINGSTOREY('0cV$wdoL98hhsXYLIUhtBi',#5,$,$,$,#37,$,$,.ELEMENT.,$);
#39=IFCRELAGGREGATES('0niyQzLdbC_PsZL32R0Pcm',#5,$,$,#31,(#38));
#40=IFCBUILDINGELEMENTPROXY('0aBmfX_X53HeqLVNd5MDTb',#5,'profile',$,$,#46,#58,$,$);
#41=IFCRELCONTAINEDINSPATIALSTRUCTURE('09qOBj73r6zxlSK7anG1hn',#5,$,$,(#40),#38);
#38=IFCBUILDINGSTOREY('09EJPxg09BPvRfDPBSBaFo',#5,$,$,$,#37,$,$,.ELEMENT.,$);
#39=IFCRELAGGREGATES('3IXv7NqdLBgOHjJHFjzkOT',#5,$,$,#31,(#38));
#40=IFCBUILDINGELEMENTPROXY('2jzoaqoe1D3gJKZOASw7Og',#5,'profile',$,$,#46,#58,$,$);
#41=IFCRELCONTAINEDINSPATIALSTRUCTURE('0vDeh$ZKT50wdNwatAiaH4',#5,$,$,(#40),#38);
#42=IFCDIRECTION((1.,0.,0.));
#43=IFCDIRECTION((0.,0.,1.));
#44=IFCCARTESIANPOINT((0.,0.,0.));
@@ -63,8 +63,8 @@ DATA;
#56=IFCEXTRUDEDAREASOLID(#55,#54,#50,20.);
#57=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#56));
#58=IFCPRODUCTDEFINITIONSHAPE($,$,(#57));
#59=IFCBUILDINGELEMENTPROXY('1R1GSa08z0DOeFKVAIF9T7',#5,'profile',$,$,#65,#77,$,$);
#60=IFCRELCONTAINEDINSPATIALSTRUCTURE('1B2HLdg$56KAHVBsshFOLs',#5,$,$,(#59),#38);
#59=IFCBUILDINGELEMENTPROXY('0sjPK8eAPDHvd61lWjciR3',#5,'profile',$,$,#65,#77,$,$);
#60=IFCRELCONTAINEDINSPATIALSTRUCTURE('0qyuHP5WDC1wuTOhGubwI1',#5,$,$,(#59),#38);
#61=IFCDIRECTION((1.,0.,0.));
#62=IFCDIRECTION((0.,0.,1.));
#63=IFCCARTESIANPOINT((100.,0.,0.));
@@ -82,8 +82,8 @@ DATA;
#75=IFCEXTRUDEDAREASOLID(#74,#73,#69,20.);
#76=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#75));
#77=IFCPRODUCTDEFINITIONSHAPE($,$,(#76));
#78=IFCBUILDINGELEMENTPROXY('1m_T8J$TD1ZPCLsF6EyPWw',#5,'profile',$,$,#84,#96,$,$);
#79=IFCRELCONTAINEDINSPATIALSTRUCTURE('1bPtP0CODChB0wHWE0Q7fT',#5,$,$,(#78),#38);
#78=IFCBUILDINGELEMENTPROXY('0NYshUfy11pAca6$7WPjbp',#5,'profile',$,$,#84,#96,$,$);
#79=IFCRELCONTAINEDINSPATIALSTRUCTURE('37m4cs48173RRm9nKJO4a$',#5,$,$,(#78),#38);
#80=IFCDIRECTION((1.,0.,0.));
#81=IFCDIRECTION((0.,0.,1.));
#82=IFCCARTESIANPOINT((200.,0.,0.));
@@ -97,12 +97,12 @@ DATA;
#90=IFCDIRECTION((0.,0.,1.));
#91=IFCCARTESIANPOINT((0.,0.,0.));
#92=IFCAXIS2PLACEMENT3D(#91,#90,#89);
#93=IFCTSHAPEPROFILEDEF(.AREA.,$,#87,50.,25.,5.,5.,$,$,$,0.1,0.1,$);
#93=IFCTSHAPEPROFILEDEF(.AREA.,$,#87,50.,25.,5.,5.,$,$,$,2.,2.,$);
#94=IFCEXTRUDEDAREASOLID(#93,#92,#88,20.);
#95=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#94));
#96=IFCPRODUCTDEFINITIONSHAPE($,$,(#95));
#97=IFCBUILDINGELEMENTPROXY('2MuEabtWr3QQt7zbdBSOd1',#5,'profile',$,$,#103,#115,$,$);
#98=IFCRELCONTAINEDINSPATIALSTRUCTURE('3eAewjVcT07h$ZiBofIjIk',#5,$,$,(#97),#38);
#97=IFCBUILDINGELEMENTPROXY('28s6wTPxLFChkMWj8CgCRm',#5,'profile',$,$,#103,#115,$,$);
#98=IFCRELCONTAINEDINSPATIALSTRUCTURE('3CiE2aQ$P1kO_V7be02$rV',#5,$,$,(#97),#38);
#99=IFCDIRECTION((1.,0.,0.));
#100=IFCDIRECTION((0.,0.,1.));
#101=IFCCARTESIANPOINT((300.,0.,0.));
@@ -116,7 +116,7 @@ DATA;
#109=IFCDIRECTION((0.,0.,1.));
#110=IFCCARTESIANPOINT((0.,0.,0.));
#111=IFCAXIS2PLACEMENT3D(#110,#109,#108);
#112=IFCTSHAPEPROFILEDEF(.AREA.,$,#106,50.,25.,5.,5.,1.,2.,3.,0.1,0.2,$);
#112=IFCTSHAPEPROFILEDEF(.AREA.,$,#106,50.,25.,5.,5.,3.,2.,1.,2.,2.,$);
#113=IFCEXTRUDEDAREASOLID(#112,#111,#107,20.);
#114=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#113));
#115=IFCPRODUCTDEFINITIONSHAPE($,$,(#114));
+19 -19
View File
@@ -1,7 +1,7 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1');
FILE_NAME('IfcUShapeProfileDef.ifc','2014-02-23T12:17:26',(''),('',''),'IfcOpenShell 0.5.0-dev','IfcOpenShell 0.5.0-dev','');
FILE_NAME('IfcUShapeProfileDef.ifc','2014-03-04T11:56:19',(''),('',''),'IfcOpenShell 0.5.0-dev','IfcOpenShell 0.5.0-dev','');
FILE_SCHEMA(('IFC2X3'));
ENDSEC;
DATA;
@@ -9,7 +9,7 @@ DATA;
#2=IFCORGANIZATION($,'IfcOpenShell',$,$,$);
#3=IFCPERSONANDORGANIZATION(#1,#2,$);
#4=IFCAPPLICATION(#2,'0.5.0-dev','IfcOpenShell','IfcOpenShell');
#5=IFCOWNERHISTORY(#3,#4,$,.ADDED.,$,#3,#4,1393154246);
#5=IFCOWNERHISTORY(#3,#4,$,.ADDED.,$,#3,#4,1393930579);
#6=IFCDIRECTION((0.,1.,0.));
#7=IFCDIRECTION((1.,0.,0.));
#8=IFCDIRECTION((0.,0.,1.));
@@ -22,30 +22,30 @@ DATA;
#15=IFCMEASUREWITHUNIT(IFCPLANEANGLEMEASURE(0.0174533),#14);
#16=IFCCONVERSIONBASEDUNIT(#12,.PLANEANGLEUNIT.,'Degrees',#15);
#17=IFCUNITASSIGNMENT((#13,#16));
#18=IFCPROJECT('2s9Efx9Lz7lOQm_nBx5b1H',#5,'IfcUShapeProfileDef',$,$,$,$,(#11),#17);
#18=IFCPROJECT('0uHzDPQFjANu3TK$t3cSV5',#5,'IfcUShapeProfileDef',$,$,$,$,(#11),#17);
#19=IFCDIRECTION((1.,0.,0.));
#20=IFCDIRECTION((0.,0.,1.));
#21=IFCCARTESIANPOINT((0.,0.,0.));
#22=IFCAXIS2PLACEMENT3D(#21,#20,#19);
#23=IFCLOCALPLACEMENT($,#22);
#24=IFCSITE('3CVG6y8MX4LxRoO0tnWAxv',#5,$,$,$,#23,$,$,.ELEMENT.,$,$,$,$,$);
#25=IFCRELAGGREGATES('2UrdZWFB92MA7ahGq4J5TY',#5,$,$,#18,(#24));
#24=IFCSITE('2RwzmdTBnFXh36TYsBzXcE',#5,$,$,$,#23,$,$,.ELEMENT.,$,$,$,$,$);
#25=IFCRELAGGREGATES('39yqXxIEP93Ofct_$8$$lk',#5,$,$,#18,(#24));
#26=IFCDIRECTION((1.,0.,0.));
#27=IFCDIRECTION((0.,0.,1.));
#28=IFCCARTESIANPOINT((0.,0.,0.));
#29=IFCAXIS2PLACEMENT3D(#28,#27,#26);
#30=IFCLOCALPLACEMENT(#23,#29);
#31=IFCBUILDING('145cRBbjTC3wXrNsmW_UZ2',#5,$,$,$,#30,$,$,.ELEMENT.,$,$,$);
#32=IFCRELAGGREGATES('2WCriLMc17_f$jD$ISN6ZK',#5,$,$,#24,(#31));
#31=IFCBUILDING('1PgubQUm9BWOAMRPMjZMSt',#5,$,$,$,#30,$,$,.ELEMENT.,$,$,$);
#32=IFCRELAGGREGATES('3kbmL8P7X9pP9ZfY20W_LJ',#5,$,$,#24,(#31));
#33=IFCDIRECTION((1.,0.,0.));
#34=IFCDIRECTION((0.,0.,1.));
#35=IFCCARTESIANPOINT((0.,0.,0.));
#36=IFCAXIS2PLACEMENT3D(#35,#34,#33);
#37=IFCLOCALPLACEMENT(#30,#36);
#38=IFCBUILDINGSTOREY('35eug6$u94IPdu9dimQveQ',#5,$,$,$,#37,$,$,.ELEMENT.,$);
#39=IFCRELAGGREGATES('1YhsCLTfzD3AhaVt6InRAK',#5,$,$,#31,(#38));
#40=IFCBUILDINGELEMENTPROXY('0EV_6T_rrD3gf5earRSKyg',#5,'profile',$,$,#46,#58,$,$);
#41=IFCRELCONTAINEDINSPATIALSTRUCTURE('0jkkdReIn9xRbOV9DPIxju',#5,$,$,(#40),#38);
#38=IFCBUILDINGSTOREY('1ts4Upk5j6ZB9N4NYxIbjG',#5,$,$,$,#37,$,$,.ELEMENT.,$);
#39=IFCRELAGGREGATES('0$ZPjzGkv2rB1qOczl4Hlt',#5,$,$,#31,(#38));
#40=IFCBUILDINGELEMENTPROXY('2GxyqAgor3bw$9ZGEr8Q0m',#5,'profile',$,$,#46,#58,$,$);
#41=IFCRELCONTAINEDINSPATIALSTRUCTURE('3pGW$F4sD229C3jnvZIUgD',#5,$,$,(#40),#38);
#42=IFCDIRECTION((1.,0.,0.));
#43=IFCDIRECTION((0.,0.,1.));
#44=IFCCARTESIANPOINT((0.,0.,0.));
@@ -63,8 +63,8 @@ DATA;
#56=IFCEXTRUDEDAREASOLID(#55,#54,#50,20.);
#57=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#56));
#58=IFCPRODUCTDEFINITIONSHAPE($,$,(#57));
#59=IFCBUILDINGELEMENTPROXY('1EqK0oFd58kPrk10CJ6WOm',#5,'profile',$,$,#65,#77,$,$);
#60=IFCRELCONTAINEDINSPATIALSTRUCTURE('3SEUJn8Qr2zulxMMF5F5rg',#5,$,$,(#59),#38);
#59=IFCBUILDINGELEMENTPROXY('35BCmn_Sb4qx8DPio6CZf5',#5,'profile',$,$,#65,#77,$,$);
#60=IFCRELCONTAINEDINSPATIALSTRUCTURE('1TTGu172r7nOO_Yh5wT$3w',#5,$,$,(#59),#38);
#61=IFCDIRECTION((1.,0.,0.));
#62=IFCDIRECTION((0.,0.,1.));
#63=IFCCARTESIANPOINT((100.,0.,0.));
@@ -82,8 +82,8 @@ DATA;
#75=IFCEXTRUDEDAREASOLID(#74,#73,#69,20.);
#76=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#75));
#77=IFCPRODUCTDEFINITIONSHAPE($,$,(#76));
#78=IFCBUILDINGELEMENTPROXY('2VmrYAU3v8_vuK$ZHwVxqv',#5,'profile',$,$,#84,#96,$,$);
#79=IFCRELCONTAINEDINSPATIALSTRUCTURE('08dIjaN3X0bgzJT12yIqFd',#5,$,$,(#78),#38);
#78=IFCBUILDINGELEMENTPROXY('2gF8OFrLLACgwqeVt_sSfH',#5,'profile',$,$,#84,#96,$,$);
#79=IFCRELCONTAINEDINSPATIALSTRUCTURE('28U1vNt0z3xA2hqhT8skDB',#5,$,$,(#78),#38);
#80=IFCDIRECTION((1.,0.,0.));
#81=IFCDIRECTION((0.,0.,1.));
#82=IFCCARTESIANPOINT((200.,0.,0.));
@@ -97,12 +97,12 @@ DATA;
#90=IFCDIRECTION((0.,0.,1.));
#91=IFCCARTESIANPOINT((0.,0.,0.));
#92=IFCAXIS2PLACEMENT3D(#91,#90,#89);
#93=IFCUSHAPEPROFILEDEF(.AREA.,$,#87,50.,25.,5.,5.,$,$,0.1,$);
#93=IFCUSHAPEPROFILEDEF(.AREA.,$,#87,50.,25.,5.,5.,$,$,4.,$);
#94=IFCEXTRUDEDAREASOLID(#93,#92,#88,20.);
#95=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#94));
#96=IFCPRODUCTDEFINITIONSHAPE($,$,(#95));
#97=IFCBUILDINGELEMENTPROXY('11N9hVDYfCOgr$pD_60KDV',#5,'profile',$,$,#103,#115,$,$);
#98=IFCRELCONTAINEDINSPATIALSTRUCTURE('2ZPuncd1b5SOfhXw4iQ24j',#5,$,$,(#97),#38);
#97=IFCBUILDINGELEMENTPROXY('0wi$BN8K1BCQuwL0tSUFos',#5,'profile',$,$,#103,#115,$,$);
#98=IFCRELCONTAINEDINSPATIALSTRUCTURE('3vfSBEVQT32gKsh6Im2KXu',#5,$,$,(#97),#38);
#99=IFCDIRECTION((1.,0.,0.));
#100=IFCDIRECTION((0.,0.,1.));
#101=IFCCARTESIANPOINT((300.,0.,0.));
@@ -116,7 +116,7 @@ DATA;
#109=IFCDIRECTION((0.,0.,1.));
#110=IFCCARTESIANPOINT((0.,0.,0.));
#111=IFCAXIS2PLACEMENT3D(#110,#109,#108);
#112=IFCUSHAPEPROFILEDEF(.AREA.,$,#106,50.,25.,5.,5.,1.,3.,0.1,$);
#112=IFCUSHAPEPROFILEDEF(.AREA.,$,#106,50.,25.,5.,5.,1.,3.,6.,$);
#113=IFCEXTRUDEDAREASOLID(#112,#111,#107,20.);
#114=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#113));
#115=IFCPRODUCTDEFINITIONSHAPE($,$,(#114));