- Ifc: clean up temporary wall points when switching from horizontal to vertical openings.

pull/19/head
Alexander Gessler 2013-01-25 04:35:30 +01:00
parent 9647c87c7c
commit af0d4ef3da
1 changed files with 8 additions and 1 deletions

View File

@ -1724,6 +1724,7 @@ void CloseWindows(ContourVector& contours,
BOOST_FOREACH(const TempOpening* opening, refs) { BOOST_FOREACH(const TempOpening* opening, refs) {
BOOST_FOREACH(const IfcVector3& other, opening->wallPoints) { BOOST_FOREACH(const IfcVector3& other, opening->wallPoints) {
const IfcFloat sqdist = (world_point - other).SquareLength(); const IfcFloat sqdist = (world_point - other).SquareLength();
if (sqdist < best) { if (sqdist < best) {
bestv = other; bestv = other;
best = sqdist; best = sqdist;
@ -2262,7 +2263,7 @@ void ProcessExtrudedAreaSolid(const IfcExtrudedAreaSolid& solid, TempMesh& resul
out.push_back(in[next]); out.push_back(in[next]);
if(openings) { if(openings) {
if(GenerateOpenings(*conv.apply_openings,nors,temp,true, true)) { if(GenerateOpenings(*conv.apply_openings,nors,temp,false, true)) {
++sides_with_openings; ++sides_with_openings;
} }
@ -2271,6 +2272,12 @@ void ProcessExtrudedAreaSolid(const IfcExtrudedAreaSolid& solid, TempMesh& resul
} }
} }
if(openings) {
BOOST_FOREACH(TempOpening& opening, *conv.apply_openings) {
opening.wallPoints.clear();
}
}
size_t sides_with_v_openings = 0; size_t sides_with_v_openings = 0;
if(has_area) { if(has_area) {