Пример #1
0
        private static bool GetOperToolAttr(NXOpen.CAM.Operation item, ref OperData sOperData)
        {
            try
            {
                sOperData.OperName          = item.Name;
                sOperData.ToolNumber        = "T" + CaxOper.AskOperToolNumber(item);
                sOperData.ToolName          = CaxOper.AskOperToolNameFromTag(item.Tag);
                sOperData.HolderDescription = CaxOper.AskOperHolderDescription(item);

                sOperData.TOOL_NO     = "T" + CaxOper.AskOperToolERPNumFromAttribute(item.Tag, ToolListMember.TOOL_NO);
                sOperData.ERP_NO      = CaxOper.AskOperToolERPNumFromAttribute(item.Tag, ToolListMember.ERP_NO);
                sOperData.CUTTER_QTY  = CaxOper.AskOperToolERPNumFromAttribute(item.Tag, ToolListMember.CUTTER_QTY);
                sOperData.CUTTER_LIFE = CaxOper.AskOperToolERPNumFromAttribute(item.Tag, ToolListMember.CUTTER_LIFE);
                sOperData.FLUTE_QTY   = CaxOper.AskOperToolERPNumFromAttribute(item.Tag, ToolListMember.FLUTE_QTY);
                sOperData.TITLE       = CaxOper.AskOperToolERPNumFromAttribute(item.Tag, ToolListMember.TITLE);
                if (CaxOper.AskOperToolERPNumFromAttribute(item.Tag, ToolListMember.SPECIFICATION) != "")
                {
                    sOperData.SPECIFICATION = CaxOper.AskOperToolERPNumFromAttribute(item.Tag, ToolListMember.SPECIFICATION);
                }
                else
                {
                    sOperData.SPECIFICATION = CaxOper.AskOperToolNameFromTag(item.Tag);
                }
                sOperData.NOTE      = CaxOper.AskOperToolERPNumFromAttribute(item.Tag, ToolListMember.NOTE);
                sOperData.ACCESSORY = CaxOper.AskOperToolERPNumFromAttribute(item.Tag, ToolListMember.ACCESSORY);
            }
            catch (System.Exception ex)
            {
                return(false);
            }
            return(true);
        }
Пример #2
0
    protected void OnClickedOp(Button obj)
    {
        CalcUnit calcUnit = new CalcUnit();

        calcUnit.unitType     = CalcUnitType.Oper;
        calcUnit.unitData     = new OperData();
        calcUnit.unitData.btn = obj;
        obj.gameObject.GetComponent <Outline>().enabled = true;
        switch (obj.name)
        {
        case "op_add":
            OperData.Data(calcUnit.unitData).op = CalcOper.Add;
            break;

        case "op_sub":
            OperData.Data(calcUnit.unitData).op = CalcOper.Sub;
            break;

        case "op_mul":
            OperData.Data(calcUnit.unitData).op = CalcOper.Mul;
            break;

        case "op_div":
            OperData.Data(calcUnit.unitData).op = CalcOper.Div;
            break;
        }

        GlobalDataManager.GetInstance().cardModel.AddCalcUnit(calcUnit);
    }
