private void RenameHierachy(object sender, RoutedEventArgs e) { BasicFunc.IterateSelectedDags((dag) => { List <MDagPath> dags = BasicFunc.GetHierachyAll(dag); foreach (MDagPath d in dags) { MFnDependencyNode node = new MFnDependencyNode(d.node); node.setName(GetNewName(node.name)); } }); }
public static void BindNCloth(MSelectionList selecteList = null) { if (selecteList == null) { selecteList = BasicFunc.GetSelectedList(); } int count = (int)selecteList.length; if (count <= 1) { //Debug.Log("ncloth control switch target: select [ctl,ncloth0,ncloth1...]"); return; } else { //Debug.Log("ncloth control switch target count:" + count); } MDagPath ctlDag = new MDagPath(); selecteList.getDagPath(0, ctlDag); selecteList.remove(0); MFnDependencyNode dn_ctl = new MFnDependencyNode(ctlDag.node); BasicFunc.IterateSelectedDags((dag) => { //Debug.Log("ncloth control set for:"+dag.fullPathName); MPlug ctlNewAttrPlug = BindAttr.AddBoolAttr(dn_ctl, "Dynamic_" + dag.partialPathName, true, "", false); dag.extendToShape(); MFnDependencyNode dn_nCloth = new MFnDependencyNode(dag.node); MPlug plug_isDynamic = dn_nCloth.findPlug(ConstantValue.plugName_nCloth_isDynamic); MPlug plug_currentTime = dn_nCloth.findPlug(ConstantValue.plugName_nCloth_currentTime); if (plug_isDynamic != null && plug_currentTime != null) { MPlugArray inputArr_currentTime = new MPlugArray(); plug_currentTime.connectedTo(inputArr_currentTime, true, false); MFnDependencyNode dn_time = new MFnDependencyNode(inputArr_currentTime[0].node); BindAttr.ProjectPlug(plug_isDynamic, dn_time.findPlug(ConstantValue.plugName_nClothTime_nodeState), 0, 1, (int)ConstantValue.TimeNodeState.Stuck, (int)ConstantValue.TimeNodeState.Normal); } BasicFunc.ConnectPlug(ctlNewAttrPlug, plug_isDynamic); }, MFn.Type.kNCloth, selecteList); //List<string> nclothNameList = new List<string>(); //foreach (MDagPath dag in nclothList.DagPaths()) //{ // nclothNameList.Add() //} }
public static List <CommandData> GetCommandDatas() { List <CommandData> cmdList = new List <CommandData>(); //cmdList.Add(new CommandData("网格", "材质")); cmdList.Add(new CommandData("网格", cmdStr, "printEdges", "打印所有边", () => { BasicFunc.IterateSelectedDags((dag) => { dag.extendToShape(); MFnMesh mesh = new MFnMesh(dag); CombineOverLappingEdge(mesh, 0.01f); }, MFn.Type.kMesh); })); cmdList.Add(new CommandData("网格", cmdStr, "realExtract", "老实地提取", () => { ExtractFacesIntoOneObject(BasicFunc.GetSelectedList()); })); return(cmdList); }
private void LoadJoints(object sender, RoutedEventArgs e) { joints.Clear(); //stackPanels.Clear(); grid_jointSliders.Children.Clear(); sliders.Clear(); BasicFunc.IterateSelectedDags((dag) => { joints.Add(new MFnIkJoint(dag)); }, MFn.Type.kJoint); //<StackPanel Orientation="Horizontal"> // <Button Style="{StaticResource NormalButton}" Width="80" Height="40" Click="LoadJoints">Joint 0</Button> // <Slider Style="{StaticResource NormalSlider}" Name="test"/> //</StackPanel> MVector lastJointWorldPos = joints[joints.Count - 1].getTranslation(MSpace.Space.kWorld); MVector firstJointWorldPos = joints[0].getTranslation(MSpace.Space.kWorld); double totalLength = (lastJointWorldPos - firstJointWorldPos).length; for (int i = 0; i < joints.Count; i++) { StackPanel panel = new StackPanel { Orientation = Orientation.Horizontal }; Button btn = new Button { Style = this.FindResource("NormalButton") as Style, Width = 80, Height = 40, Name = "jointBtn_" + i, Content = joints[i].absoluteName }; int index = i;//local variable is important btn.Click += new RoutedEventHandler((obj, ea) => { //choose BasicFunc.Select(joints[index].dagPath); }); panel.Children.Add(btn); if (i != 0 && i != joints.Count - 1) { MVector jointWorldPos = joints[i].getTranslation(MSpace.Space.kWorld); Slider newSlider = new Slider { Style = this.FindResource("NormalSlider") as Style, Name = "jointSlider_" + i }; newSlider.Value = (jointWorldPos - firstJointWorldPos).length / totalLength; //newSlider.ValueChanged += new RoutedPropertyChangedEventHandler<double>((obj, rpce) => //{ // .NewValue //}); panel.Children.Add(newSlider); sliders.Add(newSlider); } else { sliders.Add(null); } grid_jointSliders.Children.Add(panel); } //newSlider. }