Пример #1
0
        //獲得所有刀具名稱
        public static bool FindAllMachineToolName(out List <string> toolNameList)
        {
            toolNameList = new List <string>();
            try
            {
                Part workPart = theSession.Parts.Work;

                //取得Machine Tool Root的NCGroup
                NCGroup machineToolRoot = workPart.CAMSetup.GetRoot(CAMSetup.View.MachineTool);

                CAMObject[] toolRootMenberAry = machineToolRoot.GetMembers();


                foreach (CAMObject member in toolRootMenberAry)
                {
                    if (member.Name != "NONE")
                    {
                        toolNameList.Add(member.Name);
                    }
                }
            }
            catch (System.Exception ex)
            {
                CaxLog.ShowListingWindow("FindAllMachineToolName()..." + ex.Message);
                return(false);
            }
            return(true);
        }
Пример #2
0
    /// <summary>
    /// стоит далее этот метод удалить
    /// </summary>
    void Build_programmCncDict()
    {
        _programmCNC = new Dictionary <NCGroup, List <Operation> >();
        operations   = _theSession.Parts.Work.CAMSetup.CAMOperationCollection.ToArray()
                       .Where(op => op.GetParent(CAMSetup.View.ProgramOrder).GetType().Name.Equals("NCGroup")).ToArray();

        NCGroup cncGroup = null;

        foreach (var item in operations)
        {
            if (cncGroup == null ||
                !cncGroup.Equals(item.GetParent(CAMSetup.View.ProgramOrder)))
            {
                cncGroup = item.GetParent(CAMSetup.View.ProgramOrder);
            }

            if (_programmCNC == null)
            {
                _programmCNC = new Dictionary <NCGroup, List <Operation> >();
            }

            if (!_programmCNC.ContainsKey(cncGroup))
            {
                _programmCNC.Add(cncGroup, new List <Operation> {
                    item
                });
                continue;
            }

            var tempoList = _programmCNC[cncGroup];

            tempoList.Add(item);
            _programmCNC[cncGroup] = tempoList;
        }
    }
Пример #3
0
        public void AddProgram(int cout)
        {
            UFSession theUFSession = UFSession.GetUFSession();
            Part      workPart     = Session.GetSession().Parts.Work;
            int       index        = 0;

            if (program.Count != 0)
            {
                index = program.Count;
                if (cout > index)
                {
                    cout = cout - index;
                }
                else
                {
                    cout = 0;
                }
            }
            for (int i = 0; i < cout; i++)
            {
                NCGroup nCGroup = workPart.CAMSetup.CAMGroupCollection.CreateProgram(parent, "mill_planar", "PROGRAM",
                                                                                     NXOpen.CAM.NCGroupCollection.UseDefaultName.False, "O000" + (index + i + 1).ToString());
            }

            theUFSession.UiOnt.Refresh();
        }
        /// <summary>
        /// 创建程序组
        /// </summary>
        /// <param name="program"></param>
        /// <returns></returns>
        public NCGroup CreateProgram(string program)
        {
            Part    workPart = theSession.Parts.Work;
            NCGroup pm       = workPart.CAMSetup.GetRoot(CAMSetup.View.ProgramOrder);
            NCGroup parent   = null;

            foreach (NCGroup ng in pm.GetMembers())
            {
                if (ng.Name.Equals("AAA"))
                {
                    parent = ng;
                }
            }
            if (parent == null)
            {
                throw new Exception("无法找到AAA程序组!");
            }
            try
            {
                UFSession theUFSession = UFSession.GetUFSession();
                NCGroup   nCGroup      = workPart.CAMSetup.CAMGroupCollection.CreateProgram(parent, "mill_planar", "PROGRAM",
                                                                                            NXOpen.CAM.NCGroupCollection.UseDefaultName.False, program);
                theUFSession.UiOnt.Refresh();
                return(nCGroup);
            }
            catch (NXException ex)
            {
                throw ex;
            }
        }
