mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-10 22:16:41 +00:00
Check for inner wires before reinitializing face builder
This commit is contained in:
@@ -318,17 +318,20 @@ bool IfcGeom::Kernel::convert(const IfcSchema::IfcFace* l, TopoDS_Shape& result)
|
|||||||
}
|
}
|
||||||
} else if (!fd.all_outer()) {
|
} else if (!fd.all_outer()) {
|
||||||
BRepBuilderAPI_MakeFace mf(fd.surface(), fd.outer_wire());
|
BRepBuilderAPI_MakeFace mf(fd.surface(), fd.outer_wire());
|
||||||
|
TopoDS_Face f = mf.Face();
|
||||||
|
|
||||||
if (mf.IsDone()) {
|
if (mf.IsDone()) {
|
||||||
// Is this necessary
|
if (std::distance(fd.inner_wires().first, fd.inner_wires().second)) {
|
||||||
TopoDS_Face f = mf.Face();
|
mf.Init(f);
|
||||||
mf.Init(f);
|
|
||||||
|
|
||||||
for (auto it = fd.inner_wires().first; it != fd.inner_wires().second; ++it) {
|
for (auto it = fd.inner_wires().first; it != fd.inner_wires().second; ++it) {
|
||||||
mf.Add(*it);
|
mf.Add(*it);
|
||||||
|
}
|
||||||
|
|
||||||
|
face_list.Append(mf.Face());
|
||||||
|
} else {
|
||||||
|
face_list.Append(f);
|
||||||
}
|
}
|
||||||
|
|
||||||
face_list.Append(mf.Face());
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (const auto& w : fd.wires()) {
|
for (const auto& w : fd.wires()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user