コード例 #1
0
ファイル: SelectCurveNode.cs プロジェクト: cerver/DynaMayaV2
        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();
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        /// <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));
        }
コード例 #4
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);
        }
コード例 #5
0
 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);
         }
     }
 }
コード例 #6
0
ファイル: SelectCurveNode.cs プロジェクト: cerver/DynaMayaV2
        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);
        }
コード例 #7
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);
        }
コード例 #8
0
ファイル: SelectCurveNode.cs プロジェクト: cerver/DynaMayaV2
        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);
                //  }
            }
        }
コード例 #9
0
        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());
        }
コード例 #10
0
ファイル: SelectCurveNode.cs プロジェクト: cerver/DynaMayaV2
        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");
                    }
                }
            }
        }