diff --git a/nodes/modifier_change/extrude_multi_alt.py b/nodes/modifier_change/extrude_multi_alt.py index aa6ca520183b111fb97e8eb4f55f43227cdf1e89..013f2a4eb56dc7fc5dfcedad2f7b448a187ad7c8 100644 --- a/nodes/modifier_change/extrude_multi_alt.py +++ b/nodes/modifier_change/extrude_multi_alt.py @@ -67,95 +67,91 @@ def vsca(self, r): return self.sca * (1 + gauss(0, self.var3 / 3)) -def patch_update(self, context): - updateNode(context.node, context) - - -class SvMExtrudeProps(bpy.types.PropertyGroup): +class SvMExtrudeProps(): off = FloatProperty( soft_min=0.001, soft_max=10, min=-100, max=100, default=1.0, - name="Offset", description="Translation", update=patch_update) + name="Offset", description="Translation", update=updateNode) offx = FloatProperty( soft_min=-10.0, soft_max=10.0, min=-100.0, max=100.0, default=0.0, - name="Loc X", description="Global Translation X", update=patch_update) + name="Loc X", description="Global Translation X", update=updateNode) offy = FloatProperty( soft_min=-10.0, soft_max=10.0, min=-100.0, max=100.0, default=0.0, - name="Loc Y", description="Global Translation Y", update=patch_update) + name="Loc Y", description="Global Translation Y", update=updateNode) offz = FloatProperty( soft_min=-10.0, soft_max=10.0, min=-100.0, max=100.0, default=0.0, - name="Loc Z", description="Global Translation Z", update=patch_update) + name="Loc Z", description="Global Translation Z", update=updateNode) rotx = FloatProperty( min=-85, max=85, soft_min=-30, soft_max=30, default=0, - name="Rot X", description="X Rotation", update=patch_update) + name="Rot X", description="X Rotation", update=updateNode) roty = FloatProperty( min=-85, max=85, soft_min=-30, soft_max=30, default=0, - name="Rot Y", description="Y Rotation", update=patch_update) + name="Rot Y", description="Y Rotation", update=updateNode) rotz = FloatProperty( min=-85, max=85, soft_min=-30, soft_max=30, default=-0, - name="Rot Z", description="Z Rotation", update=patch_update) + name="Rot Z", description="Z Rotation", update=updateNode) nrotx = FloatProperty( min=-85, max=85, soft_min=-30, soft_max=30, default=0, - name="N Rot X", description="Normal X Rotation", update=patch_update) + name="N Rot X", description="Normal X Rotation", update=updateNode) nroty = FloatProperty( min=-85, max=85, soft_min=-30, soft_max=30, default=0, - name="N Rot Y", description="Normal Y Rotation", update=patch_update) + name="N Rot Y", description="Normal Y Rotation", update=updateNode) nrotz = FloatProperty( min=-85, max=85, soft_min=-30, soft_max=30, default=-0, - name="N Rot Z", description="Normal Z Rotation", update=patch_update) + name="N Rot Z", description="Normal Z Rotation", update=updateNode) sca = FloatProperty( - min=0.01, max=10, soft_min=0.5, soft_max=1.5, default=1.0, update=patch_update, - name="Scale", description="Scaling of the selected faces after extrusion") + min=0.01, max=10, soft_min=0.5, soft_max=1.5, default=1.0, + name="Scale", description="Scaling of the selected faces after extrusion", update=updateNode) var1 = FloatProperty( soft_min=-1, soft_max=1, default=0, min=-10, max=10, - name="Offset Var", description="Offset variation", update=patch_update) + name="Offset Var", description="Offset variation", update=updateNode) var2 = FloatProperty( min=-10, max=10, soft_min=-1, soft_max=1, default=0, - name="Rotation Var", description="Rotation variation", update=patch_update) + name="Rotation Var", description="Rotation variation", update=updateNode) var3 = FloatProperty( min=-10, max=10, soft_min=-1, soft_max=1, default=0, - name="Scale Noise", description="Scaling noise", update=patch_update) + name="Scale Noise", description="Scaling noise", update=updateNode) var4 = IntProperty( - min=0, max=100, default=100, update=patch_update, - name="Probability", description="Probability, chance of extruding a face") + min=0, max=100, default=100, + name="Probability", description="Probability, chance of extruding a face", update=updateNode) num = IntProperty( min=1, max=500, soft_max=100, default=5, - name="Repeat", description="Repetitions", update=patch_update) + name="Repeat", description="Repetitions", update=updateNode) ran = IntProperty( min=-9999, max=9999, default=0, - name="Seed", description="Seed to feed random values", update=patch_update) + name="Seed", description="Seed to feed random values", update=updateNode) opt1 = BoolProperty( - default=True, update=patch_update, - name="Polygon coordinates", description="Polygon coordinates, Object coordinates") + default=True, name="Polygon coordinates", + description="Polygon coordinates, Object coordinates", update=updateNode) opt2 = BoolProperty( - default=False, update=patch_update, - name="Proportional offset", description="Scale * Offset") + default=False, name="Proportional offset", + description="Scale * Offset", update=updateNode) opt3 = BoolProperty( - default=False, update=patch_update, - name="Per step rotation noise", description="Per step rotation noise, Initial rotation noise") + default=False, name="Per step rotation noise", + description="Per step rotation noise, Initial rotation noise", update=updateNode) opt4 = BoolProperty( - default=False, update=patch_update, - name="Per step scale noise", description="Per step scale noise, Initial scale noise") + default=False, name="Per step scale noise", + description="Per step scale noise, Initial scale noise", update=updateNode) def draw_ui(self, context, layout): @@ -197,8 +193,8 @@ def draw_ui(self, context, layout): def perform_mextrude(self, bm, sel): after = [] - origin = Vector([0.0, 0.0, 0.0]) + # faces loop for i, of in enumerate(sel): nro = nrot(self, of.normal) @@ -207,10 +203,10 @@ def perform_mextrude(self, bm, sel): of.normal_update() # initial rotation noise - if self.opt3 is False: + if not self.opt3: rot = vrot(self, i) # initial scale noise - if self.opt4 is False: + if not self.opt4: s = vsca(self, i) # extrusion loop @@ -222,20 +218,20 @@ def perform_mextrude(self, bm, sel): no = nf.normal.copy() # face/obj coördinates - if self.opt1 is True: + if self.opt1: ce = nf.calc_center_bounds() else: ce = origin # per step rotation noise - if self.opt3 is True: + if self.opt3: rot = vrot(self, i + r) # per step scale noise - if self.opt4 is True: + if self.opt4: s = vsca(self, i + r) # proportional, scale * offset - if self.opt2 is True: + if self.opt2: off = s * off for v in nf.verts: @@ -260,12 +256,8 @@ def perform_mextrude(self, bm, sel): v.select = False for e in bm.edges: e.select = False - for f in after: - if f not in sel: - f.select = True - else: - f.select = False + f.select = f not in sel out_verts, _, out_faces = pydata_from_bmesh(bm) del bm @@ -273,7 +265,7 @@ def perform_mextrude(self, bm, sel): -class SvMultiExtrudeAlt(bpy.types.Node, SverchCustomTreeNode): +class SvMultiExtrudeAlt(bpy.types.Node, SverchCustomTreeNode, SvMExtrudeProps): ''' a SvMultiExtrudeAlt f ''' bl_idname = 'SvMultiExtrudeAlt' bl_label = 'MultiExtrude Alt from addons' @@ -286,7 +278,7 @@ class SvMultiExtrudeAlt(bpy.types.Node, SverchCustomTreeNode): self.outputs.new('StringsSocket', 'faces') def draw_buttons(self, context, layout): - draw_ui(self.svextrude_properties, context, layout) + draw_ui(self, context, layout) def process(self): @@ -306,7 +298,7 @@ class SvMultiExtrudeAlt(bpy.types.Node, SverchCustomTreeNode): f.select = True add_sell(f) - generated_data = perform_mextrude(self.svextrude_properties, bm, sel) + generated_data = perform_mextrude(self, bm, sel) if generated_data: outv, outf = generated_data out_verts.append(outv) @@ -317,13 +309,8 @@ class SvMultiExtrudeAlt(bpy.types.Node, SverchCustomTreeNode): def register(): - bpy.utils.register_class(SvMExtrudeProps) bpy.utils.register_class(SvMultiExtrudeAlt) - SvMultiExtrudeAlt.svextrude_properties = bpy.props.PointerProperty( - name="svextrude_properties", type=SvMExtrudeProps) #, update=patch_update) def unregister(): - del SvMultiExtrudeAlt.svextrude_properties - bpy.utils.unregister_class(SvMExtrudeProps) bpy.utils.unregister_class(SvMultiExtrudeAlt)