From 1d8532ff76e778bc1af8c02cd70767490bf953ef Mon Sep 17 00:00:00 2001 From: zeffii Date: Tue, 13 Dec 2016 18:15:15 +0100 Subject: [PATCH 01/18] start small redux edit --- nodes/scene/objects_mk2.py | 130 ++++++++++++++++++++++--------------- 1 file changed, 77 insertions(+), 53 deletions(-) diff --git a/nodes/scene/objects_mk2.py b/nodes/scene/objects_mk2.py index 3729ef902..f3bdc6926 100644 --- a/nodes/scene/objects_mk2.py +++ b/nodes/scene/objects_mk2.py @@ -62,49 +62,55 @@ class SvObjSelected(bpy.types.Operator): bl_label = "Sverchok object selector" bl_options = {'REGISTER', 'UNDO'} - node_name = StringProperty( - name='name node', description='it is name of node', default='') - - tree_name = StringProperty( - name='name tree', description='it is name of tree', default='') - grup_name = StringProperty( - name='grup tree', description='it is name of group', default='') + def enable(self, context, handle): + groups = bpy.data.groups + + node = context.active_node + name_no = node.name + name_tr = node.id_data.name + group_name = node.groupname - sort = BoolProperty( - name='sort objects', description='to sort objects by name or not', default=True) - def enable(self, name_no, name_tr, handle, sorting): objects = [] - if self.grup_name and bpy.data.groups[self.grup_name].objects: - objs = bpy.data.groups[self.grup_name].objects + if group_name and groups[group_name].objects: + objs = groups[group_name].objects elif bpy.context.selected_objects: objs = bpy.context.selected_objects else: self.report({'WARNING'}, 'No object selected') return + for o in objs: objects.append(o.name) - if sorting: + + if node.sort: objects.sort() handle_write(name_no + name_tr, objects) if bpy.data.node_groups[name_tr]: handle = handle_read(name_no + name_tr) - bpy.data.node_groups[name_tr].nodes[name_no].objects_local = str(handle[1]) + # node.id_data.freeze(hard=True) + node.objects_local = str(handle[1]) + # node.id_data.unfreeze(hard=True) + - def disable(self, name, handle): + def disable(self, context, handle): if not handle[0]: return - handle_delete(name) + node = context.active_node + handle_delete(node.name + node.id_data.name) + def execute(self, context): - name_no = self.node_name - name_tr = self.tree_name - sorting = self.sort + + node = context.active_node + name_no = node.name + name_tr = node.id_data.name + handle = handle_read(name_no + name_tr) - self.disable(name_no + name_tr, handle) - self.enable(name_no, name_tr, handle, sorting) + self.disable(context, handle) + self.enable(context, handle) print('have got {0} items from scene.'.format(handle[1])) return {'FINISHED'} @@ -129,16 +135,19 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): name='groupname', description='group of objects (green outline CTRL+G)', default='', update=updateNode) + modifiers = BoolProperty( name='Modifiers', description='Apply modifier geometry to import (original untouched)', default=False, update=updateNode) + vergroups = BoolProperty( name='Vergroups', description='Use vertex groups to nesty insertion', default=False, update=hide_show_versgroups) + sort = BoolProperty( name='sort by name', description='sorting inserted objects by names', @@ -146,11 +155,11 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): update=updateNode) def sv_init(self, context): - self.outputs.new('VerticesSocket', "Vertices", "Vertices") - self.outputs.new('StringsSocket', "Edges", "Edges") - self.outputs.new('StringsSocket', "Polygons", "Polygons") - self.outputs.new('MatrixSocket', "Matrixes", "Matrixes") - self.outputs.new('SvObjectSocket', "Object", "Object") + self.outputs.new('VerticesSocket', "Vertices") + self.outputs.new('StringsSocket', "Edges") + self.outputs.new('StringsSocket', "Polygons") + self.outputs.new('MatrixSocket', "Matrixes") + self.outputs.new('SvObjectSocket', "Object") def draw_buttons(self, context, layout): #row.prop(self, 'groupname', text='') @@ -167,11 +176,7 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): row.scale_y = 1 op_text = "Get selection" - opera = row.operator('node.sverchok_object_insertion', text=op_text) - opera.node_name = self.name - opera.tree_name = self.id_data.name - opera.grup_name = self.groupname - opera.sort = self.sort + row.operator('node.sverchok_object_insertion', text=op_text) col = layout.column(align=True) row = col.row(align=True) @@ -193,8 +198,6 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): layout.label('. . . more ' + str(len(handle[1]) - 5) + ' items') break layout.label(o) - else: - handle_write(self.name + self.id_data.name, literal_eval(self.objects_local)) else: layout.label('--None--') @@ -207,49 +210,63 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): handle_write(name, literal_eval(self.objects_local)) def process(self): + if not self.objects_local: + return + + scene = bpy.context.scene + name = self.name + self.id_data.name handle = handle_read(name) + # reload handle if possible if self.objects_local and not handle[0]: handle_write(name, literal_eval(self.objects_local)) handle = handle_read(name) if handle[0]: - objs = handle[1] + + objs = [o for o in bpy.data.objects if o.name in handle[1]] + edgs_out = [] vers_out = [] vers_out_grouped = [] pols_out = [] mtrx_out = [] objs_out = [] - for obj_ in objs: # names of objects + + # iterate through references + for obj in objs: + print(obj, obj.name) + edgs = [] vers = [] vers_grouped = [] pols = [] mtrx = [] - obj = bpy.data.objects[obj_] # objects itself + if obj.type == 'EMPTY': for m in obj.matrix_world: mtrx.append(m[:]) else: - scene = bpy.context.scene - settings = 'PREVIEW' # create a temporary mesh - obj_data = obj.to_mesh(scene, self.modifiers, settings) + obj_data = obj.to_mesh(scene, self.modifiers, 'PREVIEW') for m in obj.matrix_world: mtrx.append(list(m)) + for k, v in enumerate(obj_data.vertices): if self.vergroups and v.groups.values(): vers_grouped.append(k) vers.append(list(v.co)) + edgs = obj_data.edge_keys + for p in obj_data.polygons: pols.append(list(p.vertices)) - # remove the temp mesh + bpy.data.meshes.remove(obj_data) + print('removed', obj.name, 'temp mesh') edgs_out.append(edgs) vers_out.append(vers) @@ -257,25 +274,32 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): pols_out.append(pols) mtrx_out.append(mtrx) objs_out.append(obj) + if vers_out[0]: - if self.outputs['Vertices'].is_linked: - SvSetSocketAnyType(self, 'Vertices', vers_out) + Vertices = self.outputs['Vertices'] + Edges = self.outputs['Edges'] + Polygons = self.outputs['Polygons'] + Vers_grouped = self.outputs['Vers_grouped'] + Matrixes = self.outputs['Matrixes'] + Object = self.outputs['Object'] + + if Vertices.is_linked: + Vertices.sv_set(vers_out) - if self.outputs['Edges'].is_linked: - SvSetSocketAnyType(self, 'Edges', edgs_out) + if Edges.is_linked: + Edges.sv_set(edgs_out) - if self.outputs['Polygons'].is_linked: - SvSetSocketAnyType(self, 'Polygons', pols_out) + if Polygons.is_linked: + Polygons.sv_set(pols_out) - if self.vergroups and self.outputs['Vers_grouped'].is_linked: - SvSetSocketAnyType(self, 'Vers_grouped', vers_out_grouped) + if self.vergroups and Vers_grouped.is_linked: + Vers_grouped.sv_set(vers_out_grouped) - if self.outputs['Matrixes'].is_linked: - SvSetSocketAnyType(self, 'Matrixes', mtrx_out) - if self.outputs['Object'].is_linked: - #print(objs_out) - SvSetSocketAnyType(self, 'Object', objs_out) + if Matrixes.is_linked: + Matrixes.sv_set(mtrx_out) + if Object.is_linked: + Object.sv_set(objs_out) def register(): -- GitLab From 387fd23c69187aee4f964be0f37e7ef75cd65219 Mon Sep 17 00:00:00 2001 From: zeffii Date: Tue, 13 Dec 2016 18:35:04 +0100 Subject: [PATCH 02/18] start small redux edit 2 --- nodes/scene/objects_mk2.py | 40 +++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/nodes/scene/objects_mk2.py b/nodes/scene/objects_mk2.py index f3bdc6926..6aa2883a0 100644 --- a/nodes/scene/objects_mk2.py +++ b/nodes/scene/objects_mk2.py @@ -190,16 +190,18 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): opera.node_name = self.name opera.tree_name = self.id_data.name - handle = handle_read(self.name + self.id_data.name) + # handle = handle_read(self.name + self.id_data.name) + # if self.objects_local: + # if handle[0]: + # for i, o in enumerate(handle[1]): + # if i > 4: + # layout.label('. . . more ' + str(len(handle[1]) - 5) + ' items') + # break + # layout.label(o) + # else: + # layout.label('--None--') if self.objects_local: - if handle[0]: - for i, o in enumerate(handle[1]): - if i > 4: - layout.label('. . . more ' + str(len(handle[1]) - 5) + ' items') - break - layout.label(o) - else: - layout.label('--None--') + layout.label(self.objects_local) def update(self): pass @@ -251,31 +253,41 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): else: # create a temporary mesh obj_data = obj.to_mesh(scene, self.modifiers, 'PREVIEW') + print(obj_data) for m in obj.matrix_world: mtrx.append(list(m)) + print('r1') for k, v in enumerate(obj_data.vertices): if self.vergroups and v.groups.values(): vers_grouped.append(k) vers.append(list(v.co)) + print('r2') edgs = obj_data.edge_keys for p in obj_data.polygons: pols.append(list(p.vertices)) + print('r3') - bpy.data.meshes.remove(obj_data) - print('removed', obj.name, 'temp mesh') + print(obj_data.users) + try: + bpy.data.meshes.remove(obj_data) + print('r2.5 ok..removed mesh!') + except: + print('r4') + print('failed remove', obj.name, 'temp mesh') + print('r5') - edgs_out.append(edgs) vers_out.append(vers) - vers_out_grouped.append(vers_grouped) + edgs_out.append(edgs) pols_out.append(pols) mtrx_out.append(mtrx) + vers_out_grouped.append(vers_grouped) objs_out.append(obj) - if vers_out[0]: + if vers_out and vers_out[0]: Vertices = self.outputs['Vertices'] Edges = self.outputs['Edges'] -- GitLab From 053c8477f9a52de74f633942de83667e6e327dc7 Mon Sep 17 00:00:00 2001 From: zeffii Date: Tue, 13 Dec 2016 21:06:30 +0100 Subject: [PATCH 03/18] commit to show bug --- nodes/scene/objects_mk2.py | 76 ++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 41 deletions(-) diff --git a/nodes/scene/objects_mk2.py b/nodes/scene/objects_mk2.py index 6aa2883a0..1e9224bf0 100644 --- a/nodes/scene/objects_mk2.py +++ b/nodes/scene/objects_mk2.py @@ -66,7 +66,7 @@ class SvObjSelected(bpy.types.Operator): def enable(self, context, handle): groups = bpy.data.groups - node = context.active_node + node = context.node name_no = node.name name_tr = node.id_data.name group_name = node.groupname @@ -90,9 +90,7 @@ class SvObjSelected(bpy.types.Operator): if bpy.data.node_groups[name_tr]: handle = handle_read(name_no + name_tr) - # node.id_data.freeze(hard=True) node.objects_local = str(handle[1]) - # node.id_data.unfreeze(hard=True) def disable(self, context, handle): @@ -104,7 +102,7 @@ class SvObjSelected(bpy.types.Operator): def execute(self, context): - node = context.active_node + node = context.node name_no = node.name name_tr = node.id_data.name @@ -246,39 +244,34 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): pols = [] mtrx = [] - if obj.type == 'EMPTY': - for m in obj.matrix_world: - mtrx.append(m[:]) + self.id_data.freeze(hard=True) - else: - # create a temporary mesh - obj_data = obj.to_mesh(scene, self.modifiers, 'PREVIEW') - print(obj_data) + try: + if obj.type == 'EMPTY': + for m in obj.matrix_world: + mtrx.append(m[:]) - for m in obj.matrix_world: - mtrx.append(list(m)) - print('r1') - - for k, v in enumerate(obj_data.vertices): - if self.vergroups and v.groups.values(): - vers_grouped.append(k) - vers.append(list(v.co)) - print('r2') - - edgs = obj_data.edge_keys - - for p in obj_data.polygons: - pols.append(list(p.vertices)) - print('r3') - - print(obj_data.users) - try: - bpy.data.meshes.remove(obj_data) - print('r2.5 ok..removed mesh!') - except: - print('r4') - print('failed remove', obj.name, 'temp mesh') - print('r5') + else: + # create a temporary mesh + obj_data = obj.to_mesh(scene, self.modifiers, 'PREVIEW') + edgs = obj_data.edge_keys + + for m in obj.matrix_world: + mtrx.append(list(m)) + + for k, v in enumerate(obj_data.vertices): + if self.vergroups and v.groups.values(): + vers_grouped.append(k) + vers.append(list(v.co)) + + for p in obj_data.polygons: + pols.append(list(p.vertices)) + + bpy.data.meshes.remove(obj_data, do_unlink=True) + except: + print('failure in process between freezed area') + + self.id_data.unfreeze(hard=True) vers_out.append(vers) edgs_out.append(edgs) @@ -292,9 +285,8 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): Vertices = self.outputs['Vertices'] Edges = self.outputs['Edges'] Polygons = self.outputs['Polygons'] - Vers_grouped = self.outputs['Vers_grouped'] Matrixes = self.outputs['Matrixes'] - Object = self.outputs['Object'] + Objects = self.outputs['Object'] if Vertices.is_linked: Vertices.sv_set(vers_out) @@ -305,13 +297,15 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): if Polygons.is_linked: Polygons.sv_set(pols_out) - if self.vergroups and Vers_grouped.is_linked: - Vers_grouped.sv_set(vers_out_grouped) + if 'Vers_grouped' in self.outputs: + Vers_grouped = self.outputs['Vers_grouped'] + if self.vergroups and Vers_grouped.is_linked: + Vers_grouped.sv_set(vers_out_grouped) if Matrixes.is_linked: Matrixes.sv_set(mtrx_out) - if Object.is_linked: - Object.sv_set(objs_out) + if Objects.is_linked: + Objects.sv_set(objs_out) def register(): -- GitLab From a513e826478d2a546f1a3816add7b0752e9341dc Mon Sep 17 00:00:00 2001 From: zeffii Date: Tue, 13 Dec 2016 21:55:12 +0100 Subject: [PATCH 04/18] correct itemsfromscene print message --- nodes/scene/objects_mk2.py | 1 + 1 file changed, 1 insertion(+) diff --git a/nodes/scene/objects_mk2.py b/nodes/scene/objects_mk2.py index 1e9224bf0..38da4db81 100644 --- a/nodes/scene/objects_mk2.py +++ b/nodes/scene/objects_mk2.py @@ -109,6 +109,7 @@ class SvObjSelected(bpy.types.Operator): handle = handle_read(name_no + name_tr) self.disable(context, handle) self.enable(context, handle) + handle = handle_read(name_no + name_tr) print('have got {0} items from scene.'.format(handle[1])) return {'FINISHED'} -- GitLab From 726c9b32221d26ddd4e8137cb97b5fe7daca5e39 Mon Sep 17 00:00:00 2001 From: zeffii Date: Tue, 13 Dec 2016 22:06:10 +0100 Subject: [PATCH 05/18] adjust displayname code --- nodes/scene/objects_mk2.py | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/nodes/scene/objects_mk2.py b/nodes/scene/objects_mk2.py index 38da4db81..62c7e2a4e 100644 --- a/nodes/scene/objects_mk2.py +++ b/nodes/scene/objects_mk2.py @@ -189,18 +189,16 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): opera.node_name = self.name opera.tree_name = self.id_data.name - # handle = handle_read(self.name + self.id_data.name) - # if self.objects_local: - # if handle[0]: - # for i, o in enumerate(handle[1]): - # if i > 4: - # layout.label('. . . more ' + str(len(handle[1]) - 5) + ' items') - # break - # layout.label(o) - # else: - # layout.label('--None--') - if self.objects_local: - layout.label(self.objects_local) + # Construct Node UI display of names currently being tracked, stop at the first 5.. + handle = handle_read(self.name + self.id_data.name) + if self.objects_local and handle[0]: + for i, o in enumerate(handle[1]): + layout.label(o) + if i >= 4: + layout.label(' . . . ' + str(len(handle[1]) - 5) + ' more items') + break + else: + layout.label('--None--') def update(self): pass -- GitLab From 2440c13bbcbb294c06832ae14fc1355926074954 Mon Sep 17 00:00:00 2001 From: zeffii Date: Tue, 13 Dec 2016 22:34:37 +0100 Subject: [PATCH 06/18] remove redundant creation of objs_out --- nodes/scene/objects_mk2.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/nodes/scene/objects_mk2.py b/nodes/scene/objects_mk2.py index 62c7e2a4e..8d2b8ca69 100644 --- a/nodes/scene/objects_mk2.py +++ b/nodes/scene/objects_mk2.py @@ -231,11 +231,9 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): vers_out_grouped = [] pols_out = [] mtrx_out = [] - objs_out = [] # iterate through references for obj in objs: - print(obj, obj.name) edgs = [] vers = [] @@ -277,7 +275,6 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): pols_out.append(pols) mtrx_out.append(mtrx) vers_out_grouped.append(vers_grouped) - objs_out.append(obj) if vers_out and vers_out[0]: @@ -304,7 +301,7 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): if Matrixes.is_linked: Matrixes.sv_set(mtrx_out) if Objects.is_linked: - Objects.sv_set(objs_out) + Objects.sv_set(objs) def register(): -- GitLab From f711fb05b5bcb9b3a046b3dca4dcf11761330462 Mon Sep 17 00:00:00 2001 From: zeffii Date: Wed, 14 Dec 2016 10:21:10 +0100 Subject: [PATCH 07/18] add back support for sv panel execution of obj insertion --- nodes/scene/objects_mk2.py | 22 +++++++++++++--------- ui/sv_panels.py | 10 ++++------ 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/nodes/scene/objects_mk2.py b/nodes/scene/objects_mk2.py index 8d2b8ca69..2f1f6d5d4 100644 --- a/nodes/scene/objects_mk2.py +++ b/nodes/scene/objects_mk2.py @@ -62,16 +62,16 @@ class SvObjSelected(bpy.types.Operator): bl_label = "Sverchok object selector" bl_options = {'REGISTER', 'UNDO'} + node_name = StringProperty() + tree_name = StringProperty() - def enable(self, context, handle): + def enable(self, node, handle): groups = bpy.data.groups - node = context.node name_no = node.name name_tr = node.id_data.name group_name = node.groupname - objects = [] if group_name and groups[group_name].objects: objs = groups[group_name].objects @@ -93,22 +93,26 @@ class SvObjSelected(bpy.types.Operator): node.objects_local = str(handle[1]) - def disable(self, context, handle): + def disable(self, node, handle): if not handle[0]: return - node = context.active_node handle_delete(node.name + node.id_data.name) def execute(self, context): - node = context.node + if self.node_name and self.tree_name: + ng = bpy.data.node_groups[self.name_tr] + node = ng.node_tree.nodes[self.name_no] + else: + node = context.node + name_no = node.name name_tr = node.id_data.name handle = handle_read(name_no + name_tr) - self.disable(context, handle) - self.enable(context, handle) + self.disable(node, handle) + self.enable(node, handle) handle = handle_read(name_no + name_tr) print('have got {0} items from scene.'.format(handle[1])) return {'FINISHED'} @@ -122,7 +126,7 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): def hide_show_versgroups(self, context): if self.vergroups and not ('Vers_grouped' in self.outputs): - self.outputs.new('StringsSocket', "Vers_grouped", "Vers_grouped") + self.outputs.new('StringsSocket', "Vers_grouped") elif not self.vergroups and ('Vers_grouped' in self.outputs): self.outputs.remove(self.outputs['Vers_grouped']) diff --git a/ui/sv_panels.py b/ui/sv_panels.py index 7e2556eb4..215eb8670 100644 --- a/ui/sv_panels.py +++ b/ui/sv_panels.py @@ -201,10 +201,9 @@ class Sv3DPanel(bpy.types.Panel): no = item.node_name ver = item.prop_name node = tree.nodes[no] - if node.label: - tex = node.label - else: - tex = no + + tex = node.label if node.label else no + if node.bl_idname == "ObjectsNodeMK2": row = col.row(align=True) row.label(text=node.label if node.label else no) @@ -213,8 +212,7 @@ class Sv3DPanel(bpy.types.Panel): op = colo.operator("node.sverchok_object_insertion", text="Get") op.node_name = node.name op.tree_name = tree.name - op.grup_name = node.groupname - op.sort = node.sort + elif node.bl_idname in {"IntegerNode", "FloatNode"}: row = col.row(align=True) row.prop(node, ver, text=tex) -- GitLab From a074d58897ffb1a2887ae6eb8c15c6061baf6913 Mon Sep 17 00:00:00 2001 From: zeffii Date: Wed, 14 Dec 2016 10:42:58 +0100 Subject: [PATCH 08/18] fix typo --- nodes/scene/objects_mk2.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nodes/scene/objects_mk2.py b/nodes/scene/objects_mk2.py index 2f1f6d5d4..7ca4ebda4 100644 --- a/nodes/scene/objects_mk2.py +++ b/nodes/scene/objects_mk2.py @@ -102,8 +102,8 @@ class SvObjSelected(bpy.types.Operator): def execute(self, context): if self.node_name and self.tree_name: - ng = bpy.data.node_groups[self.name_tr] - node = ng.node_tree.nodes[self.name_no] + ng = bpy.data.node_groups[self.tree_name] + node = ng.node_tree.nodes[self.node_name] else: node = context.node -- GitLab From 984a4e93abaaa17a95f4b0420d897bfc57e05742 Mon Sep 17 00:00:00 2001 From: zeffii Date: Wed, 14 Dec 2016 10:48:16 +0100 Subject: [PATCH 09/18] remove invalid attribute node_tree for node_groups --- nodes/scene/objects_mk2.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nodes/scene/objects_mk2.py b/nodes/scene/objects_mk2.py index 7ca4ebda4..1bc511503 100644 --- a/nodes/scene/objects_mk2.py +++ b/nodes/scene/objects_mk2.py @@ -103,7 +103,7 @@ class SvObjSelected(bpy.types.Operator): if self.node_name and self.tree_name: ng = bpy.data.node_groups[self.tree_name] - node = ng.node_tree.nodes[self.node_name] + node = ng.nodes[self.node_name] else: node = context.node -- GitLab From a26fa200294a9363454811dd128f979aba7bac56 Mon Sep 17 00:00:00 2001 From: zeffii Date: Wed, 14 Dec 2016 11:44:17 +0100 Subject: [PATCH 10/18] edit comment --- nodes/scene/objects_mk2.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nodes/scene/objects_mk2.py b/nodes/scene/objects_mk2.py index 1bc511503..36003805b 100644 --- a/nodes/scene/objects_mk2.py +++ b/nodes/scene/objects_mk2.py @@ -193,7 +193,7 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): opera.node_name = self.name opera.tree_name = self.id_data.name - # Construct Node UI display of names currently being tracked, stop at the first 5.. + # display names currently being tracked, stop at the first 5.. handle = handle_read(self.name + self.id_data.name) if self.objects_local and handle[0]: for i, o in enumerate(handle[1]): -- GitLab From 907ff46875f7052d05e27bc91e4f386e5a975580 Mon Sep 17 00:00:00 2001 From: zeffii Date: Wed, 14 Dec 2016 12:04:16 +0100 Subject: [PATCH 11/18] add slightly verbose objects_local name drawing to ui --- nodes/scene/objects_mk2.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/nodes/scene/objects_mk2.py b/nodes/scene/objects_mk2.py index 36003805b..bc5f15ed2 100644 --- a/nodes/scene/objects_mk2.py +++ b/nodes/scene/objects_mk2.py @@ -196,10 +196,13 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): # display names currently being tracked, stop at the first 5.. handle = handle_read(self.name + self.id_data.name) if self.objects_local and handle[0]: + remain = len(handle[1]) - 5 for i, o in enumerate(handle[1]): layout.label(o) - if i >= 4: - layout.label(' . . . ' + str(len(handle[1]) - 5) + ' more items') + if i > 3 and remain > 0: + dots = ' . . . ' + s = '' if remain == 1 else 's' + layout.label(dots + str(remain) + ' more item' + s) break else: layout.label('--None--') -- GitLab From da507b63b7158a564e5cabe6323bdff860a95909 Mon Sep 17 00:00:00 2001 From: zeffii Date: Wed, 14 Dec 2016 12:07:49 +0100 Subject: [PATCH 12/18] add slightly verbose objects_local name drawing to ui 2 --- nodes/scene/objects_mk2.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nodes/scene/objects_mk2.py b/nodes/scene/objects_mk2.py index bc5f15ed2..779f82787 100644 --- a/nodes/scene/objects_mk2.py +++ b/nodes/scene/objects_mk2.py @@ -199,7 +199,7 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): remain = len(handle[1]) - 5 for i, o in enumerate(handle[1]): layout.label(o) - if i > 3 and remain > 0: + if i > 4 and remain > 0: dots = ' . . . ' s = '' if remain == 1 else 's' layout.label(dots + str(remain) + ' more item' + s) -- GitLab From 8f1e26016145108037cc0c7bf68752409f4f7e08 Mon Sep 17 00:00:00 2001 From: zeffii Date: Wed, 14 Dec 2016 13:49:02 +0100 Subject: [PATCH 13/18] add node name to except clause and correct grammar --- nodes/scene/objects_mk2.py | 46 +++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/nodes/scene/objects_mk2.py b/nodes/scene/objects_mk2.py index 779f82787..7838fc166 100644 --- a/nodes/scene/objects_mk2.py +++ b/nodes/scene/objects_mk2.py @@ -94,6 +94,7 @@ class SvObjSelected(bpy.types.Operator): def disable(self, node, handle): + node.objects_local = '' if not handle[0]: return handle_delete(node.name + node.id_data.name) @@ -125,10 +126,13 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): bl_icon = 'OUTLINER_OB_EMPTY' def hide_show_versgroups(self, context): - if self.vergroups and not ('Vers_grouped' in self.outputs): - self.outputs.new('StringsSocket', "Vers_grouped") - elif not self.vergroups and ('Vers_grouped' in self.outputs): - self.outputs.remove(self.outputs['Vers_grouped']) + outs = self.outputs + showing_vg = 'Vers_grouped' in outs + + if self.vergroups and not showing_vg: + outs.new('StringsSocket', 'Vers_grouped') + elif not self.vergroups and showing_vg: + outs.remove(outs['Vers_grouped']) objects_local = StringProperty( name='local objects in', description='objects, binded to current node', @@ -157,6 +161,7 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): default=True, update=updateNode) + def sv_init(self, context): self.outputs.new('VerticesSocket', "Vertices") self.outputs.new('StringsSocket', "Edges") @@ -164,6 +169,21 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): self.outputs.new('MatrixSocket', "Matrixes") self.outputs.new('SvObjectSocket', "Object") + def draw_obj_names(self, layout): + # display names currently being tracked, stop at the first 5.. + handle = handle_read(self.name + self.id_data.name) + if self.objects_local and handle[0]: + remain = len(handle[1]) - 5 + for i, o in enumerate(handle[1]): + layout.label(o) + if i > 4 and remain > 0: + dots = ' . . . ' + s = '' if remain == 1 else 's' + layout.label(dots + str(remain) + ' more item' + s) + break + else: + layout.label('--None--') + def draw_buttons(self, context, layout): #row.prop(self, 'groupname', text='') col = layout.column(align=True) @@ -192,20 +212,9 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): opera = row.operator('node.sverchok_object_in_selector', text='Select') opera.node_name = self.name opera.tree_name = self.id_data.name + + self.draw_obj_names(layout) - # display names currently being tracked, stop at the first 5.. - handle = handle_read(self.name + self.id_data.name) - if self.objects_local and handle[0]: - remain = len(handle[1]) - 5 - for i, o in enumerate(handle[1]): - layout.label(o) - if i > 4 and remain > 0: - dots = ' . . . ' - s = '' if remain == 1 else 's' - layout.label(dots + str(remain) + ' more item' + s) - break - else: - layout.label('--None--') def update(self): pass @@ -217,6 +226,7 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): def process(self): if not self.objects_local: + print('|' + self.objects_local + '|') return scene = bpy.context.scene @@ -273,7 +283,7 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): bpy.data.meshes.remove(obj_data, do_unlink=True) except: - print('failure in process between freezed area') + print('failure in process between frozen area', self.name) self.id_data.unfreeze(hard=True) -- GitLab From 45d5f5537a79f0cb87815dfb84feb63b514399e0 Mon Sep 17 00:00:00 2001 From: zeffii Date: Wed, 14 Dec 2016 15:44:30 +0100 Subject: [PATCH 14/18] remove debug prints --- nodes/scene/objects_mk2.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/nodes/scene/objects_mk2.py b/nodes/scene/objects_mk2.py index 7838fc166..0c085bb26 100644 --- a/nodes/scene/objects_mk2.py +++ b/nodes/scene/objects_mk2.py @@ -79,6 +79,7 @@ class SvObjSelected(bpy.types.Operator): objs = bpy.context.selected_objects else: self.report({'WARNING'}, 'No object selected') + self.disable(node, handle) return for o in objs: @@ -95,6 +96,7 @@ class SvObjSelected(bpy.types.Operator): def disable(self, node, handle): node.objects_local = '' + bpy.ops.node.sverchok_update_current(node_group=node.id_data.name) if not handle[0]: return handle_delete(node.name + node.id_data.name) @@ -115,6 +117,7 @@ class SvObjSelected(bpy.types.Operator): self.disable(node, handle) self.enable(node, handle) handle = handle_read(name_no + name_tr) + print('end of execute', handle) print('have got {0} items from scene.'.format(handle[1])) return {'FINISHED'} @@ -225,10 +228,6 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): handle_write(name, literal_eval(self.objects_local)) def process(self): - if not self.objects_local: - print('|' + self.objects_local + '|') - return - scene = bpy.context.scene name = self.name + self.id_data.name -- GitLab From 5e66a24fe62c6f04d5c98c6b24aa044a7109a673 Mon Sep 17 00:00:00 2001 From: zeffii Date: Wed, 14 Dec 2016 17:25:36 +0100 Subject: [PATCH 15/18] -rm whitespace --- nodes/scene/objects_mk2.py | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/nodes/scene/objects_mk2.py b/nodes/scene/objects_mk2.py index 0c085bb26..34c189d19 100644 --- a/nodes/scene/objects_mk2.py +++ b/nodes/scene/objects_mk2.py @@ -143,27 +143,22 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): groupname = StringProperty( name='groupname', description='group of objects (green outline CTRL+G)', - default='', - update=updateNode) + default='', update=updateNode) modifiers = BoolProperty( name='Modifiers', description='Apply modifier geometry to import (original untouched)', - default=False, - update=updateNode) + default=False, update=updateNode) vergroups = BoolProperty( name='Vergroups', description='Use vertex groups to nesty insertion', - default=False, - update=hide_show_versgroups) + default=False, update=hide_show_versgroups) sort = BoolProperty( name='sort by name', description='sorting inserted objects by names', - default=True, - update=updateNode) - + default=True, update=updateNode) def sv_init(self, context): self.outputs.new('VerticesSocket', "Vertices") @@ -208,7 +203,6 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): row = col.row(align=True) row.prop(self, 'sort', text='Sort', toggle=True) row.prop(self, "modifiers", text="Post", toggle=True) - # row = layout.row(align=True) row.prop(self, "vergroups", text="VeGr", toggle=True) row = col.row(align=True) @@ -229,7 +223,6 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): def process(self): scene = bpy.context.scene - name = self.name + self.id_data.name handle = handle_read(name) -- GitLab From fc5561f942e796b0c98b1062ba02fc9a5daa3079 Mon Sep 17 00:00:00 2001 From: zeffii Date: Thu, 15 Dec 2016 10:12:42 +0100 Subject: [PATCH 16/18] restructure draw_obj_names --- nodes/scene/objects_mk2.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/nodes/scene/objects_mk2.py b/nodes/scene/objects_mk2.py index 34c189d19..96973a93f 100644 --- a/nodes/scene/objects_mk2.py +++ b/nodes/scene/objects_mk2.py @@ -171,13 +171,14 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): # display names currently being tracked, stop at the first 5.. handle = handle_read(self.name + self.id_data.name) if self.objects_local and handle[0]: + remain = len(handle[1]) - 5 - for i, o in enumerate(handle[1]): - layout.label(o) + more_items = '... {0} more item' + ('' if remain == 1 else 's') + + for i, obj_name in enumerate(handle[1]): + layout.label(obj_name) if i > 4 and remain > 0: - dots = ' . . . ' - s = '' if remain == 1 else 's' - layout.label(dots + str(remain) + ' more item' + s) + layout.label(more_items.format(remain)) break else: layout.label('--None--') -- GitLab From 10e645714604a2e11a26485df45b9f2379672acb Mon Sep 17 00:00:00 2001 From: zeffii Date: Thu, 15 Dec 2016 10:21:06 +0100 Subject: [PATCH 17/18] clean postfix --- nodes/scene/objects_mk2.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/nodes/scene/objects_mk2.py b/nodes/scene/objects_mk2.py index 96973a93f..1395d00dc 100644 --- a/nodes/scene/objects_mk2.py +++ b/nodes/scene/objects_mk2.py @@ -171,13 +171,14 @@ class ObjectsNodeMK2(bpy.types.Node, SverchCustomTreeNode): # display names currently being tracked, stop at the first 5.. handle = handle_read(self.name + self.id_data.name) if self.objects_local and handle[0]: - + remain = len(handle[1]) - 5 - more_items = '... {0} more item' + ('' if remain == 1 else 's') for i, obj_name in enumerate(handle[1]): layout.label(obj_name) if i > 4 and remain > 0: + postfix = ('' if remain == 1 else 's') + more_items = '... {0} more item' + postfix layout.label(more_items.format(remain)) break else: -- GitLab From ec078f5948b60d12cd5fb573874fb1fab351cf11 Mon Sep 17 00:00:00 2001 From: zeffii Date: Thu, 15 Dec 2016 10:46:28 +0100 Subject: [PATCH 18/18] bump init and settle on updates to objmk2 --- __init__.py | 2 +- ui/sv_panels.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/__init__.py b/__init__.py index 19763922f..2909edaad 100755 --- a/__init__.py +++ b/__init__.py @@ -45,7 +45,7 @@ bl_info = { "AgustinJB, Zeffii, Kosvor, " "Portnov, Elfnor" ), - "version": (0, 5, 8, 1), + "version": (0, 5, 8, 2), "blender": (2, 7, 8), "location": "Nodes > CustomNodesTree > Add user nodes", "description": "Parametric node-based geometry programming", diff --git a/ui/sv_panels.py b/ui/sv_panels.py index 215eb8670..9d5ef564d 100644 --- a/ui/sv_panels.py +++ b/ui/sv_panels.py @@ -80,6 +80,7 @@ class Sv3DViewObjInUpdater(bpy.types.Operator, object): nodes = [] for n in ng.nodes: if n.bl_idname in {'ObjectsNode','ObjectsNodeMK2'}: + print('adding', n.name, 'to process_from_nodes') nodes.append(n) if nodes: obj_nodes.append(nodes) -- GitLab