Fix T76049: Errors after adding a Gear or Worm (extra objects)
This commit is contained in:
parent
ba2aed9efb
commit
2d8edd6ded
Notes:
blender-bot
2023-02-14 18:56:43 +01:00
Referenced by issue #76049, Errors after adding a Gear or Worm (extra objects)
|
@ -665,6 +665,10 @@ class add_mesh_wallb(Operator, object_utils.AddObjectHelper):
|
|||
if not self.ConstructTog:
|
||||
return {'FINISHED'}
|
||||
|
||||
# turn off 'Enter Edit Mode'
|
||||
use_enter_edit_mode = bpy.context.preferences.edit.use_enter_edit_mode
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = False
|
||||
|
||||
# enter the settings for the wall dimensions (area)
|
||||
# start can't be zero - min/max don't matter [if max less than end] but zero don't workie.
|
||||
# start can't exceed end.
|
||||
|
@ -917,6 +921,12 @@ class add_mesh_wallb(Operator, object_utils.AddObjectHelper):
|
|||
context.active_object.name = name_active_object
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
|
||||
if use_enter_edit_mode:
|
||||
bpy.ops.object.mode_set(mode = 'EDIT')
|
||||
|
||||
# restore pre operator state
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = use_enter_edit_mode
|
||||
|
||||
return {'FINISHED'}
|
||||
|
||||
def WallParameters():
|
||||
|
|
|
@ -249,6 +249,9 @@ def Extras_contex_menu(self, context):
|
|||
obj = context.object
|
||||
layout = self.layout
|
||||
|
||||
if obj == None:
|
||||
return
|
||||
|
||||
if 'Gear' in obj.data.keys():
|
||||
props = layout.operator("mesh.primitive_gear", text="Change Gear")
|
||||
props.change = True
|
||||
|
|
|
@ -730,11 +730,6 @@ class addBeam(Operator, object_utils.AddObjectHelper):
|
|||
default=0,
|
||||
description="Angle beam edges"
|
||||
)
|
||||
Cursor: BoolProperty(
|
||||
name="Use 3D Cursor",
|
||||
default=False,
|
||||
description="Draw the beam where the 3D Cursor is"
|
||||
)
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
@ -742,7 +737,6 @@ class addBeam(Operator, object_utils.AddObjectHelper):
|
|||
box = layout.box()
|
||||
split = box.split(factor=0.85, align=True)
|
||||
split.prop(self, "Type", text="")
|
||||
split.prop(self, "Cursor", text="")
|
||||
|
||||
box.prop(self, "beamZ")
|
||||
box.prop(self, "beamX")
|
||||
|
@ -760,6 +754,10 @@ class addBeam(Operator, object_utils.AddObjectHelper):
|
|||
box.prop(self, 'rotation', expand=True)
|
||||
|
||||
def execute(self, context):
|
||||
# turn off 'Enter Edit Mode'
|
||||
use_enter_edit_mode = bpy.context.preferences.edit.use_enter_edit_mode
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = False
|
||||
|
||||
if bpy.context.mode == "OBJECT":
|
||||
|
||||
if context.selected_objects != [] and context.active_object and \
|
||||
|
@ -781,21 +779,11 @@ class addBeam(Operator, object_utils.AddObjectHelper):
|
|||
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'}
|
||||
|
||||
if bpy.context.mode == "EDIT_MESH":
|
||||
active_object = context.active_object
|
||||
name_active_object = active_object.name
|
||||
|
@ -808,6 +796,12 @@ class addBeam(Operator, object_utils.AddObjectHelper):
|
|||
context.active_object.name = name_active_object
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
|
||||
if use_enter_edit_mode:
|
||||
bpy.ops.object.mode_set(mode = 'EDIT')
|
||||
|
||||
# restore pre operator state
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = use_enter_edit_mode
|
||||
|
||||
return {'FINISHED'}
|
||||
|
||||
def BeamParameters():
|
||||
|
@ -818,6 +812,5 @@ def BeamParameters():
|
|||
"beamY",
|
||||
"beamW",
|
||||
"edgeA",
|
||||
"Cursor",
|
||||
]
|
||||
return BeamParameters
|
||||
|
|
|
@ -683,6 +683,9 @@ class AddGear(Operator, object_utils.AddObjectHelper):
|
|||
return context.scene is not None
|
||||
|
||||
def execute(self, context):
|
||||
# turn off 'Enter Edit Mode'
|
||||
use_enter_edit_mode = bpy.context.preferences.edit.use_enter_edit_mode
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = False
|
||||
|
||||
if bpy.context.mode == "OBJECT":
|
||||
if context.selected_objects != [] and context.active_object and \
|
||||
|
@ -738,6 +741,12 @@ class AddGear(Operator, object_utils.AddObjectHelper):
|
|||
context.active_object.name = name_active_object
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
|
||||
if use_enter_edit_mode:
|
||||
bpy.ops.object.mode_set(mode = 'EDIT')
|
||||
|
||||
# restore pre operator state
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = use_enter_edit_mode
|
||||
|
||||
return {'FINISHED'}
|
||||
|
||||
def invoke(self, context, event):
|
||||
|
@ -894,6 +903,9 @@ class AddWormGear(Operator, object_utils.AddObjectHelper):
|
|||
box.prop(self, 'rotation', expand=True)
|
||||
|
||||
def execute(self, context):
|
||||
# turn off 'Enter Edit Mode'
|
||||
use_enter_edit_mode = bpy.context.preferences.edit.use_enter_edit_mode
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = False
|
||||
|
||||
if bpy.context.mode == "OBJECT":
|
||||
if context.selected_objects != [] and context.active_object and \
|
||||
|
@ -950,6 +962,12 @@ class AddWormGear(Operator, object_utils.AddObjectHelper):
|
|||
context.active_object.name = name_active_object
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
|
||||
if use_enter_edit_mode:
|
||||
bpy.ops.object.mode_set(mode = 'EDIT')
|
||||
|
||||
# restore pre operator state
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = use_enter_edit_mode
|
||||
|
||||
return {'FINISHED'}
|
||||
|
||||
def WormGearParameters():
|
||||
|
|
|
@ -278,6 +278,9 @@ class AddDiamond(Operator, object_utils.AddObjectHelper):
|
|||
box.prop(self, 'rotation', expand=True)
|
||||
|
||||
def execute(self, context):
|
||||
# turn off 'Enter Edit Mode'
|
||||
use_enter_edit_mode = bpy.context.preferences.edit.use_enter_edit_mode
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = False
|
||||
|
||||
if bpy.context.mode == "OBJECT":
|
||||
if context.selected_objects != [] and context.active_object and \
|
||||
|
@ -333,6 +336,12 @@ class AddDiamond(Operator, object_utils.AddObjectHelper):
|
|||
context.active_object.name = name_active_object
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
|
||||
if use_enter_edit_mode:
|
||||
bpy.ops.object.mode_set(mode = 'EDIT')
|
||||
|
||||
# restore pre operator state
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = use_enter_edit_mode
|
||||
|
||||
return {'FINISHED'}
|
||||
|
||||
def DiamondParameters():
|
||||
|
@ -417,6 +426,9 @@ class AddGem(Operator, object_utils.AddObjectHelper):
|
|||
box.prop(self, 'rotation', expand=True)
|
||||
|
||||
def execute(self, context):
|
||||
# turn off 'Enter Edit Mode'
|
||||
use_enter_edit_mode = bpy.context.preferences.edit.use_enter_edit_mode
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = False
|
||||
|
||||
if bpy.context.mode == "OBJECT":
|
||||
if context.selected_objects != [] and context.active_object and \
|
||||
|
@ -472,6 +484,12 @@ class AddGem(Operator, object_utils.AddObjectHelper):
|
|||
context.active_object.name = name_active_object
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
|
||||
if use_enter_edit_mode:
|
||||
bpy.ops.object.mode_set(mode = 'EDIT')
|
||||
|
||||
# restore pre operator state
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = use_enter_edit_mode
|
||||
|
||||
return {'FINISHED'}
|
||||
|
||||
def GemParameters():
|
||||
|
|
|
@ -272,6 +272,10 @@ class add_mesh_honeycomb(bpy.types.Operator, object_utils.AddObjectHelper):
|
|||
return context.scene is not None
|
||||
|
||||
def execute(self, context):
|
||||
# turn off 'Enter Edit Mode'
|
||||
use_enter_edit_mode = bpy.context.preferences.edit.use_enter_edit_mode
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = False
|
||||
|
||||
if bpy.context.mode == "OBJECT":
|
||||
if context.selected_objects != [] and context.active_object and \
|
||||
('HoneyComb' in context.active_object.data.keys()) and (self.change == True):
|
||||
|
@ -314,6 +318,12 @@ class add_mesh_honeycomb(bpy.types.Operator, object_utils.AddObjectHelper):
|
|||
context.active_object.name = name_active_object
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
|
||||
if use_enter_edit_mode:
|
||||
bpy.ops.object.mode_set(mode = 'EDIT')
|
||||
|
||||
# restore pre operator state
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = use_enter_edit_mode
|
||||
|
||||
return {'FINISHED'}
|
||||
|
||||
def HoneyCombParameters():
|
||||
|
|
|
@ -169,6 +169,10 @@ class AddElbowJoint(Operator, object_utils.AddObjectHelper):
|
|||
box.prop(self, 'rotation', expand=True)
|
||||
|
||||
def execute(self, context):
|
||||
# turn off 'Enter Edit Mode'
|
||||
use_enter_edit_mode = bpy.context.preferences.edit.use_enter_edit_mode
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = False
|
||||
|
||||
radius = self.radius
|
||||
div = self.div
|
||||
|
||||
|
@ -259,6 +263,12 @@ class AddElbowJoint(Operator, object_utils.AddObjectHelper):
|
|||
context.active_object.name = name_active_object
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
|
||||
if use_enter_edit_mode:
|
||||
bpy.ops.object.mode_set(mode = 'EDIT')
|
||||
|
||||
# restore pre operator state
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = use_enter_edit_mode
|
||||
|
||||
return {'FINISHED'}
|
||||
|
||||
|
||||
|
@ -360,6 +370,10 @@ class AddTeeJoint(Operator, object_utils.AddObjectHelper):
|
|||
box.prop(self, 'rotation', expand=True)
|
||||
|
||||
def execute(self, context):
|
||||
# turn off 'Enter Edit Mode'
|
||||
use_enter_edit_mode = bpy.context.preferences.edit.use_enter_edit_mode
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = False
|
||||
|
||||
radius = self.radius
|
||||
div = self.div
|
||||
|
||||
|
@ -514,6 +528,12 @@ class AddTeeJoint(Operator, object_utils.AddObjectHelper):
|
|||
context.active_object.name = name_active_object
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
|
||||
if use_enter_edit_mode:
|
||||
bpy.ops.object.mode_set(mode = 'EDIT')
|
||||
|
||||
# restore pre operator state
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = use_enter_edit_mode
|
||||
|
||||
return {'FINISHED'}
|
||||
|
||||
def WyeJointParameters():
|
||||
|
@ -622,6 +642,10 @@ class AddWyeJoint(Operator, object_utils.AddObjectHelper):
|
|||
box.prop(self, 'rotation', expand=True)
|
||||
|
||||
def execute(self, context):
|
||||
# turn off 'Enter Edit Mode'
|
||||
use_enter_edit_mode = bpy.context.preferences.edit.use_enter_edit_mode
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = False
|
||||
|
||||
radius = self.radius
|
||||
div = self.div
|
||||
|
||||
|
@ -786,6 +810,12 @@ class AddWyeJoint(Operator, object_utils.AddObjectHelper):
|
|||
context.active_object.name = name_active_object
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
|
||||
if use_enter_edit_mode:
|
||||
bpy.ops.object.mode_set(mode = 'EDIT')
|
||||
|
||||
# restore pre operator state
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = use_enter_edit_mode
|
||||
|
||||
return {'FINISHED'}
|
||||
|
||||
|
||||
|
@ -911,6 +941,10 @@ class AddCrossJoint(Operator, object_utils.AddObjectHelper):
|
|||
box.prop(self, 'rotation', expand=True)
|
||||
|
||||
def execute(self, context):
|
||||
# turn off 'Enter Edit Mode'
|
||||
use_enter_edit_mode = bpy.context.preferences.edit.use_enter_edit_mode
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = False
|
||||
|
||||
radius = self.radius
|
||||
div = self.div
|
||||
|
||||
|
@ -1122,6 +1156,12 @@ class AddCrossJoint(Operator, object_utils.AddObjectHelper):
|
|||
context.active_object.name = name_active_object
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
|
||||
if use_enter_edit_mode:
|
||||
bpy.ops.object.mode_set(mode = 'EDIT')
|
||||
|
||||
# restore pre operator state
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = use_enter_edit_mode
|
||||
|
||||
return {'FINISHED'}
|
||||
|
||||
|
||||
|
@ -1198,6 +1238,10 @@ class AddNJoint(Operator, object_utils.AddObjectHelper):
|
|||
box.prop(self, 'rotation', expand=True)
|
||||
|
||||
def execute(self, context):
|
||||
# turn off 'Enter Edit Mode'
|
||||
use_enter_edit_mode = bpy.context.preferences.edit.use_enter_edit_mode
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = False
|
||||
|
||||
radius = self.radius
|
||||
div = self.div
|
||||
number = self.number
|
||||
|
@ -1353,4 +1397,10 @@ class AddNJoint(Operator, object_utils.AddObjectHelper):
|
|||
context.active_object.name = name_active_object
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
|
||||
if use_enter_edit_mode:
|
||||
bpy.ops.object.mode_set(mode = 'EDIT')
|
||||
|
||||
# restore pre operator state
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = use_enter_edit_mode
|
||||
|
||||
return {'FINISHED'}
|
||||
|
|
|
@ -162,6 +162,9 @@ class AddPyramid(bpy.types.Operator, object_utils.AddObjectHelper):
|
|||
col.prop(self, 'rotation', expand=True)
|
||||
|
||||
def execute(self, context):
|
||||
# turn off 'Enter Edit Mode'
|
||||
use_enter_edit_mode = bpy.context.preferences.edit.use_enter_edit_mode
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = False
|
||||
|
||||
if bpy.context.mode == "OBJECT":
|
||||
if context.selected_objects != [] and context.active_object and \
|
||||
|
@ -195,6 +198,12 @@ class AddPyramid(bpy.types.Operator, object_utils.AddObjectHelper):
|
|||
context.active_object.name = name_active_object
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
|
||||
if use_enter_edit_mode:
|
||||
bpy.ops.object.mode_set(mode = 'EDIT')
|
||||
|
||||
# restore pre operator state
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = use_enter_edit_mode
|
||||
|
||||
return {'FINISHED'}
|
||||
|
||||
def PyramidParameters():
|
||||
|
|
|
@ -174,6 +174,9 @@ def createMeshObject(context, verts, edges, faces, name):
|
|||
# Update mesh geometry after adding stuff.
|
||||
mesh.update()
|
||||
|
||||
if bpy.context.mode == "EDIT_MESH":
|
||||
bpy.ops.object.mode_set(mode='OBJECT')
|
||||
|
||||
return object_utils.object_data_add(context, mesh, operator=None)
|
||||
|
||||
|
||||
|
@ -749,7 +752,7 @@ def generateRocks(context, scaleX, skewX, scaleY, skewY, scaleZ, skewZ,
|
|||
scale_fac, detail, display_detail, deform, rough,
|
||||
smooth_fac, smooth_it,
|
||||
numOfRocks=1, userSeed=1.0,
|
||||
scaleDisplace=False, randomSeed=True):
|
||||
scaleDisplace=False, randomSeed=True, use_enter_edit_mode=False):
|
||||
global LASTROCK
|
||||
sigmaX = 0
|
||||
sigmaY = 0
|
||||
|
@ -823,6 +826,8 @@ def generateRocks(context, scaleX, skewX, scaleY, skewY, scaleZ, skewZ,
|
|||
else:
|
||||
muZ = scaleZ
|
||||
|
||||
rocks = []
|
||||
|
||||
for i in range(numOfRocks):
|
||||
# todo: enable different random values for each (x,y,z) corrdinate for
|
||||
# each vertex. This will add additional randomness to the shape of the
|
||||
|
@ -928,13 +933,20 @@ def generateRocks(context, scaleX, skewX, scaleY, skewY, scaleZ, skewZ,
|
|||
bpy.ops.mesh.normals_make_consistent()
|
||||
bpy.ops.object.editmode_toggle()
|
||||
|
||||
if use_enter_edit_mode:
|
||||
for m in rock.modifiers:
|
||||
m.show_in_editmode = True
|
||||
m.show_on_cage = True
|
||||
|
||||
# Store the last value of i:
|
||||
shift = i
|
||||
|
||||
rocks.append(rock)
|
||||
|
||||
# Add the shift to LASTROCK:
|
||||
LASTROCK += shift + 1
|
||||
|
||||
return
|
||||
return rocks
|
||||
|
||||
|
||||
# Much of the code below is more-or-less imitation of other addons and as such
|
||||
|
@ -1087,12 +1099,10 @@ class OBJECT_OT_add_mesh_rock(bpy.types.Operator):
|
|||
box.prop(self, 'user_seed')
|
||||
box.prop(self, 'preset_values')
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
return context.mode == 'OBJECT'
|
||||
# return (context.object is not None and context.object.mode == 'OBJECT')
|
||||
|
||||
def execute(self, context):
|
||||
# turn off 'Enter Edit Mode'
|
||||
use_enter_edit_mode = bpy.context.preferences.edit.use_enter_edit_mode
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = False
|
||||
|
||||
# The following "if" block loads preset values:
|
||||
if self.lastPreset != int(self.preset_values):
|
||||
|
@ -1120,7 +1130,7 @@ class OBJECT_OT_add_mesh_rock(bpy.types.Operator):
|
|||
# *** Eliminated "deform_Var" and "rough_Var" so the script is not
|
||||
# as complex to use. May add in again as advanced features. ***
|
||||
if self.use_generate:
|
||||
generateRocks(context,
|
||||
rocks = generateRocks(context,
|
||||
self.scale_X,
|
||||
self.skew_X,
|
||||
self.scale_Y,
|
||||
|
@ -1137,11 +1147,20 @@ class OBJECT_OT_add_mesh_rock(bpy.types.Operator):
|
|||
self.num_of_rocks,
|
||||
self.user_seed,
|
||||
self.use_scale_dis,
|
||||
self.use_random_seed)
|
||||
self.use_random_seed,
|
||||
use_enter_edit_mode)
|
||||
|
||||
for rock in rocks:
|
||||
rock.select_set(True)
|
||||
|
||||
if use_enter_edit_mode:
|
||||
bpy.ops.object.mode_set(mode = 'EDIT')
|
||||
|
||||
# restore pre operator state
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = use_enter_edit_mode
|
||||
|
||||
return {'FINISHED'}
|
||||
|
||||
|
||||
# Register:
|
||||
def menu_func_rocks(self, context):
|
||||
layout = self.layout
|
||||
|
|
|
@ -422,6 +422,9 @@ class MESH_OT_primitive_brilliant_add(Operator, object_utils.AddObjectHelper):
|
|||
|
||||
# call mesh/object generator function with user inputs
|
||||
def execute(self, context):
|
||||
# turn off 'Enter Edit Mode'
|
||||
use_enter_edit_mode = bpy.context.preferences.edit.use_enter_edit_mode
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = False
|
||||
|
||||
if bpy.context.mode == "OBJECT":
|
||||
if context.selected_objects != [] and context.active_object and \
|
||||
|
@ -466,6 +469,12 @@ class MESH_OT_primitive_brilliant_add(Operator, object_utils.AddObjectHelper):
|
|||
context.active_object.name = name_active_object
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
|
||||
if use_enter_edit_mode:
|
||||
bpy.ops.object.mode_set(mode = 'EDIT')
|
||||
|
||||
# restore pre operator state
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = use_enter_edit_mode
|
||||
|
||||
return {'FINISHED'}
|
||||
|
||||
def BrilliantParameters():
|
||||
|
|
|
@ -388,6 +388,10 @@ class AddRoundCube(Operator, object_utils.AddObjectHelper):
|
|||
)
|
||||
|
||||
def execute(self, context):
|
||||
# turn off 'Enter Edit Mode'
|
||||
use_enter_edit_mode = bpy.context.preferences.edit.use_enter_edit_mode
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = False
|
||||
|
||||
if self.arc_div <= 0 and self.lin_div <= 0:
|
||||
self.report({'ERROR'},
|
||||
"Either Arc Divisions or Linear Divisions must be greater than zero")
|
||||
|
@ -441,6 +445,12 @@ class AddRoundCube(Operator, object_utils.AddObjectHelper):
|
|||
context.active_object.name = name_active_object
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
|
||||
if use_enter_edit_mode:
|
||||
bpy.ops.object.mode_set(mode = 'EDIT')
|
||||
|
||||
# restore pre operator state
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = use_enter_edit_mode
|
||||
|
||||
return {'FINISHED'}
|
||||
|
||||
def check(self, context):
|
||||
|
|
|
@ -202,6 +202,10 @@ class AddStar(bpy.types.Operator, object_utils.AddObjectHelper):
|
|||
col.prop(self, 'rotation', expand=True)
|
||||
|
||||
def execute(self, context):
|
||||
# turn off 'Enter Edit Mode'
|
||||
use_enter_edit_mode = bpy.context.preferences.edit.use_enter_edit_mode
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = False
|
||||
|
||||
if bpy.context.mode == "OBJECT":
|
||||
if context.selected_objects != [] and context.active_object and \
|
||||
('Star' in context.active_object.data.keys()) and (self.change == True):
|
||||
|
@ -256,6 +260,12 @@ class AddStar(bpy.types.Operator, object_utils.AddObjectHelper):
|
|||
context.active_object.name = name_active_object
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
|
||||
if use_enter_edit_mode:
|
||||
bpy.ops.object.mode_set(mode = 'EDIT')
|
||||
|
||||
# restore pre operator state
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = use_enter_edit_mode
|
||||
|
||||
return {'FINISHED'}
|
||||
|
||||
def StarParameters():
|
||||
|
|
|
@ -199,6 +199,10 @@ class add_supertoroid(bpy.types.Operator, object_utils.AddObjectHelper):
|
|||
col.prop(self, 'rotation', expand=True)
|
||||
|
||||
def execute(self, context):
|
||||
# turn off 'Enter Edit Mode'
|
||||
use_enter_edit_mode = bpy.context.preferences.edit.use_enter_edit_mode
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = False
|
||||
|
||||
props = self.properties
|
||||
|
||||
# check how the radii properties must be used
|
||||
|
@ -274,6 +278,12 @@ class add_supertoroid(bpy.types.Operator, object_utils.AddObjectHelper):
|
|||
context.active_object.name = name_active_object
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
|
||||
if use_enter_edit_mode:
|
||||
bpy.ops.object.mode_set(mode = 'EDIT')
|
||||
|
||||
# restore pre operator state
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = use_enter_edit_mode
|
||||
|
||||
return {'FINISHED'}
|
||||
|
||||
def SuperToroidParameters():
|
||||
|
|
|
@ -9,9 +9,10 @@ import mathutils
|
|||
import io
|
||||
import operator
|
||||
import functools
|
||||
from bpy_extras import object_utils
|
||||
|
||||
|
||||
class AddTeapot(bpy.types.Operator):
|
||||
class AddTeapot(bpy.types.Operator, object_utils.AddObjectHelper):
|
||||
bl_idname = "mesh.primitive_teapot_add"
|
||||
bl_label = "Add Teapot"
|
||||
bl_description = "Construct a teapot or teaspoon mesh"
|
||||
|
@ -31,16 +32,42 @@ class AddTeapot(bpy.types.Operator):
|
|||
default='1',
|
||||
)
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
box = layout.box()
|
||||
box.prop(self, 'resolution')
|
||||
|
||||
box = layout.box()
|
||||
box.prop(self, 'objecttype')
|
||||
|
||||
# generic transform props
|
||||
box = layout.box()
|
||||
box.prop(self, 'align', expand=True)
|
||||
box.prop(self, 'location', expand=True)
|
||||
box.prop(self, 'rotation', expand=True)
|
||||
|
||||
def execute(self, context):
|
||||
# turn off 'Enter Edit Mode'
|
||||
use_enter_edit_mode = bpy.context.preferences.edit.use_enter_edit_mode
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = False
|
||||
|
||||
cmode = bpy.context.mode
|
||||
verts, faces = make_teapot(self.objecttype,
|
||||
self.resolution)
|
||||
# Actually create the mesh object from this geometry data.
|
||||
obj = create_mesh_object(context, verts, [], faces, "Teapot")
|
||||
obj = create_mesh_object(self, context, verts, [], faces, "Teapot")
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
bpy.ops.mesh.remove_doubles()
|
||||
if cmode != "EDIT_MESH":
|
||||
bpy.ops.object.mode_set(mode=cmode)
|
||||
|
||||
if use_enter_edit_mode:
|
||||
bpy.ops.object.mode_set(mode = 'EDIT')
|
||||
|
||||
# restore pre operator state
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = use_enter_edit_mode
|
||||
|
||||
return {'FINISHED'}
|
||||
|
||||
|
||||
|
@ -56,7 +83,7 @@ def create_mesh_face_hack(faces):
|
|||
faces[:] = faces_copy
|
||||
|
||||
|
||||
def create_mesh_object(context, verts, edges, faces, name):
|
||||
def create_mesh_object(self, context, verts, edges, faces, name):
|
||||
|
||||
create_mesh_face_hack(faces)
|
||||
|
||||
|
@ -66,8 +93,8 @@ def create_mesh_object(context, verts, edges, faces, name):
|
|||
mesh.from_pydata(verts, edges, faces)
|
||||
# Update mesh geometry after adding stuff.
|
||||
mesh.update()
|
||||
from bpy_extras import object_utils
|
||||
return object_utils.object_data_add(context, mesh, operator=None)
|
||||
|
||||
return object_utils.object_data_add(context, mesh, operator=self)
|
||||
|
||||
|
||||
# ==========================
|
||||
|
|
|
@ -138,6 +138,10 @@ class AddTorusKnot(bpy.types.Operator, object_utils.AddObjectHelper):
|
|||
col.prop(self, 'rotation', expand=True)
|
||||
|
||||
def execute(self, context):
|
||||
# turn off 'Enter Edit Mode'
|
||||
use_enter_edit_mode = bpy.context.preferences.edit.use_enter_edit_mode
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = False
|
||||
|
||||
if bpy.context.mode == "OBJECT":
|
||||
if context.selected_objects != [] and context.active_object and \
|
||||
('TorusKnot' in context.active_object.data.keys()) and (self.change == True):
|
||||
|
@ -177,6 +181,12 @@ class AddTorusKnot(bpy.types.Operator, object_utils.AddObjectHelper):
|
|||
context.active_object.name = name_active_object
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
|
||||
if use_enter_edit_mode:
|
||||
bpy.ops.object.mode_set(mode = 'EDIT')
|
||||
|
||||
# restore pre operator state
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = use_enter_edit_mode
|
||||
|
||||
return {'FINISHED'}
|
||||
|
||||
def TorusKnotParameters():
|
||||
|
|
|
@ -225,6 +225,9 @@ class AddTwistedTorus(bpy.types.Operator, object_utils.AddObjectHelper):
|
|||
col.prop(self, 'rotation', expand=True)
|
||||
|
||||
def execute(self, context):
|
||||
# turn off 'Enter Edit Mode'
|
||||
use_enter_edit_mode = bpy.context.preferences.edit.use_enter_edit_mode
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = False
|
||||
|
||||
if self.use_abso is True:
|
||||
extra_helper = (self.abso_major_rad - self.abso_minor_rad) * 0.5
|
||||
|
@ -288,6 +291,12 @@ class AddTwistedTorus(bpy.types.Operator, object_utils.AddObjectHelper):
|
|||
context.active_object.name = name_active_object
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
|
||||
if use_enter_edit_mode:
|
||||
bpy.ops.object.mode_set(mode = 'EDIT')
|
||||
|
||||
# restore pre operator state
|
||||
bpy.context.preferences.edit.use_enter_edit_mode = use_enter_edit_mode
|
||||
|
||||
return {'FINISHED'}
|
||||
|
||||
def TwistedTorusParameters():
|
||||
|
|
Loading…
Reference in New Issue