Implement IfcBoundingBox.

This commit is contained in:
Dion Moult
2021-09-22 20:57:54 +10:00
committed by Thomas Krijnen
parent 0f73c43638
commit bc5e33489e
2 changed files with 23 additions and 0 deletions
+22
View File
@@ -947,6 +947,28 @@ bool IfcGeom::Kernel::convert(const IfcSchema::IfcBlock* l, TopoDS_Shape& shape)
return true;
}
bool IfcGeom::Kernel::convert(const IfcSchema::IfcBoundingBox* l, TopoDS_Shape& shape) {
const double dx = l->XDim() * getValue(GV_LENGTH_UNIT);
const double dy = l->YDim() * getValue(GV_LENGTH_UNIT);
const double dz = l->ZDim() * getValue(GV_LENGTH_UNIT);
BRepPrimAPI_MakeBox builder(dx, dy, dz);
gp_Pnt corner;
IfcGeom::Kernel::convert(l->Corner(), corner);
gp_Trsf trsf;
gp_Dir axis1 (1.,0.,0.);
gp_Dir axis3 (0.,0.,1.);
gp_Ax3 ax3 (corner, axis3, axis1);
trsf.SetTransformation(ax3);
trsf.Invert();
// IfcBoundingBox.Corner has unit scale factor
shape = builder.Solid().Moved(trsf);
return true;
}
bool IfcGeom::Kernel::convert(const IfcSchema::IfcRectangularPyramid* l, TopoDS_Shape& shape) {
const double dx = l->XLength() * getValue(GV_LENGTH_UNIT);
const double dy = l->YLength() * getValue(GV_LENGTH_UNIT);
+1
View File
@@ -88,6 +88,7 @@ SHAPE(IfcHalfSpaceSolid);
SHAPE(IfcSurfaceOfLinearExtrusion);
SHAPE(IfcSurfaceOfRevolution);
SHAPE(IfcBlock);
SHAPE(IfcBoundingBox);
SHAPE(IfcRectangularPyramid);
SHAPE(IfcRightCircularCylinder);
SHAPE(IfcRightCircularCone);