[Bf-extensions-cvs] [af291e44] master: Addon: Mesh Extra Objects: Gears, Wallfactory, Beam, Pipe: Implemented add object in edit mode

Spivak Vladimir cwolf3d noreply at git.blender.org
Thu Aug 15 02:04:15 CEST 2019


Commit: af291e44f861f2adc6fbbcff038e7dcb94862a10
Author: Spivak Vladimir (cwolf3d)
Date:   Thu Aug 15 03:03:26 2019 +0300
Branches: master
https://developer.blender.org/rBAaf291e44f861f2adc6fbbcff038e7dcb94862a10

Addon: Mesh Extra Objects: Gears, Wallfactory, Beam, Pipe: Implemented add object in edit mode

===================================================================

M	add_mesh_extra_objects/Wallfactory.py
M	add_mesh_extra_objects/__init__.py
M	add_mesh_extra_objects/add_mesh_beam_builder.py
M	add_mesh_extra_objects/add_mesh_gears.py
M	add_mesh_extra_objects/add_mesh_pipe_joint.py

===================================================================

diff --git a/add_mesh_extra_objects/Wallfactory.py b/add_mesh_extra_objects/Wallfactory.py
index db7918c3..66926214 100644
--- a/add_mesh_extra_objects/Wallfactory.py
+++ b/add_mesh_extra_objects/Wallfactory.py
@@ -872,26 +872,40 @@ class add_mesh_wallb(Operator):
                                         stepBack
                                         )
 
-        if self.change == True and self.change != None:
-            obj = context.active_object
-            oldmesh = obj.data
-            oldmeshname = obj.data.name
-            mesh = bpy.data.meshes.new("Wall")
-            mesh.from_pydata(verts_array, [], faces_array)
-            obj.data = mesh
-            bpy.data.meshes.remove(oldmesh)
-            obj.data.name = oldmeshname
-        else:
-            mesh = bpy.data.meshes.new("Wall")
+        if bpy.context.mode == "OBJECT":
+            if self.change == True and self.change != None:
+                obj = context.active_object
+                oldmesh = obj.data
+                oldmeshname = obj.data.name
+                mesh = bpy.data.meshes.new("Wall")
+                mesh.from_pydata(verts_array, [], faces_array)
+                obj.data = mesh
+                bpy.data.meshes.remove(oldmesh)
+                obj.data.name = oldmeshname
+            else:
+                mesh = bpy.data.meshes.new("Wall")
+                mesh.from_pydata(verts_array, [], faces_array)
+                obj = object_utils.object_data_add(context, mesh, operator=None)
+            
+            mesh.update()
+            
+            obj.data["Wall"] = True
+            obj.data["change"] = False
+            for prm in WallParameters():
+                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')
+            mesh = bpy.data.meshes.new("TMP")
             mesh.from_pydata(verts_array, [], faces_array)
             obj = object_utils.object_data_add(context, mesh, operator=None)
-        
-        mesh.update()
-        
-        obj.data["Wall"] = True
-        obj.data["change"] = False
-        for prm in WallParameters():
-            obj.data[prm] = getattr(self, prm)
+            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'}
 
@@ -965,4 +979,4 @@ def WallParameters():
         "StepOnly",
         "StepBack",
         ]
-    return WallParameters
\ No newline at end of file
+    return WallParameters
diff --git a/add_mesh_extra_objects/__init__.py b/add_mesh_extra_objects/__init__.py
index 560305be..f785c663 100644
--- a/add_mesh_extra_objects/__init__.py
+++ b/add_mesh_extra_objects/__init__.py
@@ -86,7 +86,6 @@ else:
 
 import bpy
 from bpy.types import Menu
-from sys import *
 
 class VIEW3D_MT_mesh_vert_add(Menu):
     # Define the "Single Vert" menu
@@ -289,6 +288,41 @@ def Extras_contex_menu(self, context):
             setattr(props, prm, obj.data[prm])
         layout.separator()
 
