[Bf-extensions-cvs] [6c882f7d] master: Addon: Mesh Extra Objects: Gem, Diamond, Brilliant: Implemented parametric object and add object in edit mode
Spivak Vladimir cwolf3d
noreply at git.blender.org
Sat Aug 17 00:36:19 CEST 2019
Commit: 6c882f7d817ad092f72d53b37daefc8622e9e74e
Author: Spivak Vladimir (cwolf3d)
Date: Sat Aug 17 01:35:25 2019 +0300
Branches: master
https://developer.blender.org/rBA6c882f7d817ad092f72d53b37daefc8622e9e74e
Addon: Mesh Extra Objects: Gem, Diamond, Brilliant: Implemented parametric object and add object in edit mode
===================================================================
M add_mesh_extra_objects/__init__.py
M add_mesh_extra_objects/add_mesh_gemstones.py
M add_mesh_extra_objects/add_mesh_round_brilliant.py
===================================================================
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,
)
+fr
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-extensions-cvs
mailing list