/// <summary>
 /// 设置刀具名
 /// </summary>
 /// <param name="tool"></param>
 public void SetToolName(string tool)
 {
     this.toolName = tool;
     if (operModel != null)
     {
         if (template == null)
         {
             template = new ElectrodeCAMTemplateModel();
         }
         NCGroup toolGroup = template.FindTool(tool);
         if (toolGroup == null)
         {
             throw new Exception("无法找到" + tool + "刀具!");
         }
         operModel.MoveOperationToTool(toolGroup);
     }
 }
        /// <summary>
        /// 设置程序名
        /// </summary>
        /// <param name="program"></param>
        public void SetProgramName(int site)
        {
            string preName = "O" + string.Format("{0:D4}", site);

            this.site = site;
            this.nameModel.ProgramName = preName;
            if (operModel != null)
            {
                if (template == null)
                {
                    template = new ElectrodeCAMTemplateModel();
                }
                NCGroup preGroup = template.FindTool(preName);
                if (preGroup == null)
                {
                    preGroup = template.CreateProgram(preName);
                }
                operModel.MoveOpreationToProgram(preGroup);
            }
        }
        /// <summary>
        /// 设置程序名
        /// </summary>
        /// <param name="program"></param>
        public void SetProgramName(string program)
        {
            this.nameModel.ProgramName = program;
            int k = program.LastIndexOf("0");

            if (k != -1)
            {
                this.site = Int32.Parse(program.Substring(k + 1));
            }
            if (operModel != null)
            {
                if (template == null)
                {
                    template = new ElectrodeCAMTemplateModel();
                }
                NCGroup preGroup = template.FindTool(program);
                if (preGroup == null)
                {
                    preGroup = template.CreateProgram(program);
                }
                operModel.MoveOpreationToProgram(preGroup);
            }
        }
        private static NCGroupModel GetNcGroupModelOfName(OperationNameModel model, ElectrodeCAMTemplateModel template)
        {
            Part         workPart = Session.GetSession().Parts.Work;
            NCGroupModel group    = new NCGroupModel()
            {
                GeometryGroup = template.FindGeometry("WORKPIECE"),
                MethodGroup   = template.MethodGroup.Find(a => a.Name.ToUpper().Equals("CU")),
                ToolGroup     = template.FindTool(model.ToolName)
            };

            if (group.GeometryGroup == null)
            {
                throw new Exception("无法获取加工模板WORKPIECE!");
            }
            if (group.MethodGroup == null)
            {
                throw new Exception("无法获取加工模板加工方法!");
            }
            if (group.ToolGroup == null)
            {
                throw new Exception("无法获取加工模板刀具!");
            }
            NCGroup temp = template.FindProgram(model.ProgramName);

            if (temp == null)
            {
                NXOpen.CAM.NCGroup nCGroup1 = (NXOpen.CAM.NCGroup)workPart.CAMSetup.CAMGroupCollection.FindObject("AAA");
                NXOpen.CAM.NCGroup nCGroup2 = workPart.CAMSetup.CAMGroupCollection.CreateProgram(nCGroup1, "electrode", "AAA_1", NXOpen.CAM.NCGroupCollection.UseDefaultName.True, model.ProgramName);
                group.ProgramGroup = nCGroup2;
            }
            else
            {
                group.ProgramGroup = temp;
            }
            return(group);
        }
        /// <summary>
        /// 创建固定轮廓铣
        /// </summary>
        /// <param name="model"></param>
        /// <param name="cam"></param>
        /// <returns></returns>
        public static AbstractOperationModel CreateOperationOfSurfaceContour(OperationNameModel model, ElectrodeCAMTemplateModel template)
        {
            NCGroupModel        group = GetNcGroupModelOfName(model, template);
            SurfaceContourModel sur   = new SurfaceContourModel(group, model.templateName, model.templateOperName);

            return(sur);
        }
        /// <summary>
        /// 创建平面铣
        /// </summary>
        /// <param name="model"></param>
        /// <param name="cam"></param>
        /// <returns></returns>
        public static AbstractOperationModel CreateOperationOfPlanarMilling(OperationNameModel model, ElectrodeCAMTemplateModel template)
        {
            NCGroupModel group = GetNcGroupModelOfName(model, template);

            return(new PlanarMillingModel(group, model.templateName, model.templateOperName));
        }
 /// <summary>
 /// 创建型腔铣
 /// </summary>
 /// <param name="model"></param>
 /// <param name="cam"></param>
 /// <returns></returns>
 public static AbstractOperationModel CreateOperationOfCavityMilling(OperationNameModel model, ElectrodeCAMTemplateModel template)
 {
     return(new CavityMillingModel(GetNcGroupModelOfName(model, template), model.templateName, model.templateOperName));
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="site">程序条数</param>
 /// <param name="programNumber">在程序组第几条</param>
 /// <param name="tool"></param>
 public AbstractCreateOperation(int site, string tool)
 {
     this.site     = site;
     this.toolName = tool;
     template      = new ElectrodeCAMTemplateModel();
 }