This commit is contained in:
Nicolas Predella 2026-05-18 13:49:24 +03:00
parent 1b3db8eed8
commit a1f10e67e5
3 changed files with 11 additions and 13 deletions

View file

@ -16,6 +16,7 @@ from ...registry import register_class
from .. import slice
from ..slice import Pather, slice_at_range, SlicePaths
from ...infra.blender.blender_mesh_capture import SlicingCollection, SlicingObject, capture_mesh_edges, SlicingGroup
from ...infra.blender.blender_bridge import get_all_children
from ...infra.blender.blender_slice_nodes_generic import SliceNode, resolve_input
from .bpy_ns_types import notify_tree_changed
from ...infra._3mf_writer._3mf import prepare_3mf
@ -384,18 +385,10 @@ class SLICENODE_GetMesh(SliceNode):
if socket_name != "Mesh": return None
obj: Any = self.resolve("Object")
if not obj: return None
modifiers = {v.field: v.value_str for k, v in dict(obj.nodeslicer.modifiers).items()}
extruder = obj.nodeslicer.extruder
part_type = obj.nodeslicer.object_type
so: SlicingObject = SlicingObject(obj, obj.name)
so.assign_modifiers(modifiers)
so.object_type = part_type
so.extruder = extruder
sc: SlicingCollection = SlicingCollection([], obj.name)
sc.objects = [so]
family = [obj] + get_all_children(obj)
sc: SlicingCollection = SlicingCollection(family, obj.name)
return sc

View file

@ -4,4 +4,6 @@ def get_all_children(obj):
children = []
for child in obj.children:
children += [child] + get_all_children(child)
children = list(set(children))
return children

View file

@ -35,6 +35,11 @@ class SlicingObject():
assert bpy.context.scene.unit_settings
scene_scale: float = bpy.context.scene.unit_settings.scale_length
if ns := getattr(obj, 'nodeslicer', None):
self.object_type = ns.object_type
self.extruder = ns.extruder
self.modifiers = [{'param_id': m.field, 'param_value': m.value_str} for m in ns.modifiers]
if obj:
if obj.mode == 'EDIT':
obj.update_from_editmode()
@ -223,8 +228,6 @@ class SlicingGroup():
for obj in selected_objs:
family.append(obj)
family.extend(get_all_children(obj))
# Remove duplicates
family = list(set(family))
filtered_objs = [o for o in family] # if getattr(o, TYPES_NAME).object_type != 'Ignore'