+    if 'ElbowJoint' in obj.data.keys():
+        props = layout.operator("mesh.primitive_elbow_joint_add", text="Change ElbowJoint")
+        props.change = True
+        for prm in add_mesh_pipe_joint.ElbowJointParameters():
+            setattr(props, prm, obj.data[prm])
+        layout.separator()
+
+    if 'TeeJoint' in obj.data.keys():
+        props = layout.operator("mesh.primitive_tee_joint_add", text="Change TeeJoint")
+        props.change = True
+        for prm in add_mesh_pipe_joint.TeeJointParameters():
+            setattr(props, prm, obj.data[prm])
+        layout.separator()
+
+    if 'WyeJoint' in obj.data.keys():
+        props = layout.operator("mesh.primitive_wye_joint_add", text="Change WyeJoint")
+        props.change = True
+        for prm in add_mesh_pipe_joint.WyeJointParameters():
+            setattr(props, prm, obj.data[prm])
+        layout.separator()
+
+    if 'CrossJoint' in obj.data.keys():
+        props = layout.operator("mesh.primitive_cross_joint_add", text="Change CrossJoint")
+        props.change = True
+        for prm in add_mesh_pipe_joint.CrossJointParameters():
+            setattr(props, prm, obj.data[prm])
+        layout.separator()
+
+    if 'NJoint' in obj.data.keys():
+        props = layout.operator("mesh.primitive_n_joint_add", text="Change NJoint")
+        props.change = True
+        for prm in add_mesh_pipe_joint.NJointParameters():
+            setattr(props, prm, obj.data[prm])
+        layout.separator()
+
 # Register
 classes = [
     VIEW3D_MT_mesh_vert_add,
diff --git a/add_mesh_extra_objects/add_mesh_beam_builder.py b/add_mesh_extra_objects/add_mesh_beam_builder.py
index 9aa89ef1..623fc0ca 100644
--- a/add_mesh_extra_objects/add_mesh_beam_builder.py
+++ b/add_mesh_extra_objects/add_mesh_beam_builder.py
@@ -790,9 +790,20 @@ class addBeam(Operator):
                 obj.data[prm] = getattr(self, prm)
 
             return {'FINISHED'}
-
-        self.report({'WARNING'}, "Option only valid in Object mode")
-        return {'CANCELLED'}
+            
+        if bpy.context.mode == "EDIT_MESH":
+            active_object = context.active_object
+            name_active_object = active_object.name
+            bpy.ops.object.mode_set(mode='OBJECT')
+            mesh = addBeamMesh(self, context)
+            obj = object_utils.object_data_add(context, mesh, operator=None)
+            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 BeamParameters():
     BeamParameters = [
@@ -803,4 +814,4 @@ def BeamParameters():
             "edgeA",
             "Cursor",
             ]
-    return BeamParameters
\ No newline at end of file
+    return BeamParameters
diff --git a/add_mesh_extra_objects/add_mesh_gears.py b/add_mesh_extra_objects/add_mesh_gears.py
index 35ec12bd..0ccc265d 100644
--- a/add_mesh_extra_objects/add_mesh_gears.py
+++ b/add_mesh_extra_objects/add_mesh_gears.py
@@ -19,7 +19,6 @@ from mathutils import (
         Matrix,
         )
 from bpy_extras import object_utils
-from sys import *
 
 # A very simple "bridge" tool.
 # Connects two equally long vertex rows with faces.
@@ -671,38 +670,58 @@ class AddGear(Operator):
 
     def execute(self, context):
         
-        if self.change == True and self.change != None:
-            obj = context.active_object
-            if 'Gear' in obj.data.keys():
-                oldmesh = obj.data
-                oldmeshname = obj.data.name
-                mesh, verts_tip, verts_valley = AddGearMesh(self, context)
-                obj.data = mesh
-                try:
-                    bpy.ops.object.vertex_group_remove(all=True)
-                except:
-                    pass
-                bpy.data.meshes.remove(oldmesh)
-                obj.data.name = oldmeshname
+        if bpy.context.mode == "OBJECT":
+            if self.change == True and self.change != None:
+                obj = context.active_object
+                if 'Gear' in obj.data.keys():
+                    oldmesh = obj.data
+                    oldmeshname = obj.data.name
+                    mesh, verts_tip, verts_valley = AddGearMesh(self, context)
+                    obj.data = mesh
+                    try:
+                        bpy.ops.object.vertex_group_remove(all=True)
+                    except:
+                        pass
+                    bpy.data.meshes.remove(oldmesh)
+                    obj.data.name = oldmeshname
+                else:
+                    mesh, verts_tip, verts_valley = AddGearMesh(self, context)
+                    obj = object_utils.object_data_add(context, mesh, operator=None)
             else:
                 mesh, verts_tip, verts_valley = AddGearMesh(self, context)
                 obj = object_utils.object_data_add(context, mesh, operator=None)
-        else:
+    
+            # Create vertex groups from stored vertices.
+            tipGroup = obj.vertex_groups.new(name='Tips')
+            tipGroup.add(verts_tip, 1.0, 'ADD')
+    
+            valleyGroup = obj.vertex_groups.new(name='Valleys')
+            valleyGroup.add(verts_valley, 1.0, 'ADD')
+    
+            obj.data["Gear"] = True
+            obj.data["change"] = False
+            for prm in GearParameters():
+                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')
             mesh, verts_tip, verts_valley = AddGearMesh(self, context)
             obj = object_utils.object_data_add(context, mesh, operator=None)
-
-        # Create vertex groups from stored vertices.
-        tipGroup = obj.vertex_groups.new(name='Tips')
-        tipGroup.add(verts_tip, 1.0, 'ADD')
-
-        valleyGroup = obj.vertex_groups.new(name='Valleys')
-        valleyGroup.add(verts_valley, 1.0, 'ADD')
-
-        obj.data["Gear"] = True
-        obj.data["change"] = False
-        for prm in GearParameters():
-            obj.data[prm] = getattr(self, prm)
-
+            
+            # Create vertex groups from stored vertices.
+            tipGroup = obj.vertex_groups.new(name='Tips')
+            tipGroup.add(verts_tip, 1.0, 'ADD')
+    
+            valleyGroup = obj.vertex_groups.new(name='Valleys')
+            valleyGroup.add(verts_valley, 1.0, 'ADD')
+            
+            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 GearParameters():
@@ -848,37 +867,58 @@ class AddWormGear(Operator):
 
     def execute(self, context):
 
-        if self.change == True and s

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list