up
This commit is contained in:
parent
1b3db8eed8
commit
a1f10e67e5
3 changed files with 11 additions and 13 deletions
|
|
@ -16,6 +16,7 @@ from ...registry import register_class
|
||||||
from .. import slice
|
from .. import slice
|
||||||
from ..slice import Pather, slice_at_range, SlicePaths
|
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_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 ...infra.blender.blender_slice_nodes_generic import SliceNode, resolve_input
|
||||||
from .bpy_ns_types import notify_tree_changed
|
from .bpy_ns_types import notify_tree_changed
|
||||||
from ...infra._3mf_writer._3mf import prepare_3mf
|
from ...infra._3mf_writer._3mf import prepare_3mf
|
||||||
|
|
@ -384,18 +385,10 @@ class SLICENODE_GetMesh(SliceNode):
|
||||||
if socket_name != "Mesh": return None
|
if socket_name != "Mesh": return None
|
||||||
|
|
||||||
obj: Any = self.resolve("Object")
|
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()}
|
family = [obj] + get_all_children(obj)
|
||||||
extruder = obj.nodeslicer.extruder
|
sc: SlicingCollection = SlicingCollection(family, obj.name)
|
||||||
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]
|
|
||||||
|
|
||||||
return sc
|
return sc
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,4 +4,6 @@ def get_all_children(obj):
|
||||||
children = []
|
children = []
|
||||||
for child in obj.children:
|
for child in obj.children:
|
||||||
children += [child] + get_all_children(child)
|
children += [child] + get_all_children(child)
|
||||||
|
|
||||||
|
children = list(set(children))
|
||||||
return children
|
return children
|
||||||
|
|
@ -35,6 +35,11 @@ class SlicingObject():
|
||||||
assert bpy.context.scene.unit_settings
|
assert bpy.context.scene.unit_settings
|
||||||
scene_scale: float = bpy.context.scene.unit_settings.scale_length
|
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:
|
||||||
if obj.mode == 'EDIT':
|
if obj.mode == 'EDIT':
|
||||||
obj.update_from_editmode()
|
obj.update_from_editmode()
|
||||||
|
|
@ -223,8 +228,6 @@ class SlicingGroup():
|
||||||
for obj in selected_objs:
|
for obj in selected_objs:
|
||||||
family.append(obj)
|
family.append(obj)
|
||||||
family.extend(get_all_children(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'
|
filtered_objs = [o for o in family] # if getattr(o, TYPES_NAME).object_type != 'Ignore'
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue