You guys are SSSSOOOOOOOOOOOO awesome!

I got it works with your tips.. thanks a lot guys!

On Dec 2, 7:21 am, Paul Molodowitch <[email protected]> wrote:
> > 1.but if I run
> > dagFn = om.MFnDagNode(MObject)
>
> > if will have error like:
> > RuntimeError: (kInvalidParameter): Object is incompatible with this
> > method #
>
> > is this because the MFnDagNode is for MObject handle pointing to a dag
> > node instead of a component?
>
> Yup, you got it.
> The component MObject doesn't have any information about nodes, or dag
> paths, etc.  It's essentially little more than a set of indices (in most
> cases, anyway - there's actually a large variety of different component
> types, some of which hide a bunch of information we can't access). This
> means, for instance, you could use the same component object to refer to
> vertices on two different meshes, if you wanted to reference the same set of
> vertices on both meshes.
>
> > 2. also,dose the components, such as poly face or poly edge has any
> > bounding box?
> > If it dosen't, I want to get all the points position on that poly
> > face, and do some simple math, so how can get these positions?
>
> I don't know of any easy built in method that will give you a bounding box
> if you have a dag path and an component mobj; As Brandon pointed out, though
> the best way to get the point positions is to use one of the MIt* classes.
> You could always feed those values into an MBoundingBox object as you go...
>
> > 3. After some conditions, I want to return the component MObject's
> > string name,but
>
> > dagPath.fullPathName()
> > will return : # Result: |pCube1|pCubeShape1 #
>
> > how can i get the original  'pCubeShape1.f[0]' instead?
>
> The fullPathName gives that because, just like the component mobject has no
> information about dag paths or nodes, the dagPath has no information about
> components. You need both to "completely specify" an exact component. If you
> want a string to a given component, the easiest way I know is to just use an
> MSelectionList:
>
> # Do some stuff to get myDagPath and myComponentMobj
> sel = MSelectionList()
> sel.add(myDagPath, myComponentMobj)
> compNames = []
> sel.getSelectionStrings(0, compNames)
>
> Note that you need an array of strings, even though you're only grabbing the
> first item in the selection list, because a single component mobj may need
> to be represented as several strings - ie,
> myComponentMobj =>  f[0], f[3:7], f[10]
>
> - Paul

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

Reply via email to