Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'add_mesh_extra_objects/add_mesh_beam_builder.py')
-rw-r--r--add_mesh_extra_objects/add_mesh_beam_builder.py230
1 files changed, 128 insertions, 102 deletions
diff --git a/add_mesh_extra_objects/add_mesh_beam_builder.py b/add_mesh_extra_objects/add_mesh_beam_builder.py
index 8297f9ae..cacde06a 100644
--- a/add_mesh_extra_objects/add_mesh_beam_builder.py
+++ b/add_mesh_extra_objects/add_mesh_beam_builder.py
@@ -1,16 +1,16 @@
# GPL # "author": revolt_randy, Jambay
-# Create "Beam" primitives. Based on original script by revolt_randy.
-# @todo: track 3D cursor for location.
+# Create "Beam" primitives. Based on original script by revolt_randy
import bpy
+from bpy.types import Operator
from bpy.props import (
+ BoolProperty,
EnumProperty,
FloatProperty,
IntProperty,
)
-from bpy_extras import object_utils
# #####################
@@ -310,12 +310,14 @@ def create_L_beam(sRef):
verts_back_temp = []
# Create front vertices by calculation
- verts_front_temp = [(-x_off, -y_off, z_off),
- (-(x_off - thick), -y_off, z_off),
- (-(x_off - thick), -y_off, -(z_off - thick)),
- (x_off, -y_off, -(z_off - thick)),
- (x_off, -y_off, -z_off),
- (-x_off, -y_off, -z_off)]
+ verts_front_temp = [
+ (-x_off, -y_off, z_off),
+ (-(x_off - thick), -y_off, z_off),
+ (-(x_off - thick), -y_off, -(z_off - thick)),
+ (x_off, -y_off, -(z_off - thick)),
+ (x_off, -y_off, -z_off),
+ (-x_off, -y_off, -z_off)
+ ]
# Adjust taper
vert_outside = verts_front_temp[0]
@@ -329,12 +331,14 @@ def create_L_beam(sRef):
verts_front_temp[3] = [vert_inside[0], vert_inside[1], vert_taper]
# Create back vertices by calculation
- verts_back_temp = [(-x_off, y_off, z_off),
- (-(x_off - thick), y_off, z_off),
- (-(x_off - thick), y_off, -(z_off - thick)),
- (x_off, y_off, -(z_off - thick)),
- (x_off, y_off, -z_off),
- (-x_off, y_off, -z_off)]
+ verts_back_temp = [
+ (-x_off, y_off, z_off),
+ (-(x_off - thick), y_off, z_off),
+ (-(x_off - thick), y_off, -(z_off - thick)),
+ (x_off, y_off, -(z_off - thick)),
+ (x_off, y_off, -z_off),
+ (-x_off, y_off, -z_off)
+ ]
# Adjust taper
vert_outside = verts_back_temp[0]
@@ -394,16 +398,18 @@ def create_T_beam(sRef):
verts_back_temp = []
# Create front vertices
- verts_front_temp = [(-x_off, -y_off, z_off),
- (-thick_off, -y_off, z_off),
- (thick_off, -y_off, z_off),
- (x_off, -y_off, z_off),
- (x_off, -y_off, z_off - thick),
- (thick_off, -y_off, z_off - thick),
- (thick_off, -y_off, -z_off),
- (-thick_off, -y_off, -z_off),
- (-thick_off, -y_off, z_off - thick),
- (-x_off, -y_off, z_off - thick)]
+ verts_front_temp = [
+ (-x_off, -y_off, z_off),
+ (-thick_off, -y_off, z_off),
+ (thick_off, -y_off, z_off),
+ (x_off, -y_off, z_off),
+ (x_off, -y_off, z_off - thick),
+ (thick_off, -y_off, z_off - thick),
+ (thick_off, -y_off, -z_off),
+ (-thick_off, -y_off, -z_off),
+ (-thick_off, -y_off, z_off - thick),
+ (-x_off, -y_off, z_off - thick)
+ ]
# Adjust taper
vert_outside = verts_front_temp[0]
@@ -429,16 +435,18 @@ def create_T_beam(sRef):
verts_front_temp[7] = [vert_taper, vert_inside[1], vert_inside[2]]
# Create fack vertices by calculation
- verts_back_temp = [(-x_off, y_off, z_off),
- (-thick_off, y_off, z_off),
- (thick_off, y_off, z_off),
- (x_off, y_off, z_off),
- (x_off, y_off, z_off - thick),
- (thick_off, y_off, z_off - thick),
- (thick_off, y_off, -z_off),
- (-thick_off, y_off, -z_off),
- (-thick_off, y_off, z_off - thick),
- (-x_off, y_off, z_off - thick)]
+ verts_back_temp = [
+ (-x_off, y_off, z_off),
+ (-thick_off, y_off, z_off),
+ (thick_off, y_off, z_off),
+ (x_off, y_off, z_off),
+ (x_off, y_off, z_off - thick),
+ (thick_off, y_off, z_off - thick),
+ (thick_off, y_off, -z_off),
+ (-thick_off, y_off, -z_off),
+ (-thick_off, y_off, z_off - thick),
+ (-x_off, y_off, z_off - thick)
+ ]
# Adjust taper
vert_outside = verts_back_temp[0]
@@ -514,22 +522,24 @@ def create_I_beam(sRef):
verts_back_temp = []
# Create front vertices by calculation
- verts_front_temp = [(-x_off, -y_off, z_off),
- (-thick_off, -y_off, z_off),
- (thick_off, -y_off, z_off),
- (x_off, -y_off, z_off),
- (x_off, -y_off, z_off - thick),
- (thick_off, -y_off, z_off - thick),
- (thick_off, -y_off, -z_off + thick),
- (x_off, -y_off, -z_off + thick),
- (x_off, -y_off, -z_off),
- (thick_off, -y_off, -z_off),
- (-thick_off, -y_off, -z_off),
- (-x_off, -y_off, -z_off),
- (-x_off, -y_off, -z_off + thick),
- (-thick_off, -y_off, -z_off + thick),
- (-thick_off, -y_off, z_off - thick),
- (-x_off, -y_off, z_off - thick)]
+ verts_front_temp = [
+ (-x_off, -y_off, z_off),
+ (-thick_off, -y_off, z_off),
+ (thick_off, -y_off, z_off),
+ (x_off, -y_off, z_off),
+ (x_off, -y_off, z_off - thick),
+ (thick_off, -y_off, z_off - thick),
+ (thick_off, -y_off, -z_off + thick),
+ (x_off, -y_off, -z_off + thick),
+ (x_off, -y_off, -z_off),
+ (thick_off, -y_off, -z_off),
+ (-thick_off, -y_off, -z_off),
+ (-x_off, -y_off, -z_off),
+ (-x_off, -y_off, -z_off + thick),
+ (-thick_off, -y_off, -z_off + thick),
+ (-thick_off, -y_off, z_off - thick),
+ (-x_off, -y_off, z_off - thick)
+ ]
# Adjust taper
vert_outside = verts_front_temp[0]
@@ -553,22 +563,24 @@ def create_I_beam(sRef):
verts_front_temp[12] = [vert_inside[0], vert_inside[1], vert_taper]
# Create back vertices by calculation
- verts_back_temp = [(-x_off, y_off, z_off),
- (-thick_off, y_off, z_off),
- (thick_off, y_off, z_off),
- (x_off, y_off, z_off),
- (x_off, y_off, z_off - thick),
- (thick_off, y_off, z_off - thick),
- (thick_off, y_off, -z_off + thick),
- (x_off, y_off, -z_off + thick),
- (x_off, y_off, -z_off),
- (thick_off, y_off, -z_off),
- (-thick_off, y_off, -z_off),
- (-x_off, y_off, -z_off),
- (-x_off, y_off, -z_off + thick),
- (-thick_off, y_off, -z_off + thick),
- (-thick_off, y_off, z_off - thick),
- (-x_off, y_off, z_off - thick)]
+ verts_back_temp = [
+ (-x_off, y_off, z_off),
+ (-thick_off, y_off, z_off),
+ (thick_off, y_off, z_off),
+ (x_off, y_off, z_off),
+ (x_off, y_off, z_off - thick),
+ (thick_off, y_off, z_off - thick),
+ (thick_off, y_off, -z_off + thick),
+ (x_off, y_off, -z_off + thick),
+ (x_off, y_off, -z_off),
+ (thick_off, y_off, -z_off),
+ (-thick_off, y_off, -z_off),
+ (-x_off, y_off, -z_off),
+ (-x_off, y_off, -z_off + thick),
+ (-thick_off, y_off, -z_off + thick),
+ (-thick_off, y_off, z_off - thick),
+ (-x_off, y_off, z_off - thick)
+ ]
# Adjust taper
vert_outside = verts_back_temp[0]
@@ -662,63 +674,77 @@ def addBeamObj(sRef, context):
bpy.ops.transform.rotate(value=1.570796, constraint_axis=[False, True, False])
bpy.ops.object.transform_apply(location=False, rotation=True, scale=False)
+ if sRef.Cursor:
+ if beamObj.select is True:
+ # we also have to check if we're considered to be in 3D View (view3d)
+ if bpy.ops.view3d.snap_selected_to_cursor.poll():
+ bpy.ops.view3d.snap_selected_to_cursor()
+ else:
+ sRef.Cursor = False
+
# ######################
# Create a beam primitive.
#
# UI functions and object creation.
-class addBeam(bpy.types.Operator):
+class addBeam(Operator):
bl_idname = "mesh.add_beam"
bl_label = "Beam Builder"
bl_description = "Create beam meshes of various profiles"
bl_options = {'REGISTER', 'UNDO'}
Type = EnumProperty(
- items=(
- ('0', "Box", "Square Beam"),
- ("1", "U", "U Beam"),
- ("2", "C", "C Beam"),
- ("3", "L", "L Beam"),
- ("4", "I", "T Beam"),
- ("5", "T", "I Beam")
- ),
- description="Beam form"
- )
+ items=(
+ ('0', "Box Profile", "Square Beam"),
+ ("1", "U Profile", "U Profile Beam"),
+ ("2", "C Profile", "C Profile Beam"),
+ ("3", "L Profile", "L Profile Beam"),
+ ("4", "I Profile", "I Profile Beam"),
+ ("5", "T Profile", "T Profile Beam")
+ ),
+ description="Beam form"
+ )
beamZ = FloatProperty(
- name="Height",
- min=0.01, max=100,
- default=1
- )
+ name="Height",
+ min=0.01, max=100,
+ default=1
+ )
beamX = FloatProperty(
- name="Width",
- min=0.01, max=100,
- default=.5
- )
+ name="Width",
+ min=0.01, max=100,
+ default=.5
+ )
beamY = FloatProperty(
- name="Depth",
- min=0.01,
- max=100,
- default=2
- )
+ name="Depth",
+ min=0.01,
+ max=100,
+ default=2
+ )
beamW = FloatProperty(
- name="Thickness",
- min=0.01, max=1,
- default=0.1
- )
+ name="Thickness",
+ min=0.01, max=1,
+ default=0.1
+ )
edgeA = IntProperty(
- name="Taper",
- min=0, max=100,
- default=0,
- description="Angle beam edges"
- )
+ name="Taper",
+ min=0, max=100,
+ default=0,
+ description="Angle beam edges"
+ )
+ Cursor = BoolProperty(
+ name="Use 3D Cursor",
+ default=False,
+ description="Draw the beam where the 3D Cursor is"
+ )
def draw(self, context):
layout = self.layout
box = layout.box()
- row = box.row()
- row.prop(self, "Type", text="")
+ split = box.split(percentage=0.85, align=True)
+ split.prop(self, "Type", text="")
+ split.prop(self, "Cursor", text="", icon="CURSOR")
box.prop(self, "beamZ")
box.prop(self, "beamX")