public override void SetReferenceCutter(CAMCutter cutter) { if (OperIsValid) { NX.Entry.GetInstance().SetFlowCutRefTool(OperTag, cutter.CutterTag); } }
/// <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); } }
/// <summary> /// 设置参考刀具 /// </summary> /// <param name="cutter"></param> public virtual void SetReferenceCutter(CAMCutter cutter) { Helper.SetReferenceCutter(OperTag, cutter.CutterTag); }
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); } }
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); }