From 6a8d42359acccc8945f7341dbdefa25baaf5e5f3 Mon Sep 17 00:00:00 2001 From: "salt.wei" Date: Thu, 22 Sep 2022 13:50:18 +0800 Subject: [PATCH] ENH: don't load empty mesh when loading step This is fix for crash issue for some specific step file, which generate empty mesh. Signed-off-by: salt.wei Change-Id: I910e3d2da670b623570665265a12361492bd706b --- src/libslic3r/Format/STEP.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/libslic3r/Format/STEP.cpp b/src/libslic3r/Format/STEP.cpp index 2b388199b..1d5efef40 100644 --- a/src/libslic3r/Format/STEP.cpp +++ b/src/libslic3r/Format/STEP.cpp @@ -275,7 +275,7 @@ bool load_step(const char *path, Model *model, ImportStepProgressFn stepFn, Step } } - if (aNbTriangles == 0) + if (aNbTriangles == 0 || aNbNodes == 0) // BBS: No triangulation on the shape. continue; @@ -354,13 +354,16 @@ bool load_step(const char *path, Model *model, ImportStepProgressFn stepFn, Step } } - TriangleMesh triangle_mesh; - triangle_mesh.from_stl(stl[i]); - ModelVolume *new_volume = new_object->add_volume(std::move(triangle_mesh)); - new_volume->name = namedSolids[i].name; - new_volume->source.input_file = path; - new_volume->source.object_idx = (int) model->objects.size() - 1; - new_volume->source.volume_idx = (int) new_object->volumes.size() - 1; + //BBS: maybe mesh is empty from step file. Don't add + if (stl[i].stats.number_of_facets > 0) { + TriangleMesh triangle_mesh; + triangle_mesh.from_stl(stl[i]); + ModelVolume* new_volume = new_object->add_volume(std::move(triangle_mesh)); + new_volume->name = namedSolids[i].name; + new_volume->source.input_file = path; + new_volume->source.object_idx = (int)model->objects.size() - 1; + new_volume->source.volume_idx = (int)new_object->volumes.size() - 1; + } } shapeTool.reset(nullptr);