-
Notifications
You must be signed in to change notification settings - Fork 0
/
extrude_plus_plus_beta_0_2.py
149 lines (111 loc) · 4.66 KB
/
extrude_plus_plus_beta_0_2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
bl_info = {
"name": "Extrude + +",
"author": "xMaxrayx, xMaxrayx-P",
"version": (0, 1),
"blender": (3, 40, 0),
"location": "Called by a Hotkey F11+CMD as default",
"description": "Pie menu for Extrude and other stuff",
"warning": "Use it at you own risk",
"doc_url": "https://github.com/xmaxrayx/Blender3D_Extrude_Plus_Plus_addon",
"category": "Edit Mesh",
}
import bpy
from bpy.types import Menu, Operator
# spawn an edit mode selection pie (run while object is in edit mode to get a valid output)
# Idname should small
###############################################################################################
#extrude start
class MY_EXTRUDE(bpy.types.Operator):
"""(・`ω´・)"""
bl_idname = "my.extrude"
bl_label = "Extrude"
#@classmethod
#def poll(cls, context):
# return context.active_object is not None
def execute(self, context):
bpy.ops.view3d.edit_mesh_extrude_move_normal()
return {'FINISHED'}
#extrude end
##################################################################################################
#extrude individual start
class MY_EXTRUDE_INDIVIDUAL(bpy.types.Operator):
"""o(^-^)o"""
bl_idname = "myextrude.individual"
bl_label = "Individualy"
#@classmethod
#def poll(cls, context):
# return context.active_object is not None
def execute(self, context):
#bpy.ops.mesh.extrude_faces_move()
bpy.ops.view3d.edit_mesh_extrude_individual_move()
return {'FINISHED'}
#extrude individual end
################################################################################################
#extrude along_normals start
class MY_EXTRUDE_ALONG_NORMALS(bpy.types.Operator):
"""(/≥▽≤/)"""
bl_idname = "myextrude.along"
bl_label = "Along Nromals"
def execute(self, context):
bpy.ops.view3d.edit_mesh_extrude_move_shrink_fatten()
return {'FINISHED'}
#extrude along_normals end
################################################################################################
#extrude manifold start @{
class MY_EXTRUDE_MANIFOLD(bpy.types.Operator):
"""ヾ (o ° ω ° O ) ノ゙"""
bl_idname = "myextrude.manifold"
bl_label = "Manifold"
#@classmethod
#def poll(cls, context):
# return context.active_object is not None
def execute(self, context):
bpy.ops.view3d.edit_mesh_extrude_manifold_normal()
return {'FINISHED'}
# }@extrude manifold end
############################################################################################################
class Extrude_plus_plus(Menu):
# label is displayed at the center of the pie menu.
bl_label = "Extrude + +"
bl_idname = "extrude.max"
def draw(self, context):
layout = self.layout
pie = layout.menu_pie()
# operator_enum will just spread all available options
# for the type enum of the operator on the pie
pie.operator("my.extrude", icon="EMPTY_SINGLE_ARROW")
pie.operator("myextrude.individual", icon="OUTLINER_OB_POINTCLOUD")
pie.operator("myextrude.manifold", icon="MOD_SOLIDIFY")
pie.operator("myextrude.along", icon="MOD_BOOLEAN")
addon_keymaps = []
def register():
bpy.utils.register_class(Extrude_plus_plus)
bpy.utils.register_class(MY_EXTRUDE)
bpy.utils.register_class(MY_EXTRUDE_INDIVIDUAL)
bpy.utils.register_class(MY_EXTRUDE_MANIFOLD)
bpy.utils.register_class(MY_EXTRUDE_ALONG_NORMALS)
wm = bpy.context.window_manager
km = wm.keyconfigs.addon.keymaps.new(name='Object Mode', space_type='EMPTY')
# Add the hotkey
wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
km = wm.keyconfigs.addon.keymaps.new(name='Object Mode', space_type='EMPTY')
if kc:
km = wm.keyconfigs.addon.keymaps.new(name='3D View', space_type='VIEW_3D')
#kmi = km.keymap_items.new("wm.call_menu_pie", type='F2', value='PRESS')
kmi = km.keymap_items.new("wm.call_menu_pie",type='F8', value='PRESS', oskey= True)
kmi.properties.name = "extrude.max"
def unregister():
bpy.utils.unregister_class(Extrude_plus_plus)
bpy.utils.unregister_class(MY_EXTRUDE)
bpy.utils.unregister_class(MY_EXTRUDE_INDIVIDUAL)
bpy.utils.unregister_class(MY_EXTRUDE_MANIFOLD)
bpy.utils.unregister_class(MY_EXTRUDE_ALONG_NORMALS)
####
# Remove the hotkey
for km, kmi in addon_keymaps:
km.keymap_items.remove(kmi)
addon_keymaps.clear()
if __name__ == "__main__":
register()
#bpy.ops.wm.call_menu_pie(name="Extrude_plus_plus")