Пример #3
0
        public static bool GetNCProgramData(NCGroup[] NCGroupAry, out Dictionary <string, OperData> DicNCData)
        {
            DicNCData = new Dictionary <string, OperData>();
            try
            {
                foreach (NXOpen.CAM.NCGroup ncGroup in NCGroupAry)
                {
                    int type, subtype;
                    theUfSession.Obj.AskTypeAndSubtype(ncGroup.Tag, out type, out subtype);

                    //此處比對是否為Program群組
                    if (type != UFConstants.UF_machining_task_type)
                    {
                        continue;
                    }

                    if (!ncGroup.Name.Contains("OP"))
                    {
                        MessageBox.Show("請先手動將Group名稱:" + ncGroup.Name + ",改為正確格式,再重新啟動功能!");
                        return(false);
                    }

                    //取得此NCGroup下的所有Oper
                    CAMObject[] OperGroup = ncGroup.GetMembers();
                    foreach (NXOpen.CAM.Operation item in OperGroup)
                    {
                        string StockStr = "", FloorstockStr = "";
                        CaxOper.AskOperStock(item, out StockStr, out FloorstockStr);

                        bool     cheValue;
                        OperData sOperData = new OperData();
                        cheValue = DicNCData.TryGetValue(ncGroup.Name, out sOperData);
                        if (!cheValue)
                        {
                            sOperData.OperName          = item.Name;
                            sOperData.ToolName          = CaxOper.AskOperToolNameFromTag(item.Tag);
                            sOperData.HolderDescription = CaxOper.AskOperHolderDescription(item);
                            sOperData.CuttingLength     = Convert.ToDouble(CaxOper.AskOperTotalCuttingLength(item)).ToString("f3");
                            sOperData.ToolFeed          = Math.Round(Convert.ToDouble(CaxOper.AskOperToolFeed(item)), 3, MidpointRounding.AwayFromZero).ToString();
                            sOperData.CuttingTime       = Math.Ceiling((Convert.ToDouble(CaxOper.AskOperTotalCuttingTime(item)) * 60)).ToString();//因為進給單位mmpm,距離單位mm,將進給的60放來這邊乘
                            sOperData.ToolNumber        = "T" + CaxOper.AskOperToolNumber(item);
                            sOperData.ToolSpeed         = CaxOper.AskOperToolSpeed(item);
                            sOperData.PartStock         = StockStr;
                            sOperData.PartFloorStock    = FloorstockStr;
                            sOperData.CutterLife        = CaxOper.AskOperToolERPNumFromAttribute(item.Tag, "GTTL_CUTTER_LIFE");
                            sOperData.Extension         = CaxOper.AskOperToolERPNumFromAttribute(item.Tag, "GTTL_EXTENTION");
                            DicNCData.Add(ncGroup.Name, sOperData);
                        }
                        else
                        {
                            sOperData.OperName          = sOperData.OperName + "," + item.Name;
                            sOperData.ToolName          = sOperData.ToolName + "," + CaxOper.AskOperToolNameFromTag(item.Tag);
                            sOperData.HolderDescription = sOperData.HolderDescription + "," + CaxOper.AskOperHolderDescription(item);
                            sOperData.CuttingLength     = sOperData.CuttingLength + "," + Convert.ToDouble(CaxOper.AskOperTotalCuttingLength(item)).ToString("f3");
                            sOperData.ToolFeed          = sOperData.ToolFeed + "," + Math.Round(Convert.ToDouble(CaxOper.AskOperToolFeed(item)), 3, MidpointRounding.AwayFromZero).ToString();
                            sOperData.CuttingTime       = sOperData.CuttingTime + "," + Math.Ceiling((Convert.ToDouble(CaxOper.AskOperTotalCuttingTime(item)) * 60)).ToString();//因為進給單位mmpm,距離單位mm,將進給的60放來這邊乘
                            sOperData.ToolNumber        = sOperData.ToolNumber + "," + "T" + CaxOper.AskOperToolNumber(item);
                            sOperData.ToolSpeed         = sOperData.ToolSpeed + "," + CaxOper.AskOperToolSpeed(item);
                            sOperData.PartStock         = sOperData.PartStock + "," + StockStr;
                            sOperData.PartFloorStock    = sOperData.PartFloorStock + "," + FloorstockStr;
                            sOperData.CutterLife        = sOperData.CutterLife + "," + CaxOper.AskOperToolERPNumFromAttribute(item.Tag, "GTTL_CUTTER_LIFE");
                            sOperData.Extension         = sOperData.Extension + "," + CaxOper.AskOperToolERPNumFromAttribute(item.Tag, "GTTL_EXTENTION");
                            DicNCData[ncGroup.Name]     = sOperData;
                        }
                    }
                }
            }
            catch (System.Exception ex)
            {
                return(false);
            }
            return(true);
        }
