You have to use MScriptUtil so that allows you pass pointers as
arguments to getKnotDomain.
Here is working example of doIt

def doIt(self,argList):
                nPosts = 5
                radius = 0.5
                height = 5.0

                # parse the arguments

                argData = OpenMaya.MArgDatabase( self.syntax(), argList)
                if argData.isFlagSet(kRadiusFlag):
                        radius = argData.flagArgumentDouble(kRadiusFlag, 0)
                if argData.isFlagSet(kHeightFlag):
                        height = argData.flagArgumentDouble(kHeightFlag, 0)
                if argData.isFlagSet(kHelpFlag):
                        OpenMayaMPx.MPxCommand.setResult(helpText)

                selection = OpenMaya.MSelectionList()
                OpenMaya.MGlobal.getActiveSelectionList( selection )

                dagPath = OpenMaya.MDagPath()
                curveFn = OpenMaya.MFnNurbsCurve()

                heightRatio = height/radius

                iter = OpenMaya.MItSelectionList( selection,
OpenMaya.MFn.kNurbsCurve )
                tStartParam = OpenMaya.MScriptUtil()
                tStartParam.createFromDouble(0)
                tStartPtr = tStartParam.asDoublePtr()

                tEndParam = OpenMaya.MScriptUtil()
                tEndParam.createFromDouble(0)
                tEndPtr = tEndParam.asDoublePtr()

                tParam = OpenMaya.MScriptUtil()
                tParam.createFromDouble(0)
                tPtr = tParam.asDoublePtr()

                while ( iter.isDone() == 0):

                        iter.getDagPath( dagPath )
                        curveFn.setObject( dagPath )

                        curveFn.getKnotDomain(tStartPtr, tEndPtr)

                        pt = OpenMaya.MPoint()
                        t = OpenMaya.MScriptUtil(tStartPtr).asDouble()


                        tIncr = ((OpenMaya.MScriptUtil(tEndPtr).asDouble()-
OpenMaya.MScriptUtil(tStartPtr).asDouble())) \
                                        /(nPosts-1)


                        for i in range(0,nPosts):

                                curveFn.getPointAtParam(t, pt, 
OpenMaya.MSpace.kWorld)
                                pt.y += 0.5 * height
                                t += tIncr

                                mc.cylinder( pivot=(pt.x, pt.y, pt.z), 
radius=radius, axis=
(0,1,0), hr=heightRatio )

                        iter.next()

--~--~---------~--~----~------------~-------~--~----~
Yours,
Maya-Python Club Team.
-~----------~----~----~----~------~----~------~--~---

Reply via email to