Beispiel #1
0
        public static MSelectionList DuplicateDags(MSelectionList list)
        {
            if (list == null)
            {
                return(null);
            }
            MSelectionList originSelect = GetSelectedList();

            CmdStrConstructor cc = new CmdStrConstructor("duplicate");

            cc.UpdateToggle("rr", true);
            List <string> targets = new List <string>();

            foreach (MDagPath dag in list.DagPaths())
            {
                targets.Add(dag.fullPathName);
            }
            cc.UpdateTargets(targets);
            MGlobal.executeCommand(cc.ToString());

            //string resultName = MGlobal.executeCommandStringResult("duplicate -rr");
            MSelectionList newList = GetSelectedList();

            Select(originSelect);
            return(newList);
        }
        public static string[] AddIKHandle(MDagPath startJointDagPath, MDagPath endJointDagPath, IKSolverType solverType = IKSolverType.RotatePlane, string curveName = "")
        {
            //string typeStr = "";
            string resultStr = "";

            CmdStrConstructor csc = new CmdStrConstructor("ikHandle", CmdStrConstructor.CmdType.Python);

            csc.UpdateParm("sj", startJointDagPath.fullPathName);
            csc.UpdateParm("ee", endJointDagPath.fullPathName);

            string ikMainName = startJointDagPath.partialPathName + "_" + endJointDagPath.partialPathName;

            switch (solverType)
            {
            case IKSolverType.SingleChain:
            {
                csc.UpdateParm("sol", "ikSCsolver");
                csc.UpdateParm("n", "ik_" + ikMainName);
                string excuteStr = csc.ToString();
                resultStr = MGlobal.executePythonCommandStringResult(excuteStr);
                //typeStr = "ikSCsolver";
                //resultStr = MGlobal.executePythonCommandStringResult("cmds.ikHandle(sj='" + startJointDagPath.fullPathName + "',ee='" + endJointDagPath.fullPathName + "',sol='" + typeStr + "',n='ik_" + ikMainName + "')");
                break;
            }

            case IKSolverType.RotatePlane:
            {
                csc.UpdateParm("sol", "ikRPsolver");
                csc.UpdateParm("n", "ik_" + ikMainName);
                string excuteStr = csc.ToString();
                resultStr = MGlobal.executePythonCommandStringResult(excuteStr);
                //typeStr = "ikRPsolver";
                //resultStr = MGlobal.executePythonCommandStringResult("cmds.ikHandle(sj='" + startJointDagPath.fullPathName + "',ee='" + endJointDagPath.fullPathName + "',sol='" + typeStr + "',n='ik_" + ikMainName + "')");
                break;
            }

            case IKSolverType.Spline:
            {
                csc.UpdateParm("sol", "ikSplineSolver");
                csc.UpdateParm("n", "ik_" + ikMainName);
                csc.UpdateParm("ccv", curveName == null || curveName.Length == 0);
                csc.UpdateParm("c", curveName);
                csc.UpdateParm("pcv", false);
                string excuteStr = csc.ToString();
                resultStr = MGlobal.executePythonCommandStringResult(excuteStr);
                //resultStr = MGlobal.executePythonCommandStringResult("cmds.ikHandle(sj='" + startJointDagPath.fullPathName + "',ee='" + endJointDagPath.fullPathName + "',sol='" + typeStr + "',c='" + curveName + "',n='ik_" + ikMainName + "')",true);
                break;
            }
            }
            //[u'ik_joint1_joint4', u'effector1']
            string[] resultArr = BasicFunc.SplitPythonResultStr(resultStr);

            return(resultArr);
        }
Beispiel #3
0
        public static MFnDependencyNode CreateShadingNode(ShadingNodeType snt, string nodeType)
        {
            //Debug.Log("try create shadingNode:" + snt + " :" + nodeType);
            CmdStrConstructor csc = new CmdStrConstructor("shadingNode");

            switch (snt)
            {
            case ShadingNodeType.Texture:
            {
                csc.UpdateToggle("at", true);
                break;
            }

            case ShadingNodeType.Utility:
            {
                csc.UpdateToggle("au", true);
                break;
            }

            case ShadingNodeType.Shader:
            {
                csc.UpdateToggle("as", true);
                break;
            }

            case ShadingNodeType.Light:
            {
                csc.UpdateToggle("al", true);
                break;
            }

            case ShadingNodeType.PostProcess:
            {
                csc.UpdateToggle("app", true);
                break;
            }

            case ShadingNodeType.Rendering:
            {
                csc.UpdateToggle("ar", true);
                break;
            }
            }
            csc.UpdateFinalAppend(nodeType);
            string cmdStr = csc.ToString();
            //Debug.Log("command:" + cmdStr);
            string nodeName = MGlobal.executeCommandStringResult(cmdStr, true);

            //Debug.Log("create node result:" + nodeName);
            return(new MFnDependencyNode(BasicFunc.GetObjectByName(nodeName)));
        }