Brilliant, thanks Chad!

On Thu, 27 Aug 2020 at 06:25, Chad Vernon <[email protected]> wrote:

> You need to implement MPxNode::isPassiveOutput
>
> On Wednesday, August 26, 2020 at 12:06:15 AM UTC-7 Marcus Ottosson wrote:
>
>> Hi all,
>>
>> Whenever you constrain something, the channel box turns blue rather than
>> the typical yellow. What’s more, you’re also able to edit the values
>> *after* they’ve been connected. :O From the MPxConstraint documentation, 
>> there
>> is this
>> <http://help.autodesk.com/view/MAYAUL/2020/ENU/?guid=Maya_SDK_MERGED_cpp_ref_class_m_px_constraint_html>
>> .
>>
>> Node attribute: lockOutput/lo - boolean.
>>
>> When enabled, the constrained object cannot be moved away from its
>> constrained location, and a pairBlend will not be inserted if the user
>> tries to keyframe the constrained attributes.
>>
>> Interesting!
>>
>> However the e.g. parentConstraint isn’t the only node able to do this.
>> There’s also pairBlend which doesn’t color channels blue, but *does*
>> enable edits to be made to attributes connected to it.
>>
>> from maya import cmds
>>
>> node1 = cmds.createNode("transform")
>> node2 = cmds.createNode("transform")
>>
>> pairBlend = cmds.createNode("pairBlend")
>> cmds.connectAttr(node1 + ".translate", pairBlend + ".inTranslate1")
>> cmds.connectAttr(pairBlend + ".outTranslate", node2 + ".translate")
>>
>> cmds.setAttr(node2 + ".translate", 1, 2, 3, type="double3")
>> print(cmds.getAttr(node2 + ".translate")) # [(1.0, 2.0, 3.0)]
>>
>> That’s great!
>>
>> But how does it do that? :O I’d like to make a custom node, with a custom
>> attribute, that works much like pairBlend and if possible with the added
>> flair of visual colouring of channels like the constraints do.
>>
>> *Goal*
>>
>> from maya import cmds
>>
>> node1 = cmds.createNode("transform")
>> node1Shape = cmds.createNode("myNode")
>> node2 = cmds.createNode("transform")
>>
>> cmds.connectAttr(node1Shape + ".myTranslate", node2 + ".translate")
>> cmds.setAttr(node2 + ".translate", 1, 2, 3, type="double3") # Error!
>>
>> Where myNode looks like this.
>>
>>    - https://gist.github.com/mottosso/d5668e21f5d8f2f357d12bffadf95f36
>>
>> My theory is that either..
>>
>>    1. Maya has hardcoded which node types - like pairBlend and
>>    parentConstraint - are allowed to have their output connections
>>    modified. That would be a bummer..
>>    2. Or there’s a property I’m not seeing when authoring an attribute,
>>    like myTranslate in the above example. Something like..
>>    numericFn.setEditableLocked(true)
>>    3. Or there’s an argument one could pass to e.g. cmds.connectAttr
>>    that enable changes after the fact; but that can’t be since we’ve just
>>    connected the pairBlend above without special flags
>>
>> Other than that, I’m at a loss. :S
>>
>> Does anyone know how to enable an attribute to be edited once it has been
>> connected to another custom attribute?
>>
> --
> 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 [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/python_inside_maya/f7b70b6d-c1ed-4831-a916-fbff5c0bf08dn%40googlegroups.com
> <https://groups.google.com/d/msgid/python_inside_maya/f7b70b6d-c1ed-4831-a916-fbff5c0bf08dn%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/python_inside_maya/CAFRtmOD2q-evwyCSGTK3Tfp8Eg61hF40dixqmP5m%2BVBrSPqdAA%40mail.gmail.com.

Reply via email to