Fixes after settings rework

This commit is contained in:
Thomas Krijnen
2024-04-18 21:15:40 +02:00
parent 0edfb0e791
commit 29fd32be75
2 changed files with 13 additions and 8 deletions
+10 -5
View File
@@ -22,8 +22,7 @@
using namespace ifcopenshell::geometry;
taxonomy::ptr mapping::map_impl(const IfcSchema::IfcRepresentation* inst) {
// @todo
const bool use_body = !this->settings_.get<settings::IncludeCurves>().get();
const bool items_to_include = !this->settings_.get<settings::OutputDimensionality>().get();
auto items = map_to_collection(this, inst->Items());
if (!items) {
@@ -42,9 +41,15 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcRepresentation* inst) {
// @todo
// if (s.ShapeType() == TopAbs_COMPOUND && TopoDS_Iterator(s).More() && TopoDS_Iterator(s).Value().ShapeType() == TopAbs_SOLID) {
auto filtered = filter_in_place(items, [&use_body](taxonomy::ptr i) {
// @todo just filter loops for now.
return (i->kind() != taxonomy::LOOP && i->kind() != taxonomy::PIECEWISE_FUNCTION) == use_body;
auto filtered = filter_in_place(items, [&items_to_include](taxonomy::ptr i) {
auto is_curve = (i->kind() == taxonomy::EDGE || i->kind() == taxonomy::LOOP || i->kind() == taxonomy::PIECEWISE_FUNCTION);
if (is_curve && items_to_include == settings::SURFACES_AND_SOLIDS) {
return false;
} else if (!is_curve && items_to_include == settings::CURVES) {
return false;
} else {
return true;
}
});
if (filtered->children.empty()) {
+3 -3
View File
@@ -952,7 +952,7 @@ void mapping::addRepresentationsFromDefaultContexts(IfcSchema::IfcRepresentation
allowed_context_types.insert("notdefined");
std::set<std::string> context_types;
if (settings_.get<settings::IncludeSurfaces>().get()) {
if (this->settings_.get<settings::OutputDimensionality>().get() != settings::CURVES) {
// Really this should only be 'Model', as per
// the standard 'Design' is deprecated. So,
// just for backwards compatibility:
@@ -962,7 +962,7 @@ void mapping::addRepresentationsFromDefaultContexts(IfcSchema::IfcRepresentation
context_types.insert("model view");
context_types.insert("detail view");
}
if (settings_.get<settings::IncludeCurves>().get()) {
if (this->settings_.get<settings::OutputDimensionality>().get() != settings::SURFACES_AND_SOLIDS) {
context_types.insert("plan");
}
@@ -1051,7 +1051,7 @@ IfcUtil::IfcBaseEntity* mapping::representation_of(const IfcUtil::IfcBaseEntity*
}
}
if (intersection->size() == 0 && settings_.get<settings::ContextIds>().has() && settings_.get<settings::IncludeCurves>().get() && !settings_.get<settings::IncludeSurfaces>().get()) {
if (intersection->size() == 0 && settings_.get<settings::ContextIds>().has() && this->settings_.get<settings::OutputDimensionality>().get() == settings::CURVES) {
for (auto& r : *of_product) {
if (r->RepresentationIdentifier() && *r->RepresentationIdentifier() == "Axis") {
intersection->push(r);