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:
authorSpivak Vladimir (cwolf3d) <cwolf3d@gmail.com>2019-08-09 00:26:26 +0300
committerSpivak Vladimir (cwolf3d) <cwolf3d@gmail.com>2019-08-09 00:26:26 +0300
commit9ce456d94f0b706f2591d7d2e2c353a61c730e8e (patch)
treefd027370bffe6e004d6f189388639a748c504813 /add_mesh_extra_objects/add_mesh_beam_builder.py
parent3735dcdc0067815e56298f49635edaa8d321518e (diff)
Addon: Mesh Extra Objects: Gears, Wallfactory, Beam: Converted to parametric objects
Diffstat (limited to 'add_mesh_extra_objects/add_mesh_beam_builder.py')
-rw-r--r--add_mesh_extra_objects/add_mesh_beam_builder.py93
1 files changed, 68 insertions, 25 deletions
diff --git a/add_mesh_extra_objects/add_mesh_beam_builder.py b/add_mesh_extra_objects/add_mesh_beam_builder.py
index 207883cc..9aa89ef1 100644
--- a/add_mesh_extra_objects/add_mesh_beam_builder.py
+++ b/add_mesh_extra_objects/add_mesh_beam_builder.py
@@ -10,8 +10,9 @@ from bpy.props import (
EnumProperty,
FloatProperty,
IntProperty,
+ StringProperty,
)
-
+from bpy_extras import object_utils
# #####################
# Create vertices for end of mesh
@@ -639,9 +640,9 @@ def create_I_beam(sRef):
# ######################
#
-# Generate beam object.
+# Generate beam mesh.
-def addBeamObj(sRef, context):
+def addBeamMesh(sRef, context):
verts = []
faces = []
@@ -662,25 +663,11 @@ def addBeamObj(sRef, context):
verts, faces = create_beam(sRef)
beamMesh = bpy.data.meshes.new("Beam")
- beamObj = bpy.data.objects.new("Beam", beamMesh)
- context.collection.objects.link(beamObj)
- context.view_layer.objects.active = beamObj
- beamObj.select_set(True)
beamMesh.from_pydata(verts, [], faces)
beamMesh.update(calc_edges=True)
- if sRef.Type == '2': # Rotate C shape
- 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_get() 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
+ return beamMesh
# ######################
@@ -692,8 +679,20 @@ class addBeam(Operator):
bl_idname = "mesh.add_beam"
bl_label = "Beam Builder"
bl_description = "Create beam meshes of various profiles"
- bl_options = {'REGISTER', 'UNDO'}
+ bl_options = {'REGISTER', 'UNDO', 'PRESET'}
+
+ Beam : BoolProperty(name = "Beam",
+ default = True,
+ description = "Beam")
+ #### change properties
+ name : StringProperty(name = "Name",
+ description = "Name")
+
+ change : BoolProperty(name = "Change",
+ default = False,
+ description = "change Beam")
+
Type: EnumProperty(
items=(
('0', "Box Profile", "Square Beam"),
@@ -707,28 +706,32 @@ class addBeam(Operator):
)
beamZ: FloatProperty(
name="Height",
- min=0.01, max=100,
+ min=0.01,
+ #max=100,
default=1
)
beamX: FloatProperty(
name="Width",
- min=0.01, max=100,
+ min=0.01,
+ #max=100,
default=.5
)
beamY: FloatProperty(
name="Depth",
min=0.01,
- max=100,
+ #max=100,
default=2
)
beamW: FloatProperty(
name="Thickness",
- min=0.01, max=1,
+ min=0.01,
+ #max=1,
default=0.1
)
edgeA: IntProperty(
name="Taper",
- min=0, max=100,
+ min=0,
+ #max=100,
default=0,
description="Angle beam edges"
)
@@ -756,8 +759,48 @@ class addBeam(Operator):
def execute(self, context):
if bpy.context.mode == "OBJECT":
- addBeamObj(self, context)
+
+ if self.change == True and self.change != None:
+ obj = context.active_object
+ oldmesh = obj.data
+ oldmeshname = obj.data.name
+ mesh = addBeamMesh(self, context)
+ obj.data = mesh
+ bpy.data.meshes.remove(oldmesh)
+ obj.data.name = oldmeshname
+ else:
+ mesh = addBeamMesh(self, context)
+ obj = object_utils.object_data_add(context, mesh, operator=None)
+
+ if self.Type == '2': # Rotate C shape
+ bpy.ops.transform.rotate(value=1.570796, constraint_axis=[False, True, False])
+ bpy.ops.object.transform_apply(location=False, rotation=True, scale=False)
+
+ if self.Cursor:
+ if beamObj.select_get() 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:
+ self.Cursor = False
+
+ obj.data["Beam"] = True
+ obj.data["change"] = False
+ for prm in BeamParameters():
+ obj.data[prm] = getattr(self, prm)
+
return {'FINISHED'}
self.report({'WARNING'}, "Option only valid in Object mode")
return {'CANCELLED'}
+
+def BeamParameters():
+ BeamParameters = [
+ "beamZ",
+ "beamX",
+ "beamY",
+ "beamW",
+ "edgeA",
+ "Cursor",
+ ]
+ return BeamParameters \ No newline at end of file