FIX: cut_to_parts+keep_lower crashes

Change-Id: I65eb51952a2062e6726e12e6cdb42f09f7816bc3
(cherry picked from commit cf9873717c756ddfe7e584ccb74f29763f529883)
This commit is contained in:
Arthur 2022-08-17 10:11:38 +08:00 committed by Lane.Wei
parent 03d29b3989
commit 663df48a95

View file

@ -1538,7 +1538,7 @@ ModelObjectPtrs ModelObject::cut(size_t instance, std::array<Vec3d, 4> plane_poi
bool keep_lower = attributes.has(ModelObjectCutAttribute::KeepLower); bool keep_lower = attributes.has(ModelObjectCutAttribute::KeepLower);
bool cut_to_parts = attributes.has(ModelObjectCutAttribute::CutToParts); bool cut_to_parts = attributes.has(ModelObjectCutAttribute::CutToParts);
ModelObject* upper = keep_upper ? ModelObject::new_clone(*this) : nullptr; ModelObject* upper = keep_upper ? ModelObject::new_clone(*this) : nullptr;
ModelObject* lower = cut_to_parts ? upper : (keep_lower ? ModelObject::new_clone(*this) : nullptr); ModelObject* lower = (cut_to_parts&&upper!=nullptr) ? upper : (keep_lower ? ModelObject::new_clone(*this) : nullptr);
if (attributes.has(ModelObjectCutAttribute::KeepUpper)) { if (attributes.has(ModelObjectCutAttribute::KeepUpper)) {
upper->set_model(nullptr); upper->set_model(nullptr);