private void Itm_Renamed(object sender, MFnDagNode dagNode) { //ToDo: get the rename system working var dag = (DMSurface)sender; if (SelectedItems.ContainsKey(dag.dagName)) { string newName = dagNode.partialPathName; string oldName = dag.dagName; isFromUpdate = true; SelectedItems.Remove(oldName); surfaceName.Remove(oldName); mayaSurface.Remove(oldName); var DMSurface = new DMSurface(dagNode.dagPath, m_mSpace); SelectedItems.Add(newName, DMSurface); buildAstNodes(newName); rebuildItemNameList(); OnNodeModified(true); } dag.Dispose(); }
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); isFromUpdate = false; return; } var TransObjectList = selectionList.DagPaths(MFn.Type.kTransform).ToList(); var DagObjectList = selectionList.DagPaths(MFn.Type.kNurbsSurface).ToList(); SelectedItems = new Dictionary <string, DMSurface>(DagObjectList.Count); m_SelectedItemNames = new List <string>(DagObjectList.Count); foreach (var dag in TransObjectList) { if (dag.hasFn(MFn.Type.kNurbsSurface)) { var itm = new DMSurface(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 DMSurface(dagNode.dagPath, space); // if (liveUpdate) // { isFromUpdate = true; if (SelectedItems.ContainsKey(dag.dagName)) { SelectedItems[dag.dagName] = dag; dynamoSurface[dag.dagName] = AstFactory.BuildFunctionCall( dynamoElementFunc, new List <AssociativeNode> { AstFactory.BuildStringNode(dag.dagName), AstFactory.BuildStringNode(m_mSpace) }); mayaSurface[dag.dagName] = AstFactory.BuildFunctionCall( MayaElementFunc, new List <AssociativeNode> { AstFactory.BuildStringNode(dag.dagName), AstFactory.BuildStringNode(m_mSpace) }); } OnNodeModified(true); //} // else // { // MarkNodeAsModified(true); // } } }
private void DeserializeNameList(string nameListString) { var splitNames = nameListString.Split(','); if (splitNames.Length > 0) { SelectedItems = new Dictionary <string, DMSurface>(splitNames.Length); foreach (var name in splitNames) { try { var itm = new DMSurface(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"); } } } }
public static List <Surface> meshToNurbs(MFnMesh mayaMesh) { MFnSubd subDmesh = new MFnSubd(); subDmesh.isIntermediateObject = true; MPointArray mayaVerts = new MPointArray(); mayaMesh.getPoints(mayaVerts, MSpace.Space.kWorld); MIntArray polyVertct = new MIntArray(); MIntArray ids = new MIntArray(); MIntArray idList = new MIntArray(); for (int i = 0; i < mayaMesh.numPolygons; i++) { mayaMesh.getPolygonVertices(i, ids); foreach (var id in ids) { idList.Add(id); } polyVertct.Add(ids.Count); } subDmesh.createBaseMesh(false, mayaMesh.numVertices, mayaMesh.numPolygons, mayaVerts, polyVertct, idList); try { MUintArray creaseEdgId = new MUintArray(); MDoubleArray creaseEdgeVal = new MDoubleArray(); mayaMesh.getCreaseEdges(creaseEdgId, creaseEdgeVal); foreach (var edgId in creaseEdgId) { subDmesh.edgeSetCrease(edgId, true); } } catch {} try { MUintArray creaseVertId = new MUintArray(); MDoubleArray creaseVertVal = new MDoubleArray(); mayaMesh.getCreaseVertices(creaseVertId, creaseVertVal); foreach (var vertId in creaseVertId) { subDmesh.vertexSetCrease(vertId, true); } } catch { } subDmesh.updateAllEditsAndCreases(); MObjectArray nurbsSurfs = new MObjectArray(); subDmesh.convertToNurbs(nurbsSurfs); List <MFnNurbsSurface> mfnSurfaceList = new List <MFnNurbsSurface>(nurbsSurfs.Count); foreach (var surf in nurbsSurfs) { mfnSurfaceList.Add(new MFnNurbsSurface(surf)); } List <Surface> dynSurfaceList = new List <Surface>(mfnSurfaceList.Count); foreach (var mfnNS in mfnSurfaceList) { dynSurfaceList.Add(DMSurface.mNurbsSurfaceToDynamoSurface(mfnNS, MSpace.Space.kObject)); } MGlobal.deleteNode(subDmesh.model); return(dynSurfaceList); }