public override void SetReferenceCutter(CAMCutter cutter)
 {
     if (OperIsValid)
     {
         NX.Entry.GetInstance().SetFlowCutRefTool(OperTag, cutter.CutterTag);
     }
 }
Example #2
0
 /// <summary>
 /// 根据类型自动设置相关参数
 /// </summary>
 public virtual void AutoAnalysis(CAMElectrode ele, NXOpen.Tag WorkGeometryGroup, NXOpen.Tag ProgramGroup, NXOpen.Tag MethodGroupRoot
                                  , CAMCutter CAMCutter, CAMCutter refCAMCutter
                                  )
 {
     if (AnalysisOperIsValid(ele))
     {
         CreateOper(WorkGeometryGroup, ProgramGroup, MethodGroupRoot, CAMCutter);
         if (refCAMCutter != null)
         {
             SetReferenceCutter(refCAMCutter);
         }
         AutoSet(ele);
     }
 }
Example #3
0
 /// <summary>
 /// 设置参考刀具
 /// </summary>
 /// <param name="cutter"></param>
 public virtual void SetReferenceCutter(CAMCutter cutter)
 {
     Helper.SetReferenceCutter(OperTag, cutter.CutterTag);
 }
Example #4
0
        public void CreateOper(NXOpen.Tag WorkGeometryGroup, NXOpen.Tag ProgramGroup, NXOpen.Tag MethodGroupRoot, CAMCutter CAMCutter, bool operIsValid = true)
        {
            this.WorkGeometryGroup = WorkGeometryGroup;
            this.ProgramGroup      = ProgramGroup;
            this.MethodGroupRoot   = MethodGroupRoot;
            this.CAMCutter         = CAMCutter;

            if (operIsValid)
            {
                //TODO 创建工序
                var operTag = CreateOper();

                int          count;
                NXOpen.Tag[] list;
                ufSession.Ncgroup.AskMemberList(ProgramGroup, out count, out list);
                int    index = -1;
                string name;
                for (int i = 0; i < count; i++)
                {
                    ufSession.Obj.AskName(list[i], out name);
                    if (name.Contains(AUTOCAM_SUBTYPE) && operTag != list[i])
                    {
                        var strIndex = name.Split('_').LastOrDefault();
                        var tempInt  = -1;
                        int.TryParse(strIndex, out tempInt);
                        if (tempInt > index)
                        {
                            index = tempInt;
                        }
                    }
                }

                //设置名称
                ufSession.Obj.SetName(operTag, string.Format("{0}_{1}", AUTOCAM_SUBTYPE, index + 1));

                //设置进给率和速度
                _SetFeedRate(CAMCutter.FeedRate, CAMCutter.Speed);

                //设置切深
                SetCutDepth(CAMCutter.CutDepth);

                //设置横越(移刀)
                Helper.SetFeedTraversal(OperTag, CAMCutter.FEED_TRAVERSAL);
            }
        }
Example #5
0
        public static List <CAMCutter> CreateCutter(CAMElectrode ele, CNCConfig.CAMConfig camConfig, NXOpen.Tag cutterGroupRootTag, out CNCConfig.CAMConfig.ProjectInfo project)
        {
            var eleInfo             = ele.Electrode.GetElectrodeInfo();
            List <CAMCutter> result = new List <CAMCutter>();
            var info          = ele.Electrode.GetElectrodeInfo();
            var cutterConfigs = camConfig.FindCutterInfo(info.MAT_NAME);

            project = camConfig.Projects.Where(u => u.方案名称 == "自动").FirstOrDefault() ?? camConfig.Projects.Where(u => u.方案名称 == "自动").FirstOrDefault();
            if (project == null)
            {
                throw new Exception("配置工具未配置方案!");
            }

            var cutterStrs = new List <string>();

            project.Details.ForEach(u => {
                cutterStrs.Add(u.刀具);
                cutterStrs.Add(u.参考刀具);
            });
            cutterStrs = cutterStrs.Where(u => !string.IsNullOrEmpty(u)).ToList();
            cutterStrs = cutterStrs.Distinct().ToList();
            foreach (var item in cutterStrs)
            {
                var cutterConfig = cutterConfigs.FirstOrDefault(m => m.刀具名称 == item);
                if (cutterConfig != null)
                {
                    Action <double> action = (f) => {
                        var camCutter = new CAMCutter();
                        camCutter.AUTOCAM_TYPE    = AUTOCAM_TYPE.mill_planar;
                        camCutter.AUTOCAM_SUBTYPE = AUTOCAM_SUBTYPE.MILL;
                        camCutter.CutterName      = cutterConfig.刀具名称 + (f != 0 ? f.ToString() : "");
                        camCutter.TL_DIAMETER     = double.Parse(cutterConfig.直径) + (f * 2);
                        camCutter.TL_COR1_RAD     = double.Parse(cutterConfig.R角) + f;
                        camCutter.TL_COR1_RAD     = camCutter.TL_COR1_RAD < 0 ? 0 : camCutter.TL_COR1_RAD;
                        camCutter.TL_HEIGHT       = double.Parse(cutterConfig.刀长);
                        camCutter.TL_FLUTE_LN     = double.Parse(cutterConfig.刃长);
                        camCutter.TL_NUMBER       = int.Parse(cutterConfig.刀号);
                        camCutter.TL_ADJ_REG      = int.Parse(cutterConfig.补正号);
                        camCutter.Speed           = double.Parse(cutterConfig.转速);
                        camCutter.FeedRate        = double.Parse(cutterConfig.进给);
                        camCutter.FEED_TRAVERSAL  = double.Parse(cutterConfig.横越);
                        camCutter.CutDepth        = double.Parse(cutterConfig.切深);
                        result.Add(camCutter);
                    };

                    action(0);

                    if (eleInfo.FINISH_NUMBER > 0)  //精
                    {
                        action(eleInfo.FINISH_SPACE);
                    }

                    if (eleInfo.MIDDLE_NUMBER > 0)  //中
                    {
                        action(eleInfo.MIDDLE_SPACE);
                    }

                    if (eleInfo.ROUGH_NUMBER > 0)  //粗
                    {
                        action(eleInfo.ROUGH_SPACE);
                    }
                }
                else
                {
                    throw new Exception("配置工具方案刀具配置异常!");
                }
            }
            result = Helper.CreateCutter(result, cutterGroupRootTag);
            return(result);
        }