diff --git a/src/ifcgeom/kernels/cgal/CgalIfcGeomShapes.cpp b/src/ifcgeom/kernels/cgal/CgalIfcGeomShapes.cpp index 788db838aa..e06163c425 100644 --- a/src/ifcgeom/kernels/cgal/CgalIfcGeomShapes.cpp +++ b/src/ifcgeom/kernels/cgal/CgalIfcGeomShapes.cpp @@ -235,11 +235,12 @@ bool IfcGeom::CgalKernel::convert(const IfcSchema::IfcExtrudedAreaSolid *l, cgal // std::cout << "Before: " << hole_polyhedron.size_of_vertices() << " vertices and " << hole_polyhedron.size_of_facets() << " facets" << std::endl; CGAL::Polygon_mesh_processing::stitch_borders(hole_polyhedron); if (!hole_polyhedron.is_valid()) { - std::cout << "Invalid hole polyhedron!" << std::endl; - std::ofstream fresult; - fresult.open("/Users/ken/Desktop/invalid.off"); - fresult << hole_polyhedron << std::endl; - fresult.close(); +// std::cout << "Invalid hole polyhedron!" << std::endl; +// std::ofstream fresult; +// fresult.open("/Users/ken/Desktop/invalid.off"); +// fresult << hole_polyhedron << std::endl; +// fresult.close(); + return false; } for (auto &vertex : vertices(hole_polyhedron)) { @@ -254,6 +255,19 @@ bool IfcGeom::CgalKernel::convert(const IfcSchema::IfcExtrudedAreaSolid *l, cgal shape -= CGAL::Nef_polyhedron_3(hole_polyhedron); } +// std::cout << "trsf" << std::endl; +// for (int i = 0; i < 3; ++i) { +// for (int j = 0; j < 4; ++j) { +// std::cout << trsf.cartesian(i, j) << " "; +// } std::cout << std::endl; +// } + +// shape.convert_to_polyhedron(polyhedron); +// std::ofstream fresult; +// fresult.open("/Users/ken/Desktop/extrusion.off"); +// fresult << polyhedron << std::endl; +// fresult.close(); + return true; } diff --git a/src/ifcgeom/kernels/cgal/CgalKernel.cpp b/src/ifcgeom/kernels/cgal/CgalKernel.cpp index 16c58bbd5b..bc13ea6fb0 100644 --- a/src/ifcgeom/kernels/cgal/CgalKernel.cpp +++ b/src/ifcgeom/kernels/cgal/CgalKernel.cpp @@ -210,10 +210,24 @@ bool IfcGeom::CgalKernel::convert_openings(const IfcSchema::IfcProduct* entity, } catch (...) {} } +// std::cout << "entity_trsf" << std::endl; +// for (int i = 0; i < 3; ++i) { +// for (int j = 0; j < 4; ++j) { +// std::cout << entity_trsf.cartesian(i, j) << " "; +// } std::cout << std::endl; +// } +// +// std::cout << "opening_trsf before" << std::endl; +// for (int i = 0; i < 3; ++i) { +// for (int j = 0; j < 4; ++j) { +// std::cout << opening_trsf.cartesian(i, j) << " "; +// } std::cout << std::endl; +// } + // Move the opening into the coordinate system of the IfcProduct opening_trsf = opening_trsf * entity_trsf.inverse(); -// std::cout << "opening_trsf" << std::endl; +// std::cout << "opening_trsf after" << std::endl; // for (int i = 0; i < 3; ++i) { // for (int j = 0; j < 4; ++j) { // std::cout << opening_trsf.cartesian(i, j) << " "; @@ -230,12 +244,19 @@ bool IfcGeom::CgalKernel::convert_openings(const IfcSchema::IfcProduct* entity, } for ( unsigned int i = 0; i < opening_shapes.size(); ++ i ) { + cgal_placement_t gtrsf; + if (opening_shapes[i].Placement()) gtrsf = *(CgalPlacement*)opening_shapes[i].Placement(); + gtrsf = gtrsf * opening_trsf; cgal_shape_t opening_shape(((CgalShape*)opening_shapes[i].Shape())->shape()); - if (opening_shapes[i].Placement()) { - cgal_placement_t gtrsf = *(CgalPlacement*)opening_shapes[i].Placement(); - gtrsf = gtrsf * opening_trsf; - opening_shape.transform(gtrsf); - } opening_shapelist.push_back(opening_shape); + opening_shape.transform(gtrsf); + opening_shapelist.push_back(opening_shape); + +// std::cout << "gtrsf" << std::endl; +// for (int i = 0; i < 3; ++i) { +// for (int j = 0; j < 4; ++j) { +// std::cout << gtrsf.cartesian(i, j) << " "; +// } std::cout << std::endl; +// } } }