def pointAtParam( self, param ): """return the point in world coordinates of a specific u parameter""" param = self.a.max.v * param point = OpenMaya.MPoint( ) curveFn = OpenMaya.MFnNurbsCurve( apiHelpers.getDagPath(self.name) ) curveFn.getPointAtParam( param, point, OpenMaya.MSpace.kObject ) return point[0], point[1], point[2]
def uParam(self, pnt): """return u param of the curve based on a position""" point = OpenMaya.MPoint(pnt[0],pnt[1],pnt[2]) curveFn = OpenMaya.MFnNurbsCurve( apiHelpers.getDagPath(self.name) ) paramUtill=OpenMaya.MScriptUtil() paramPtr=paramUtill.asDoublePtr() isOnCurve = curveFn.isPointOnCurve(point) if isOnCurve == True: curveFn.getParamAtPoint(point , paramPtr,0.001,OpenMaya.MSpace.kObject ) else : point = curveFn.closestPoint(point,paramPtr,0.001,OpenMaya.MSpace.kObject) curveFn.getParamAtPoint(point , paramPtr,0.001,OpenMaya.MSpace.kObject ) param = paramUtill.getDouble(paramPtr) return param