diff --git a/src/serializers/SvgSerializer.cpp b/src/serializers/SvgSerializer.cpp index 6a28d120a3..52e215e498 100644 --- a/src/serializers/SvgSerializer.cpp +++ b/src/serializers/SvgSerializer.cpp @@ -428,7 +428,7 @@ void SvgSerializer::write(const geometry_data& data) { TopoDS_Wire annotation; - if (draw_door_arcs_ && data.product->declaration().is("IfcDoor")) { + if (is_floor_plan_ && draw_door_arcs_ && data.product->declaration().is("IfcDoor")) { boost::optional operation_type; @@ -886,6 +886,10 @@ void SvgSerializer::finalize() { resize(); if (deferred_section_data_ && deferred_section_data_->size() && element_buffer_.size()) { + + // Draw door arcs only on floor plans. + is_floor_plan_ = false; + for (auto& sd : *deferred_section_data_) { bool use_hlr = false; std::string drawing_name; diff --git a/src/serializers/SvgSerializer.h b/src/serializers/SvgSerializer.h index 4eab966fcd..13e1a41597 100644 --- a/src/serializers/SvgSerializer.h +++ b/src/serializers/SvgSerializer.h @@ -116,7 +116,11 @@ protected: boost::optional> section_data_; boost::optional> deferred_section_data_; boost::optional scale_, calculated_scale_; - bool rescale, print_space_names_, print_space_areas_, draw_door_arcs_, with_section_heights_from_storey_, buffer_elements_; + + bool rescale, print_space_names_, print_space_areas_, draw_door_arcs_; + bool with_section_heights_from_storey_, buffer_elements_; + bool is_floor_plan_; + std::multimap paths; float_item_list xcoords, ycoords, radii; @@ -142,6 +146,7 @@ public: , print_space_areas_(false) , draw_door_arcs_(false) , buffer_elements_(false) + , is_floor_plan_(true) , file(0) , storey_(0) , xcoords_begin(0)