def test_timings(): """CMDX_TIMINGS outputs timing information""" import cmdx cmdx.createNode("transform", name="myNode") # Trigger re-use timings cmdx.encode("myNode") assert cmdx.LastTiming is None with environment("CMDX_TIMINGS") as cmdx: cmdx.encode("myNode") assert cmdx.LastTiming is not None, cmdx.LastTiming
def test_nodereuse_equalexist(): """Node re-use on new, same-name nodes""" nodeA = cmdx.createNode("transform", name="myNode") nodeB = cmdx.createNode("transform", parent=nodeA) assert_is(cmdx.encode("|myNode"), nodeA) assert_is(nodeB.parent(), nodeA) cmds.file(new=True, force=True) assert_raises(cmdx.ExistError, cmdx.encode, "|myNode") nodeC = cmdx.createNode("transform", name="myNode") assert_is(cmdx.encode("|myNode"), nodeC)
def test_nodereuse(): """Node re-use works ok""" import cmdx nodeA = cmdx.createNode("transform", name="myNode") nodeB = cmdx.createNode("transform", parent=nodeA) assert_is(cmdx.encode("|myNode"), nodeA) assert_is(nodeB.parent(), nodeA) with tempdir() as tmp: fname = os.path.join(tmp, "myScene.ma") cmds.file(rename=fname) cmds.file(save=True, type="mayaAscii") cmds.file(fname, open=True, force=True) # On scene open, the current scene is closed, triggering # the nodeDestroyed callback which invalidates the node # for cmdx. Upon encoding this node anew, cmdx will # allocate a new instance for it. assert_is_not(cmdx.encode("|myNode"), nodeA)
def test_nodereuse_noexist(): """Node re-use works on non-existent nodes""" nodeA = cmdx.createNode("transform", name="myNode") nodeB = cmdx.createNode("transform", parent=nodeA) assert_is(cmdx.encode("|myNode"), nodeA) assert_is(nodeB.parent(), nodeA) cmds.file(new=True, force=True) # Even if it's available for re-use, it will still throw # a cmdx.ExistError on account of trying to fetch an MObject # from a non-existing node. assert_raises(cmdx.ExistError, cmdx.encode, "|myNode") # Any operation on a deleted node raises RuntimeError assert_raises(RuntimeError, lambda: nodeA.name())
# cmdx and cmdx interop from maya import cmds import cmdx node = cmds.createNode("transform") node = cmds.rename(node, "MyNode") node = cmdx.encode(node) node["rotate"] = (0, 45, 0) cmds.select(str(node))