Yeah, but I think what he's saying is the the PyMel shape object ALSO
contains a dagPath, in addition to the shape MObject.  So a PyMel
object (should) refer uniquely to one instance.

- Paul

On Thu, Apr 9, 2009 at 9:40 AM, Olivier Renouard
<[email protected]> wrote:
> But I think in the instance case it's not just a name thing. It's actually
> the same dag node (shape) having multiple transforms.
>
> That's the reason why worldMatrix is a multiple attribute. Though you
> usually use worldMatrix[0], in case of an instanced shape you can have
> multiple worldMatrix :
>
> polyCube -w 1 -h 1 -d 1 -sx 1 -sy 1 -sz 1 -ax 0 1 0 -cuv 4 -ch 1;
> // Result: pCube1 polyCube1 //
> instance; move -r 1 0 0;
> getAttr pCube1.worldMatrix;
> // Result: 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 //
> getAttr pCube2.worldMatrix;
> // Result: 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 //
> getAttr pCubeShape1.worldMatrix[0];
> // Result: 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 //
> getAttr pCubeShape1.worldMatrix[1];
> // Result: 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 //
>
> Chad Dombrova wrote:
>
> I think it's ok in pymel's case because your shape will be a uniquely
> identified dagNode.
> -chad
>
>
> On Apr 9, 2009, at 6:33 AM, Sylvain Berger wrote:
>
> ho yeah.... you are right... i'll check my code using the getParent()
> function to see what appens... i'm guessing a fail :)
> Thanks
>
> On Thu, Apr 9, 2009 at 9:22 AM, Olivier Renouard
> <[email protected]> wrote:
>>
>> I think you would have to account for the cases where a single shape can
>> have more than one transform if you did that, ie instances
>>
>> Sylvain Berger wrote:
>>
>> Thanks for this great explanation.  It is not a big deal because I can
>> always asume that the direct parent of a shape is the transform, so i can
>> live with the getParent() method :)
>>
>>
>> On Wed, Apr 8, 2009 at 4:47 PM, chadrik <[email protected]> wrote:
>>>
>>>
>>> MEL supports automatic propagation from transforms to shapes:
>>>
>>> import maya.cmds as cmds
>>> transform = cmds.polyCube()[0]
>>> cmds.getAttr( transform + ".primaryVisibility" )
>>> # Result: 1 #
>>>
>>> in the example above primaryVisibility is an attribute of the mesh,
>>> but it can be accessed from the transform. PyMEL supports this same
>>> transform-to-shape propagation in its object-oriented design:
>>>
>>> #continuing from the example above
>>> pytrans = PyNode( transform )
>>> pytrans.primaryVisibility.get()  # an attribute of Mesh
>>> # Result: 1 #
>>> pytrans.numVertices()  # a method of Mesh
>>> # Result: 8 #
>>>
>>>
>>> MEL does not support propagating back UP the dag.
>>>
>>> #continuing from the example above
>>> mesh = cmds.listRelatives( transform, s=1 )[0]
>>> cmds.getAttr(mesh + ".tx" )
>>> # Error: Object pCubeShape3.tx is invalid
>>> # Traceback (most recent call last):
>>> #   File "<maya console>", line 1, in <module>
>>> # TypeError: Object pCubeShape3.tx is invalid #
>>>
>>> Including this feature is worth considering, but i personally don't
>>> feel that it is consistent with the conventions that have been
>>> established in Maya: a transform "owns" a shape, but a shape does not
>>> "own" a transform.
>>>
>>>
>>> -chad
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>
>>
>>
>> --
>> They say, "Evil prevails when good men fail to act." What they ought to
>> say is, "Evil prevails."
>> Nicolas Cage as Yuri Orlov in Lord of War.
>>
>>
>>
>>
>> --
>> Olivier Renouard
>>
>>
>
>
>
> --
> They say, "Evil prevails when good men fail to act." What they ought to say
> is, "Evil prevails."
> Nicolas Cage as Yuri Orlov in Lord of War.
>
>
>
>
>
>
>
>
> --
> Olivier Renouard
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/python_inside_maya
-~----------~----~----~----~------~----~------~--~---

Reply via email to