Пример #5
0
        private IEnumerable <NxOperation> GetOperations(NCGroup ncGroup)
        {
            if (ncGroup == null)
            {
                return(null);
            }

            var members    = GetMembers(ncGroup.GetMembers());
            var operations = members.OfType <NXOpen.CAM.Operation>();

            if (NxSession.Ufs == null)
            {
                throw new Exception("Не удалось получить сессию пользовательских функций NX.");
            }

            Tag cutterTag;
            var enumerable = operations.Where(op =>
            {
                NxSession.Ufs.Oper.AskCutterGroup(op.Tag, out cutterTag);
                return(cutterTag != Tag.Null && NXObjectManager.Get(cutterTag) is Tool);
            });

            return(enumerable
                   .Select(op =>
                           new NxOperation(op, this)));
        }
Пример #6
0
        public void AddProgram(int cout, string name)
        {
            Part workPart = Session.GetSession().Parts.Work;
            int  index    = 0;

            if (program.Count != 0)
            {
                index = program.Count;
                name  = program[index - 1].Name;
                if (Regex.IsMatch(name, "[0-9]+$"))
                {
                    string[] temp = Regex.Split(name, "[0-9]+$");  //拆分
                    name = temp[0];
                }
            }
            else if (Regex.IsMatch(name, "[0-9]+$"))
            {
                string[] temp = Regex.Split(name, "[0-9]+$");  //拆分
                name  = temp[0];
                index = Int32.Parse(temp[1]);
            }
            if (cout > program.Count)
            {
                for (int i = 0; i < cout; i++)
                {
                    NCGroup nCGroup = workPart.CAMSetup.CAMGroupCollection.CreateProgram(parent, "mill_planar", "PROGRAM",
                                                                                         NXOpen.CAM.NCGroupCollection.UseDefaultName.False, name + (index + i + 1).ToString());
                }
            }
        }
        private static bool PartIsAsm(out List <ProgramModel> groups)
        {
            Session theSession = Session.GetSession();

            NXOpen.UI theUI = NXOpen.UI.GetUI();
            groups = new List <ProgramModel>();
            if (!theSession.ApplicationName.Equals("UG_APP_MANUFACTURING", StringComparison.CurrentCultureIgnoreCase))
            {
                theUI.NXMessageBox.Show("错误", NXMessageBox.DialogType.Error, "请切换到加工模块");
                return(false);
            }
            group = GetNCGroup();
            if (group == null)
            {
                theUI.NXMessageBox.Show("错误", NXMessageBox.DialogType.Error, "没法找到AAA程序组");
                return(false);
            }

            ProgramModel model = new ProgramModel(group);

            if (model.OperData.Count > 0)
            {
                theUI.NXMessageBox.Show("错误", NXMessageBox.DialogType.Error, "程序组错误");
                return(false);
            }
            foreach (NCGroup np in model.GetProgram())
            {
                if (np.GetMembers().Length > 0)
                {
                    ProgramModel nc = new ProgramModel(np);
                    if (!nc.IsOperation() || !nc.Estimate)
                    {
                        theUI.NXMessageBox.Show("错误", NXMessageBox.DialogType.Error, np.Name + "错误");
                        return(false);
                    }
                    else
                    {
                        groups.Add(nc);
                    }
                }
            }
            List <string> err = new List <string>();

            foreach (ProgramModel pm in groups)
            {
                err.AddRange(pm.Gouged());
            }
            if (err.Count > 0)
            {
                int ok = theUI.NXMessageBox.Show("错误", NXMessageBox.DialogType.Question, "程序过切!");
                if (ok == 2)
                {
                    ClassItem.Print(err.ToArray());
                    return(false);
                }
            }

            return(true);
        }
Пример #8
0
        /// <summary>
        /// 移动程序到程序组下
        /// </summary>
        /// <param name="program"></param>
        public void MoveOpreationToProgram(NCGroup program)
        {
            Part workPart = Session.GetSession().Parts.Work;

            workPart.CAMSetup.MoveObjects(CAMSetup.View.ProgramOrder, new CAMObject[1] {
                this.Oper
            }, program, CAMSetup.Paste.Inside);
        }
Пример #9
0
        private void Update(NCGroup group)
        {
            Part workPart = Session.GetSession().Parts.Work;

            NXOpen.CAM.ProgramOrderGroupBuilder programOrderGroupBuilder1;
            programOrderGroupBuilder1 = workPart.CAMSetup.CAMGroupCollection.CreateProgramOrderGroupBuilder(group);
            programOrderGroupBuilder1.Destroy();
        }
