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); }
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); }
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); }
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("判斷是否重複的刀具與刀柄失敗"); } }
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); }