diff --git a/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp b/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp index 9e4fbcb441..6f349d7675 100644 --- a/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp +++ b/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp @@ -67,12 +67,10 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcFixedReferenceSweptAreaSolid for (size_t i = 0; i <= num_steps; ++i) { auto m4 = pwf->evaluate(start + curve_length / num_steps * i); - /* std::stringstream ss; ss << m4; auto s = ss.str(); std::wcout << s.c_str() << std::endl; - */ Eigen::Matrix4d m4b = Eigen::Matrix4d::Identity(); bool is_directrix_derived = false; @@ -85,8 +83,8 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcFixedReferenceSweptAreaSolid auto pos = m4.col(3).head<3>(); if (is_directrix_derived) { - m4b.col(0).head<3>() = m4.col(2).head<3>().cross(m4.col(0).head<3>()); - m4b.col(1).head<3>() = m4.col(2).head<3>(); + m4b.col(0).head<3>() = m4.col(1).head<3>(); + m4b.col(1).head<3>() = m4.col(0).head<3>().cross(m4.col(1).head<3>()); m4b.col(2).head<3>() = m4.col(0).head<3>(); m4b.col(3).head<3>() = pos; } else { diff --git a/src/ifcparse/IfcAlignmentHelper.cpp b/src/ifcparse/IfcAlignmentHelper.cpp index 9913507f5a..0e73b1cadf 100644 --- a/src/ifcparse/IfcAlignmentHelper.cpp +++ b/src/ifcparse/IfcAlignmentHelper.cpp @@ -76,10 +76,12 @@ std::tuple::ptr, typenam typename aggregate_of::ptr horizontal_curve_segments(include_geometry ? new aggregate_of() : nullptr); // geometry auto point_iter = points.begin(); - auto [xBT, yBT] = *point_iter; + double xBT, yBT, xPI, yPI; + + boost::tie(xBT, yBT) = *point_iter; point_iter++; - auto [xPI, yPI] = *point_iter; + boost::tie(xPI, yPI) = *point_iter; double xFT, yFT; for (auto radius : radii) { @@ -227,10 +229,12 @@ std::tuple::ptr, typenam typename aggregate_of::ptr vertical_curve_segments(new aggregate_of()); // geometry auto point_iter = vpoints.begin(); - auto [xPBG, yPBG] = *point_iter; + double xPBG, yPBG, xPVI, yPVI; + + boost::tie(xPBG, yPBG) = *point_iter; point_iter++; - auto [xPVI, yPVI] = *point_iter; + boost::tie(xPVI, yPVI) = *point_iter; double xPFG, yPFG; for (auto length : vclengths) {