Пример #1
0
        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();
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
                //  }
            }
        }
Пример #5
0
        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");
                    }
                }
            }
        }
Пример #6
0
        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);
        }