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); }
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 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))); }