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-17 01:35:25 +0300
committerSpivak Vladimir (cwolf3d) <cwolf3d@gmail.com>2019-08-17 01:36:04 +0300
commit6c882f7d817ad092f72d53b37daefc8622e9e74e (patch)
tree7a23a10b6edd22624912f4734245bbc4e16756b0 /add_mesh_extra_objects
parentc5b6e7a4c89828227c6c11aa00b679cef994c30e (diff)
Addon: Mesh Extra Objects: Gem, Diamond, Brilliant: Implemented parametric object and add object in edit mode
Diffstat (limited to 'add_mesh_extra_objects')
-rw-r--r--add_mesh_extra_objects/__init__.py21
-rw-r--r--add_mesh_extra_objects/add_mesh_gemstones.py198
-rw-r--r--add_mesh_extra_objects/add_mesh_round_brilliant.py113
3 files changed, 306 insertions, 26 deletions
diff --git a/add_mesh_extra_objects/__init__.py b/add_mesh_extra_objects/__init__.py
index f785c663..3151a614 100644
--- a/add_mesh_extra_objects/__init__.py
+++ b/add_mesh_extra_objects/__init__.py
@@ -323,6 +323,27 @@ def Extras_contex_menu(self, context):
setattr(props, prm, obj.data[prm])
layout.separator()
+ if 'Diamond' in obj.data.keys():
+ props = layout.operator("mesh.primitive_diamond_add", text="Change Diamond")
+ props.change = True
+ for prm in add_mesh_gemstones.DiamondParameters():
+ setattr(props, prm, obj.data[prm])
+ layout.separator()
+
+ if 'Gem' in obj.data.keys():
+ props = layout.operator("mesh.primitive_gem_add", text="Change Gem")
+ props.change = True
+ for prm in add_mesh_gemstones.GemParameters():
+ setattr(props, prm, obj.data[prm])
+ layout.separator()
+
+ if 'Brilliant' in obj.data.keys():
+ props = layout.operator("mesh.primitive_brilliant_add", text="Change Brilliant")
+ props.change = True
+ for prm in add_mesh_round_brilliant.BrilliantParameters():
+ setattr(props, prm, obj.data[prm])
+ layout.separator()
+
# Register
classes = [
VIEW3D_MT_mesh_vert_add,
diff --git a/add_mesh_extra_objects/add_mesh_gemstones.py b/add_mesh_extra_objects/add_mesh_gemstones.py
index 3db2af10..d060e812 100644
--- a/add_mesh_extra_objects/add_mesh_gemstones.py
+++ b/add_mesh_extra_objects/add_mesh_gemstones.py
@@ -10,6 +10,8 @@ from math import cos, sin, pi
from bpy.props import (
FloatProperty,
IntProperty,
+ BoolProperty,
+ StringProperty,
)
@@ -211,6 +213,18 @@ class AddDiamond(Operator):
bl_description = "Construct a diamond mesh"
bl_options = {'REGISTER', 'UNDO', 'PRESET'}
+ Diamond : BoolProperty(name = "Diamond",
+ default = True,
+ description = "Diamond")
+
+ #### change properties
+ name : StringProperty(name = "Name",
+ description = "Name")
+
+ change : BoolProperty(name = "Change",
+ default = False,
+ description = "change Diamond")
+
segments: IntProperty(
name="Segments",
description="Number of segments for the diamond",
@@ -247,17 +261,86 @@ class AddDiamond(Operator):
default=0.8
)
- def execute(self, context):
- verts, faces = add_diamond(self.segments,
- self.girdle_radius,
- self.table_radius,
- self.crown_height,
- self.pavilion_height)
+ def draw(self, context):
+ layout = self.layout
+ box = layout.box()
+ box.prop(self, "segments")
+ box.prop(self, "girdle_radius")
+ box.prop(self, "table_radius")
+ box.prop(self, "crown_height")
+ box.prop(self, "pavilion_height")
- obj = create_mesh_object(context, verts, [], faces, "Diamond")
+ def execute(self, context):
+
+ if bpy.context.mode == "OBJECT":
+ if self.change == True and self.change != None:
+ obj = context.active_object
+ if 'Diamond' in obj.data.keys():
+ oldmesh = obj.data
+ oldmeshname = obj.data.name
+ verts, faces = add_diamond(self.segments,
+ self.girdle_radius,
+ self.table_radius,
+ self.crown_height,
+ self.pavilion_height)
+ mesh = bpy.data.meshes.new("TMP")
+ mesh.from_pydata(verts, [], faces)
+ mesh.update()
+ obj.data = mesh
+ bpy.data.meshes.remove(oldmesh)
+ obj.data.name = oldmeshname
+ else:
+ verts, faces = add_diamond(self.segments,
+ self.girdle_radius,
+ self.table_radius,
+ self.crown_height,
+ self.pavilion_height)
+
+ obj = create_mesh_object(context, verts, [], faces, "Diamond")
+ else:
+ verts, faces = add_diamond(self.segments,
+ self.girdle_radius,
+ self.table_radius,
+ self.crown_height,
+ self.pavilion_height)
+
+ obj = create_mesh_object(context, verts, [], faces, "Diamond")
+
+ obj.data["Diamond"] = True
+ obj.data["change"] = False
+ for prm in DiamondParameters():
+ obj.data[prm] = getattr(self, prm)
+
+ if bpy.context.mode == "EDIT_MESH":
+ active_object = context.active_object
+ name_active_object = active_object.name
+ bpy.ops.object.mode_set(mode='OBJECT')
+ verts, faces = add_diamond(self.segments,
+ self.girdle_radius,
+ self.table_radius,
+ self.crown_height,
+ self.pavilion_height)
+
+ obj = create_mesh_object(context, verts, [], faces, "TMP")
+
+ obj.select_set(True)
+ active_object.select_set(True)
+ bpy.ops.object.join()
+ context.active_object.name = name_active_object
+ bpy.ops.object.mode_set(mode='EDIT')
return {'FINISHED'}
+def DiamondParameters():
+ DiamondParameters = [
+ "segments",
+ "girdle_radius",
+ "table_radius",
+ "crown_height",
+ "pavilion_height",
+ ]
+ return DiamondParameters
+
class AddGem(Operator):
bl_idname = "mesh.primitive_gem_add"
@@ -265,6 +348,18 @@ class AddGem(Operator):
bl_description = "Construct an offset faceted gem mesh"
bl_options = {'REGISTER', 'UNDO', 'PRESET'}
+ Gem : BoolProperty(name = "Gem",
+ default = True,
+ description = "Gem")
+
+ #### change properties
+ name : StringProperty(name = "Name",
+ description = "Name")
+
+ change : BoolProperty(name = "Change",
+ default = False,
+ description = "change Gem")
+
segments: IntProperty(
name="Segments",
description="Longitudial segmentation",
@@ -301,15 +396,86 @@ class AddGem(Operator):
default=0.8
)
+ def draw(self, context):
+ layout = self.layout
+ box = layout.box()
+ box.prop(self, "segments")
+ box.prop(self, "pavilion_radius")
+ box.prop(self, "crown_radius")
+ box.prop(self, "crown_height")
+ box.prop(self, "pavilion_height")
+
def execute(self, context):
- # create mesh
- verts, faces = add_gem(
- self.pavilion_radius,
- self.crown_radius,
- self.segments,
- self.pavilion_height,
- self.crown_height)
-
- obj = create_mesh_object(context, verts, [], faces, "Gem")
+
+ if bpy.context.mode == "OBJECT":
+ if self.change == True and self.change != None:
+ obj = context.active_object
+ if 'Gem' in obj.data.keys():
+ oldmesh = obj.data
+ oldmeshname = obj.data.name
+ verts, faces = add_gem(
+ self.pavilion_radius,
+ self.crown_radius,
+ self.segments,
+ self.pavilion_height,
+ self.crown_height)
+ mesh = bpy.data.meshes.new("TMP")
+ mesh.from_pydata(verts, [], faces)
+ mesh.update()
+ obj.data = mesh
+ bpy.data.meshes.remove(oldmesh)
+ obj.data.name = oldmeshname
+ else:
+ verts, faces = add_gem(
+ self.pavilion_radius,
+ self.crown_radius,
+ self.segments,
+ self.pavilion_height,
+ self.crown_height)
+
+ obj = create_mesh_object(context, verts, [], faces, "Gem")
+ else:
+ verts, faces = add_gem(
+ self.pavilion_radius,
+ self.crown_radius,
+ self.segments,
+ self.pavilion_height,
+ self.crown_height)
+
+ obj = create_mesh_object(context, verts, [], faces, "Gem")
+
+ obj.data["Gem"] = True
+ obj.data["change"] = False
+ for prm in GemParameters():
+ obj.data[prm] = getattr(self, prm)
+
+ if bpy.context.mode == "EDIT_MESH":
+ active_object = context.active_object
+ name_active_object = active_object.name
+ bpy.ops.object.mode_set(mode='OBJECT')
+ verts, faces = add_gem(
+ self.pavilion_radius,
+ self.crown_radius,
+ self.segments,
+ self.pavilion_height,
+ self.crown_height)
+
+ obj = create_mesh_object(context, verts, [], faces, "TMP")
+
+ obj.select_set(True)
+ active_object.select_set(True)
+ bpy.ops.object.join()
+ context.active_object.name = name_active_object
+ bpy.ops.object.mode_set(mode='EDIT')
return {'FINISHED'}
+
+def GemParameters():
+ GemParameters = [
+ "segments",
+ "pavilion_radius",
+ "crown_radius",
+ "crown_height",
+ "pavilion_height",
+ ]
+ return GemParameters
diff --git a/add_mesh_extra_objects/add_mesh_round_brilliant.py b/add_mesh_extra_objects/add_mesh_round_brilliant.py
index b8bf393a..6d795795 100644
--- a/add_mesh_extra_objects/add_mesh_round_brilliant.py
+++ b/add_mesh_extra_objects/add_mesh_round_brilliant.py
@@ -14,12 +14,12 @@ from bpy.props import (
IntProperty,
FloatProperty,
BoolProperty,
+ StringProperty,
)
+from bpy_extras import object_utils
-
-# mesh/object generating function, returns final object
-
-def addBrilliant(context, s, table_w, crown_h, girdle_t, pavi_d, bezel_f,
+# mesh generating function, returns mesh
+def add_mesh_Brilliant(context, s, table_w, crown_h, girdle_t, pavi_d, bezel_f,
pavi_f, culet, girdle_real, keep_lga, g_real_smooth):
# # possible user inputs ( output 100% = 2 blender units )
@@ -220,16 +220,25 @@ def addBrilliant(context, s, table_w, crown_h, girdle_t, pavi_d, bezel_f,
cf.append(i)
fa(*cf)
- # deactivate possible active Objects
- bpy.context.view_layer.objects.active = None
-
# create actual mesh and object based on Verts and Faces given
dmesh = bpy.data.meshes.new("dmesh")
dmesh.from_pydata(Verts, [], Faces)
dmesh.update()
+
+ return dmesh
+
+# object generating function, returns final object
+def addBrilliant(context, s, table_w, crown_h, girdle_t, pavi_d, bezel_f,
+ pavi_f, culet, girdle_real, keep_lga, g_real_smooth):
+
+ # deactivate possible active Objects
+ bpy.context.view_layer.objects.active = None
+
+ # create actual mesh and object based on Verts and Faces given
+ dmesh = add_mesh_Brilliant(context, s, table_w, crown_h, girdle_t, pavi_d, bezel_f,
+ pavi_f, culet, girdle_real, keep_lga, g_real_smooth)
# Create object and link it into scene.
- from bpy_extras import object_utils
dobj = object_utils.object_data_add(context, dmesh, operator=None, name="dobj")
# activate and select object
@@ -301,7 +310,18 @@ class MESH_OT_primitive_brilliant_add(Operator):
bl_description = "Construct a custom brilliant mesh"
bl_options = {'REGISTER', 'UNDO', 'PRESET'}
- # set user options
+ Brilliant : BoolProperty(name = "Brilliant",
+ default = True,
+ description = "Brilliant")
+
+ #### change properties
+ name : StringProperty(name = "Name",
+ description = "Name")
+
+ change : BoolProperty(name = "Change",
+ default = False,
+ description = "change Brilliant")
+
s: IntProperty(
name="Segments",
description="Longitudial segmentation",
@@ -383,11 +403,84 @@ class MESH_OT_primitive_brilliant_add(Operator):
default=False
)
+ def draw(self, context):
+ layout = self.layout
+ box = layout.box()
+ box.prop(self, "s")
+ box.prop(self, "table_w")
+ box.prop(self, "crown_h")
+ box.prop(self, "girdle_t")
+ box.prop(self, "girdle_real")
+ box.prop(self, "g_real_smooth")
+ box.prop(self, "pavi_d")
+ box.prop(self, "bezel_f")
+ box.prop(self, "pavi_f")
+ box.prop(self, "culet")
+ box.prop(self, "keep_lga")
+
# call mesh/object generator function with user inputs
def execute(self, context):
- ob = addBrilliant(context, self.s, self.table_w, self.crown_h,
+
+ if bpy.context.mode == "OBJECT":
+ if self.change == True and self.change != None:
+ obj = context.active_object
+ if 'Brilliant' in obj.data.keys():
+ oldmesh = obj.data
+ oldmeshname = obj.data.name
+ mesh = add_mesh_Brilliant(context, self.s, self.table_w, self.crown_h,
self.girdle_t, self.pavi_d, self.bezel_f,
self.pavi_f, self.culet, self.girdle_real,
self.keep_lga, self.g_real_smooth
)
+ obj.data = mesh
+ bpy.data.meshes.remove(oldmesh)
+ obj.data.name = oldmeshname
+ else:
+ obj = addBrilliant(context, self.s, self.table_w, self.crown_h,
+ self.girdle_t, self.pavi_d, self.bezel_f,
+ self.pavi_f, self.culet, self.girdle_real,
+ self.keep_lga, self.g_real_smooth
+ )
+ else:
+ obj = addBrilliant(context, self.s, self.table_w, self.crown_h,
+ self.girdle_t, self.pavi_d, self.bezel_f,
+ self.pavi_f, self.culet, self.girdle_real,
+ self.keep_lga, self.g_real_smooth
+ )
+ obj.data["Brilliant"] = True
+ obj.data["change"] = False
+ for prm in BrilliantParameters():
+ obj.data[prm] = getattr(self, prm)
+
+ if bpy.context.mode == "EDIT_MESH":
+ active_object = context.active_object
+ name_active_object = active_object.name
+ bpy.ops.object.mode_set(mode='OBJECT')
+ obj = addBrilliant(context, self.s, self.table_w, self.crown_h,
+ self.girdle_t, self.pavi_d, self.bezel_f,
+ self.pavi_f, self.culet, self.girdle_real,
+ self.keep_lga, self.g_real_smooth
+ )
+ obj.select_set(True)
+ active_object.select_set(True)
+ bpy.ops.object.join()
+ context.active_object.name = name_active_object
+ bpy.ops.object.mode_set(mode='EDIT')
+
return {'FINISHED'}
+
+def BrilliantParameters():
+ BrilliantParameters = [
+ "s",
+ "table_w",
+ "crown_h",
+ "girdle_t",
+ "girdle_real",
+ "g_real_smooth",
+ "pavi_d",
+ "bezel_f",
+ "pavi_f",
+ "culet",
+ "keep_lga",
+ ]
+ return BrilliantParameters