From a2243f147d833569d2dc45d845299d83635fa849 Mon Sep 17 00:00:00 2001 From: zeffii Date: Mon, 22 May 2017 11:07:18 +0200 Subject: [PATCH 1/7] vd and bmv --- nodes/viz/viewer_bmesh_mk2.py | 2 +- nodes/viz/viewer_mk2.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/nodes/viz/viewer_bmesh_mk2.py b/nodes/viz/viewer_bmesh_mk2.py index a3446d873..2159e5821 100644 --- a/nodes/viz/viewer_bmesh_mk2.py +++ b/nodes/viz/viewer_bmesh_mk2.py @@ -208,6 +208,7 @@ class SvBmeshViewOp2(bpy.types.Operator): class SvBmeshViewerNodeMK2(bpy.types.Node, SverchCustomTreeNode): + """ bmv Generate Live geom """ bl_idname = 'SvBmeshViewerNodeMK2' bl_label = 'Viewer BMesh' @@ -308,7 +309,6 @@ class SvBmeshViewerNodeMK2(bpy.types.Node, SverchCustomTreeNode): if col: row = col.row(align=True) row.prop(self, "grouping", text="Group", toggle=True) - row.separator() row.prop(self, "merge", text="Merge", toggle=True) row = col.row(align=True) diff --git a/nodes/viz/viewer_mk2.py b/nodes/viz/viewer_mk2.py index 9845cf3bc..622dafe87 100644 --- a/nodes/viz/viewer_mk2.py +++ b/nodes/viz/viewer_mk2.py @@ -161,7 +161,7 @@ class SvObjBakeMK2(bpy.types.Operator): class ViewerNode2(bpy.types.Node, SverchCustomTreeNode): - ''' ViewerNode2 ''' + ''' vd View Geometry /// ViewerNode2 ''' bl_idname = 'ViewerNode2' bl_label = 'Viewer Draw' bl_icon = 'RETOPO' -- GitLab From 24b5b719a70346195082ecf5d4bad46aa6eb6642 Mon Sep 17 00:00:00 2001 From: zeffii Date: Mon, 22 May 2017 11:11:17 +0200 Subject: [PATCH 2/7] uv edgsurf --- nodes/modifier_make/uv_connect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nodes/modifier_make/uv_connect.py b/nodes/modifier_make/uv_connect.py index 353901c75..2b34111d5 100644 --- a/nodes/modifier_make/uv_connect.py +++ b/nodes/modifier_make/uv_connect.py @@ -24,7 +24,7 @@ from sverchok.data_structure import (updateNode, fullList, multi_socket, levelsO class LineConnectNodeMK2(bpy.types.Node, SverchCustomTreeNode): - ''' UV Connect node ''' + ''' uv Edges/Surfaces ''' bl_idname = 'LineConnectNodeMK2' bl_label = 'UV Connection' bl_icon = 'OUTLINER_OB_EMPTY' -- GitLab From b56af18bd881d8935050927042d7bf4b370fbc0d Mon Sep 17 00:00:00 2001 From: zeffii Date: Mon, 22 May 2017 11:21:27 +0200 Subject: [PATCH 3/7] uv connect svpep1 --- nodes/generator/script1_lite.py | 2 +- nodes/modifier_make/uv_connect.py | 48 +++++++++++++------------------ 2 files changed, 21 insertions(+), 29 deletions(-) diff --git a/nodes/generator/script1_lite.py b/nodes/generator/script1_lite.py index e74e9fb93..e24cc7dfd 100644 --- a/nodes/generator/script1_lite.py +++ b/nodes/generator/script1_lite.py @@ -94,8 +94,8 @@ class SvScriptNodeLiteTextImport(bpy.types.Operator): class SvScriptNodeLite(bpy.types.Node, SverchCustomTreeNode): + ''' snl SN Lite /// a lite version of SN ''' - ''' Script node Lite''' bl_idname = 'SvScriptNodeLite' bl_label = 'Scripted Node Lite' bl_icon = 'SCRIPTPLUGINS' diff --git a/nodes/modifier_make/uv_connect.py b/nodes/modifier_make/uv_connect.py index 2b34111d5..996bf9f1b 100644 --- a/nodes/modifier_make/uv_connect.py +++ b/nodes/modifier_make/uv_connect.py @@ -29,37 +29,29 @@ class LineConnectNodeMK2(bpy.types.Node, SverchCustomTreeNode): bl_label = 'UV Connection' bl_icon = 'OUTLINER_OB_EMPTY' - JoinLevel = IntProperty(name='JoinLevel', description='Choose connect level of data (see help)', - default=1, min=1, max=2, - update=updateNode) - polsORedges = [('Pols', 'Pols', 'Pols'), ('Edges', 'Edges', 'Edges')] - polygons = EnumProperty(name='polsORedges', - items=polsORedges, - options={'ANIMATABLE'}, update=updateNode) - direction = [('U_dir', 'U_dir', 'u direction'), ('V_dir', 'V_dir', 'v direction')] - dir_check = EnumProperty(name='direction', - items=direction, - options={'ANIMATABLE'}, update=updateNode) - # as cyclic too have to have U cyclic and V cyclic flags - two flags - cicl_check_U = BoolProperty(name='cycleU', description='cycle U', - default=False, - update=updateNode) - cicl_check_V = BoolProperty(name='cycleV', description='cycle V', - default=False, - update=updateNode) - cup_U = BoolProperty(name='cup U', description='cup U', - default=False, - update=updateNode) - cup_V = BoolProperty(name='cup V', description='cup V', - default=False, - update=updateNode) - slice_check = BoolProperty(name='slice', description='slice polygon', - default=True, - update=updateNode) - base_name = 'vertices ' multi_socket_type = 'VerticesSocket' + direction = [('U_dir', 'U_dir', 'u direction'), ('V_dir', 'V_dir', 'v direction')] + polsORedges = [('Pols', 'Pols', 'Pols'), ('Edges', 'Edges', 'Edges')] + + JoinLevel = IntProperty( + name='JoinLevel', description='Choose connect level of data (see help)', + default=1, min=1, max=2, update=updateNode) + + polygons = EnumProperty( + name='polsORedges', items=polsORedges, options={'ANIMATABLE'}, update=updateNode) + + dir_check = EnumProperty( + name='direction', items=direction, options={'ANIMATABLE'}, update=updateNode) + + # as cyclic too have to have U cyclic and V cyclic flags - two flags + cicl_check_U = BoolProperty(name='cycleU', description='cycle U', default=False, update=updateNode) + cicl_check_V = BoolProperty(name='cycleV', description='cycle V', default=False, update=updateNode) + cup_U = BoolProperty(name='cup U', description='cup U', default=False, update=updateNode) + cup_V = BoolProperty(name='cup V', description='cup V', default=False, update=updateNode) + slice_check = BoolProperty(name='slice', description='slice polygon', default=True, update=updateNode) + def sv_init(self, context): self.inputs.new('VerticesSocket', 'vertices', 'vertices') self.outputs.new('VerticesSocket', 'vertices', 'vertices') -- GitLab From 4572b7035036ec79b8cc4ad28e4d982d0bd002b8 Mon Sep 17 00:00:00 2001 From: zeffii Date: Mon, 22 May 2017 12:02:43 +0200 Subject: [PATCH 4/7] rv random unit vec --- nodes/generator/random_vector_mk2.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nodes/generator/random_vector_mk2.py b/nodes/generator/random_vector_mk2.py index 906d560fd..5932741a2 100644 --- a/nodes/generator/random_vector_mk2.py +++ b/nodes/generator/random_vector_mk2.py @@ -25,7 +25,7 @@ from sverchok.data_structure import updateNode, match_long_repeat class RandomVectorNodeMK2(bpy.types.Node, SverchCustomTreeNode): - ''' Random unit Vectors''' + ''' rv Random unit Vec''' bl_idname = 'RandomVectorNodeMK2' bl_label = 'Random Vector MK2' bl_icon = 'RNDCURVE' -- GitLab From fb4d270ed789707a9fa8190520d4fa8f4670237b Mon Sep 17 00:00:00 2001 From: zeffii Date: Tue, 23 May 2017 10:17:39 +0200 Subject: [PATCH 5/7] push loops and maxloops --- core/monad.py | 32 +++++++++++++++++++++---- nodes/generators_extended/profile.py | 36 ++++++++++++++++------------ 2 files changed, 49 insertions(+), 19 deletions(-) diff --git a/core/monad.py b/core/monad.py index 47729e03f..efc3b8a99 100644 --- a/core/monad.py +++ b/core/monad.py @@ -341,6 +341,22 @@ def split_list(data, size=1): def unwrap(data): return list(chain.from_iterable(data)) +def uget(self, origin): + return self[origin] + +def uset(self, value, origin): + MAX = abs(getattr(self, 'loops_max')) + MIN = 0 + + if MIN <= value <= MAX: + self[origin] = value + elif value > MAX: + self[origin] = MAX + else: + self[origin] = MIN + return None + + class SvGroupNodeExp: """ Base class for all monad instances @@ -356,8 +372,12 @@ class SvGroupNodeExp: default=False, update=updateNode) loop_me = BoolProperty(default=False, update=updateNode) - max_loops = IntProperty(name='loop n times', min=0, max=4, update=updateNode) - + loops_max = IntProperty(default=5, description='maximum') + loops = IntProperty( + name='loop n times', default=0, + get=lambda s: uget(s, 'loops'), + set=lambda s, val: uset(s, val, 'loops'), + update=updateNode) def draw_label(self): return self.monad.name @@ -370,6 +390,7 @@ class SvGroupNodeExp: return None # or raise LookupError or something, anyway big FAIL def sv_init(self, context): + self['loops_max'] = 0 self.use_custom_color = True self.color = MONAD_COLOR @@ -388,6 +409,7 @@ class SvGroupNodeExp: def draw_buttons_ext(self, context, layout): self.draw_buttons(context, layout) + layout.prop(self, 'loops_max') def draw_buttons(self, context, layout): @@ -402,7 +424,7 @@ class SvGroupNodeExp: c2 = layout.column() row = c2.row(align=True) row.prop(self, "loop_me", text='Loop', toggle=True) - row.prop(self, "max_loops", text='N') + row.prop(self, "loops", text='N') monad = self.monad if monad: @@ -414,6 +436,8 @@ class SvGroupNodeExp: if context: f = d.operator('node.sv_group_edit', text='edit!') f.group_name = monad.name + else: + layout.prop(self, 'loops_max') def process(self): if not self.monad: @@ -422,7 +446,7 @@ class SvGroupNodeExp: self.process_vectorize() return elif self.loop_me: - self.process_looped(self.max_loops) + self.process_looped(self.loops) return monad = self.monad diff --git a/nodes/generators_extended/profile.py b/nodes/generators_extended/profile.py index a73ad5f4b..1949c8391 100644 --- a/nodes/generators_extended/profile.py +++ b/nodes/generators_extended/profile.py @@ -548,24 +548,22 @@ class SvProfileNode(bpy.types.Node, SverchCustomTreeNode): current_axis = StringProperty(default='Z') selected_axis = EnumProperty( - items=axis_options, - name="Type of axis", - description="offers basic axis output vectors X|Y|Z", - default="Z", - update=mode_change) + items=axis_options, update=mode_change, name="Type of axis", + description="offers basic axis output vectors X|Y|Z", default="Z") profile_file = StringProperty(default="", update=updateNode) filename = StringProperty(default="", update=updateNode) posxy = FloatVectorProperty(default=(0.0, 0.0), size=2) extended_parsing = BoolProperty(default=False) - precision = IntProperty(name = "Precision", - description = "Number of decimal places used for coordinates when generating profile from selection", - min=0, max=10, default=8, - update=updateNode) - curve_points_count = IntProperty(name = "Curve points count", - description = "Default number of points on curve segment", - min=1, max=100, default=20, - update=updateNode) + + precision = IntProperty( + name="Precision", min=0, max=10, default=8, update=updateNode, + description="decimal precision of coordinates when generating profile from selection") + + curve_points_count = IntProperty( + name="Curve points count", min=1, max=100, default=20, update=updateNode, + description="Default number of points on curve segment") + def draw_buttons(self, context, layout): col = layout.column(align=True) @@ -579,6 +577,7 @@ class SvProfileNode(bpy.types.Node, SverchCustomTreeNode): # row.prop(self, "profile_file", text="") row.prop_search(self, 'filename', bpy.data, 'texts', text='', icon='TEXT') + def draw_buttons_ext(self, context, layout): row = layout.row(align=True) row.prop(self, "extended_parsing", text="extended parsing") @@ -586,6 +585,7 @@ class SvProfileNode(bpy.types.Node, SverchCustomTreeNode): layout.prop(self, "precision") layout.prop(self, "curve_points_count") + def sv_init(self, context): self.inputs.new('StringsSocket', "a", "a") self.inputs.new('StringsSocket', "b", "b") @@ -593,6 +593,7 @@ class SvProfileNode(bpy.types.Node, SverchCustomTreeNode): self.outputs.new('VerticesSocket', "Verts", "Verts") self.outputs.new('StringsSocket', "Edges", "Edges") + def adjust_inputs(self): ''' takes care of adding new inputs until reaching 26, @@ -609,6 +610,7 @@ class SvProfileNode(bpy.types.Node, SverchCustomTreeNode): elif not inputs[-2].is_linked: inputs.remove(inputs[-1]) + def update(self): ''' update analyzes the state of the node and returns if the criteria to start processing @@ -628,6 +630,7 @@ class SvProfileNode(bpy.types.Node, SverchCustomTreeNode): self.adjust_inputs() + def homogenize_input(self, segments, longest): ''' edit segments in place, extend all to match length of longest @@ -636,6 +639,7 @@ class SvProfileNode(bpy.types.Node, SverchCustomTreeNode): if letter_dict['length'] < longest: fullList(letter_dict['data'], longest) + def meta_get(self, s_name, fallback, level): ''' private function for the get_input function, accepts level 0..2 @@ -655,6 +659,7 @@ class SvProfileNode(bpy.types.Node, SverchCustomTreeNode): else: return fallback + def get_input(self): ''' collect all input socket data, and track the longest sequence. @@ -675,6 +680,7 @@ class SvProfileNode(bpy.types.Node, SverchCustomTreeNode): return segments, longest + def process(self): if not self.outputs[0].is_linked: @@ -721,5 +727,5 @@ def unregister(): bpy.utils.unregister_class(SvPrifilizer) bpy.utils.unregister_class(SvProfileNode) -if __name__ == '__main__': - register() +# if __name__ == '__main__': +# register() -- GitLab From 14a8a8422d7e91ae6e682b8403216e5bdd785808 Mon Sep 17 00:00:00 2001 From: zeffii Date: Tue, 23 May 2017 10:20:23 +0200 Subject: [PATCH 6/7] add description --- core/monad.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/monad.py b/core/monad.py index efc3b8a99..c356c7460 100644 --- a/core/monad.py +++ b/core/monad.py @@ -374,7 +374,8 @@ class SvGroupNodeExp: loop_me = BoolProperty(default=False, update=updateNode) loops_max = IntProperty(default=5, description='maximum') loops = IntProperty( - name='loop n times', default=0, + name='loop n times', default=0, + description='change max value in sidebar with variable named loops_max', get=lambda s: uget(s, 'loops'), set=lambda s, val: uset(s, val, 'loops'), update=updateNode) -- GitLab From 40234ced108df3fe85b1de018cf928fa163cfbf4 Mon Sep 17 00:00:00 2001 From: zeffii Date: Tue, 23 May 2017 10:23:34 +0200 Subject: [PATCH 7/7] add correct loop idx --- core/monad.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/monad.py b/core/monad.py index c356c7460..a79f390c3 100644 --- a/core/monad.py +++ b/core/monad.py @@ -391,7 +391,7 @@ class SvGroupNodeExp: return None # or raise LookupError or something, anyway big FAIL def sv_init(self, context): - self['loops_max'] = 0 + self['loops'] = 0 self.use_custom_color = True self.color = MONAD_COLOR -- GitLab