mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-20 06:58:56 +00:00
Silence final compiler warnings
Generated with the assistance of an AI coding tool.
This commit is contained in:
@@ -186,6 +186,7 @@ namespace {
|
|||||||
Approx_Curve3d approx(hcc, precision_, GeomAbs_C0, 10, 10);
|
Approx_Curve3d approx(hcc, precision_, GeomAbs_C0, 10, 10);
|
||||||
return approx.Curve();
|
return approx.Curve();
|
||||||
}
|
}
|
||||||
|
throw std::runtime_error("Unexpected curve evaluation");
|
||||||
}
|
}
|
||||||
|
|
||||||
Handle(Geom_Surface) operator()(const taxonomy::extrusion::ptr& e) {
|
Handle(Geom_Surface) operator()(const taxonomy::extrusion::ptr& e) {
|
||||||
@@ -257,7 +258,7 @@ namespace {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Handle(Geom_Surface) open_cascade_kernel::convert_surface(const taxonomy::ptr surface) {
|
Handle(Geom_Surface) open_cascade_kernel::convert_surface(const taxonomy::ptr surface) {
|
||||||
surface_creation_visitor v{ this };
|
surface_creation_visitor v{ this, {} };
|
||||||
if (dispatch_surface_creation<surface_creation_visitor, 0>::dispatch(surface, v)) {
|
if (dispatch_surface_creation<surface_creation_visitor, 0>::dispatch(surface, v)) {
|
||||||
return v.result;
|
return v.result;
|
||||||
} else {
|
} else {
|
||||||
@@ -281,7 +282,7 @@ bool open_cascade_kernel::convert(const taxonomy::face::ptr face, TopoDS_Shape&
|
|||||||
}
|
}
|
||||||
|
|
||||||
const size_t num_bounds = face->children.size();
|
const size_t num_bounds = face->children.size();
|
||||||
int num_outer_bounds = 0;
|
std::size_t num_outer_bounds = 0;
|
||||||
|
|
||||||
for (auto& bound : face->children) {
|
for (auto& bound : face->children) {
|
||||||
if (bound->external.value_or(false)) {
|
if (bound->external.value_or(false)) {
|
||||||
|
|||||||
@@ -290,7 +290,6 @@ bool open_cascade_kernel::convert(const taxonomy::loft::ptr loft, TopoDS_Shape&
|
|||||||
// potentially incorrect as there is no guarantee that the wires for
|
// potentially incorrect as there is no guarantee that the wires for
|
||||||
// subsequently placed profiles are traversed from an equivalent start vertex.
|
// subsequently placed profiles are traversed from an equivalent start vertex.
|
||||||
for (auto it = shps.begin(); it < shps.end() - 1; ++it) {
|
for (auto it = shps.begin(); it < shps.end() - 1; ++it) {
|
||||||
auto ii = std::distance(shps.begin(), it);
|
|
||||||
auto jt = it + 1;
|
auto jt = it + 1;
|
||||||
std::array<std::vector<TopoDS_Shape>::const_iterator, 2> fa = { it, jt };
|
std::array<std::vector<TopoDS_Shape>::const_iterator, 2> fa = { it, jt };
|
||||||
std::vector<std::array<TopoDS_Wire, 2>> ws;
|
std::vector<std::array<TopoDS_Wire, 2>> ws;
|
||||||
@@ -335,7 +334,7 @@ bool open_cascade_kernel::convert(const taxonomy::loft::ptr loft, TopoDS_Shape&
|
|||||||
for (size_t i = 0; i < 2; ++i) {
|
for (size_t i = 0; i < 2; ++i) {
|
||||||
NCollection_IndexedDataMap<TopoDS_Shape, NCollection_List<TopoDS_Shape>, TopTools_ShapeMapHasher> ancestors;
|
NCollection_IndexedDataMap<TopoDS_Shape, NCollection_List<TopoDS_Shape>, TopTools_ShapeMapHasher> ancestors;
|
||||||
const auto& wire = wp[i];
|
const auto& wire = wp[i];
|
||||||
auto& result = profile_points[i];
|
auto& points = profile_points[i];
|
||||||
|
|
||||||
TopExp::MapShapesAndAncestors(
|
TopExp::MapShapesAndAncestors(
|
||||||
wire,
|
wire,
|
||||||
@@ -347,7 +346,7 @@ bool open_cascade_kernel::convert(const taxonomy::loft::ptr loft, TopoDS_Shape&
|
|||||||
TopExp::Vertices(wire, v0, vn);
|
TopExp::Vertices(wire, v0, vn);
|
||||||
|
|
||||||
TopoDS_Vertex curr = v0;
|
TopoDS_Vertex curr = v0;
|
||||||
result.push_back(BRep_Tool::Pnt(curr));
|
points.push_back(BRep_Tool::Pnt(curr));
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
if (curr.IsSame(vn)) {
|
if (curr.IsSame(vn)) {
|
||||||
@@ -356,8 +355,8 @@ bool open_cascade_kernel::convert(const taxonomy::loft::ptr loft, TopoDS_Shape&
|
|||||||
|
|
||||||
const NCollection_List<TopoDS_Shape>& incidentEdges = ancestors.FindFromKey(curr);
|
const NCollection_List<TopoDS_Shape>& incidentEdges = ancestors.FindFromKey(curr);
|
||||||
|
|
||||||
for (NCollection_List<TopoDS_Shape>::Iterator it(incidentEdges); it.More(); it.Next()) {
|
for (NCollection_List<TopoDS_Shape>::Iterator edge_it(incidentEdges); edge_it.More(); edge_it.Next()) {
|
||||||
const TopoDS_Edge& e = TopoDS::Edge(it.Value());
|
const TopoDS_Edge& e = TopoDS::Edge(edge_it.Value());
|
||||||
|
|
||||||
TopoDS_Vertex ev0, ev1;
|
TopoDS_Vertex ev0, ev1;
|
||||||
TopExp::Vertices(e, ev0, ev1);
|
TopExp::Vertices(e, ev0, ev1);
|
||||||
@@ -368,7 +367,7 @@ bool open_cascade_kernel::convert(const taxonomy::loft::ptr loft, TopoDS_Shape&
|
|||||||
} else {
|
} else {
|
||||||
previous = curr;
|
previous = curr;
|
||||||
curr = other_on_edge;
|
curr = other_on_edge;
|
||||||
result.push_back(BRep_Tool::Pnt(curr));
|
points.push_back(BRep_Tool::Pnt(curr));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -222,7 +222,7 @@ namespace {
|
|||||||
}
|
}
|
||||||
|
|
||||||
open_cascade_kernel::curve_creation_visitor_result_type open_cascade_kernel::convert_curve(const taxonomy::ptr curve) {
|
open_cascade_kernel::curve_creation_visitor_result_type open_cascade_kernel::convert_curve(const taxonomy::ptr curve) {
|
||||||
curve_creation_visitor v{ this };
|
curve_creation_visitor v{ this, {} };
|
||||||
if (dispatch_curve_creation<curve_creation_visitor, 0>::dispatch(curve, v)) {
|
if (dispatch_curve_creation<curve_creation_visitor, 0>::dispatch(curve, v)) {
|
||||||
return v.result;
|
return v.result;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -961,10 +961,6 @@ class curve_segment_evaluator {
|
|||||||
auto cos_start_angle = cos(start_angle);
|
auto cos_start_angle = cos(start_angle);
|
||||||
auto sin_start_angle = sin(start_angle);
|
auto sin_start_angle = sin(start_angle);
|
||||||
|
|
||||||
// point on the parent curve
|
|
||||||
auto pcStartX = R * cos_start_angle + pcCenterX;
|
|
||||||
auto pcStartY = R * sin_start_angle + pcCenterY;
|
|
||||||
|
|
||||||
auto pcStartDx = -sign_l * sin_start_angle;
|
auto pcStartDx = -sign_l * sin_start_angle;
|
||||||
auto pcStartDy = sign_l * cos_start_angle;
|
auto pcStartDy = sign_l * cos_start_angle;
|
||||||
|
|
||||||
@@ -1198,8 +1194,7 @@ class curve_segment_evaluator {
|
|||||||
m.col(3) = Eigen::Vector4d(X, Y, 0.0, 1.0);
|
m.col(3) = Eigen::Vector4d(X, Y, 0.0, 1.0);
|
||||||
return m;
|
return m;
|
||||||
},
|
},
|
||||||
[start = start_, lu = length_unit_, coeffX, coeffY, convert_u](double u) -> Eigen::Matrix4d {
|
[coeffY](double) -> Eigen::Matrix4d {
|
||||||
auto x = convert_u(u + start); // find x for u
|
|
||||||
Eigen::Matrix4d c = Eigen::Matrix4d::Zero();
|
Eigen::Matrix4d c = Eigen::Matrix4d::Zero();
|
||||||
c(3, 0) = coeffY[2]; // this may need a unit conversion (also assume there is only 3 coefficients)
|
c(3, 0) = coeffY[2]; // this may need a unit conversion (also assume there is only 3 coefficients)
|
||||||
return c;
|
return c;
|
||||||
|
|||||||
@@ -30,8 +30,6 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcEllipseProfileDef& inst) {
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
const bool rotated = ry > rx;
|
|
||||||
|
|
||||||
taxonomy::matrix4::ptr m4;
|
taxonomy::matrix4::ptr m4;
|
||||||
bool has_position = true;
|
bool has_position = true;
|
||||||
#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL
|
#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL
|
||||||
|
|||||||
@@ -36,25 +36,6 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcFixedReferenceSweptAreaSolid
|
|||||||
// @todo currently only the case is handled where directrix returns a piecewise_function
|
// @todo currently only the case is handled where directrix returns a piecewise_function
|
||||||
if (auto fn = std::dynamic_pointer_cast<taxonomy::function_item>(dir)) {
|
if (auto fn = std::dynamic_pointer_cast<taxonomy::function_item>(dir)) {
|
||||||
function_item_evaluator evaluator(settings_, fn);
|
function_item_evaluator evaluator(settings_, fn);
|
||||||
double start = 0;
|
|
||||||
double end = fn->length();
|
|
||||||
#ifdef SCHEMA_HAS_IfcDirectrixCurveSweptAreaSolid
|
|
||||||
// IfcDirectrixCurveSweptAreaSolid introduced in 4.3 changed attribute type
|
|
||||||
// from optional IfcParamValue to optional IfcCurveMeasureSelect.
|
|
||||||
// Invocation of mapping on pre-4.3 models can never result in a piecewise_function.
|
|
||||||
if (inst.StartParam() && inst.StartParam().as<IfcSchema::IfcLengthMeasure>()) {
|
|
||||||
double s = inst.StartParam().as<IfcSchema::IfcLengthMeasure>();
|
|
||||||
if (s > start) {
|
|
||||||
start = s;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (inst.EndParam() && inst.EndParam().as<IfcSchema::IfcLengthMeasure>()) {
|
|
||||||
double e = inst.EndParam().as<IfcSchema::IfcLengthMeasure>();
|
|
||||||
if (e < end) {
|
|
||||||
end = e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
auto evaluation_points = evaluator.evaluation_points();
|
auto evaluation_points = evaluator.evaluation_points();
|
||||||
for (const auto& dist_along : evaluation_points) {
|
for (const auto& dist_along : evaluation_points) {
|
||||||
auto m4 = evaluator.evaluate(dist_along);
|
auto m4 = evaluator.evaluate(dist_along);
|
||||||
@@ -86,10 +67,10 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcFixedReferenceSweptAreaSolid
|
|||||||
Eigen::Vector3d tangent = m4.col(0).head<3>().normalized();
|
Eigen::Vector3d tangent = m4.col(0).head<3>().normalized();
|
||||||
Eigen::Vector3d proj = (ref->components() - tangent * tangent.dot(ref->components()));
|
Eigen::Vector3d proj = (ref->components() - tangent * tangent.dot(ref->components()));
|
||||||
proj.normalize();
|
proj.normalize();
|
||||||
auto ref = proj.cross(tangent);
|
auto binormal = proj.cross(tangent);
|
||||||
|
|
||||||
m4b.col(0).head<3>() = proj;
|
m4b.col(0).head<3>() = proj;
|
||||||
m4b.col(1).head<3>() = ref;
|
m4b.col(1).head<3>() = binormal;
|
||||||
m4b.col(2).head<3>() = tangent;
|
m4b.col(2).head<3>() = tangent;
|
||||||
m4b.col(3).head<3>() = pos;
|
m4b.col(3).head<3>() = pos;
|
||||||
|
|
||||||
|
|||||||
@@ -28,8 +28,6 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcIShapeProfileDef& inst) {
|
|||||||
#ifdef SCHEMA_IfcIShapeProfileDef_HAS_FlangeEdgeRadius
|
#ifdef SCHEMA_IfcIShapeProfileDef_HAS_FlangeEdgeRadius
|
||||||
const bool doFlangeEdgeRadius = !!inst.FlangeEdgeRadius();
|
const bool doFlangeEdgeRadius = !!inst.FlangeEdgeRadius();
|
||||||
const bool hasSlope = !!inst.FlangeSlope();
|
const bool hasSlope = !!inst.FlangeSlope();
|
||||||
#else
|
|
||||||
const bool doFlangeEdgeRadius = false;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const double x1 = inst.OverallWidth() / 2.0f * length_unit_;
|
const double x1 = inst.OverallWidth() / 2.0f * length_unit_;
|
||||||
|
|||||||
@@ -44,11 +44,5 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcMappedItem& inst) {
|
|||||||
collection->children.push_back(shapes);
|
collection->children.push_back(shapes);
|
||||||
collection->matrix = taxonomy::make<taxonomy::matrix4>(res);
|
collection->matrix = taxonomy::make<taxonomy::matrix4>(res);
|
||||||
|
|
||||||
if (shapes != nullptr) {
|
|
||||||
for (auto& c : taxonomy::cast<taxonomy::collection>(shapes)->children) {
|
|
||||||
// @todo previously style was also copied.
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return collection;
|
return collection;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user