Пример #10
0
        /// <summary>
        /// 移动程序到刀具下
        /// </summary>
        /// <param name="tool"></param>
        public void MoveOperationToTool(NCGroup tool)
        {
            Part workPart = Session.GetSession().Parts.Work;

            workPart.CAMSetup.MoveObjects(CAMSetup.View.MachineTool, new CAMObject[1] {
                this.Oper
            }, tool, CAMSetup.Paste.Inside);
        }
Пример #11
0
        /// <summary>
        /// 移动程序到加工体下
        /// </summary>
        /// <param name="geometry"></param>
        public void MoveOperationToGeometry(NCGroup geometry)
        {
            Part workPart = Session.GetSession().Parts.Work;

            workPart.CAMSetup.MoveObjects(CAMSetup.View.Geometry, new CAMObject[1] {
                this.Oper
            }, geometry, CAMSetup.Paste.Inside);
        }
Пример #12
0
        /// <summary>
        /// 移动程序到加工方法下
        /// </summary>
        /// <param name="method"></param>
        public void MoveOperationToMethod(NCGroup method)
        {
            Part workPart = Session.GetSession().Parts.Work;

            workPart.CAMSetup.MoveObjects(CAMSetup.View.MachineMethod, new CAMObject[1] {
                this.Oper
            }, method, CAMSetup.Paste.Inside);
        }
Пример #13
0
 private void GetOperations(NCGroup ncGroup)
 {
     Name         = ncGroup.Name;
     NxOperations = new List <NxOperation>();
     foreach (var camObject in ncGroup.GetMembers())
     {
         NxOperations.Add(new NxOperation(camObject.Tag));
     }
 }
Пример #14
0
        /// <summary>
        /// 移动程序到加工体下
        /// </summary>
        /// <param name="geometry"></param>
        public void MoveOperationToGeometry(NCGroup geometry)
        {
            Part workPart = Session.GetSession().Parts.Work;

            if (geometry == null)
            {
                throw new Exception("加工体为空!");
            }
            workPart.CAMSetup.MoveObjects(CAMSetup.View.Geometry, new CAMObject[1] {
                this.Oper
            }, geometry, CAMSetup.Paste.Inside);
        }
Пример #15
0
        /// <summary>
        /// 移动程序到程序组下
        /// </summary>
        /// <param name="program"></param>
        public void MoveOpreationToProgram(NCGroup program)
        {
            Part workPart = Session.GetSession().Parts.Work;

            if (program == null)
            {
                throw new Exception("程序组为空!");
            }
            workPart.CAMSetup.MoveObjects(CAMSetup.View.ProgramOrder, new CAMObject[1] {
                this.Oper
            }, program, CAMSetup.Paste.Inside);
        }
Пример #16
0
        /// <summary>
        /// 移动程序到刀具下
        /// </summary>
        /// <param name="tool"></param>
        public void MoveOperationToTool(NCGroup tool)
        {
            Part workPart = Session.GetSession().Parts.Work;

            if (tool == null)
            {
                throw new Exception("刀具组为空!");
            }
            workPart.CAMSetup.MoveObjects(CAMSetup.View.MachineTool, new CAMObject[1] {
                this.Oper
            }, tool, CAMSetup.Paste.Inside);
        }
Пример #17
0
        private bool PostMikron_Molex(NCGroup parent)
        {
            string path = Path + PostPart.Name + ".H";

            if (File.Exists(path))
            {
                File.Delete(path);
            }
            bool isok = Post("Mikron_Molex", path, parent);

            return(isok);
        }
Пример #18
0
        /// <summary>
        /// 移动程序到加工方法下
        /// </summary>
        /// <param name="method"></param>
        public void MoveOperationToMethod(NCGroup method)
        {
            Part workPart = Session.GetSession().Parts.Work;

            if (method == null)
            {
                throw new Exception("加工方法为空!");
            }
            workPart.CAMSetup.MoveObjects(CAMSetup.View.MachineMethod, new CAMObject[1] {
                this.Oper
            }, method, CAMSetup.Paste.Inside);
        }
