diff --git a/src/ifcconvert/IfcConvert.cpp b/src/ifcconvert/IfcConvert.cpp index 93e3828c8d..79bc01e01c 100644 --- a/src/ifcconvert/IfcConvert.cpp +++ b/src/ifcconvert/IfcConvert.cpp @@ -50,8 +50,6 @@ #include #include -#include - #include #include #include @@ -291,6 +289,9 @@ int main(int argc, char** argv) { ("disable-opening-subtractions", "Specifies whether to disable the boolean subtraction of " "IfcOpeningElement Representations from their RelatingElements.") + ("disable-boolean-results", + "Specifies whether to disable the boolean operation within representations " + "such as clippings by means of IfcBooleanResult and subtypes") ("enable-layerset-slicing", "Specifies whether to enable the slicing of products according " "to their associated IfcMaterialLayerSet.") @@ -369,6 +370,14 @@ int main(int argc, char** argv) { "Element at which vertical cross sections should be created") ("elevation-ref", po::value(&elevation_ref), "Element at which vertical elevations should be created") + ("auto-section", + "Creates SVG cross section drawings automatically based on model extents") + ("auto-elevation", + "Creates SVG elevation drawings automatically based on model extents") + ("svg-xmlns", + "Stores name and guid in a separate namespace as opposed to data-name, data-guid") + ("svg-poly", + "Uses the polygonal algorithm for hidden line rendering") ("door-arcs", "Draw door openings arcs for IfcDoor elements") ("section-height", po::value(§ion_height), "Specifies the cut section height for SVG 2D geometry.") @@ -393,6 +402,7 @@ int main(int argc, char** argv) { ("site-local-placement", "Place elements locally in the IfcSite coordinate system, instead of placing " "them in the IFC global coords. Applicable for OBJ and DAE output.") + ("y-up", "Change the 'up' axis to positive Y, default is Z UP,Applicable for OBJ output.") ("building-local-placement", "Similar to --site-local-placement, but placing elements in locally in the parent IfcBuilding coord system") ("precision", po::value(&precision)->default_value(SerializerSettings::DEFAULT_PRECISION), @@ -447,6 +457,7 @@ int main(int argc, char** argv) { const bool merge_boolean_operands = vmap.count("merge-boolean-operands") != 0; #endif const bool disable_opening_subtractions = vmap.count("disable-opening-subtractions") != 0; + const bool disable_boolean_results = vmap.count("disable-boolean-results") != 0; const bool include_plan = vmap.count("plan") != 0; const bool include_model = vmap.count("model") != 0 || (!include_plan); const bool enable_layerset_slicing = vmap.count("enable-layerset-slicing") != 0; @@ -457,6 +468,7 @@ int main(int argc, char** argv) { const bool use_material_names = vmap.count("use-material-names") != 0; const bool use_element_types = vmap.count("use-element-types") != 0; const bool use_element_hierarchy = vmap.count("use-element-hierarchy") != 0; + const bool use_y_up = vmap.count("y-up") != 0; const bool no_normals = vmap.count("no-normals") != 0; const bool center_model = vmap.count("center-model") != 0; const bool center_model_geometry = vmap.count("center-model-geometry") != 0; @@ -715,6 +727,7 @@ int main(int argc, char** argv) { settings.set(IfcGeom::IteratorSettings::FASTER_BOOLEANS, merge_boolean_operands); #endif settings.set(IfcGeom::IteratorSettings::DISABLE_OPENING_SUBTRACTIONS, disable_opening_subtractions); + settings.set(IfcGeom::IteratorSettings::DISABLE_BOOLEAN_RESULT, disable_boolean_results); settings.set(IfcGeom::IteratorSettings::INCLUDE_CURVES, include_plan); settings.set(IfcGeom::IteratorSettings::EXCLUDE_SOLIDS_AND_SURFACES, !include_model); settings.set(IfcGeom::IteratorSettings::APPLY_LAYERSETS, enable_layerset_slicing); @@ -729,6 +742,7 @@ int main(int argc, char** argv) { settings.set(SerializerSettings::USE_ELEMENT_NAMES, use_element_names); settings.set(SerializerSettings::USE_ELEMENT_GUIDS, use_element_guids); + settings.set(SerializerSettings::USE_Y_UP, use_y_up); settings.set(SerializerSettings::USE_ELEMENT_STEPIDS, use_element_stepids); settings.set(SerializerSettings::USE_MATERIAL_NAMES, use_material_names); settings.set(SerializerSettings::USE_ELEMENT_TYPES, use_element_types); @@ -943,6 +957,14 @@ int main(int argc, char** argv) { if (vmap.count("elevation-ref")) { static_cast(serializer.get())->setElevationRef(elevation_ref); } + if (vmap.count("auto-section")) { + static_cast(serializer.get())->setAutoSection(true); + } + if (vmap.count("auto-elevation")) { + static_cast(serializer.get())->setAutoElevation(true); + } + static_cast(serializer.get())->setUseNamespace(vmap.count("svg-xmlns") > 0); + static_cast(serializer.get())->setUseHlrPoly(vmap.count("svg-poly") > 0); if (relative_center_x && relative_center_y) { static_cast(serializer.get())->setDrawingCenter(*relative_center_x, *relative_center_y); } @@ -1336,14 +1358,7 @@ namespace latebound_access { } void fix_quantities(IfcParse::IfcFile& f, bool no_progress, bool quiet, bool stderr_progress) { - Logger::Status("HLEEEEEEEE"); - std::ofstream outfile("test78.txt"); - - outfile << "my text here!" << std::endl; - - outfile.close(); { - auto delete_reversed = [&f](const IfcEntityList::ptr& insts) { if (!insts) { return;