private void Itm_Renamed(object sender, MFnDagNode dagNode) { //ToDo: get the rename system working var dag = (DMCurve)sender; if (SelectedItems.ContainsKey(dag.dagName)) { string newName = dagNode.partialPathName; string oldName = dag.dagName; isFromUpdate = true; SelectedItems.Remove(oldName); mayaName.Remove(oldName); mayaGeom.Remove(oldName); var dmGeom = new DMCurve(dagNode.dagPath, m_mSpace); SelectedItems.Add(newName, dmGeom); buildAstNodes(newName); rebuildItemNameList(); OnNodeModified(true); } dag.Dispose(); }
public static List <Curve> getSmothMeshEdges(MFnMesh mayaMesh, bool createInMaya = false) { //MCommandResult result = new MCommandResult(); int ne = mayaMesh.numEdges; MFnTransform group = new MFnTransform(); List <Curve> curveObjects = new List <Curve>(ne); MStringArray resultStr = new MStringArray(); var fullName = mayaMesh.fullPathName.Split('|'); string transformName = fullName[fullName.Length - 2]; if (createInMaya) { for (int i = 0; i < ne; i++) { using (MCommandResult result = new MCommandResult()) { MGlobal.executeCommand( $"polyToCurve -name {transformName}Curves -form 2 -degree 3 -conformToSmoothMeshPreview 1 {transformName}.e[{i}]", result); result.getResult(resultStr); curveObjects.Add( DMCurve.CurveFromMfnNurbsCurveFromName(resultStr[0], MSpace.Space.kPostTransform.ToString())); } } } else { //Parallel.For(0, ne, i => { for (int i = 0; i < ne; i++) { using (MCommandResult result = new MCommandResult()) { MGlobal.executeCommand( $"polyToCurve -name deleteMe11232204332AA -form 2 -degree 3 -conformToSmoothMeshPreview 1 {transformName}.e[{i}]", result); result.getResult(resultStr); curveObjects.Add( DMCurve.CurveFromMfnNurbsCurveFromName(resultStr[0], MSpace.Space.kPostTransform.ToString())); try { MGlobal.deleteNode(DMInterop.getDependNode(resultStr[0])); } catch { MGlobal.displayWarning("getSmothMeshEdges: unable to delete temp object"); } } } // }); } return(curveObjects); }
/// <summary> ///Get Curve via remote connection to maya /// </summary> /// <param name="curveName"></param> public static Curve GetCurveByNameRemote(string curveName) { var s = MayaCommunication.OpenChannelToMaya(); var dagpath = s.getDagNode(curveName); MayaCommunication.CloseChannelToMaya(s); return(DMCurve.MTDCurveFromDag(dagpath, 0)); }
public static List <List <Curve> > getSmothMeshEdgesPerFace(MFnMesh mayaMesh, bool createInMaya = false) { MCommandResult ptcResult = new MCommandResult(); MCommandResult teResult = new MCommandResult(); int numPoly = mayaMesh.numPolygons; List <List <Curve> > curveObjects = new List <List <Curve> >(numPoly); MStringArray ptcResultStr = new MStringArray(); MStringArray teResultStr = new MStringArray(); MStringArray teResultStrFlat = new MStringArray(); List <Curve> tempCurveArray = null; if (createInMaya) { } else { for (int i = 0; i < numPoly; i++) { MGlobal.executeCommand($"polyListComponentConversion -te {mayaMesh.name}.f[{i}]", teResult); teResult.getResult(teResultStr); MGlobal.clearSelectionList(); foreach (var ters in teResultStr) { MGlobal.selectByName(ters, MGlobal.ListAdjustment.kAddToList); } MGlobal.executeCommand($"ls -sl -fl", teResult); teResult.getResult(teResultStrFlat); tempCurveArray = new List <Curve>((int)teResultStrFlat.length); foreach (var e in teResultStrFlat) { MGlobal.executeCommand($"polyToCurve -name deleteMe11232204332AA -form 2 -degree 3 -conformToSmoothMeshPreview 1 {e}", ptcResult); ptcResult.getResult(ptcResultStr); tempCurveArray.Add(DMCurve.CurveFromMfnNurbsCurveFromName(ptcResultStr[0], MSpace.Space.kPostTransform.ToString())); try { MGlobal.deleteNode(DMInterop.getDependNode(ptcResultStr[0])); } catch { MGlobal.displayWarning("getSmothMeshEdges: unable to delete temp object"); } } curveObjects.Add(tempCurveArray); } } return(curveObjects); }
public static void SendCurves(List <Curve> Crv, string CurveName = "DynamoCurve") { if (Crv.Count > 0) { for (int i = 0; i < Crv.Count; i++) { DMCurve.DynamoCurveToMaya(Crv[i], CurveName); } } }
internal void GetNewGeom() { // VMDataBridge.DataBridge.Instance.UnregisterCallback(GUID.ToString()); if (firstRun) { firstRun = false; } else { if (SelectedItems != null) { foreach (var itm in SelectedItems.Values) { itm.Dispose(); } } } MSelectionList selectionList = new MSelectionList(); MGlobal.getActiveSelectionList(selectionList, true); if (selectionList.isEmpty) { SelectedItems = null; OnNodeModified(true); return; } var TransObjectList = selectionList.DagPaths(MFn.Type.kTransform).ToList(); var DagObjectList = selectionList.DagPaths(MFn.Type.kMesh).ToList(); SelectedItems = new Dictionary <string, DMCurve>(DagObjectList.Count); m_SelectedItemNames = new List <string>(DagObjectList.Count); foreach (var dag in TransObjectList) { if (dag.hasFn(MFn.Type.kCurve)) { var itm = new DMCurve(dag, space); itm.Renamed += Itm_Renamed; itm.Deleted += MObjOnDeleted; SelectedItems.Add(itm.dagName, itm); m_SelectedItemNames.Add(itm.dagName); // ct++; } } m_SelectedItemNamesString = ConvertStringListToString(m_SelectedItemNames); OnNodeModified(true); }
public static bool processGeometry(object geom, string name, string groupName) { bool sucess = true; if (geom is Curve) { DMCurve.ToMaya((Curve)geom, name); } else if (geom is Rectangle) { DMCurve.ToMaya((Rectangle)geom, name); } else if (geom is Surface) { DMSurface.ToMaya((Surface)geom, name, groupName); } else if (geom is CoordinateSystem) { DMLocator.ToMaya((CoordinateSystem)geom, name); } else if (geom is Mesh) { DMMesh dmMesh = new DMMesh(); dmMesh.ToMaya((Mesh)geom, name); } else if (geom is TSplineSurface) { DMMesh dmMesh = new DMMesh(); dmMesh.ToMayaFromTSplinesSurf((TSplineSurface)geom, name); } else if (geom is CoordinateSystem) { DMLocator.ToMaya((CoordinateSystem)geom, name); } else if (geom is Point) { DMLocator.ToMaya((Point)geom, name); } else { sucess = false; } return(sucess); }
internal void MObjOnChanged(object sender, MFnDagNode dagNode) { if (!isUpdating) { isUpdating = true; var dag = new DMCurve(dagNode.dagPath, space); // if (liveUpdate) // { isFromUpdate = true; if (SelectedItems.ContainsKey(dag.dagName)) { SelectedItems[dag.dagName] = dag; dynamoElement[dag.dagName] = AstFactory.BuildFunctionCall( dynamoElementFunc, new List <AssociativeNode> { AstFactory.BuildStringNode(dag.dagName), AstFactory.BuildStringNode(m_mSpace) }); /* * mayaGeom[dag.dagName] = AstFactory.BuildFunctionCall( * MayaElementFunc, * new List<AssociativeNode> * { * AstFactory.BuildStringNode(dag.dagName), * AstFactory.BuildStringNode(m_mSpace) * });*/ } OnNodeModified(true); //} // else // { // MarkNodeAsModified(true); // } } }
public static Curve[] ReceiveAllCurvesRemote(string CS) { List <Curve> MayaCurves; var lMayaNurbsCurves = new List <string>(); try { var s = MayaCommunication.OpenChannelToMaya(); lMayaNurbsCurves = s.getMayaNodesByType(MFnType.kNurbsCurve); MayaCommunication.CloseChannelToMaya(s); } finally { MayaCurves = new List <Curve>(lMayaNurbsCurves.Count); foreach (var c in lMayaNurbsCurves) { MayaCurves.Add(DMCurve.MTDCurveFromName(c, CS)); } } return(MayaCurves.ToArray()); }
private void DeserializeNameList(string nameListString) { var splitNames = nameListString.Split(','); if (splitNames.Length > 0) { SelectedItems = new Dictionary <string, DMCurve>(splitNames.Length); foreach (var name in splitNames) { try { var itm = new DMCurve(DMInterop.getDagNode(name), space); itm.Deleted += MObjOnDeleted; itm.Changed += MObjOnChanged; SelectedItems.Add(itm.dagName, itm); } catch { Warning($"Object {name} does not exist or is not valid"); } } } }