Пример #4
0
        private static void CheckRepeat(NXOpen.CAM.Operation item, ref OperData sOperData)
        {
            try
            {
                string toolNumber = "T" + CaxOper.AskOperToolNumber(item);
                //取得現有的刀號
                string[] toolNumbers = sOperData.ToolNumber.Split(',');

                string toolName = CaxOper.AskOperToolNameFromTag(item.Tag);
                string holder   = CaxOper.AskOperHolderDescription(item);
                //string toolERP = CaxOper.AskOperToolERPNumFromAttribute(item.Tag, "ToolERP");
                //string shankERP = CaxOper.AskOperToolERPNumFromAttribute(item.Tag, "ShankERP");
                //string extensionShankERP = CaxOper.AskOperToolERPNumFromAttribute(item.Tag, "ExtensionShankERP");
                //string holderERP = CaxOper.AskOperToolERPNumFromAttribute(item.Tag, "HolderERP");
                string specification = "";
                if (CaxOper.AskOperToolERPNumFromAttribute(item.Tag, ToolListMember.SPECIFICATION) != "")
                {
                    specification = CaxOper.AskOperToolERPNumFromAttribute(item.Tag, ToolListMember.SPECIFICATION);
                }
                else
                {
                    specification = CaxOper.AskOperToolNameFromTag(item.Tag);
                }

                string tool_NO     = CaxOper.AskOperToolERPNumFromAttribute(item.Tag, ToolListMember.TOOL_NO);
                string erp_NO      = CaxOper.AskOperToolERPNumFromAttribute(item.Tag, ToolListMember.ERP_NO);
                string cutter_qty  = CaxOper.AskOperToolERPNumFromAttribute(item.Tag, ToolListMember.CUTTER_QTY);
                string cutter_life = CaxOper.AskOperToolERPNumFromAttribute(item.Tag, ToolListMember.CUTTER_LIFE);
                string flute_qty   = CaxOper.AskOperToolERPNumFromAttribute(item.Tag, ToolListMember.FLUTE_QTY);
                string title       = CaxOper.AskOperToolERPNumFromAttribute(item.Tag, ToolListMember.TITLE);
                string note        = CaxOper.AskOperToolERPNumFromAttribute(item.Tag, ToolListMember.NOTE);
                //string specification = CaxOper.AskOperToolERPNumFromAttribute(item.Tag, ToolListMember.SPECIFICATION);


                #region toolNumber檢查
                bool toolNumberChk = false;
                foreach (string i in toolNumbers)
                {
                    if (toolNumber == i)
                    {
                        toolNumberChk = true;
                        break;
                    }
                }
                if (toolNumberChk)
                {
                    sOperData.ToolNumber        = sOperData.ToolNumber + "," + toolNumber;
                    sOperData.ToolName          = sOperData.ToolName + "," + "";
                    sOperData.HolderDescription = sOperData.HolderDescription + "," + "";
                    //sOperData.ToolERP = sOperData.ToolERP + "," + "";
                    //sOperData.ShankERP = sOperData.ShankERP + "," + "";
                    //sOperData.ExtensionShankERP = sOperData.ExtensionShankERP + "," + "";
                    //sOperData.HolderERP = sOperData.HolderERP + "," + "";
                    //attribute
                    sOperData.TOOL_NO       = sOperData.TOOL_NO + "," + "";
                    sOperData.ERP_NO        = sOperData.ERP_NO + "," + "";
                    sOperData.CUTTER_QTY    = sOperData.CUTTER_QTY + "," + "";
                    sOperData.CUTTER_LIFE   = sOperData.CUTTER_LIFE + "," + "";
                    sOperData.FLUTE_QTY     = sOperData.FLUTE_QTY + "," + "";
                    sOperData.TITLE         = sOperData.TITLE + "," + "";
                    sOperData.SPECIFICATION = sOperData.SPECIFICATION + "," + "";
                    sOperData.NOTE          = sOperData.NOTE + "," + "";
                }
                else
                {
                    sOperData.ToolNumber        = sOperData.ToolNumber + "," + toolNumber;
                    sOperData.ToolName          = sOperData.ToolName + "," + toolName;
                    sOperData.HolderDescription = sOperData.HolderDescription + "," + holder;
                    //sOperData.ToolERP = sOperData.ToolERP + "," + toolERP;
                    //sOperData.ShankERP = sOperData.ShankERP + "," + shankERP;
                    //sOperData.ExtensionShankERP = sOperData.ExtensionShankERP + "," + extensionShankERP;
                    //sOperData.HolderERP = sOperData.HolderERP + "," + holderERP;
                    //attribute
                    sOperData.TOOL_NO       = sOperData.TOOL_NO + "," + tool_NO;
                    sOperData.ERP_NO        = sOperData.ERP_NO + "," + erp_NO;
                    sOperData.CUTTER_QTY    = sOperData.CUTTER_QTY + "," + cutter_qty;
                    sOperData.CUTTER_LIFE   = sOperData.CUTTER_LIFE + "," + cutter_life;
                    sOperData.FLUTE_QTY     = sOperData.FLUTE_QTY + "," + flute_qty;
                    sOperData.TITLE         = sOperData.TITLE + "," + title;
                    sOperData.SPECIFICATION = sOperData.SPECIFICATION + "," + specification;
                    sOperData.NOTE          = sOperData.NOTE + "," + note;
                }
                #endregion
                //string toolName = CaxOper.AskOperToolNameFromTag(item.Tag);
                //string holder = CaxOper.AskOperHolderDescription(item);
                //string[] toolNames = sOperData.ToolName.Split(',');
                //string[] holders = sOperData.HolderDescription.Split(',');

                #region (註解)toolName檢查

                /*
                 * bool toolNameChk = false;
                 * foreach (string i in toolNames)
                 * {
                 *  if (toolName == i)
                 *  {
                 *      toolNameChk = true;
                 *  }
                 * }
                 * if (toolNameChk)
                 * {
                 *  sOperData.ToolName = sOperData.ToolName + "," + "";
                 * }
                 * else
                 * {
                 *  sOperData.ToolName = sOperData.ToolName + "," + toolName;
                 * }
                 */
                #endregion

                #region (註解)holder檢查

                /*
                 * bool holderChk = false;
                 * foreach (string i in holders)
                 * {
                 *  if (holder == i)
                 *  {
                 *      holderChk = true;
                 *  }
                 * }
                 * if (holderChk)
                 * {
                 *  sOperData.HolderDescription = sOperData.HolderDescription + "," + "";
                 * }
                 * else
                 * {
                 *  sOperData.HolderDescription = sOperData.HolderDescription + "," + holder;
                 * }
                 */
                #endregion
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("判斷是否重複的刀具與刀柄失敗");
            }
        }
