[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [3521] contrib/py/scripts/addons: update to multi extrude plus, added to folder under init.

Brendon Murphy meta.androcto1 at gmail.com
Fri Jun 22 13:24:02 CEST 2012


Revision: 3521
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=3521
Author:   meta-androcto
Date:     2012-06-22 11:23:57 +0000 (Fri, 22 Jun 2012)
Log Message:
-----------
update to multi extrude plus, added to folder under init.
Updated menu & new Bump function by macouno

Added Paths:
-----------
    contrib/py/scripts/addons/mesh_multi_extrude/
    contrib/py/scripts/addons/mesh_multi_extrude/__init__.py
    contrib/py/scripts/addons/mesh_multi_extrude/mesh_bump.py
    contrib/py/scripts/addons/mesh_multi_extrude/mesh_extras.py
    contrib/py/scripts/addons/mesh_multi_extrude/mesh_mextrude_plus.py

Removed Paths:
-------------
    contrib/py/scripts/addons/mesh_mextrude_plus.py

Deleted: contrib/py/scripts/addons/mesh_mextrude_plus.py
===================================================================
--- contrib/py/scripts/addons/mesh_mextrude_plus.py	2012-06-22 10:16:43 UTC (rev 3520)
+++ contrib/py/scripts/addons/mesh_mextrude_plus.py	2012-06-22 11:23:57 UTC (rev 3521)
@@ -1,376 +0,0 @@
-# ##### BEGIN GPL LICENSE BLOCK #####
-#
-#  This program is free software; you can redistribute it and/or
-#  modify it under the terms of the GNU General Public License
-#  as published by the Free Software Foundation; either version 2
-#  of the License, or (at your option) any later version.
-#
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#
-#  You should have received a copy of the GNU General Public License
-#  along with this program; if not, write to the Free Software Foundation,
-#  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-#
-# ##### END GPL LICENSE BLOCK #####
-
-################################################################################
-# Repeats extrusion + rotation + scale for one or more faces                   #
-
-################################################################################
-
-bl_info = {
-    "name": "MExtrude Plus",
-    "author": "liero",
-    "version": (1, 2, 8),
-    "blender": (2, 6, 2),
-    "location": "View3D > Tool Shelf",
-    "description": "Repeat extrusions from faces to create organic shapes",
-    "warning": "",
-    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts",
-    "tracker_url": "http://projects.blender.org/tracker/index.php?"\
-        "func=detail&aid=28570",
-    "category": "Mesh"}
-
-import  bpy, bmesh, mathutils, random
-from random import gauss
-from math import radians
-from mathutils import Euler, Vector
-from bpy.props import BoolProperty, FloatProperty, IntProperty, StringProperty
-
-def vloc(self, r):
-    random.seed(self.ran + r)
-    return self.off * (1 + random.gauss(0, self.var1 / 3))
-
-def vrot(self,r):
-    random.seed(self.ran+r)
-    return Euler((radians(self.rotx) + random.gauss(0, self.var2 / 3), \
-        radians(self.roty) + random.gauss(0, self.var2 / 3), \
-        radians(self.rotz) + random.gauss(0,self.var2 / 3)), 'XYZ')
-
-def vsca(self, r):
-    random.seed(self.ran + r)
-    return [self.sca * (1 + random.gauss(0, self.var3 / 3))] * 3
-# centroide de una seleccion de vertices
-def centro(ver):
-    vvv = [v for v in ver if v.select]
-    if not vvv or len(vvv) == len(ver): return ('error')
-    x = sum([round(v.co[0],4) for v in vvv]) / len(vvv)
-    y = sum([round(v.co[1],4) for v in vvv]) / len(vvv)
-    z = sum([round(v.co[2],4) for v in vvv]) / len(vvv)
-    return (x,y,z)
-
-# recuperar el estado original del objeto
-def volver(obj, copia, om, msm, msv):
-    for i in copia: obj.data.vertices[i].select = True
-    bpy.context.tool_settings.mesh_select_mode = msm
-    for i in range(len(msv)):
-        obj.modifiers[i].show_viewport = msv[i]
-
-class MExtrude(bpy.types.Operator):
-    bl_idname = 'object.mextrude'
-    bl_label = 'MExtrude'
-    bl_description = 'Multi Extrude'
-    bl_options = {'REGISTER', 'UNDO'}
-
-    off = FloatProperty(name='Offset', min=-2, soft_min=0.001, \
-        soft_max=2, max=5, default=.5, description='Translation')
-    rotx = FloatProperty(name='Rot X', min=-85, soft_min=-30, \
-        soft_max=30, max=85, default=0, description='X rotation')
-    roty = FloatProperty(name='Rot Y', min=-85, soft_min=-30, \
-        soft_max=30, max=85, default=0, description='Y rotation')
-    rotz = FloatProperty(name='Rot Z', min=-85, soft_min=-30, \
-        soft_max=30, max=85, default=-0, description='Z rotation')
-    sca = FloatProperty(name='Scale', min=0.1, soft_min=0.5, \
-        soft_max=1.2, max =2, default=.9, description='Scaling')
-    var1 = FloatProperty(name='Offset Var', min=-5, soft_min=-1, \
-        soft_max=1, max=5, default=0, description='Offset variation')
-    var2 = FloatProperty(name='Rotation Var', min=-5, soft_min=-1, \
-        soft_max=1, max=5, default=0, description='Rotation variation')
-    var3 = FloatProperty(name='Scale Noise', min=-5, soft_min=-1, \
-        soft_max=1, max=5, default=0, description='Scaling noise')
-    num = IntProperty(name='Repeat', min=1, max=50, soft_max=100, \
-        default=5, description='Repetitions')
-    ran = IntProperty(name='Seed', min=-9999, max=9999, default=0, \
-        description='Seed to feed random values')
-
-    @classmethod
-    def poll(cls, context):
-        return (context.object and context.object.type == 'MESH')
-
-    def draw(self, context):
-        layout = self.layout
-        column = layout.column(align=True)
-        column.label(text='Transformations:')
-        column.prop(self, 'off', slider=True)
-        column.prop(self, 'rotx', slider=True)
-        column.prop(self, 'roty', slider=True)
-        column.prop(self, 'rotz', slider=True)
-        column.prop(self, 'sca', slider=True)
-        column = layout.column(align=True)
-        column.label(text='Variation settings:')
-        column.prop(self, 'var1', slider=True)
-        column.prop(self, 'var2', slider=True)
-        column.prop(self, 'var3', slider=True)
-        column.prop(self, 'ran')
-        column = layout.column(align=False)
-        column.prop(self, 'num')
-
-    def execute(self, context):
-        obj = bpy.context.object
-        data, om, msv =  obj.data, obj.mode, []
-        msm = bpy.context.tool_settings.mesh_select_mode
-        bpy.context.tool_settings.mesh_select_mode = [False, False, True]
-
-        # disable modifiers
-        for i in range(len(obj.modifiers)):
-            msv.append(obj.modifiers[i].show_viewport)
-            obj.modifiers[i].show_viewport = False
-
-        # isolate selection
-        bpy.ops.object.mode_set()
-        bpy.ops.object.mode_set(mode='EDIT')
-        total = data.total_face_sel
-        try: bpy.ops.mesh.select_inverse()
-        except: bpy.ops.mesh.select_all(action='INVERT')
-        bpy.ops.object.vertex_group_assign(new=True)
-        bpy.ops.mesh.hide()
-
-        # faces loop
-        for i in range(total):
-            bpy.ops.object.editmode_toggle()
-            # is bmesh..?
-            try:
-                faces = data.polygons
-            except:
-                faces = data.faces
-            for f in faces:
-                if not f.hide:
-                    f.select = True
-                    break
-            norm = f.normal.copy()
-            rot, loc = vrot(self, i), vloc(self, i)
-            norm.rotate(obj.matrix_world.to_quaternion())
-            bpy.ops.object.editmode_toggle()
-
-            # extrude loop
-            for a in range(self.num):
-                norm.rotate(rot)
-                r2q = rot.to_quaternion()
-                bpy.ops.mesh.extrude_faces_move()
-                bpy.ops.transform.translate(value = norm * loc)
-                bpy.ops.transform.rotate(value = [r2q.angle], axis = r2q.axis)
-                bpy.ops.transform.resize(value = vsca(self, i + a))
-            bpy.ops.object.vertex_group_remove_from()
-            bpy.ops.mesh.hide()
-
-        # keep just last faces selected
-        bpy.ops.mesh.reveal()
-        bpy.ops.object.vertex_group_deselect()
-        bpy.ops.object.vertex_group_remove()
-        bpy.ops.object.mode_set()
-
-
-        # restore user settings
-        for i in range(len(obj.modifiers)): 
-            obj.modifiers[i].show_viewport = msv[i]
-        bpy.context.tool_settings.mesh_select_mode = msm
-        bpy.ops.object.mode_set(mode=om)
-        if not total:
-            self.report({'INFO'}, 'Select one or more faces...')
-        return{'FINISHED'}
-
-class BB(bpy.types.Operator):
-    bl_idname = 'object.mesh2bones'
-    bl_label = 'Create Armature'
-    bl_description = 'Create an armature rig based on mesh selection'
-    bl_options = {'REGISTER', 'UNDO'}
-
-    numb = IntProperty(name='Max Bones', min=1, max=1000, soft_max=100, default=5, description='Max number of bones')
-    skip = IntProperty(name='Skip Loops', min=0, max=5, default=0, description='Skip some edges to get longer bones')
-    long = FloatProperty(name='Min Length', min=0.01, max=5, default=0.15, description='Discard bones shorter than this value')
-    ika = BoolProperty(name='IK constraints', default=True, description='Add IK constraint and Empty as target')
-    rotk = BoolProperty(name='IK Rotation', default=False, description='IK constraint follows target rotation')
-    auto = BoolProperty(name='Auto weight', default=True, description='Auto weight and assign vertices')
-    env = BoolProperty(name='Envelopes', default=False, description='Use envelopes instead of weights')
-    rad = FloatProperty(name='Radius', min=0.01, max=5, default=0.25, description='Envelope deform radius')
-    nam = StringProperty(name='', default='hueso', description='Default name for bones / groups')
-
-    @classmethod
-    def poll(cls, context):
-        obj = bpy.context.object
-        return (obj and obj.type == 'MESH')
-
-    def draw(self, context):
-        layout = self.layout
-        column = layout.column(align=True)
-        column.prop(self,'numb')
-        column.prop(self,'skip')
-        column.prop(self,'long')
-        column = layout.column(align=True)
-        column.prop(self,'auto')
-        if self.auto:
-            column.prop(self,'env')
-            if self.env: column.prop(self,'rad')
-        column.prop(self,'ika')
-        if self.ika: column.prop(self,'rotk')
-        layout.prop(self,'nam')
-
-    def execute(self, context):
-        scn = bpy.context.scene
-        obj = bpy.context.object
-        fac = obj.data.polygons
-        # guardar estado y seleccion
-        ver, om = obj.data.vertices, obj.mode
-        msm, msv = list(bpy.context.tool_settings.mesh_select_mode), []
-        for i in range(len(obj.modifiers)):
-            msv.append(obj.modifiers[i].show_viewport)
-            obj.modifiers[i].show_viewport = False
-        bpy.ops.object.mode_set(mode='OBJECT')
-        copia = [v.index for v in ver if v.select]
-        sel = [f.index for f in fac if f.select]
-        bpy.ops.object.mode_set(mode='EDIT')

@@ Diff output truncated at 10240 characters. @@


More information about the Bf-extensions-cvs mailing list