Пример #19
0
        public List <NCGroup> GetGroup()
        {
            List <NCGroup> groups = new List <NCGroup>();
            NCGroup        part   = (NXOpen.CAM.NCGroup)PostPart.CAMSetup.CAMGroupCollection.FindObject("AAA");

            foreach (NCGroup np in part.GetMembers())
            {
                if (np.GetMembers().Length > 0)
                {
                    groups.Add(np);
                }
            }
            return(groups);
        }
 /// <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);
     }
 }
Пример #21
0
 /// <summary>
 /// 获取程序组最小半径
 /// </summary>
 /// <param name="groups"></param>
 /// <returns></returns>
 public void GetGroupTool(List <NCGroup> groups, out double toolMinNumber, out double diaMin)
 {
     diaMin        = 99999;
     toolMinNumber = 9999;
     foreach (NCGroup np in groups)
     {
         CAMObject     obj   = np.GetMembers()[0];
         NCGroup       tool  = (obj as NXOpen.CAM.Operation).GetParent(CAMSetup.View.MachineTool);
         ToolDataModel model = new ToolDataModel(tool);
         if (diaMin > model.ToolDia)
         {
             diaMin = model.ToolDia;
         }
         if (toolMinNumber > model.ToolNumber)
         {
             toolMinNumber = model.ToolNumber;
         }
     }
 }
        /// <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);
            }
        }
Пример #23
0
        /// <summary>
        /// 判断操作是否是同一把刀
        /// </summary>
        /// <returns></returns>
        public bool IsOperationEqualTool()
        {
            string toolName = "";
            bool   isok     = true;

            foreach (NXOpen.CAM.Operation op in GetOperation())
            {
                NCGroup tool = op.GetParent(CAMSetup.View.MachineTool);
                if (toolName.Equals(""))
                {
                    toolName = tool.Name;
                }
                else if (!tool.Name.Equals(toolName, StringComparison.CurrentCultureIgnoreCase))
                {
                    isok = false;
                    break;
                }
            }
            return(isok);
        }
Пример #24
0
        private void Initialize()
        {
            Part workPart = Session.GetSession().Parts.Work;

            if (PostPartInfo.IsPartElectrode(workPart))
            {
                this.listBoxPostName.SelectedIndex = 4;
            }
            parent = (NXOpen.CAM.NCGroup)workPart.CAMSetup.CAMGroupCollection.FindObject("AAA");
            model  = new ProgramNcGroupModel(parent);
            foreach (NCGroup np in model.GetProgram())
            {
                if (np.GetMembers().Length > 0)
                {
                    groups.Add(np);
                    ListViewItem lv = new ListViewItem();
                    lv.SubItems.Add(np.Name);
                    lv.Checked = true;
                    listViewProgram.Items.Add(lv);
                }
            }
        }
        /// <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, ElectrodeCAM cam)
        {
            Part         workPart = Session.GetSession().Parts.Work;
            NCGroupModel group    = new NCGroupModel()
            {
                GeometryGroup = cam.FindGeometry("WORKPIECE"),
                MethodGroup   = cam.MethodGroup.Find(a => a.Name.ToUpper().Equals("CU")),
                ToolGroup     = cam.FindTool(model.ToolName)
            };
            NCGroup temp = cam.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);
        }
Пример #27
0
        private static bool PartIsAsm()
        {
            Session theSession = Session.GetSession();
            UI      theUI      = UI.GetUI();

            if (!theSession.ApplicationName.Equals("UG_APP_MANUFACTURING", StringComparison.CurrentCultureIgnoreCase))
            {
                theUI.NXMessageBox.Show("错误", NXMessageBox.DialogType.Error, "请切换到加工模块");
                return(false);
            }
            NCGroup group = GetNCGroup();

            if (group == null)
            {
                theUI.NXMessageBox.Show("错误", NXMessageBox.DialogType.Error, "没法找到AAA程序组");
                return(false);
            }
            ProgramNcGroupModel model = new ProgramNcGroupModel(group);

            if (!model.IsProgram())
            {
                theUI.NXMessageBox.Show("错误", NXMessageBox.DialogType.Error, "程序组错误");
                return(false);
            }
            foreach (NCGroup np in model.GetProgram())
            {
                ProgramNcGroupModel nc = new ProgramNcGroupModel(np);
                if (!nc.IsOperation() || !nc.IsOperationEqualTool())
                {
                    theUI.NXMessageBox.Show("错误", NXMessageBox.DialogType.Error, np.Name + "错误");
                    return(false);
                }
            }

            return(true);
        }