Пример #5
0
        public bool Doit()
        {
            try
            {
                int module_id;
                theUfSession.UF.AskApplicationModule(out module_id);
                if (module_id != UFConstants.UF_APP_CAM)
                {
                    MessageBox.Show("請先轉換為加工模組後再執行!");
                    return(false);
                }

                if (!GetToolListPath(out ToolListPath))
                {
                    MessageBox.Show("取得ToolList.xls失敗");
                    return(false);
                }



                //取得正確路徑,拆零件路徑字串取得客戶名稱、料號、版本
                status = CaxPublic.GetAllPath("TE", displayPart.FullPath, out sPartInfo, ref cMETE_Download_Upload_Path);
                if (!status)
                {
                    Is_Local = null;
                }

                //此條件判斷是否為走系統的零件
                if (!displayPart.FullPath.Contains("Task"))
                {
                    Is_Local = null;
                }

                if (Is_Local == null)
                {
                    PartNo = Path.GetFileNameWithoutExtension(displayPart.FullPath);
                }
                else
                {
                    PartNo = sPartInfo.PartNo;
                }

                //取得所有GroupAry,用來判斷Group的Type決定是NC、Tool、Geometry
                NXOpen.CAM.NCGroup[] NCGroupAry = displayPart.CAMSetup.CAMGroupCollection.ToArray();
                //取得所有OperationAry
                NXOpen.CAM.Operation[] OperationAry = displayPart.CAMSetup.CAMOperationCollection.ToArray();

                #region 取得相關資訊,填入DIC
                DicNCData = new Dictionary <string, List <OperData> >();
                foreach (NXOpen.CAM.NCGroup ncGroup in NCGroupAry)
                {
                    if (!IsNC(ncGroup))
                    {
                        continue;
                    }

                    if (!ncGroup.Name.Contains("OP"))
                    {
                        MessageBox.Show("請先手動將Group名稱:" + ncGroup.Name + ",改為正確格式,再重新啟動功能!");
                        return(false);
                    }

                    //取得此NCGroup下的所有Oper
                    CAMObject[] OperGroup = ncGroup.GetMembers();

                    foreach (NXOpen.CAM.Operation item in OperGroup)
                    {
                        bool            cheValue;
                        List <OperData> listOperData = new List <OperData>();
                        cheValue = DicNCData.TryGetValue(ncGroup.Name, out listOperData);
                        if (!cheValue)
                        {
                            listOperData = new List <OperData>();
                        }
                        bool chk = true;
                        foreach (OperData i in listOperData)
                        {
                            if (i.ToolNumber == "T" + CaxOper.AskOperToolNumber(item))
                            {
                                chk = false;
                                break;
                            }
                        }
                        if (!chk)
                        {
                            continue;
                        }
                        OperData sOperData = new OperData();
                        GetOperToolAttr(item, ref sOperData);
                        listOperData.Add(sOperData);
                        DicNCData[ncGroup.Name] = listOperData;
                    }
                }

                //將DicNCData的key存入程式群組下拉選單中
                foreach (KeyValuePair <string, List <OperData> > kvp in DicNCData)
                {
                    comboBoxNCName.Items.Add(kvp.Key);
                }
                if (comboBoxNCName.Items.Count == 1)
                {
                    comboBoxNCName.Text = comboBoxNCName.Items[0].ToString();
                }
                #endregion
            }
            catch (System.Exception ex)
            {
                return(false);
            }
            return(true);
        }