Hi all,
I’m looking to implement this.
node = cmds.createNode("myCustomNode")
cmds.setAttr(node+ ".iconName", "polyMeasureUV.png")
And have the icon appear wherever this node is drawn, such as the Outliner and Node Editor. Ideally polyMeasureUV.png
is one of Maya’s own internal icons, the ones you can browse via the Shelf Editor.
I know about the XBMLANGPATH
but would like something that A) doesn’t require a restart or meddling with the environment in order to work (if that’s possible still using this approach, do let me know) and B) uses Maya’s own icon library such that I won’t have to ship custom images.
I’m chasing this, because I noticed the dagContainer
have a feature like it and works quite well.
from maya import cmds
container = cmds.createNode("dagContainer", name="LegLeft03_LIM")
cmds.setAttr(container + ".iconName", "polyMeasureUV.png")
Any ideas?
Thanks David, that’s a great find. :)
from maya import cmds, OpenMaya as om
node = cmds.createNode("transform")
sel = om.MSelectionList()
mobj = om.MObject()
om.MGlobal.getActiveSelectionList(sel)
sel.getDependNode(0, mobj)
fn = om.MFnDependencyNode(mobj)
fn.setIcon("polyTorus.png")
Since then, it’s turned out that setting XBMLANGPATH
during userSetup.py
works just fine, except on Linux in which case setting it prior to launching Maya hasn’t been as much of a problem as I initially expected.
I did come across an .iconName
attribute only a few weeks ago, present on all nodes since at least Maya 2015, but quickly dismissed it as I couldn’t get it to work. it doesn’t seem related either, as seems to be for the Hypergraph specifically.
I had a look at your “NodeSticker” code, and it looks like you’ve identified a few issues with the idea, primarily that the set icon isn’t stored with the scene; what a shame! Such a small thing. It means you’ll either need to manually call something whenever you open a scene (tedious), or install a callback for scene-open, or node-creation that can call it automatically (complex).
In my experiment just now, it looks like some icons are preserved (in this case, in 2018 on the defaultObjectSet
) but not others; likely only in the current Maya session; as though that node is never actually deleted on scene new/open (perhaps a “shared node”?).
--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/6687779b-277a-49fe-ad21-0888aca2ca34%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Indeed some nodes’ icon get preserved !
Like time1
lambert1
shaderGlow1
, also their UUID didn’t change, too.
( another Maya Fun Fact I guess )
install a callback for scene-open
I was going to do this.
It’s really a bit unfortunate that won’t survive scene-new/open, but since my original goal was only to differentiate between native objectSet
node and those created from my pipeline (Avalon), I can sleep well with this outcome :D
Way better then using AssetNode
just for custom icon (I was looking in that direction before this).
Lastly, thanks for having a look !
You received this message because you are subscribed to a topic in the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/python_inside_maya/9XAzZL24tUs/unsubscribe.
To unsubscribe from this group and all its topics, send an email to python_inside_m...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/CAFRtmOBKyvr53DXoMa1eR1GtOBrqRUiicsttYjnX7%3DSwVbHMhg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.