Пример #28
0
        /// <summary>
        /// 取得ToolNumber
        /// </summary>
        /// <param name="singleOper"></param>
        /// <param name="operHolderDescription"></param>
        /// <returns></returns>
        public static string AskOperToolNumber(NXOpen.CAM.Operation singleOper)
        {
            string operToolNumber = "0";

            try
            {
                NCGroup         singleOperParent = singleOper.GetParent(CAMSetup.View.MachineTool);            //由Oper取得刀子
                NXOpen.CAM.Tool tool             = (NXOpen.CAM.Tool)NXObjectManager.Get(singleOperParent.Tag); //取得Oper的刀子名稱
                Tool.Types      type;
                Tool.Subtypes   subtype;
                tool.GetTypeAndSubtype(out type, out subtype);
                if (type == Tool.Types.Barrel)
                {
                    NXOpen.CAM.BarrelToolBuilder ToolBuilder1;
                    ToolBuilder1   = workPart.CAMSetup.CAMGroupCollection.CreateBarrelToolBuilder(tool);
                    operToolNumber = ToolBuilder1.TlNumberBuilder.Value.ToString();
                    return(operToolNumber);
                }
                else if (type == Tool.Types.Drill)
                {
                    NXOpen.CAM.DrillStdToolBuilder ToolBuilder1;
                    ToolBuilder1   = workPart.CAMSetup.CAMGroupCollection.CreateDrillStdToolBuilder(tool);
                    operToolNumber = ToolBuilder1.TlNumberBuilder.Value.ToString();
                    return(operToolNumber);
                }
                else if (type == Tool.Types.DrillSpcGroove)
                {
                    NXOpen.CAM.MillingToolBuilder ToolBuilder1;
                    ToolBuilder1   = workPart.CAMSetup.CAMGroupCollection.CreateMillToolBuilder(tool);
                    operToolNumber = ToolBuilder1.TlNumberBuilder.Value.ToString();
                    return(operToolNumber);
                }
                else if (type == Tool.Types.Mill)
                {
                    NXOpen.CAM.MillingToolBuilder ToolBuilder1;
                    ToolBuilder1   = workPart.CAMSetup.CAMGroupCollection.CreateMillToolBuilder(tool);
                    operToolNumber = ToolBuilder1.TlNumberBuilder.Value.ToString();
                    return(operToolNumber);
                }
                else if (type == Tool.Types.MillForm)
                {
                    NXOpen.CAM.MillingToolBuilder ToolBuilder1;
                    ToolBuilder1   = workPart.CAMSetup.CAMGroupCollection.CreateMillToolBuilder(tool);
                    operToolNumber = ToolBuilder1.TlNumberBuilder.Value.ToString();
                    return(operToolNumber);
                }
                else if (type == Tool.Types.Solid)
                {
                }
                else if (type == Tool.Types.Tcutter)
                {
                    NXOpen.CAM.MillingToolBuilder ToolBuilder1;
                    ToolBuilder1   = workPart.CAMSetup.CAMGroupCollection.CreateMillToolBuilder(tool);
                    operToolNumber = ToolBuilder1.TlNumberBuilder.Value.ToString();
                    return(operToolNumber);
                }
                else if (type == Tool.Types.Thread)
                {
                }
                else if (type == Tool.Types.Turn)
                {
                }
                else if (type == Tool.Types.Wedm)
                {
                }
                else if (type == Tool.Types.Groove)
                {
                }
            }
            catch (System.Exception ex)
            {
                operToolNumber = "尚未建立Builder存取資料";
                return(operToolNumber);
            }
            return(operToolNumber);
        }
Пример #29
0
 public ProgramModel(NCGroup program)
 {
     this.ProgramGroup = program;
     GetOper();
 }
Пример #30
0
 public CreateProgram(NCGroup parent)
 {
     this.parent = parent;
     GetProgram();
 }