[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