Python: Add SubmenuAdd uv_layer to mesh, add uv-coords, with pythonHow to create toggle buttons in blender GUI from dynamic list of items?How to add a driver via python?Add a group instance with pythonPython: add object, then change propertiesCopying blender log to a scriptadd parameters (Grid, Random…) with pythonAdd camera moving along curve in PythonHow can I get the id name of a submenu?How to add a new item to the Mesh submenu of the Add Menu in this script?
Does it makes sense to buy a cycle to learn riding?
Is every set a filtered colimit of finite sets?
Where to refill my bottle in India?
What is the meaning of "of trouble" in the following sentence?
Why is making salt water prohibited on Shabbat?
How to manage monthly salary
extract characters between two commas?
Need help identifying/translating a plaque in Tangier, Morocco
Weird behaviour when using querySelector
Is there a way to make member function NOT callable from constructor?
Why doesn't a const reference extend the life of a temporary object passed via a function?
Can I find out the caloric content of bread by dehydrating it?
My colleague's body is amazing
Extreme, but not acceptable situation and I can't start the work tomorrow morning
Does the average primeness of natural numbers tend to zero?
How to move the player while also allowing forces to affect it
aging parents with no investments
Is Social Media Science Fiction?
How to create a consistant feel for character names in a fantasy setting?
Is there a familial term for apples and pears?
Symmetry in quantum mechanics
Landlord wants to switch my lease to a "Land contract" to "get back at the city"
Are objects structures and/or vice versa?
Why did the Germans forbid the possession of pet pigeons in Rostov-on-Don in 1941?
Python: Add Submenu
Add uv_layer to mesh, add uv-coords, with pythonHow to create toggle buttons in blender GUI from dynamic list of items?How to add a driver via python?Add a group instance with pythonPython: add object, then change propertiesCopying blender log to a scriptadd parameters (Grid, Random…) with pythonAdd camera moving along curve in PythonHow can I get the id name of a submenu?How to add a new item to the Mesh submenu of the Add Menu in this script?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
$begingroup$
I am creating a simple add-on in Blender. Initially I tested the code in Python console, then I wrapped it in an operator and added it to Object menu, it worked well:
class MyOperator(bpy.types.Operator):
bl_idname = 'object.MyOperator'
bl_label = 'MyOperator'
bl_options = 'REGISTER', 'UNDO'
def execute(self, context):
# ...affairs...
return 'FINISHED'
def task_func(self, context):
self.layout.operator(MyOperator.bl_idname)
def register():
bpy.utils.register_class(MyOperator)
bpy.types.VIEW3D_MT_object.append(task_func)
But now I need to add several operators and a submenu. I tried this example, and but it is not working:
class MyMenu(bpy.types.Menu):
bl_idname = 'object.MyMenu'
bl_label = 'MyMenu'
def draw(self, context):
layout = self.layout
layout.operator(MyMenu.bl_idname, text=MyMenu.bl_label)
def menu_func(self, context):
# None of these is working :(
self.layout.call_menu(name=MyMenu.bl_idname)
self.layout.menu(MyMenu.bl_idname)
def register():
bpy.utils.register_class(MyOperator)
bpy.types.VIEW3D_MT_object.append(menu_func)
So, what's the problem about? How can I solve it?
python
$endgroup$
add a comment |
$begingroup$
I am creating a simple add-on in Blender. Initially I tested the code in Python console, then I wrapped it in an operator and added it to Object menu, it worked well:
class MyOperator(bpy.types.Operator):
bl_idname = 'object.MyOperator'
bl_label = 'MyOperator'
bl_options = 'REGISTER', 'UNDO'
def execute(self, context):
# ...affairs...
return 'FINISHED'
def task_func(self, context):
self.layout.operator(MyOperator.bl_idname)
def register():
bpy.utils.register_class(MyOperator)
bpy.types.VIEW3D_MT_object.append(task_func)
But now I need to add several operators and a submenu. I tried this example, and but it is not working:
class MyMenu(bpy.types.Menu):
bl_idname = 'object.MyMenu'
bl_label = 'MyMenu'
def draw(self, context):
layout = self.layout
layout.operator(MyMenu.bl_idname, text=MyMenu.bl_label)
def menu_func(self, context):
# None of these is working :(
self.layout.call_menu(name=MyMenu.bl_idname)
self.layout.menu(MyMenu.bl_idname)
def register():
bpy.utils.register_class(MyOperator)
bpy.types.VIEW3D_MT_object.append(menu_func)
So, what's the problem about? How can I solve it?
python
$endgroup$
add a comment |
$begingroup$
I am creating a simple add-on in Blender. Initially I tested the code in Python console, then I wrapped it in an operator and added it to Object menu, it worked well:
class MyOperator(bpy.types.Operator):
bl_idname = 'object.MyOperator'
bl_label = 'MyOperator'
bl_options = 'REGISTER', 'UNDO'
def execute(self, context):
# ...affairs...
return 'FINISHED'
def task_func(self, context):
self.layout.operator(MyOperator.bl_idname)
def register():
bpy.utils.register_class(MyOperator)
bpy.types.VIEW3D_MT_object.append(task_func)
But now I need to add several operators and a submenu. I tried this example, and but it is not working:
class MyMenu(bpy.types.Menu):
bl_idname = 'object.MyMenu'
bl_label = 'MyMenu'
def draw(self, context):
layout = self.layout
layout.operator(MyMenu.bl_idname, text=MyMenu.bl_label)
def menu_func(self, context):
# None of these is working :(
self.layout.call_menu(name=MyMenu.bl_idname)
self.layout.menu(MyMenu.bl_idname)
def register():
bpy.utils.register_class(MyOperator)
bpy.types.VIEW3D_MT_object.append(menu_func)
So, what's the problem about? How can I solve it?
python
$endgroup$
I am creating a simple add-on in Blender. Initially I tested the code in Python console, then I wrapped it in an operator and added it to Object menu, it worked well:
class MyOperator(bpy.types.Operator):
bl_idname = 'object.MyOperator'
bl_label = 'MyOperator'
bl_options = 'REGISTER', 'UNDO'
def execute(self, context):
# ...affairs...
return 'FINISHED'
def task_func(self, context):
self.layout.operator(MyOperator.bl_idname)
def register():
bpy.utils.register_class(MyOperator)
bpy.types.VIEW3D_MT_object.append(task_func)
But now I need to add several operators and a submenu. I tried this example, and but it is not working:
class MyMenu(bpy.types.Menu):
bl_idname = 'object.MyMenu'
bl_label = 'MyMenu'
def draw(self, context):
layout = self.layout
layout.operator(MyMenu.bl_idname, text=MyMenu.bl_label)
def menu_func(self, context):
# None of these is working :(
self.layout.call_menu(name=MyMenu.bl_idname)
self.layout.menu(MyMenu.bl_idname)
def register():
bpy.utils.register_class(MyOperator)
bpy.types.VIEW3D_MT_object.append(menu_func)
So, what's the problem about? How can I solve it?
python
python
edited yesterday
metaphor_set
4,5201721
4,5201721
asked yesterday
AivanF.AivanF.
1647
1647
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
$begingroup$
There were a number of issues. From not registering menu class and having invalid bl_idname's (no capital letters)
Here is working code. In 2.8 it is a requirement that class names reflect the bl_idname.
import bpy
class OBJECT_OT_myoperator(bpy.types.Operator):
bl_idname = 'object.myoperator'
bl_label = 'MyOperator'
bl_options = 'REGISTER', 'UNDO'
def execute(self, context):
# ...affairs...
return 'FINISHED'
class OBJECT_MT_mymenu(bpy.types.Menu):
bl_idname = 'object.mymenu'
bl_label = 'MyMenu'
def draw(self, context):
layout = self.layout
layout.operator(OBJECT_OT_myoperator.bl_idname)
def menu_func(self, context):
self.layout.menu(OBJECT_MT_mymenu.bl_idname)
def register():
bpy.utils.register_class(OBJECT_OT_myoperator)
bpy.utils.register_class(OBJECT_MT_mymenu)
bpy.types.VIEW3D_MT_object.append(menu_func)
def unregister():
bpy.utils.unregister_class(OBJECT_OT_myooperator)
bpy.utils.unregister_class(OBJECT_MT_mymenu)
bpy.types.VIEW3D_MT_object.remove(menu_func)
if __name__ == "__main__":
register()
$endgroup$
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
return StackExchange.using("mathjaxEditing", function ()
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
);
);
, "mathjax-editing");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "502"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fblender.stackexchange.com%2fquestions%2f136447%2fpython-add-submenu%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
There were a number of issues. From not registering menu class and having invalid bl_idname's (no capital letters)
Here is working code. In 2.8 it is a requirement that class names reflect the bl_idname.
import bpy
class OBJECT_OT_myoperator(bpy.types.Operator):
bl_idname = 'object.myoperator'
bl_label = 'MyOperator'
bl_options = 'REGISTER', 'UNDO'
def execute(self, context):
# ...affairs...
return 'FINISHED'
class OBJECT_MT_mymenu(bpy.types.Menu):
bl_idname = 'object.mymenu'
bl_label = 'MyMenu'
def draw(self, context):
layout = self.layout
layout.operator(OBJECT_OT_myoperator.bl_idname)
def menu_func(self, context):
self.layout.menu(OBJECT_MT_mymenu.bl_idname)
def register():
bpy.utils.register_class(OBJECT_OT_myoperator)
bpy.utils.register_class(OBJECT_MT_mymenu)
bpy.types.VIEW3D_MT_object.append(menu_func)
def unregister():
bpy.utils.unregister_class(OBJECT_OT_myooperator)
bpy.utils.unregister_class(OBJECT_MT_mymenu)
bpy.types.VIEW3D_MT_object.remove(menu_func)
if __name__ == "__main__":
register()
$endgroup$
add a comment |
$begingroup$
There were a number of issues. From not registering menu class and having invalid bl_idname's (no capital letters)
Here is working code. In 2.8 it is a requirement that class names reflect the bl_idname.
import bpy
class OBJECT_OT_myoperator(bpy.types.Operator):
bl_idname = 'object.myoperator'
bl_label = 'MyOperator'
bl_options = 'REGISTER', 'UNDO'
def execute(self, context):
# ...affairs...
return 'FINISHED'
class OBJECT_MT_mymenu(bpy.types.Menu):
bl_idname = 'object.mymenu'
bl_label = 'MyMenu'
def draw(self, context):
layout = self.layout
layout.operator(OBJECT_OT_myoperator.bl_idname)
def menu_func(self, context):
self.layout.menu(OBJECT_MT_mymenu.bl_idname)
def register():
bpy.utils.register_class(OBJECT_OT_myoperator)
bpy.utils.register_class(OBJECT_MT_mymenu)
bpy.types.VIEW3D_MT_object.append(menu_func)
def unregister():
bpy.utils.unregister_class(OBJECT_OT_myooperator)
bpy.utils.unregister_class(OBJECT_MT_mymenu)
bpy.types.VIEW3D_MT_object.remove(menu_func)
if __name__ == "__main__":
register()
$endgroup$
add a comment |
$begingroup$
There were a number of issues. From not registering menu class and having invalid bl_idname's (no capital letters)
Here is working code. In 2.8 it is a requirement that class names reflect the bl_idname.
import bpy
class OBJECT_OT_myoperator(bpy.types.Operator):
bl_idname = 'object.myoperator'
bl_label = 'MyOperator'
bl_options = 'REGISTER', 'UNDO'
def execute(self, context):
# ...affairs...
return 'FINISHED'
class OBJECT_MT_mymenu(bpy.types.Menu):
bl_idname = 'object.mymenu'
bl_label = 'MyMenu'
def draw(self, context):
layout = self.layout
layout.operator(OBJECT_OT_myoperator.bl_idname)
def menu_func(self, context):
self.layout.menu(OBJECT_MT_mymenu.bl_idname)
def register():
bpy.utils.register_class(OBJECT_OT_myoperator)
bpy.utils.register_class(OBJECT_MT_mymenu)
bpy.types.VIEW3D_MT_object.append(menu_func)
def unregister():
bpy.utils.unregister_class(OBJECT_OT_myooperator)
bpy.utils.unregister_class(OBJECT_MT_mymenu)
bpy.types.VIEW3D_MT_object.remove(menu_func)
if __name__ == "__main__":
register()
$endgroup$
There were a number of issues. From not registering menu class and having invalid bl_idname's (no capital letters)
Here is working code. In 2.8 it is a requirement that class names reflect the bl_idname.
import bpy
class OBJECT_OT_myoperator(bpy.types.Operator):
bl_idname = 'object.myoperator'
bl_label = 'MyOperator'
bl_options = 'REGISTER', 'UNDO'
def execute(self, context):
# ...affairs...
return 'FINISHED'
class OBJECT_MT_mymenu(bpy.types.Menu):
bl_idname = 'object.mymenu'
bl_label = 'MyMenu'
def draw(self, context):
layout = self.layout
layout.operator(OBJECT_OT_myoperator.bl_idname)
def menu_func(self, context):
self.layout.menu(OBJECT_MT_mymenu.bl_idname)
def register():
bpy.utils.register_class(OBJECT_OT_myoperator)
bpy.utils.register_class(OBJECT_MT_mymenu)
bpy.types.VIEW3D_MT_object.append(menu_func)
def unregister():
bpy.utils.unregister_class(OBJECT_OT_myooperator)
bpy.utils.unregister_class(OBJECT_MT_mymenu)
bpy.types.VIEW3D_MT_object.remove(menu_func)
if __name__ == "__main__":
register()
edited 20 hours ago
AivanF.
1647
1647
answered yesterday
batFINGERbatFINGER
26.8k52977
26.8k52977
add a comment |
add a comment |
Thanks for contributing an answer to Blender Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fblender.stackexchange.com%2fquestions%2f136447%2fpython-add-submenu%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown