From ca559fcd19fa1170302e2d965752a26ce21a0b48 Mon Sep 17 00:00:00 2001 From: Matthias Puchner <github@mpuchner.de> Date: Thu, 9 Dec 2021 06:23:12 +0100 Subject: [PATCH] ensure correct layer-thickness when creating sample (GUI->domain) --- GUI/Model/To/DomainObjectBuilder.cpp | 8 +++++--- GUI/Model/To/DomainObjectBuilder.h | 2 +- GUI/Model/To/ToDomain.cpp | 7 ++++--- GUI/Model/To/ToDomain.h | 2 +- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/GUI/Model/To/DomainObjectBuilder.cpp b/GUI/Model/To/DomainObjectBuilder.cpp index 13984572b0a..20a65f09846 100644 --- a/GUI/Model/To/DomainObjectBuilder.cpp +++ b/GUI/Model/To/DomainObjectBuilder.cpp @@ -26,7 +26,8 @@ GUI::Model::DomainObjectBuilder::buildMultiLayer(const MultiLayerItem& item) { auto P_multilayer = GUI::Transform::ToDomain::createMultiLayer(item); for (auto* layerItem : item.layers()) { - auto P_layer = buildLayer(*layerItem); + const bool isFirstOrLastLayer = layerItem == item.layers().first() || item.layers().last(); + auto P_layer = buildLayer(*layerItem, isFirstOrLastLayer); const auto roughness = layerItem->roughness().currentItem(); auto P_roughness = GUI::Transform::ToDomain::createLayerRoughness(roughness); if (P_layer) { @@ -39,9 +40,10 @@ GUI::Model::DomainObjectBuilder::buildMultiLayer(const MultiLayerItem& item) return P_multilayer; } -std::unique_ptr<Layer> GUI::Model::DomainObjectBuilder::buildLayer(const LayerItem& item) +std::unique_ptr<Layer> GUI::Model::DomainObjectBuilder::buildLayer(const LayerItem& item, + bool isFirstOrLastLayer) { - auto P_layer = GUI::Transform::ToDomain::createLayer(item); + auto P_layer = GUI::Transform::ToDomain::createLayer(item, isFirstOrLastLayer); for (ParticleLayoutItem* layout : item.layouts()) { auto P_layout = buildParticleLayout(*layout); if (P_layout) diff --git a/GUI/Model/To/DomainObjectBuilder.h b/GUI/Model/To/DomainObjectBuilder.h index 6221e2b81c7..132010d55d5 100644 --- a/GUI/Model/To/DomainObjectBuilder.h +++ b/GUI/Model/To/DomainObjectBuilder.h @@ -32,7 +32,7 @@ class ICoordSystem; namespace GUI::Model::DomainObjectBuilder { std::unique_ptr<MultiLayer> buildMultiLayer(const MultiLayerItem& item); -std::unique_ptr<Layer> buildLayer(const LayerItem& item); +std::unique_ptr<Layer> buildLayer(const LayerItem& item, bool isFirstOrLastLayer); std::unique_ptr<ParticleLayout> buildParticleLayout(const ParticleLayoutItem& item); } // namespace GUI::Model::DomainObjectBuilder diff --git a/GUI/Model/To/ToDomain.cpp b/GUI/Model/To/ToDomain.cpp index b7184922a69..9cc724da0ee 100644 --- a/GUI/Model/To/ToDomain.cpp +++ b/GUI/Model/To/ToDomain.cpp @@ -39,10 +39,11 @@ std::unique_ptr<MultiLayer> GUI::Transform::ToDomain::createMultiLayer(const Mul return P_multilayer; } -std::unique_ptr<Layer> GUI::Transform::ToDomain::createLayer(const LayerItem& item) +std::unique_ptr<Layer> GUI::Transform::ToDomain::createLayer(const LayerItem& item, + bool isFirstOrLastLayer) { - auto P_layer = - std::make_unique<Layer>(*item.materialItem()->createMaterial(), item.thickness()); + auto P_layer = std::make_unique<Layer>(*item.materialItem()->createMaterial(), + isFirstOrLastLayer ? 0.0 : item.thickness()); P_layer->setNumberOfSlices(item.numSlices()); return P_layer; } diff --git a/GUI/Model/To/ToDomain.h b/GUI/Model/To/ToDomain.h index c2f7607f978..3094cc184c4 100644 --- a/GUI/Model/To/ToDomain.h +++ b/GUI/Model/To/ToDomain.h @@ -37,7 +37,7 @@ class LayerBasicRoughnessItem; namespace GUI::Transform::ToDomain { std::unique_ptr<IParticle> createIParticle(const SessionItem& item); -std::unique_ptr<Layer> createLayer(const LayerItem& item); +std::unique_ptr<Layer> createLayer(const LayerItem& item, bool isFirstOrLastLayer); std::unique_ptr<LayerRoughness> createLayerRoughness( const std::variant<LayerZeroRoughnessItem*, LayerBasicRoughnessItem*>& roughness); std::unique_ptr<MultiLayer> createMultiLayer(const MultiLayerItem& item); -- GitLab