batched mesh preview
This commit is contained in:
parent
cebc165282
commit
c1b3cde57f
1 changed files with 25 additions and 7 deletions
|
|
@ -15,23 +15,20 @@ class SLICENODE_GcodeToMesh(ExecSliceNode):
|
|||
|
||||
def init(self, context):
|
||||
self._init_exec()
|
||||
self.add_input("SLICESOCK_Gcode", "Gcode")
|
||||
self.add_input("SLICESOCK_String", "Name")
|
||||
self.add_multi_socket_group("SLICESOCK_Gcode", name="Gcode")
|
||||
|
||||
def draw_buttons(self, context, layout):
|
||||
super().draw_buttons(context, layout)
|
||||
layout.prop(self, 'show_e_0')
|
||||
|
||||
def evaluate(self, operator=None):
|
||||
gcode: str = self.resolve("Gcode")
|
||||
mesh_name: str = self.resolve("Name")
|
||||
|
||||
def _process_gcode(self, gcode: str, mesh_name: str, operator=None):
|
||||
if not gcode:
|
||||
if mesh_name in bpy.data.objects:
|
||||
obj = bpy.data.objects[mesh_name]
|
||||
if obj.type == 'MESH':
|
||||
obj.data.clear_geometry()
|
||||
return 'empty'
|
||||
return
|
||||
|
||||
vertices = []
|
||||
edges = []
|
||||
|
|
@ -128,7 +125,7 @@ class SLICENODE_GcodeToMesh(ExecSliceNode):
|
|||
last_e = new_e
|
||||
|
||||
if not vertices:
|
||||
return 'no segments'
|
||||
return
|
||||
|
||||
# Create or find "Debug" mesh object
|
||||
if mesh_name in bpy.data.objects:
|
||||
|
|
@ -179,4 +176,25 @@ class SLICENODE_GcodeToMesh(ExecSliceNode):
|
|||
mod = obj.modifiers.new(name="Preview", type='NODES') # type: ignore
|
||||
mod.node_group = ng
|
||||
|
||||
def evaluate(self, operator=None):
|
||||
gcodes = self.resolve_multi_input("Gcode")
|
||||
base_mesh_name: str = self.resolve("Name")
|
||||
|
||||
if not base_mesh_name:
|
||||
base_mesh_name = "GcodePreview"
|
||||
|
||||
# Filter out empty inputs but keep structure to index properly
|
||||
valid_gcodes = [g for g in gcodes if g]
|
||||
|
||||
if not valid_gcodes:
|
||||
if base_mesh_name in bpy.data.objects:
|
||||
obj = bpy.data.objects[base_mesh_name]
|
||||
if obj.type == 'MESH':
|
||||
obj.data.clear_geometry()
|
||||
return 'empty'
|
||||
|
||||
for i, gcode in enumerate(valid_gcodes):
|
||||
mesh_name = base_mesh_name if i == 0 else f"{base_mesh_name}_{i+1}"
|
||||
self._process_gcode(gcode, mesh_name, operator)
|
||||
|
||||
return 'ok'
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue