def createSpiralCurve(self, baseCurve, numRounds, radius, profileScale): surfaceCV = float(numRounds+2)*(float(numRounds+2)/2.0) # duplicate curve and get the maxValue cmds.select(baseCurve, r=True) curveMaxValue = cmds.getAttr(baseCurve+".maxValue") cmds.rebuildCurve(ch=0, rpo=1, rt=0, end=1, kr=2, kcp=0, kep=1, kt=0, s=0, d=3) # create a circle profile profile = cmds.circle(nr=[0, 1, 0], c=[0, 0, 0], r=radius) # put it at the start of the baseCurve cmds.pathAnimation(profile, fm=True, f=True, fa="y", ua="x", wut=4, wu=[0, 1, 0], c=baseCurve) # extrude the profile extrudesurface = cmds.extrude(profile[0], baseCurve, et=2, sc=profileScale) # curve on surface curveonsurface = cmds.curveOnSurface(extrudesurface, append=False, uv=(0, 0)) y = 0.0 for i in range(int(surfaceCV)): y += curveMaxValue/surfaceCV x = math.fmod(y*2*surfaceCV/curveMaxValue, 8) #print x, y cmds.curveOnSurface(curveonsurface, append=True, uv=(x, y)) # duplicate the created curve cmds.duplicateCurve(ch = False) cmds.rename("duplicated_"+baseCurve) spiralCurve = cmds.ls(sl = True) cmds.rebuildCurve(ch=0, rpo=1, rt=0, end=1, kr=2, kcp=0, kep=1, kt=0, s=0, d=3) # create wire #cmds.wire(spiralCurve, dds = [(0, 100)], gw = True, en = 1.0, ce = 0.0, li = 0.0, w = baseCurve) #cmds.pickWalk(d = "up") cmds.select(spiralCurve, r = True) arcCurveGroup = cmds.group(n = "spiralCurveWire"+baseCurve+"___GRP") #delete unused nodes cmds.delete(profile) cmds.delete(extrudesurface[0]) #print "spiral curve created." return spiralCurve, arcCurveGroup
def testAnimNurbsPlaneWrite(self, wfg=False): ret = MayaCmds.nurbsPlane(p=(0, 0, 0), ax=(0, 1, 0), w=1, lr=1, d=3, u=5, v=5, ch=0) name = ret[0] MayaCmds.lattice(name, dv=(4, 5, 4), oc=True) MayaCmds.select("ffd1Lattice.pt[1:2][0:4][1:2]", r=True) MayaCmds.currentTime(1, update=True) MayaCmds.setKeyframe() MayaCmds.currentTime(24, update=True) MayaCmds.setKeyframe() MayaCmds.currentTime(12, update=True) MayaCmds.move(0, 0.18, 0, r=True) MayaCmds.scale(2.5, 1.0, 2.5, r=True) MayaCmds.setKeyframe() MayaCmds.curveOnSurface( name, uv=((0.597523, 0), (0.600359, 0.271782), (0.538598, 0.564218), (0.496932, 0.779936), (0.672153, 1)), k=(0, 0, 0, 0.263463, 0.530094, 0.530094, 0.530094), ) curvename = MayaCmds.curveOnSurface( name, uv=( (0.170718, 0.565967), (0.0685088, 0.393034), (0.141997, 0.206296), (0.95, 0.230359), (0.36264, 0.441381), (0.251243, 0.569889), ), k=(0, 0, 0, 0.200545, 0.404853, 0.598957, 0.598957, 0.598957), ) MayaCmds.closeCurve(curvename, ch=1, ps=1, rpo=1, bb=0.5, bki=0, p=0.1, cos=1) MayaCmds.trim(name, lu=0.23, lv=0.39) degreeU = MayaCmds.getAttr(name + ".degreeU") degreeV = MayaCmds.getAttr(name + ".degreeV") spansU = MayaCmds.getAttr(name + ".spansU") spansV = MayaCmds.getAttr(name + ".spansV") formU = MayaCmds.getAttr(name + ".formU") formV = MayaCmds.getAttr(name + ".formV") minU = MayaCmds.getAttr(name + ".minValueU") maxU = MayaCmds.getAttr(name + ".maxValueU") minV = MayaCmds.getAttr(name + ".minValueV") maxV = MayaCmds.getAttr(name + ".maxValueV") MayaCmds.createNode("surfaceInfo") MayaCmds.connectAttr(name + ".worldSpace", "surfaceInfo1.inputSurface", force=True) MayaCmds.currentTime(1, update=True) controlPoints = MayaCmds.getAttr("surfaceInfo1.controlPoints[*]") knotsU = MayaCmds.getAttr("surfaceInfo1.knotsU[*]") knotsV = MayaCmds.getAttr("surfaceInfo1.knotsV[*]") MayaCmds.currentTime(12, update=True) controlPoints2 = MayaCmds.getAttr("surfaceInfo1.controlPoints[*]") knotsU2 = MayaCmds.getAttr("surfaceInfo1.knotsU[*]") knotsV2 = MayaCmds.getAttr("surfaceInfo1.knotsV[*]") if wfg: self.__files.append(util.expandFileName("testAnimNurbsPlane.abc")) MayaCmds.AbcExport( j="-fr 1 24 -frs -0.25 -frs 0.0 -frs 0.25 -wfg -root %s -file %s" % (name, self.__files[-1]) ) # reading test MayaCmds.AbcImport(self.__files[-1], mode="open") else: self.__files.append(util.expandFileName("testAnimNurbsPlane.abc")) self.__files.append(util.expandFileName("testAnimNurbsPlane01_14.abc")) self.__files.append(util.expandFileName("testAnimNurbsPlane15_24.abc")) MayaCmds.AbcExport(j="-fr 1 14 -root %s -file %s" % (name, self.__files[-2])) MayaCmds.AbcExport(j="-fr 15 24 -root %s -file %s" % (name, self.__files[-1])) # use AbcStitcher to combine two files into one subprocess.call(self.__abcStitcher + self.__files[-3:]) # reading test MayaCmds.AbcImport(self.__files[-3], mode="open") self.failUnlessEqual(degreeU, MayaCmds.getAttr(name + ".degreeU")) self.failUnlessEqual(degreeV, MayaCmds.getAttr(name + ".degreeV")) self.failUnlessEqual(spansU, MayaCmds.getAttr(name + ".spansU")) self.failUnlessEqual(spansV, MayaCmds.getAttr(name + ".spansV")) self.failUnlessEqual(formU, MayaCmds.getAttr(name + ".formU")) self.failUnlessEqual(formV, MayaCmds.getAttr(name + ".formV")) self.failUnlessEqual(minU, MayaCmds.getAttr(name + ".minValueU")) self.failUnlessEqual(maxU, MayaCmds.getAttr(name + ".maxValueU")) self.failUnlessEqual(minV, MayaCmds.getAttr(name + ".minValueV")) self.failUnlessEqual(maxV, MayaCmds.getAttr(name + ".maxValueV")) MayaCmds.createNode("surfaceInfo") MayaCmds.connectAttr(name + ".worldSpace", "surfaceInfo1.inputSurface", force=True) MayaCmds.currentTime(1, update=True) errmsg = "At frame #1, Nurbs Plane's control point #%d.%s not equal" for i in range(0, len(controlPoints)): cp1 = controlPoints[i] cp2 = MayaCmds.getAttr("surfaceInfo1.controlPoints[%d]" % (i)) self.failUnlessAlmostEqual(cp1[0], cp2[0][0], 3, errmsg % (i, "x")) self.failUnlessAlmostEqual(cp1[1], cp2[0][1], 3, errmsg % (i, "y")) self.failUnlessAlmostEqual(cp1[2], cp2[0][2], 3, errmsg % (i, "z")) errmsg = "At frame #1, Nurbs Plane's control knotsU #%d not equal" for i in range(0, len(knotsU)): ku1 = knotsU[i] ku2 = MayaCmds.getAttr("surfaceInfo1.knotsU[%d]" % (i)) self.failUnlessAlmostEqual(ku1, ku2, 3, errmsg % (i)) errmsg = "At frame #1, Nurbs Plane's control knotsV #%d not equal" for i in range(0, len(knotsV)): kv1 = knotsV[i] kv2 = MayaCmds.getAttr("surfaceInfo1.knotsV[%d]" % (i)) self.failUnlessAlmostEqual(kv1, kv2, 3, errmsg % (i)) MayaCmds.currentTime(12, update=True) errmsg = "At frame #12, Nurbs Plane's control point #%d.%s not equal" for i in range(0, len(controlPoints2)): cp1 = controlPoints2[i] cp2 = MayaCmds.getAttr("surfaceInfo1.controlPoints[%d]" % (i)) self.failUnlessAlmostEqual(cp1[0], cp2[0][0], 3, errmsg % (i, "x")) self.failUnlessAlmostEqual(cp1[1], cp2[0][1], 3, errmsg % (i, "y")) self.failUnlessAlmostEqual(cp1[2], cp2[0][2], 3, errmsg % (i, "z")) errmsg = "At frame #12, Nurbs Plane's control knotsU #%d not equal" for i in range(0, len(knotsU2)): ku1 = knotsU2[i] ku2 = MayaCmds.getAttr("surfaceInfo1.knotsU[%d]" % (i)) self.failUnlessAlmostEqual(ku1, ku2, 3, errmsg % (i)) errmsg = "At frame #12, Nurbs Plane's control knotsV #%d not equal" for i in range(0, len(knotsV2)): kv1 = knotsV2[i] kv2 = MayaCmds.getAttr("surfaceInfo1.knotsV[%d]" % (i)) self.failUnlessAlmostEqual(kv1, kv2, 3, errmsg % (i)) MayaCmds.currentTime(24, update=True) errmsg = "At frame #24, Nurbs Plane's control point #%d.%s not equal" for i in range(0, len(controlPoints)): cp1 = controlPoints[i] cp2 = MayaCmds.getAttr("surfaceInfo1.controlPoints[%d]" % (i)) self.failUnlessAlmostEqual(cp1[0], cp2[0][0], 3, errmsg % (i, "x")) self.failUnlessAlmostEqual(cp1[1], cp2[0][1], 3, errmsg % (i, "y")) self.failUnlessAlmostEqual(cp1[2], cp2[0][2], 3, errmsg % (i, "z")) errmsg = "At frame #24, Nurbs Plane's control knotsU #%d not equal" for i in range(0, len(knotsU)): ku1 = knotsU[i] ku2 = MayaCmds.getAttr("surfaceInfo1.knotsU[%d]" % (i)) self.failUnlessAlmostEqual(ku1, ku2, 3, errmsg % (i)) errmsg = "At frame #24, Nurbs Plane's control knotsV #%d not equal" for i in range(0, len(knotsV)): kv1 = knotsV[i] kv2 = MayaCmds.getAttr("surfaceInfo1.knotsV[%d]" % (i)) self.failUnlessAlmostEqual(kv1, kv2, 3, errmsg % (i))
def testAnimNurbsPlaneWrite(self, wfg=False): ret = MayaCmds.nurbsPlane(p=(0, 0, 0), ax=(0, 1, 0), w=1, lr=1, d=3, u=5, v=5, ch=0) name = ret[0] MayaCmds.lattice(name, dv=(4, 5, 4), oc=True) MayaCmds.select('ffd1Lattice.pt[1:2][0:4][1:2]', r=True) MayaCmds.currentTime(1, update=True) MayaCmds.setKeyframe() MayaCmds.currentTime(24, update=True) MayaCmds.setKeyframe() MayaCmds.currentTime(12, update=True) MayaCmds.move(0, 0.18, 0, r=True) MayaCmds.scale(2.5, 1.0, 2.5, r=True) MayaCmds.setKeyframe() MayaCmds.curveOnSurface(name, uv=((0.597523, 0), (0.600359, 0.271782), (0.538598, 0.564218), (0.496932, 0.779936), (0.672153, 1)), k=(0, 0, 0, 0.263463, 0.530094, 0.530094, 0.530094)) curvename = MayaCmds.curveOnSurface(name, uv=((0.170718, 0.565967), (0.0685088, 0.393034), (0.141997, 0.206296), (0.95, 0.230359), (0.36264, 0.441381), (0.251243, 0.569889)), k=(0, 0, 0, 0.200545, 0.404853, 0.598957, 0.598957, 0.598957)) MayaCmds.closeCurve(curvename, ch=1, ps=1, rpo=1, bb=0.5, bki=0, p=0.1, cos=1) MayaCmds.trim(name, lu=0.23, lv=0.39) degreeU = MayaCmds.getAttr(name + '.degreeU') degreeV = MayaCmds.getAttr(name + '.degreeV') spansU = MayaCmds.getAttr(name + '.spansU') spansV = MayaCmds.getAttr(name + '.spansV') formU = MayaCmds.getAttr(name + '.formU') formV = MayaCmds.getAttr(name + '.formV') minU = MayaCmds.getAttr(name + '.minValueU') maxU = MayaCmds.getAttr(name + '.maxValueU') minV = MayaCmds.getAttr(name + '.minValueV') maxV = MayaCmds.getAttr(name + '.maxValueV') MayaCmds.createNode('surfaceInfo') MayaCmds.connectAttr(name + '.worldSpace', 'surfaceInfo1.inputSurface', force=True) MayaCmds.currentTime(1, update=True) controlPoints = MayaCmds.getAttr('surfaceInfo1.controlPoints[*]') knotsU = MayaCmds.getAttr('surfaceInfo1.knotsU[*]') knotsV = MayaCmds.getAttr('surfaceInfo1.knotsV[*]') MayaCmds.currentTime(12, update=True) controlPoints2 = MayaCmds.getAttr('surfaceInfo1.controlPoints[*]') knotsU2 = MayaCmds.getAttr('surfaceInfo1.knotsU[*]') knotsV2 = MayaCmds.getAttr('surfaceInfo1.knotsV[*]') if wfg: self.__files.append(util.expandFileName('testAnimNurbsPlane.abc')) MayaCmds.AbcExport(j='-fr 1 24 -frs -0.25 -frs 0.0 -frs 0.25 -wfg -root %s -file %s' % (name, self.__files[-1])) # reading test MayaCmds.AbcImport(self.__files[-1], mode='open') else: self.__files.append(util.expandFileName('testAnimNurbsPlane.abc')) self.__files.append(util.expandFileName('testAnimNurbsPlane01_14.abc')) self.__files.append(util.expandFileName('testAnimNurbsPlane15_24.abc')) MayaCmds.AbcExport(j='-fr 1 14 -root %s -file %s' % (name, self.__files[-2])) MayaCmds.AbcExport(j='-fr 15 24 -root %s -file %s' % (name, self.__files[-1])) # use AbcStitcher to combine two files into one subprocess.call(self.__abcStitcher + self.__files[-3:]) # reading test MayaCmds.AbcImport(self.__files[-3], mode='open') self.failUnlessEqual(degreeU, MayaCmds.getAttr(name + '.degreeU')) self.failUnlessEqual(degreeV, MayaCmds.getAttr(name + '.degreeV')) self.failUnlessEqual(spansU, MayaCmds.getAttr(name + '.spansU')) self.failUnlessEqual(spansV, MayaCmds.getAttr(name + '.spansV')) self.failUnlessEqual(formU, MayaCmds.getAttr(name + '.formU')) self.failUnlessEqual(formV, MayaCmds.getAttr(name + '.formV')) self.failUnlessEqual(minU, MayaCmds.getAttr(name + '.minValueU')) self.failUnlessEqual(maxU, MayaCmds.getAttr(name + '.maxValueU')) self.failUnlessEqual(minV, MayaCmds.getAttr(name + '.minValueV')) self.failUnlessEqual(maxV, MayaCmds.getAttr(name + '.maxValueV')) MayaCmds.createNode('surfaceInfo') MayaCmds.connectAttr(name + '.worldSpace', 'surfaceInfo1.inputSurface', force=True) MayaCmds.currentTime(1, update=True) errmsg = "At frame #1, Nurbs Plane's control point #%d.%s not equal" for i in range(0, len(controlPoints)): cp1 = controlPoints[i] cp2 = MayaCmds.getAttr('surfaceInfo1.controlPoints[%d]' % (i)) self.failUnlessAlmostEqual(cp1[0], cp2[0][0], 3, errmsg % (i, 'x')) self.failUnlessAlmostEqual(cp1[1], cp2[0][1], 3, errmsg % (i, 'y')) self.failUnlessAlmostEqual(cp1[2], cp2[0][2], 3, errmsg % (i, 'z')) errmsg = "At frame #1, Nurbs Plane's control knotsU #%d not equal" for i in range(0, len(knotsU)): ku1 = knotsU[i] ku2 = MayaCmds.getAttr('surfaceInfo1.knotsU[%d]' % (i)) self.failUnlessAlmostEqual(ku1, ku2, 3, errmsg % (i)) errmsg = "At frame #1, Nurbs Plane's control knotsV #%d not equal" for i in range(0, len(knotsV)): kv1 = knotsV[i] kv2 = MayaCmds.getAttr('surfaceInfo1.knotsV[%d]' % (i)) self.failUnlessAlmostEqual(kv1, kv2, 3, errmsg % (i)) MayaCmds.currentTime(12, update=True) errmsg = "At frame #12, Nurbs Plane's control point #%d.%s not equal" for i in range(0, len(controlPoints2)): cp1 = controlPoints2[i] cp2 = MayaCmds.getAttr('surfaceInfo1.controlPoints[%d]' % (i)) self.failUnlessAlmostEqual(cp1[0], cp2[0][0], 3, errmsg % (i, 'x')) self.failUnlessAlmostEqual(cp1[1], cp2[0][1], 3, errmsg % (i, 'y')) self.failUnlessAlmostEqual(cp1[2], cp2[0][2], 3, errmsg % (i, 'z')) errmsg = "At frame #12, Nurbs Plane's control knotsU #%d not equal" for i in range(0, len(knotsU2)): ku1 = knotsU2[i] ku2 = MayaCmds.getAttr('surfaceInfo1.knotsU[%d]' % (i)) self.failUnlessAlmostEqual(ku1, ku2, 3, errmsg % (i)) errmsg = "At frame #12, Nurbs Plane's control knotsV #%d not equal" for i in range(0, len(knotsV2)): kv1 = knotsV2[i] kv2 = MayaCmds.getAttr('surfaceInfo1.knotsV[%d]' % (i)) self.failUnlessAlmostEqual(kv1, kv2, 3, errmsg % (i)) MayaCmds.currentTime(24, update=True) errmsg = "At frame #24, Nurbs Plane's control point #%d.%s not equal" for i in range(0, len(controlPoints)): cp1 = controlPoints[i] cp2 = MayaCmds.getAttr('surfaceInfo1.controlPoints[%d]' % (i)) self.failUnlessAlmostEqual(cp1[0], cp2[0][0], 3, errmsg % (i, 'x')) self.failUnlessAlmostEqual(cp1[1], cp2[0][1], 3, errmsg % (i, 'y')) self.failUnlessAlmostEqual(cp1[2], cp2[0][2], 3, errmsg % (i, 'z')) errmsg = "At frame #24, Nurbs Plane's control knotsU #%d not equal" for i in range(0, len(knotsU)): ku1 = knotsU[i] ku2 = MayaCmds.getAttr('surfaceInfo1.knotsU[%d]' % (i)) self.failUnlessAlmostEqual(ku1, ku2, 3, errmsg % (i)) errmsg = "At frame #24, Nurbs Plane's control knotsV #%d not equal" for i in range(0, len(knotsV)): kv1 = knotsV[i] kv2 = MayaCmds.getAttr('surfaceInfo1.knotsV[%d]' % (i)) self.failUnlessAlmostEqual(kv1, kv2, 3, errmsg % (i))
def testStaticNurbsPlaneWithOneSegmentTrimReadWrite(self): ret = MayaCmds.nurbsPlane(p=(0, 0, 0), ax=(0, 1, 0), w=1, lr=1, d=3, u=5, v=5, ch=0) name = ret[0] MayaCmds.curveOnSurface(name, uv=((0.597523, 0), (0.600359, 0.271782), (0.538598, 0.564218), (0.496932, 0.779936), (0.672153, 1)), k=(0, 0, 0, 0.263463, 0.530094, 0.530094, 0.530094)) MayaCmds.trim(name, lu=0.68, lv=0.39) degreeU = MayaCmds.getAttr(name + '.degreeU') degreeV = MayaCmds.getAttr(name + '.degreeV') spansU = MayaCmds.getAttr(name + '.spansU') spansV = MayaCmds.getAttr(name + '.spansV') minU = MayaCmds.getAttr(name + '.minValueU') maxU = MayaCmds.getAttr(name + '.maxValueU') minV = MayaCmds.getAttr(name + '.minValueV') maxV = MayaCmds.getAttr(name + '.maxValueV') MayaCmds.createNode('surfaceInfo') MayaCmds.connectAttr(name + '.worldSpace', 'surfaceInfo1.inputSurface', force=True) controlPoints = MayaCmds.getAttr('surfaceInfo1.controlPoints[*]') knotsU = MayaCmds.getAttr('surfaceInfo1.knotsU[*]') knotsV = MayaCmds.getAttr('surfaceInfo1.knotsV[*]') self.__files.append( util.expandFileName('testStaticNurbsPlaneWithOneSegmentTrim.abc')) MayaCmds.AbcExport(j='-root %s -f %s' % (name, self.__files[-1])) # reading test MayaCmds.AbcImport(self.__files[-1], mode='open') self.failUnlessEqual(degreeU, MayaCmds.getAttr(name + '.degreeU')) self.failUnlessEqual(degreeV, MayaCmds.getAttr(name + '.degreeV')) self.failUnlessEqual(spansU, MayaCmds.getAttr(name + '.spansU')) self.failUnlessEqual(spansV, MayaCmds.getAttr(name + '.spansV')) self.failUnlessEqual(0, MayaCmds.getAttr(name + '.formU')) self.failUnlessEqual(0, MayaCmds.getAttr(name + '.formV')) self.failUnlessEqual(minU, MayaCmds.getAttr(name + '.minValueU')) self.failUnlessEqual(maxU, MayaCmds.getAttr(name + '.maxValueU')) self.failUnlessEqual(minV, MayaCmds.getAttr(name + '.minValueV')) self.failUnlessEqual(maxV, MayaCmds.getAttr(name + '.maxValueV')) MayaCmds.createNode('surfaceInfo') MayaCmds.connectAttr(name + '.worldSpace', 'surfaceInfo1.inputSurface', force=True) for i in range(0, len(controlPoints)): cp1 = controlPoints[i] cp2 = MayaCmds.getAttr('surfaceInfo1.controlPoints[%d]' % i) self.failUnlessAlmostEqual(cp1[0], cp2[0][0], 3, 'control point [%d].x not equal' % i) self.failUnlessAlmostEqual(cp1[1], cp2[0][1], 3, 'control point [%d].y not equal' % i) self.failUnlessAlmostEqual(cp1[2], cp2[0][2], 3, 'control point [%d].z not equal' % i) for i in range(0, len(knotsU)): ku1 = knotsU[i] ku2 = MayaCmds.getAttr('surfaceInfo1.knotsU[%d]' % i) self.failUnlessAlmostEqual(ku1, ku2, 3, 'control knotsU # %d not equal' % i) for i in range(0, len(knotsV)): kv1 = knotsV[i] kv2 = MayaCmds.getAttr('surfaceInfo1.knotsV[%d]' % i) self.failUnlessAlmostEqual(kv1, kv2, 3, 'control knotsV # %d not equal' % i)
def testStaticNurbsWithOneCloseCurveTrim(self, surfacetype, abcFileName, trimtype): if (surfacetype == 0): ret = MayaCmds.nurbsPlane(p=(0, 0, 0), ax=(0, 1, 0), w=1, lr=1, d=3, u=5, v=5, ch=0) elif (surfacetype == 1): ret = MayaCmds.sphere(p=(0, 0, 0), ax=(0, 1, 0), ssw=0, esw=360, r=1, d=3, ut=0, tol=0.01, s=8, nsp=4, ch=0) elif (surfacetype == 2): ret = MayaCmds.torus(p=(0, 0, 0), ax=(0, 1, 0), ssw=0, esw=360, msw=360, r=1, hr=0.5, ch=0) name = ret[0] MayaCmds.curveOnSurface(name, uv=((0.170718, 0.565967), (0.0685088, 0.393034), (0.141997, 0.206296), (0.95, 0.230359), (0.36264, 0.441381), (0.251243, 0.569889)), k=(0, 0, 0, 0.200545, 0.404853, 0.598957, 0.598957, 0.598957)) MayaCmds.closeCurve(name + '->curve1', ch=1, ps=1, rpo=1, bb=0.5, bki=0, p=0.1, cos=1) if trimtype == 0: MayaCmds.trim(name, lu=0.68, lv=0.39) elif 1: MayaCmds.trim(name, lu=0.267062, lv=0.39475) degreeU = MayaCmds.getAttr(name + '.degreeU') degreeV = MayaCmds.getAttr(name + '.degreeV') spansU = MayaCmds.getAttr(name + '.spansU') spansV = MayaCmds.getAttr(name + '.spansV') formU = MayaCmds.getAttr(name + '.formU') formV = MayaCmds.getAttr(name + '.formV') minU = MayaCmds.getAttr(name + '.minValueU') maxU = MayaCmds.getAttr(name + '.maxValueU') minV = MayaCmds.getAttr(name + '.minValueV') maxV = MayaCmds.getAttr(name + '.maxValueV') surfaceInfoNode = MayaCmds.createNode('surfaceInfo') MayaCmds.connectAttr(name + '.worldSpace', surfaceInfoNode + '.inputSurface', force=True) controlPoints = MayaCmds.getAttr(surfaceInfoNode + '.controlPoints[*]') knotsU = MayaCmds.getAttr(surfaceInfoNode + '.knotsU[*]') knotsV = MayaCmds.getAttr(surfaceInfoNode + '.knotsV[*]') MayaCmds.AbcExport(j='-root %s -f %s' % (name, abcFileName)) MayaCmds.AbcImport(abcFileName, mode='open') self.failUnlessEqual(degreeU, MayaCmds.getAttr(name + '.degreeU')) self.failUnlessEqual(degreeV, MayaCmds.getAttr(name + '.degreeV')) self.failUnlessEqual(spansU, MayaCmds.getAttr(name + '.spansU')) self.failUnlessEqual(spansV, MayaCmds.getAttr(name + '.spansV')) self.failUnlessEqual(minU, MayaCmds.getAttr(name + '.minValueU')) self.failUnlessEqual(maxU, MayaCmds.getAttr(name + '.maxValueU')) self.failUnlessEqual(minV, MayaCmds.getAttr(name + '.minValueV')) self.failUnlessEqual(maxV, MayaCmds.getAttr(name + '.maxValueV')) surfaceInfoNode = MayaCmds.createNode('surfaceInfo') MayaCmds.connectAttr(name + '.worldSpace', surfaceInfoNode + '.inputSurface', force=True) controlPoints2 = MayaCmds.getAttr(surfaceInfoNode + '.controlPoints[*]') self.failUnlessEqual(len(controlPoints), len(controlPoints2)) for i in range(0, len(controlPoints)): cp1 = controlPoints[i] cp2 = controlPoints2[i] self.failUnlessAlmostEqual(cp1[0], cp2[0], 3, 'cp[%d].x not equal' % i) self.failUnlessAlmostEqual(cp1[1], cp2[1], 3, 'cp[%d].y not equal' % i) self.failUnlessAlmostEqual(cp1[2], cp2[2], 3, 'cp[%d].z not equal' % i) for i in range(0, len(knotsU)): ku1 = knotsU[i] ku2 = MayaCmds.getAttr('surfaceInfo1.knotsU[%d]' % i) self.failUnlessAlmostEqual(ku1, ku2, 3, 'control knotsU # %d not equal' % i) for i in range(0, len(knotsV)): kv1 = knotsV[i] kv2 = MayaCmds.getAttr('surfaceInfo1.knotsV[%d]' % i) self.failUnlessAlmostEqual(kv1, kv2, 3, 'control knotsV # %d not equal' % i)
def testStaticNurbsPlaneWithOneSegmentTrimReadWrite(self): ret = MayaCmds.nurbsPlane(p=(0, 0, 0), ax=(0, 1, 0), w=1, lr=1, d=3, u=5, v=5, ch=0) name = ret[0] MayaCmds.curveOnSurface(name, uv=((0.597523,0), (0.600359,0.271782), (0.538598,0.564218), (0.496932,0.779936), (0.672153,1)), k=(0,0,0,0.263463,0.530094,0.530094,0.530094)) MayaCmds.trim(name, lu=0.68, lv=0.39) degreeU = MayaCmds.getAttr(name+'.degreeU') degreeV = MayaCmds.getAttr(name+'.degreeV') spansU = MayaCmds.getAttr(name+'.spansU') spansV = MayaCmds.getAttr(name+'.spansV') minU = MayaCmds.getAttr(name+'.minValueU') maxU = MayaCmds.getAttr(name+'.maxValueU') minV = MayaCmds.getAttr(name+'.minValueV') maxV = MayaCmds.getAttr(name+'.maxValueV') MayaCmds.createNode('surfaceInfo') MayaCmds.connectAttr(name+'.worldSpace', 'surfaceInfo1.inputSurface', force=True) controlPoints = MayaCmds.getAttr('surfaceInfo1.controlPoints[*]') knotsU = MayaCmds.getAttr('surfaceInfo1.knotsU[*]') knotsV = MayaCmds.getAttr('surfaceInfo1.knotsV[*]') self.__files.append(util.expandFileName('testStaticNurbsPlaneWithOneSegmentTrim.abc')) MayaCmds.AbcExport(j='-root %s -f %s' % (name, self.__files[-1])) # reading test MayaCmds.AbcImport(self.__files[-1], mode='open') self.failUnlessEqual(degreeU, MayaCmds.getAttr(name+'.degreeU')) self.failUnlessEqual(degreeV, MayaCmds.getAttr(name+'.degreeV')) self.failUnlessEqual(spansU, MayaCmds.getAttr(name+'.spansU')) self.failUnlessEqual(spansV, MayaCmds.getAttr(name+'.spansV')) self.failUnlessEqual(0, MayaCmds.getAttr(name+'.formU')) self.failUnlessEqual(0, MayaCmds.getAttr(name+'.formV')) self.failUnlessEqual(minU, MayaCmds.getAttr(name+'.minValueU')) self.failUnlessEqual(maxU, MayaCmds.getAttr(name+'.maxValueU')) self.failUnlessEqual(minV, MayaCmds.getAttr(name+'.minValueV')) self.failUnlessEqual(maxV, MayaCmds.getAttr(name+'.maxValueV')) MayaCmds.createNode('surfaceInfo') MayaCmds.connectAttr(name+'.worldSpace', 'surfaceInfo1.inputSurface', force=True) for i in range(0, len(controlPoints)): cp1 = controlPoints[i] cp2 = MayaCmds.getAttr('surfaceInfo1.controlPoints[%d]' % i) self.failUnlessAlmostEqual(cp1[0], cp2[0][0], 3, 'control point [%d].x not equal' % i) self.failUnlessAlmostEqual(cp1[1], cp2[0][1], 3, 'control point [%d].y not equal' % i) self.failUnlessAlmostEqual(cp1[2], cp2[0][2], 3, 'control point [%d].z not equal' % i) for i in range(0, len(knotsU)): ku1 = knotsU[i] ku2 = MayaCmds.getAttr('surfaceInfo1.knotsU[%d]' % i) self.failUnlessAlmostEqual(ku1, ku2, 3, 'control knotsU # %d not equal' % i) for i in range(0, len(knotsV)): kv1 = knotsV[i] kv2 = MayaCmds.getAttr('surfaceInfo1.knotsV[%d]' % i) self.failUnlessAlmostEqual(kv1, kv2, 3, 'control knotsV # %d not equal' % i)
def testStaticNurbsWithOneCloseCurveTrim(self, surfacetype, abcFileName, trimtype): if (surfacetype == 0): ret = MayaCmds.nurbsPlane(p=(0, 0, 0), ax=(0, 1, 0), w=1, lr=1, d=3, u=5, v=5, ch=0) elif (surfacetype == 1): ret = MayaCmds.sphere(p=(0, 0, 0), ax=(0, 1, 0), ssw=0, esw=360, r=1, d=3, ut=0, tol=0.01, s=8, nsp=4, ch=0) elif (surfacetype == 2): ret = MayaCmds.torus(p=(0, 0, 0), ax=(0, 1, 0), ssw=0, esw=360, msw=360, r=1, hr=0.5, ch=0) name = ret[0] MayaCmds.curveOnSurface(name, uv=((0.170718,0.565967), (0.0685088,0.393034), (0.141997,0.206296), (0.95,0.230359), (0.36264,0.441381), (0.251243,0.569889)), k=(0,0,0,0.200545,0.404853,0.598957,0.598957,0.598957)) MayaCmds.closeCurve(name+'->curve1', ch=1, ps=1, rpo=1, bb=0.5, bki=0, p=0.1, cos=1) if trimtype == 0 : MayaCmds.trim(name, lu=0.68, lv=0.39) elif 1 : MayaCmds.trim(name, lu=0.267062, lv=0.39475) degreeU = MayaCmds.getAttr(name+'.degreeU') degreeV = MayaCmds.getAttr(name+'.degreeV') spansU = MayaCmds.getAttr(name+'.spansU') spansV = MayaCmds.getAttr(name+'.spansV') formU = MayaCmds.getAttr(name+'.formU') formV = MayaCmds.getAttr(name+'.formV') minU = MayaCmds.getAttr(name+'.minValueU') maxU = MayaCmds.getAttr(name+'.maxValueU') minV = MayaCmds.getAttr(name+'.minValueV') maxV = MayaCmds.getAttr(name+'.maxValueV') surfaceInfoNode = MayaCmds.createNode('surfaceInfo') MayaCmds.connectAttr(name+'.worldSpace', surfaceInfoNode+'.inputSurface', force=True) controlPoints = MayaCmds.getAttr(surfaceInfoNode+'.controlPoints[*]') knotsU = MayaCmds.getAttr(surfaceInfoNode+'.knotsU[*]') knotsV = MayaCmds.getAttr(surfaceInfoNode+'.knotsV[*]') MayaCmds.AbcExport(j='-root %s -f %s' % (name, abcFileName)) MayaCmds.AbcImport(abcFileName, mode='open') self.failUnlessEqual(degreeU, MayaCmds.getAttr(name+'.degreeU')) self.failUnlessEqual(degreeV, MayaCmds.getAttr(name+'.degreeV')) self.failUnlessEqual(spansU, MayaCmds.getAttr(name+'.spansU')) self.failUnlessEqual(spansV, MayaCmds.getAttr(name+'.spansV')) self.failUnlessEqual(minU, MayaCmds.getAttr(name+'.minValueU')) self.failUnlessEqual(maxU, MayaCmds.getAttr(name+'.maxValueU')) self.failUnlessEqual(minV, MayaCmds.getAttr(name+'.minValueV')) self.failUnlessEqual(maxV, MayaCmds.getAttr(name+'.maxValueV')) surfaceInfoNode = MayaCmds.createNode('surfaceInfo') MayaCmds.connectAttr(name+'.worldSpace', surfaceInfoNode+'.inputSurface', force=True) controlPoints2 = MayaCmds.getAttr( surfaceInfoNode + '.controlPoints[*]') self.failUnlessEqual(len(controlPoints), len(controlPoints2)) for i in range(0, len(controlPoints)): cp1 = controlPoints[i] cp2 = controlPoints2[i] self.failUnlessAlmostEqual(cp1[0], cp2[0], 3, 'cp[%d].x not equal' % i) self.failUnlessAlmostEqual(cp1[1], cp2[1], 3, 'cp[%d].y not equal' % i) self.failUnlessAlmostEqual(cp1[2], cp2[2], 3, 'cp[%d].z not equal' % i) for i in range(0, len(knotsU)): ku1 = knotsU[i] ku2 = MayaCmds.getAttr('surfaceInfo1.knotsU[%d]' % i) self.failUnlessAlmostEqual(ku1, ku2, 3, 'control knotsU # %d not equal' % i) for i in range(0, len(knotsV)): kv1 = knotsV[i] kv2 = MayaCmds.getAttr('surfaceInfo1.knotsV[%d]' % i) self.failUnlessAlmostEqual(kv1, kv2, 3, 'control knotsV # %d not equal' % i)