diff options
author | Eugenio Pignataro <info@oscurart.com.ar> | 2018-12-21 17:32:12 +0300 |
---|---|---|
committer | Eugenio Pignataro <info@oscurart.com.ar> | 2018-12-21 17:32:12 +0300 |
commit | 1f36b19604c4b62ac6acf47f93ad5863af2032de (patch) | |
tree | feb1aba800597300d202160e0ce5908883db2a69 /oscurart_tools/object/distribute.py | |
parent | 7fbe716603d46e6718893c15fe9548e0f1ff646f (diff) |
Add Oscurart Tools for 2.8
Diffstat (limited to 'oscurart_tools/object/distribute.py')
-rw-r--r-- | oscurart_tools/object/distribute.py | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/oscurart_tools/object/distribute.py b/oscurart_tools/object/distribute.py new file mode 100644 index 00000000..991d664b --- /dev/null +++ b/oscurart_tools/object/distribute.py @@ -0,0 +1,70 @@ +# ##### 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 ##### + +# <pep8 compliant> + +import bpy +import os +from bpy.types import Operator +from bpy.props import BoolProperty + + + +def ObjectDistributeOscurart(self, X, Y, Z): + if len(bpy.selection_osc[:]) > 1: + # VARIABLES + dif = bpy.selection_osc[-1].location - bpy.selection_osc[0].location + chunkglobal = dif / (len(bpy.selection_osc[:]) - 1) + chunkx = 0 + chunky = 0 + chunkz = 0 + deltafst = bpy.selection_osc[0].location + + # ORDENA + for OBJECT in bpy.selection_osc[:]: + if X: + OBJECT.location.x = deltafst[0] + chunkx + if Y: + OBJECT.location[1] = deltafst[1] + chunky + if Z: + OBJECT.location.z = deltafst[2] + chunkz + chunkx += chunkglobal[0] + chunky += chunkglobal[1] + chunkz += chunkglobal[2] + else: + self.report({'INFO'}, "Needs at least two selected objects") + + +class DistributeOsc(Operator): + """Distribute evenly the selected objects in x y z""" + bl_idname = "object.distribute_osc" + bl_label = "Distribute Objects" + Boolx : BoolProperty(name="X") + Booly : BoolProperty(name="Y") + Boolz : BoolProperty(name="Z") + + def execute(self, context): + ObjectDistributeOscurart(self, self.Boolx, self.Booly, self.Boolz) + return {'FINISHED'} + + def invoke(self, context, event): + self.Boolx = True + self.Booly = True + self.Boolz = True + return context.window_manager.invoke_props_dialog(self) + |