Пример #1
0
        private void buttonOpenTask_Click(object sender, EventArgs e)
        {
            #region (註解)檢查是否有選擇組裝方式

            /*
             * if (SeleOperValue == "001")
             * {
             *  if (check001HasBillet.Checked == false && check001NoBillet.Checked == false)
             *  {
             *      MessageBox.Show("請選擇一種組裝方式");
             *      return;
             *  }
             *  if (check001HasBillet.Checked == true && check001NoBillet.Checked == false)
             *  {
             *      if (label001.Text == "")
             *      {
             *          MessageBox.Show("請選擇一個零件當作胚料檔,或勾選無胚料檔");
             *          return;
             *      }
             *  }
             * }
             * else if (SeleOperValue == "900")
             * {
             *
             * }
             * else
             * {
             *  if (checkWHasBillet.Checked == false && checkWNoBillet.Checked == false)
             *  {
             *      MessageBox.Show("請選擇一種組裝方式");
             *      return;
             *  }
             *  if (checkWHasBillet.Checked == true && checkWHasBillet.Checked == false)
             *  {
             *      if (labelW.Text == "")
             *      {
             *          MessageBox.Show("請選擇一個前段工序檔當作此工序零件檔,或勾選無前段工序檔");
             *          return;
             *      }
             *  }
             * }
             */
            #endregion

            if (SelePartName == "")
            {
                MessageBox.Show("請選擇欲開啟的零件!");
                return;
            }

            string Local_CAMPartFullPath = string.Format(@"{0}\{1}\{2}\{3}\{4}\{5}", CaxEnv.GetLocalTaskDir(),
                                                         comboBoxCus.Text,
                                                         comboBoxPartNo.Text,
                                                         comboBoxCusVer.Text,
                                                         comboBoxOpVer.Text,
                                                         SelePartName);

            //組件存在,直接開啟任務組立
            BasePart newAsmPart;
            status = CaxPart.OpenBaseDisplay(Local_CAMPartFullPath, out newAsmPart);
            if (!status)
            {
                CaxLog.ShowListingWindow("組立開啟失敗!");
                return;
            }



            /*
             * //判斷組件是否曾經被開啟。如已被開啟過,則開啟檔案後離開;反之則塞上屬性(Title=IsOpend,Value=Y)並組裝客戶零件與胚料零件
             * string checkIsOpened = "";
             * try
             * {
             *  checkIsOpened = newAsmPart.GetStringAttribute("ISOPENED");
             *  if (checkIsOpened == "Y")
             *  {
             *      CaxPart.Save();
             *      this.Close();
             *      return;
             *  }
             * }
             * catch (System.Exception ex)
             * {
             *  newAsmPart.SetAttribute("ISOPENED", "Y");
             * }
             *
             * NXOpen.Assemblies.Component newComponent = null;
             *
             #region 組裝客戶檔案
             *
             * string Local_NewModelPartFullPath = string.Format(@"{0}\{1}\{2}\{3}\{4}", CaxEnv.GetLocalTaskDir(),
             *                                                                         CurrentCusName,
             *                                                                         CurrentPartNo,
             *                                                                         CurrentCusVer,
             *                                                                         CurrentPartNo + ".prt");
             * //判斷是否已經有客戶檔案,如果沒有則複製過來
             * if (!System.IO.File.Exists(Local_NewModelPartFullPath))
             * {
             *  File.Copy(Local_ModelPartFullPath, Local_NewModelPartFullPath, true);
             * }
             *
             * status = CaxAsm.AddComponentToAsmByDefault(Local_NewModelPartFullPath, out newComponent);
             * if (!status)
             * {
             *  CaxLog.ShowListingWindow("ERROR,組裝失敗!");
             *  return;
             * }
             *
             #endregion
             *
             * CaxAsm.SetWorkComponent(null);
             *
             #region 建立三階製程檔
             *
             * string Local_CurrentOperPartFullPath = "";
             * if (groupBox001.Enabled == true)
             * {
             *  if (check001NoBillet.Checked == true)
             *  {
             *      //選擇無胚料檔--新建檔案(檔名:料號_TE_製程序)
             *      Local_CurrentOperPartFullPath = string.Format(@"{0}\{1}", Local_ShareStrPartFullPath, CurrentPartNo + "_TE_" + SeleOperValue + ".prt");
             *      if (!System.IO.File.Exists(Local_CurrentOperPartFullPath))
             *      {
             *          status = CaxAsm.CreateNewEmptyComp(Local_CurrentOperPartFullPath, out newComponent);
             *          if (!status)
             *          {
             *              CaxLog.ShowListingWindow("建立二階製程檔失敗");
             *              return;
             *          }
             *      }
             *  }
             *  else
             *  {
             *      //選擇有胚料檔--組裝胚料檔(檔名:胚料檔原始名稱)
             *      Local_CurrentOperPartFullPath = string.Format(@"{0}\{1}", Local_ShareStrPartFullPath, label001.Text);
             *      if (!System.IO.File.Exists(Local_CurrentOperPartFullPath))
             *      {
             *          status = CaxAsm.AddComponentToAsmByDefault(Local_CurrentOperPartFullPath, out newComponent);
             *          if (!status)
             *          {
             *              CaxLog.ShowListingWindow("001胚料檔組裝失敗");
             *              return;
             *          }
             *      }
             *  }
             * }
             * else if (groupBox900.Enabled == true)
             * {
             * }
             * else
             * {
             #region W階
             *  //組立"前段製程檔"
             *  if (checkWHasBillet.Checked == true & System.IO.File.Exists(labelWBilletPath))
             *  {
             *      //複製檔案到任務資料夾
             *      string tempBilletPath = labelWBilletPath;
             *      tempBilletPath = tempBilletPath.Replace(Path.GetDirectoryName(tempBilletPath), Path.GetDirectoryName(Local_NewModelPartFullPath));
             *      File.Copy(labelWBilletPath, tempBilletPath, true);
             *
             *      status = CaxAsm.AddComponentToAsmByDefault(tempBilletPath, out newComponent);
             *      if (!status)
             *      {
             *          CaxLog.ShowListingWindow("W階胚料檔組裝失敗");
             *          return;
             *      }
             *  }
             *
             *  //選擇無前段製程檔案--新建檔案(檔名:料號_TE_製程序)
             *  Local_CurrentOperPartFullPath = string.Format(@"{0}\{1}", Local_ShareStrPartFullPath, CurrentPartNo + "_TE_" + SeleOperValue + ".prt");
             *  if (!System.IO.File.Exists(Local_CurrentOperPartFullPath))
             *  {
             *      status = CaxAsm.CreateNewEmptyComp(Local_CurrentOperPartFullPath, out newComponent);
             *      if (!status)
             *      {
             *          CaxLog.ShowListingWindow("建立三階製程檔失敗");
             *          return;
             *      }
             *  }
             #endregion
             * }
             *
             #endregion
             */

            CaxPart.Save();
            this.Close();
        }
Пример #2
0
        private void buttonOpenTask_Click(object sender, EventArgs e)
        {
            #region 檢查是否有選擇組裝方式

            if (SeleOperValue == "001")
            {
                if (check001HasBillet.Checked == false && check001NoBillet.Checked == false)
                {
                    MessageBox.Show("請選擇一種組裝方式");
                    return;
                }
                if (check001HasBillet.Checked == true && check001NoBillet.Checked == false)
                {
                    if (label001.Text == "")
                    {
                        MessageBox.Show("請選擇一個零件當作胚料檔,或勾選無胚料檔");
                        return;
                    }
                }
            }
            else if (SeleOperValue == "900")
            {
            }
            else
            {
                if (checkWHasBillet.Checked == false && checkWNoBillet.Checked == false)
                {
                    MessageBox.Show("請選擇一種組裝方式");
                    return;
                }
                if (checkWHasBillet.Checked == true && checkWHasBillet.Checked == false)
                {
                    if (labelW.Text == "")
                    {
                        MessageBox.Show("請選擇一個前段工序檔當作此工序零件檔,或勾選無前段工序檔");
                        return;
                    }
                }
            }

            #endregion

            string Local_CAMPartFullPath = string.Format(@"{0}\{1}\{2}\{3}\{4}", CaxEnv.GetLocalTaskDir(),
                                                         CurrentCusName,
                                                         CurrentPartNo,
                                                         CurrentCusVer,
                                                         SelePartName);
            string Local_ModelPartFullPath = string.Format(@"{0}\{1}\{2}\{3}\{4}\{5}", CaxEnv.GetLocalTaskDir(),
                                                           CurrentCusName,
                                                           CurrentPartNo,
                                                           CurrentCusVer,
                                                           "MODEL",
                                                           CurrentPartNo + ".prt");
            string Local_ShareStrPartFullPath = string.Format(@"{0}\{1}\{2}\{3}", CaxEnv.GetLocalTaskDir(),
                                                              CurrentCusName,
                                                              CurrentPartNo,
                                                              CurrentCusVer);
            //組件存在,直接開啟任務組立
            BasePart newAsmPart;
            status = CaxPart.OpenBaseDisplay(Local_CAMPartFullPath, out newAsmPart);
            if (!status)
            {
                CaxLog.ShowListingWindow("組立開啟失敗!");
                return;
            }

            //判斷組件是否曾經被開啟。如已被開啟過,則開啟檔案後離開;反之則塞上屬性(Title=IsOpend,Value=Y)並組裝客戶零件與胚料零件
            string checkIsOpened = "";
            try
            {
                checkIsOpened = newAsmPart.GetStringAttribute("IsOpened");
                if (checkIsOpened == "Y")
                {
                    CaxPart.Save();
                    this.Close();
                    return;
                }
            }
            catch (System.Exception ex)
            {
                newAsmPart.SetAttribute("IsOpened", "Y");
            }

            NXOpen.Assemblies.Component newComponent = null;

            #region 組裝客戶檔案

            string Local_NewModelPartFullPath = string.Format(@"{0}\{1}\{2}\{3}\{4}", CaxEnv.GetLocalTaskDir(),
                                                              CurrentCusName,
                                                              CurrentPartNo,
                                                              CurrentCusVer,
                                                              CurrentPartNo + ".prt");
            //判斷是否已經有客戶檔案,如果沒有則複製過來
            if (!System.IO.File.Exists(Local_NewModelPartFullPath))
            {
                File.Copy(Local_ModelPartFullPath, Local_NewModelPartFullPath, true);
            }

            status = CaxAsm.AddComponentToAsmByDefault(Local_NewModelPartFullPath, out newComponent);
            if (!status)
            {
                CaxLog.ShowListingWindow("ERROR,組裝失敗!");
                return;
            }

            #endregion

            CaxAsm.SetWorkComponent(null);

            #region 建立二階製程檔

            string Local_CurrentOperPartFullPath = "";
            if (groupBox001.Enabled == true)
            {
                if (check001NoBillet.Checked == true)
                {
                    //選擇無胚料檔--新建檔案(檔名:料號+製程序)
                    Local_CurrentOperPartFullPath = string.Format(@"{0}\{1}", Local_ShareStrPartFullPath, CurrentPartNo + "_TE_" + SeleOperValue + ".prt");
                    if (!System.IO.File.Exists(Local_CurrentOperPartFullPath))
                    {
                        status = CaxAsm.CreateNewEmptyComp(Local_CurrentOperPartFullPath, out newComponent);
                        if (!status)
                        {
                            CaxLog.ShowListingWindow("建立二階製程檔失敗");
                            return;
                        }
                    }
                }
                else
                {
                    //選擇有胚料檔--組裝胚料檔(檔名:胚料檔原始名稱)
                    Local_CurrentOperPartFullPath = string.Format(@"{0}\{1}", Local_ShareStrPartFullPath, label001.Text);
                    if (!System.IO.File.Exists(Local_CurrentOperPartFullPath))
                    {
                        status = CaxAsm.AddComponentToAsmByDefault(Local_CurrentOperPartFullPath, out newComponent);
                        if (!status)
                        {
                            CaxLog.ShowListingWindow("001胚料檔組裝失敗");
                            return;
                        }
                    }
                }
            }
            else if (groupBox900.Enabled == true)
            {
            }
            else
            {
                if (checkWNoBillet.Checked == true)
                {
                    //選擇無胚料檔--新建檔案(檔名:料號+製程序)
                    Local_CurrentOperPartFullPath = string.Format(@"{0}\{1}", Local_ShareStrPartFullPath, CurrentPartNo + "_TE_" + SeleOperValue + ".prt");
                    if (!System.IO.File.Exists(Local_CurrentOperPartFullPath))
                    {
                        status = CaxAsm.CreateNewEmptyComp(Local_CurrentOperPartFullPath, out newComponent);
                        if (!status)
                        {
                            CaxLog.ShowListingWindow("建立二階製程檔失敗");
                            return;
                        }
                    }
                }
                else
                {
                    //選擇有胚料檔--組裝胚料檔(檔名:胚料檔原始名稱)
                    Local_CurrentOperPartFullPath = string.Format(@"{0}\{1}", Local_ShareStrPartFullPath, labelW.Text);
                    if (!System.IO.File.Exists(Local_CurrentOperPartFullPath))
                    {
                        status = CaxAsm.AddComponentToAsmByDefault(Local_CurrentOperPartFullPath, out newComponent);
                        if (!status)
                        {
                            CaxLog.ShowListingWindow("W階胚料檔組裝失敗");
                            return;
                        }
                    }
                }
            }

            #endregion

            CaxPart.Save();
            this.Close();
        }
Пример #3
0
        private void OK_Click(object sender, EventArgs e)
        {
            CaxPart.SaveAll();

            //Part上傳
            List <string> ListPartName = new List <string>();

            status = CaxMEUpLoad.UploadPart(DicPartDirData, out ListPartName);
            //status = Function.UploadPart(DicPartDirData, out ListPartName);
            if (!status)
            {
                this.Close();
                return;
            }
            System.IO.File.WriteAllLines(string.Format(@"{0}\{1}\{2}", sDownUpLoadDat.Server_ShareStr, "OP" + cCaxMEUpLoad.OpNum, "PartNameText_OIS.txt"), ListPartName.ToArray());
            //新增TE的下載文件
            if (TEDownloadText.Count > 0)
            {
                string PartNameText_CAM = string.Format(@"{0}\{1}\{2}", sDownUpLoadDat.Server_ShareStr, "OP" + cCaxMEUpLoad.OpNum, "PartNameText_CAM.txt");
                foreach (string i in TEDownloadText)
                {
                    using (StreamWriter sw = File.AppendText(PartNameText_CAM))
                    {
                        sw.WriteLine(i);
                    }
                }
            }

            #region (註解)Excel上傳

            /*
             * //Excel上傳
             * if (File.Exists(sExcelDirData.ExcelIPQCLocalDir))
             * {
             *  try
             *  {
             *      File.Copy(sExcelDirData.ExcelIPQCLocalDir, sExcelDirData.ExcelIPQCServerDir, true);
             *  }
             *  catch (System.Exception ex)
             *  {
             *      CaxLog.ShowListingWindow("IPQC.xls上傳失敗");
             *      this.Close();
             *  }
             * }
             *
             * if (File.Exists(sExcelDirData.ExcelSelfCheckLocalDir))
             * {
             *  try
             *  {
             *      File.Copy(sExcelDirData.ExcelSelfCheckLocalDir, sExcelDirData.ExcelSelfCheckServerDir, true);
             *  }
             *  catch (System.Exception ex)
             *  {
             *      CaxLog.ShowListingWindow("SelfCheck.xls上傳失敗");
             *      this.Close();
             *  }
             * }
             *
             * if (File.Exists(sExcelDirData.ExcelIQCLocalDir))
             * {
             *  try
             *  {
             *      File.Copy(sExcelDirData.ExcelIQCLocalDir, sExcelDirData.ExcelIQCServerDir, true);
             *  }
             *  catch (System.Exception ex)
             *  {
             *      CaxLog.ShowListingWindow("IQC.xls上傳失敗");
             *      this.Close();
             *  }
             * }
             *
             * if (File.Exists(sExcelDirData.ExcelFAILocalDir))
             * {
             *  try
             *  {
             *      File.Copy(sExcelDirData.ExcelFAILocalDir, sExcelDirData.ExcelFAIServerDir, true);
             *  }
             *  catch (System.Exception ex)
             *  {
             *      CaxLog.ShowListingWindow("FAI.xls上傳失敗");
             *      this.Close();
             *  }
             * }
             *
             * if (File.Exists(sExcelDirData.ExcelFQCLocalDir))
             * {
             *  try
             *  {
             *      File.Copy(sExcelDirData.ExcelFQCLocalDir, sExcelDirData.ExcelFQCServerDir, true);
             *  }
             *  catch (System.Exception ex)
             *  {
             *      CaxLog.ShowListingWindow("FQC.xls上傳失敗");
             *      this.Close();
             *  }
             * }
             */
            #endregion


            int          SheetCount  = 0;
            NXOpen.Tag[] SheetTagAry = null;
            theUfSession.Draw.AskDrawings(out SheetCount, out SheetTagAry);

            List <NXOpen.Drawings.DrawingSheet> listDrawingSheet = new List <NXOpen.Drawings.DrawingSheet>();
            for (int i = 0; i < SheetCount; i++)
            {
                //打開Sheet並記錄所有OBJ
                NXOpen.Drawings.DrawingSheet CurrentSheet = (NXOpen.Drawings.DrawingSheet)NXObjectManager.Get(SheetTagAry[i]);
                listDrawingSheet.Add(CurrentSheet);
            }
            #region 輸出OIS
            //輸出PDF
            if (ExportPFD.Checked == true)
            {
                //建立PFD資料夾
                string PFDFullPath = string.Format(@"{0}\{1}", sDownUpLoadDat.Local_Folder_OIS, cCaxMEUpLoad.PartName + "_OIS" + cCaxMEUpLoad.OpNum + ".pdf");
                CaxME.CreateOISPDF(listDrawingSheet, PFDFullPath);
                //OIS資料夾上傳
                status = CaxPublic.DirectoryCopy(sDownUpLoadDat.Local_Folder_OIS, sDownUpLoadDat.Server_Folder_OIS, true);
                if (!status)
                {
                    MessageBox.Show("OIS資料夾複製失敗,請聯繫開發工程師");
                    this.Close();
                }
            }
            #endregion

            #region 資料上傳至Database
            //取得WorkPart資訊並檢查資料是否完整
            DadDimension.WorkPartAttribute sWorkPartAttribute = new DadDimension.WorkPartAttribute();
            //status = Function.GetWorkPartAttribute(workPart, out sWorkPartAttribute);
            status = DadDimension.GetWorkPartAttribute(workPart, out sWorkPartAttribute);
            if (!status)
            {
                MessageBox.Show("量測資訊不足,僅上傳CAD檔案,上傳完成!");
                this.Close();
                return;
            }

            #region 取得所有量測尺寸資料

            /*
             * //取得泡泡特徵,並記錄總共有幾個泡泡,後續比對數量用
             * IdSymbolCollection BallonCollection = workPart.Annotations.IdSymbols;
             * IdSymbol[] BallonAry = BallonCollection.ToArray();
             * int balloonCount = 0;
             * foreach (IdSymbol i in BallonAry)
             * {
             *  try
             *  {
             *      i.GetStringAttribute("BalloonAtt");
             *      balloonCount++;
             *  }
             *  catch (System.Exception ex)
             *  {
             *      continue;
             *  }
             * }
             *
             * List<CaxME.DimensionData> listDimensionData = new List<CaxME.DimensionData>();
             * List<int> listBalloonCount = new List<int>();
             * NXOpen.Drawings.DrawingSheet FirstSheet = null;
             * while (listBalloonCount.Count != balloonCount)
             * {
             *  for (int i = 0; i < SheetCount; i++)
             *  {
             *      //打開Sheet並記錄所有OBJ
             *      NXOpen.Drawings.DrawingSheet CurrentSheet = (NXOpen.Drawings.DrawingSheet)NXObjectManager.Get(SheetTagAry[i]);
             *      if (CurrentSheet.Name == "S1")
             *      {
             *          FirstSheet = CurrentSheet;
             *      }
             *      CurrentSheet.Open();
             *      CurrentSheet.View.UpdateDisplay();
             *      DisplayableObject[] SheetObj = CurrentSheet.View.AskVisibleObjects();
             *      status = CaxME.RecordDimension(SheetObj, sWorkPartAttribute, ref listDimensionData);
             *      if (!status)
             *      {
             *          this.Close();
             *          return;
             *      }
             *  }
             *  foreach (CaxME.DimensionData i in listDimensionData)
             *  {
             *      if (!listBalloonCount.Contains(i.ballonNum))
             *      {
             *          listBalloonCount.Add(i.ballonNum);
             *      }
             *  }
             *
             * }
             */
            //List<CaxME.DimensionData> listDimensionData = new List<CaxME.DimensionData>();
            List <DadDimension>          listDimensionData = new List <DadDimension>();
            NXOpen.Drawings.DrawingSheet FirstSheet        = null;
            for (int i = 0; i < SheetCount; i++)
            {
                //打開Sheet並記錄所有OBJ
                NXOpen.Drawings.DrawingSheet CurrentSheet = (NXOpen.Drawings.DrawingSheet)NXObjectManager.Get(SheetTagAry[i]);
                if (CurrentSheet.Name == "S1")
                {
                    FirstSheet = CurrentSheet;
                }
                CurrentSheet.Open();
                CurrentSheet.View.UpdateDisplay();
                DisplayableObject[] SheetObj = CurrentSheet.View.AskVisibleObjects();
                status = Com_Dimension.RecordDimension(SheetObj, sWorkPartAttribute, ref listDimensionData);
                if (!status)
                {
                    this.Close();
                    return;
                }
            }
            #endregion



            //切回首頁
            if (FirstSheet != null)
            {
                FirstSheet.Open();
            }


            //由料號查Com_PEMain
            Com_PEMain cCom_PEMain = new Com_PEMain();
            status = CaxSQL.GetCom_PEMain(cCaxMEUpLoad.CusName, cCaxMEUpLoad.PartName, cCaxMEUpLoad.CusRev, cCaxMEUpLoad.OpRev, out cCom_PEMain);
            if (!status)
            {
                return;
            }
            //由Com_PEMain和Op查Com_PartOperation
            Com_PartOperation cCom_PartOperation = new Com_PartOperation();
            status = CaxSQL.GetCom_PartOperation(cCom_PEMain, cCaxMEUpLoad.OpNum, out cCom_PartOperation);
            if (!status)
            {
                return;
            }


            #region (註解)由excelType查meExcelSrNo
            //Sys_MEExcel sysMEExcel = new Sys_MEExcel();
            //try
            //{
            //    sysMEExcel = session.QueryOver<Sys_MEExcel>().Where(x => x.meExcelType == meExcelType).SingleOrDefault<Sys_MEExcel>();
            //}
            //catch (System.Exception ex)
            //{
            //    MessageBox.Show("資料庫中沒有此料號的紀錄,故無法上傳量測尺寸,僅成功上傳實體檔案");
            //    return;
            //}
            #endregion

            #region 比對資料庫MEMain是否有同筆數據
            IList <Com_MEMain> ListCom_MEMain = new List <Com_MEMain>();
            CaxSQL.GetListCom_MEMain(out ListCom_MEMain);

            bool       Is_Exist         = false;
            Com_MEMain currentComMEMain = new Com_MEMain();
            foreach (Com_MEMain i in ListCom_MEMain)
            {
                if (i.comPartOperation == cCom_PartOperation)
                {
                    Is_Exist         = true;
                    currentComMEMain = i;
                    break;
                }
            }
            #endregion

            #region 如果本次上傳的資料不存在於資料庫,則開始上傳資料;如果已存在資料庫,則詢問是否要更新尺寸
            bool Is_Update = true;
            if (Is_Exist)
            {
                if (eTaskDialogResult.Yes == CaxPublic.ShowMsgYesNo("此料號已存在上一次的標註尺寸資料,是否更新?"))
                {
                    #region 刪除Com_Dimension資料表
                    IList <Com_Dimension> ListCom_Dimension = new List <Com_Dimension>();
                    CaxSQL.GetListCom_Dimension(currentComMEMain, out ListCom_Dimension);
                    foreach (Com_Dimension i in ListCom_Dimension)
                    {
                        CaxSQL.Delete <Com_Dimension>(i);
                    }
                    #endregion

                    #region 刪除Com_MEMain資料表
                    Com_MEMain cCom_MEMain = new Com_MEMain();
                    CaxSQL.GetCom_MEMain(cCom_PartOperation, out cCom_MEMain);
                    CaxSQL.Delete <Com_MEMain>(cCom_MEMain);
                    #endregion
                }
                else
                {
                    Is_Update = false;
                }
            }
            if (Is_Update)
            {
                #region 整理資料並上傳
                try
                {
                    Com_MEMain cCom_MEMain = new Com_MEMain();
                    cCom_MEMain.comPartOperation = cCom_PartOperation;
                    //cCom_MEMain.sysMEExcel = sysMEExcel;
                    cCom_MEMain.partDescription = sWorkPartAttribute.partDescription;
                    cCom_MEMain.createDate      = sWorkPartAttribute.createDate;
                    cCom_MEMain.material        = sWorkPartAttribute.material;
                    cCom_MEMain.draftingVer     = sWorkPartAttribute.draftingVer;

                    IList <Com_Dimension> listCom_Dimension = new List <Com_Dimension>();
                    foreach (DadDimension i in listDimensionData)
                    {
                        Com_Dimension cCom_Dimension = new Com_Dimension();
                        cCom_Dimension.MappingData(i);
                        cCom_Dimension.comMEMain = cCom_MEMain;
                        listCom_Dimension.Add(cCom_Dimension);
                        //Com_Dimension cCom_Dimension = new Com_Dimension();
                        //cCom_Dimension.comMEMain = cCom_MEMain;
                        //CaxME.MappingData(i, ref cCom_Dimension);
                        //listCom_Dimension.Add(cCom_Dimension);
                    }
                    cCom_MEMain.comDimension = listCom_Dimension;
                    CaxSQL.Save <Com_MEMain>(cCom_MEMain);
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("上傳資料庫時發生錯誤,僅上傳實體檔案");
                }
                #endregion
            }

            #endregion


            #endregion

            CaxPart.Save();
            MessageBox.Show("上傳完成!");
            this.Close();
        }
Пример #4
0
        private void buttonOpenTask_Click(object sender, EventArgs e)
        {
            #region (註解)檢查是否有選擇組裝方式

            //if (SeleOperValue == "001.prt")
            //{
            //    if (check001HasBillet.Checked == false && check001NoBillet.Checked == false)
            //    {
            //        MessageBox.Show("請選擇一種組裝方式");
            //        return;
            //    }
            //    if (check001HasBillet.Checked == true && check001NoBillet.Checked == false)
            //    {
            //        if (label001.Text == "")
            //        {
            //            MessageBox.Show("請選擇一個零件當作胚料檔,或勾選無胚料檔");
            //            return;
            //        }
            //    }
            //}
            //else if (SeleOperValue == "900.prt")
            //{

            //}
            //else
            //{
            //    if (checkWHasBillet.Checked == false && checkWNoBillet.Checked == false)
            //    {
            //        MessageBox.Show("請選擇一種組裝方式");
            //        return;
            //    }
            //    if (checkWHasBillet.Checked == true && checkWNoBillet.Checked == false)
            //    {
            //        if (labelW.Text == "")
            //        {
            //            MessageBox.Show("請選擇一個前段工序檔當作此工序零件檔,或勾選無前段工序檔");
            //            return;
            //        }
            //    }
            //}

            #endregion

            if (SelePartName == "")
            {
                MessageBox.Show("請選擇欲開啟的零件!");
                return;
            }
            string Local_OISPartFullPath = string.Format(@"{0}\{1}\{2}\{3}\{4}\{5}", CaxEnv.GetLocalTaskDir(),
                                                         comboBoxCus.Text,
                                                         comboBoxPartNo.Text,
                                                         comboBoxCusVer.Text,
                                                         comboBoxOpVer.Text,
                                                         SelePartName);

            //string Local_ModelPartFullPath = string.Format(@"{0}\{1}\{2}\{3}\{4}\{5}\{6}", CaxEnv.GetLocalTaskDir(),
            //                                                                               CurrentCusName,
            //                                                                               CurrentPartNo,
            //                                                                               CurrentCusVer,
            //                                                                               CurrentOpVer,
            //                                                                               "MODEL",
            //                                                                               CurrentPartNo + ".prt");

            //string Local_ShareStrPartFullPath = string.Format(@"{0}\{1}\{2}\{3}\{4}", CaxEnv.GetLocalTaskDir(),
            //                                                                          CurrentCusName,
            //                                                                          CurrentPartNo,
            //                                                                          CurrentCusVer,
            //                                                                          CurrentOpVer);
            BasePart newAsmPart;
            status = CaxPart.OpenBaseDisplay(Local_OISPartFullPath, out newAsmPart);
            if (!status)
            {
                CaxLog.ShowListingWindow("組立開啟失敗!");
                return;
            }

            /*
             * if (check001HasBillet.Checked == true || check001NoBillet.Checked == true ||
             *  checkWHasBillet.Checked == true || checkWNoBillet.Checked == true)
             * {
             #region 組裝客戶檔案
             *  NXOpen.Assemblies.Component newComponent = null;
             *  string Local_NewModelPartFullPath = string.Format(@"{0}\{1}\{2}\{3}\{4}\{5}", CaxEnv.GetLocalTaskDir(),
             *                                                                                CurrentCusName,
             *                                                                                CurrentPartNo,
             *                                                                                CurrentCusVer,
             *                                                                                CurrentOpVer,
             *                                                                                CurrentPartNo + ".prt");
             *  //判斷是否已經有客戶檔案,如果沒有則複製過來
             *  if (!System.IO.File.Exists(Local_NewModelPartFullPath))
             *  {
             *      File.Copy(Local_ModelPartFullPath, Local_NewModelPartFullPath, true);
             *  }
             *
             *  status = CaxAsm.AddComponentToAsmByDefault(Local_NewModelPartFullPath, out newComponent);
             *  if (!status)
             *  {
             *      MessageBox.Show("客戶檔案組裝失敗!");
             *      this.Close();
             *      return;
             *  }
             #endregion
             *
             *  CaxAsm.SetWorkComponent(null);
             *
             #region 建立三階製程檔
             *
             *  string Local_CurrentOperPartFullPath = "";
             *  if (groupBox001.Enabled == true)
             *  {
             #region 001
             *      //組立"胚料檔"
             *      if (check001HasBillet.Checked == true & System.IO.File.Exists(label001BilletPath))
             *      {
             *          //複製檔案到任務資料夾
             *          string tempBilletPath = label001BilletPath;
             *          tempBilletPath = tempBilletPath.Replace(Path.GetDirectoryName(tempBilletPath), Path.GetDirectoryName(Local_NewModelPartFullPath));
             *          File.Copy(label001BilletPath, tempBilletPath, true);
             *
             *          status = CaxAsm.AddComponentToAsmByDefault(tempBilletPath, out newComponent);
             *          if (!status)
             *          {
             *              CaxLog.ShowListingWindow("001胚料檔組裝失敗");
             *              return;
             *          }
             *      }
             *
             *      //組立"料號_ME_OISxxx"
             *      Local_CurrentOperPartFullPath = string.Format(@"{0}\{1}", Local_ShareStrPartFullPath, CurrentPartNo + "_ME_" + SeleOperValue);
             *
             *      if (!System.IO.File.Exists(Local_CurrentOperPartFullPath))
             *      {
             *          status = CaxAsm.CreateNewEmptyComp(Local_CurrentOperPartFullPath, out newComponent);
             *          if (!status)
             *          {
             *              CaxLog.ShowListingWindow("建立三階製程檔失敗");
             *              return;
             *          }
             *      }
             #endregion
             *  }
             *  else if (groupBox900.Enabled == true)
             *  {
             *  }
             *  else
             *  {
             #region W階
             *      //組立"前段製程檔"
             *      if (checkWHasBillet.Checked == true & System.IO.File.Exists(labelWBilletPath))
             *      {
             *          //複製檔案到任務資料夾
             *          string tempBilletPath = labelWBilletPath;
             *          tempBilletPath = tempBilletPath.Replace(Path.GetDirectoryName(tempBilletPath), Path.GetDirectoryName(Local_NewModelPartFullPath));
             *          File.Copy(labelWBilletPath, tempBilletPath, true);
             *
             *          status = CaxAsm.AddComponentToAsmByDefault(tempBilletPath, out newComponent);
             *          if (!status)
             *          {
             *              CaxLog.ShowListingWindow("W階胚料檔組裝失敗");
             *              return;
             *          }
             *      }
             *
             *      //組立"料號_ME_OISxxx"
             *      Local_CurrentOperPartFullPath = string.Format(@"{0}\{1}", Local_ShareStrPartFullPath, CurrentPartNo + "_ME_" + SeleOperValue);
             *      if (!System.IO.File.Exists(Local_CurrentOperPartFullPath))
             *      {
             *          status = CaxAsm.CreateNewEmptyComp(Local_CurrentOperPartFullPath, out newComponent);
             *          if (!status)
             *          {
             *              CaxLog.ShowListingWindow("建立三階製程檔失敗");
             *              return;
             *          }
             *      }
             #endregion
             *  }
             *
             #endregion
             * }
             */
            //組件存在,直接開啟任務組立
            //BasePart newAsmPart;
            //status = CaxPart.OpenBaseDisplay(Local_OISPartFullPath, out newAsmPart);
            //if (!status)
            //{
            //    CaxLog.ShowListingWindow("組立開啟失敗!");
            //    return;
            //}

            //判斷組件是否曾經被開啟。如已被開啟過,則開啟檔案後離開;反之則塞上屬性(Title=IsOpend,Value=Y)並組裝客戶零件與胚料零件
            //string checkIsOpened = "";
            //try
            //{
            //    checkIsOpened = newAsmPart.GetStringAttribute("IsOpened");
            //    if (checkIsOpened == "Y")
            //    {
            //        CaxPart.Save();
            //        this.Close();
            //        return;
            //    }
            //}
            //catch (System.Exception ex)
            //{
            //    newAsmPart.SetAttribute("IsOpened", "Y");
            //}

            //NXOpen.Assemblies.Component newComponent = null;

            #region (註解中)組裝客戶檔案

            //string Local_NewModelPartFullPath = string.Format(@"{0}\{1}\{2}\{3}\{4}", CaxEnv.GetLocalTaskDir(),
            //                                                                           CurrentCusName,
            //                                                                           CurrentPartNo,
            //                                                                           CurrentCusVer,
            //                                                                           CurrentPartNo + ".prt");
            //判斷是否已經有客戶檔案,如果沒有則複製過來
            //if (!System.IO.File.Exists(Local_NewModelPartFullPath))
            //{
            //    File.Copy(Local_ModelPartFullPath, Local_NewModelPartFullPath, true);
            //}

            //status = CaxAsm.AddComponentToAsmByDefault(Local_NewModelPartFullPath, out newComponent);
            //if (!status)
            //{
            //    CaxLog.ShowListingWindow("ERROR,組裝失敗!");
            //    this.Close();
            //    return;
            //}

            #endregion

            //CaxAsm.SetWorkComponent(null);

            #region (註解中)建立三階製程檔

            //string Local_CurrentOperPartFullPath = "";
            //if (groupBox001.Enabled == true)
            //{
            //    #region 001
            //    //組立"胚料檔"
            //    if (check001HasBillet.Checked == true & System.IO.File.Exists(label001BilletPath))
            //    {
            //        //複製檔案到任務資料夾
            //        string tempBilletPath = label001BilletPath;
            //        tempBilletPath = tempBilletPath.Replace(Path.GetDirectoryName(tempBilletPath), Path.GetDirectoryName(Local_NewModelPartFullPath));
            //        File.Copy(label001BilletPath, tempBilletPath, true);

            //        status = CaxAsm.AddComponentToAsmByDefault(tempBilletPath, out newComponent);
            //        if (!status)
            //        {
            //            CaxLog.ShowListingWindow("001胚料檔組裝失敗");
            //            return;
            //        }
            //    }

            //    //組立"料號_ME_OISxxx"
            //    Local_CurrentOperPartFullPath = string.Format(@"{0}\{1}", Local_ShareStrPartFullPath, CurrentPartNo + "_ME_" + SeleOperValue);
            //    if (!System.IO.File.Exists(Local_CurrentOperPartFullPath))
            //    {
            //        status = CaxAsm.CreateNewEmptyComp(Local_CurrentOperPartFullPath, out newComponent);
            //        if (!status)
            //        {
            //            CaxLog.ShowListingWindow("建立三階製程檔失敗");
            //            return;
            //        }
            //    }
            //    #endregion
            //}
            //else if (groupBox900.Enabled == true)
            //{
            //}
            //else
            //{
            //    #region W階
            //    //組立"前段製程檔"
            //    if (checkWHasBillet.Checked == true & System.IO.File.Exists(labelWBilletPath))
            //    {
            //        //複製檔案到任務資料夾
            //        string tempBilletPath = labelWBilletPath;
            //        tempBilletPath = tempBilletPath.Replace(Path.GetDirectoryName(tempBilletPath), Path.GetDirectoryName(Local_NewModelPartFullPath));
            //        File.Copy(labelWBilletPath, tempBilletPath, true);

            //        status = CaxAsm.AddComponentToAsmByDefault(tempBilletPath, out newComponent);
            //        if (!status)
            //        {
            //            CaxLog.ShowListingWindow("W階胚料檔組裝失敗");
            //            return;
            //        }
            //    }

            //    //組立"料號_ME_OISxxx"
            //    Local_CurrentOperPartFullPath = string.Format(@"{0}\{1}", Local_ShareStrPartFullPath, CurrentPartNo + "_ME_" + SeleOperValue);
            //    if (!System.IO.File.Exists(Local_CurrentOperPartFullPath))
            //    {
            //        status = CaxAsm.CreateNewEmptyComp(Local_CurrentOperPartFullPath, out newComponent);
            //        if (!status)
            //        {
            //            CaxLog.ShowListingWindow("建立三階製程檔失敗");
            //            return;
            //        }
            //    }
            //    #endregion
            //}

            #endregion



            CaxPart.Save();
            this.Close();
        }
Пример #5
0
        private void OK_Click(object sender, EventArgs e)
        {
            //先關閉所有檔案
            CaxPart.CloseAllParts();

            try
            {
                if (Is_OldPart == true)
                {
                    //定義總組立檔案、二階檔案、三階檔案名稱
                    string AsmCompFileFullPath       = string.Format(@"{0}\{1}\{2}\{3}\{4}\{5}", CaxEnv.GetGlobaltekEnvDir(), "Task", comboBoxOldCusName.Text, comboBoxOldPartNo.Text, comboBoxOldCusRev.Text.ToUpper(), comboBoxOldPartNo.Text + "_MOT.prt");
                    string SecondFileFullPath        = string.Format(@"{0}\{1}\{2}\{3}\{4}\{5}", CaxEnv.GetGlobaltekEnvDir(), "Task", comboBoxOldCusName.Text, comboBoxOldPartNo.Text, comboBoxOldCusRev.Text.ToUpper(), comboBoxOldPartNo.Text + "_OP" + "[Oper1]" + ".prt");
                    string ThirdFileFullPath_OIS     = string.Format(@"{0}\{1}\{2}\{3}\{4}\{5}", CaxEnv.GetGlobaltekEnvDir(), "Task", comboBoxOldCusName.Text, comboBoxOldPartNo.Text, comboBoxOldCusRev.Text.ToUpper(), comboBoxOldPartNo.Text + "_OIS" + "[Oper1]" + ".prt");
                    string ThirdFileFullPath_CAM     = string.Format(@"{0}\{1}\{2}\{3}\{4}\{5}", CaxEnv.GetGlobaltekEnvDir(), "Task", comboBoxOldCusName.Text, comboBoxOldPartNo.Text, comboBoxOldCusRev.Text.ToUpper(), comboBoxOldPartNo.Text + "_OP" + "[Oper1]" + "_CAM.prt");
                    string OPFolderPath              = string.Format(@"{0}\{1}\{2}\{3}\{4}\{5}", CaxEnv.GetGlobaltekEnvDir(), "Task", comboBoxOldCusName.Text, comboBoxOldPartNo.Text, comboBoxOldCusRev.Text.ToUpper(), "OP" + "[Oper1]");
                    string tempSecondFileFullPath    = SecondFileFullPath;
                    string tempThirdFileFullPath_OIS = ThirdFileFullPath_OIS;
                    string tempThirdFileFullPath_CAM = ThirdFileFullPath_CAM;
                    string tempOPFolderPath          = OPFolderPath;


                    #region 開啟總組立
                    if (File.Exists(AsmCompFileFullPath))
                    {
                        //組件存在,直接開啟任務組立
                        BasePart newAsmPart;
                        status = CaxPart.OpenBaseDisplay(AsmCompFileFullPath, out newAsmPart);
                        if (!status)
                        {
                            CaxLog.ShowListingWindow("組立開啟失敗,料號不可有中文字!");
                            return;
                        }
                    }
                    else
                    {
                        CaxLog.ShowListingWindow("開啟失敗:找不到總組立" + Path.GetFileNameWithoutExtension(AsmCompFileFullPath));
                        return;
                    }
                    #endregion

                    #region 建立新插入的製程
                    NXOpen.Assemblies.Component tempComp;

                    foreach (string i in ListAddOper)
                    {
                        //設定一階為WorkComp
                        CaxAsm.SetWorkComponent(null);

                        //建立二階檔案
                        SecondFileFullPath = tempSecondFileFullPath;
                        SecondFileFullPath = SecondFileFullPath.Replace("[Oper1]", i);
                        status             = CaxAsm.CreateNewEmptyComp(SecondFileFullPath, out tempComp);
                        if (!status)
                        {
                            CaxLog.ShowListingWindow("建立二階製程檔失敗");
                            return;
                        }

                        //取得二階所有comp
                        List <NXOpen.Assemblies.Component> ChildenComp = new List <NXOpen.Assemblies.Component>();
                        CaxAsm.GetCompChildren(out ChildenComp);

                        foreach (NXOpen.Assemblies.Component ii in ChildenComp)
                        {
                            if (ii.Name == Path.GetFileNameWithoutExtension(SecondFileFullPath).ToUpper())
                            {
                                CaxAsm.SetWorkComponent(ii);
                            }
                        }

                        //建立三階檔案
                        ThirdFileFullPath_OIS = tempThirdFileFullPath_OIS;
                        ThirdFileFullPath_CAM = tempThirdFileFullPath_CAM;

                        ThirdFileFullPath_OIS = ThirdFileFullPath_OIS.Replace("[Oper1]", i);
                        ThirdFileFullPath_CAM = ThirdFileFullPath_CAM.Replace("[Oper1]", i);
                        status = CaxAsm.CreateNewEmptyComp(ThirdFileFullPath_OIS, out tempComp);
                        if (!status)
                        {
                            CaxLog.ShowListingWindow("建立三階OIS檔失敗");
                            return;
                        }
                        status = CaxAsm.CreateNewEmptyComp(ThirdFileFullPath_CAM, out tempComp);
                        if (!status)
                        {
                            CaxLog.ShowListingWindow("建立三階CAM檔失敗");
                            return;
                        }
                    }
                    #endregion

                    #region 建立新插入的製程資料夾
                    foreach (string i in ListAddOper)
                    {
                        OPFolderPath = tempOPFolderPath;
                        OPFolderPath = OPFolderPath.Replace("[Oper1]", i);
                        string OISFolderPath = string.Format(@"{0}\{1}", OPFolderPath, "OIS");
                        string CAMFolderPath = string.Format(@"{0}\{1}", OPFolderPath, "CAM");

                        if (!File.Exists(OISFolderPath))
                        {
                            try
                            {
                                System.IO.Directory.CreateDirectory(OISFolderPath);
                            }
                            catch (System.Exception ex)
                            {
                                MessageBox.Show(ex.ToString());
                                return;
                            }
                        }
                        if (!File.Exists(CAMFolderPath))
                        {
                            try
                            {
                                System.IO.Directory.CreateDirectory(CAMFolderPath);
                            }
                            catch (System.Exception ex)
                            {
                                MessageBox.Show(ex.ToString());
                                return;
                            }
                        }
                    }
                    #endregion

                    #region 將值儲存起來
                    cPECreateData.CusName       = comboBoxOldCusName.Text;
                    cPECreateData.PartNo        = comboBoxOldPartNo.Text;
                    cPECreateData.CusRev        = comboBoxOldCusRev.Text.ToUpper();
                    cPECreateData.ListOperation = new List <Operation>();
                    Operation cOperation = new Operation();
                    cPECreateData.Oper1Ary = new List <string>();
                    cPECreateData.Oper2Ary = new List <string>();
                    for (int i = 0; i < panel.Rows.Count; i++)
                    {
                        if (panel.Rows.Count == 0)
                        {
                            MessageBox.Show("尚未選擇製程序與製程別!");
                            return;
                        }

                        if (panel.GetCell(i, 1).Value.ToString() == "")
                        {
                            MessageBox.Show("製程序" + panel.GetCell(i, 0).Value + "尚未選取製程別!");
                            return;
                        }

                        cOperation       = new Operation();
                        cOperation.Oper1 = panel.GetCell(i, 0).Value.ToString();
                        cOperation.Oper2 = panel.GetCell(i, 1).Value.ToString();

                        cPECreateData.ListOperation.Add(cOperation);

                        cPECreateData.Oper1Ary.Add(panel.GetCell(i, 0).Value.ToString());
                        cPECreateData.Oper2Ary.Add(panel.GetCell(i, 1).Value.ToString());
                    }
                    #endregion

                    #region 寫出PECreateData.dat
                    string PECreateDataJsonDat = string.Format(@"{0}\{1}\{2}\{3}\{4}\{5}", CaxEnv.GetGlobaltekTaskDir(), CurrentOldCusName, CurrentOldPartNo, CurrentOldCusRev, "MODEL", "PECreateData.dat");
                    status = CaxFile.WriteJsonFileData(PECreateDataJsonDat, cPECreateData);
                    if (!status)
                    {
                        MessageBox.Show("PECreateData.dat 輸出失敗...");
                        return;
                    }
                    #endregion
                }
                else
                {
                    #region 取得客戶名稱

                    CusName = comboBoxCusName.Text;
                    if (CusName == "")
                    {
                        MessageBox.Show("尚未填寫客戶!");
                        return;
                    }

                    #endregion

                    #region 取得料號

                    PartNo = textPartNo.Text;
                    if (PartNo == "")
                    {
                        MessageBox.Show("尚未填寫料號!");
                        return;
                    }

                    #endregion

                    #region 取得客戶版次

                    CusRev = textCusRev.Text;
                    if (CusRev == "")
                    {
                        MessageBox.Show("尚未填寫客戶版次!");
                        return;
                    }

                    #endregion

                    #region 取得檔案路徑

                    if (PartPath == "-1")
                    {
                        MessageBox.Show("尚未選擇客戶檔案!");
                        return;
                    }

                    #endregion

                    #region 定義根目錄

                    //定義MODEL資料夾路徑
                    string ModelFolderFullPath = string.Format(@"{0}\{1}\{2}\{3}\{4}\{5}", CaxEnv.GetGlobaltekEnvDir(), "Task", CusName, PartNo, CusRev.ToUpper(), "MODEL");

                    //定義總組立檔案名稱
                    string AsmCompFileFullPath = string.Format(@"{0}\{1}\{2}\{3}\{4}\{5}", CaxEnv.GetGlobaltekEnvDir(), "Task", CusName, PartNo, CusRev.ToUpper(), PartNo + "_MOT.prt");

                    //定義CAM資料夾路徑、OIS資料夾路徑、三階檔案路徑
                    string CAMFolderPath = "", OISFolderPath = "", ThridOperPartPath = "";

                    #endregion

                    #region 建立MODEL資料夾

                    if (!File.Exists(ModelFolderFullPath))
                    {
                        try
                        {
                            System.IO.Directory.CreateDirectory(ModelFolderFullPath);
                        }
                        catch (System.Exception ex)
                        {
                            MessageBox.Show(ex.ToString());
                            return;
                        }
                    }

                    #endregion

                    #region 複製客戶檔案到MODEL資料夾內

                    //判斷客戶的檔案是否存在
                    status = System.IO.File.Exists(PartPath);
                    if (!status)
                    {
                        MessageBox.Show("指定的檔案不存在,請再次確認");
                        return;
                    }

                    //建立MODEL資料夾內客戶檔案路徑
                    string CustomerPartFullPath = string.Format(@"{0}\{1}", ModelFolderFullPath, PartNo + ".prt");

                    //開始複製
                    if (!System.IO.File.Exists(CustomerPartFullPath))
                    {
                        File.Copy(PartPath, CustomerPartFullPath, true);
                    }


                    #endregion

                    #region 將值儲存起來

                    cPECreateData.CusName = CusName;
                    cPECreateData.PartNo  = PartNo;
                    cPECreateData.CusRev  = CusRev.ToUpper();
                    //cPE_OutPutDat.PartPath = PartPath;
                    cPECreateData.ListOperation = new List <Operation>();
                    Operation cOperation = new Operation();
                    cPECreateData.Oper1Ary = new List <string>();
                    cPECreateData.Oper2Ary = new List <string>();
                    for (int i = 0; i < panel.Rows.Count; i++)
                    {
                        if (panel.Rows.Count == 0)
                        {
                            MessageBox.Show("尚未選擇製程序與製程別!");
                            return;
                        }

                        if (panel.GetCell(i, 1).Value.ToString() == "")
                        {
                            MessageBox.Show("製程序" + panel.GetCell(i, 0).Value + "尚未選取製程別!");
                            return;
                        }

                        cOperation       = new Operation();
                        cOperation.Oper1 = panel.GetCell(i, 0).Value.ToString();
                        cOperation.Oper2 = panel.GetCell(i, 1).Value.ToString();

                        //建立CAM資料夾路徑
                        CAMFolderPath = string.Format(@"{0}\{1}\{2}", Path.GetDirectoryName(AsmCompFileFullPath), "OP" + panel.GetCell(i, 0).Value.ToString(), "CAM");

                        //儲存CAM資料夾路徑
                        //cOperation.CAMFolderPath = CAMFolderPath;

                        //建立CAM資料夾
                        if (!File.Exists(CAMFolderPath))
                        {
                            try
                            {
                                System.IO.Directory.CreateDirectory(CAMFolderPath);
                            }
                            catch (System.Exception ex)
                            {
                                MessageBox.Show(ex.ToString());
                                return;
                            }
                        }

                        //建立OIS資料夾路徑
                        OISFolderPath = string.Format(@"{0}\{1}\{2}", Path.GetDirectoryName(AsmCompFileFullPath), "OP" + panel.GetCell(i, 0).Value.ToString(), "OIS");

                        //儲存OIS資料夾路徑
                        //cOperation.OISFolderPath = OISFolderPath;

                        //建立OIS資料夾
                        if (!File.Exists(OISFolderPath))
                        {
                            try
                            {
                                System.IO.Directory.CreateDirectory(OISFolderPath);
                            }
                            catch (System.Exception ex)
                            {
                                MessageBox.Show(ex.ToString());
                                return;
                            }
                        }

                        //建立三階檔案路徑
                        ThridOperPartPath = Path.GetDirectoryName(AsmCompFileFullPath);

                        cPECreateData.ListOperation.Add(cOperation);

                        cPECreateData.Oper1Ary.Add(panel.GetCell(i, 0).Value.ToString());
                        cPECreateData.Oper2Ary.Add(panel.GetCell(i, 1).Value.ToString());
                    }

                    #endregion

                    #region (註解中)複製MODEL內的客戶檔案到料號資料夾內,並更名XXX_MOT.prt

                    /*
                     * //判斷要複製的檔案是否存在
                     * status = System.IO.File.Exists(destFileName_Model);
                     * if (!status)
                     * {
                     *  MessageBox.Show("指定的檔案不存在,請再次確認");
                     *  return;
                     * }
                     *
                     * //建立目的地(客戶版次)檔案全路徑
                     * string destFileName_CusRev = string.Format(@"{0}\{1}\{2}\{3}", CaxEnv.GetGlobalTekEnvDir(), PartNo, CusRev.ToUpper(), PartNo + "_MOT.prt");
                     *
                     * //開始複製
                     * File.Copy(destFileName_Model, destFileName_CusRev, true);
                     */
                    #endregion

                    #region 自動建立總組立檔案架構,並組立相關製程

                    status = CaxAsm.CreateNewAsm(AsmCompFileFullPath);
                    if (!status)
                    {
                        CaxLog.ShowListingWindow("建立一階總組立檔失敗");
                        return;
                    }

                    CaxPart.Save();


                    string OPCompName = "";
                    NXOpen.Assemblies.Component tempComp;
                    //List<double> ListOperDouble = new List<double>();
                    //for (int i = 0; i < cPE_OutPutDat.ListOperation.Count; i++)
                    //{
                    //    ListOperDouble.Add(Convert.ToDouble(cPE_OutPutDat.ListOperation[i].Oper1));
                    //}
                    //ListOperDouble.Sort();

                    for (int i = 0; i < cPECreateData.ListOperation.Count; i++)
                    {
                        //設定一階為WorkComp
                        CaxAsm.SetWorkComponent(null);

                        //建立二階製程檔
                        OPCompName = string.Format(@"{0}\{1}", Path.GetDirectoryName(AsmCompFileFullPath), PartNo + "_OP" + cPECreateData.ListOperation[i].Oper1 + ".prt");
                        status     = CaxAsm.CreateNewEmptyComp(OPCompName, out tempComp);
                        if (!status)
                        {
                            CaxLog.ShowListingWindow("建立二階製程檔失敗");
                            return;
                        }
                    }

                    string OISCompFullPath = "", CAMCompFullPath = "";

                    //取得二階所有comp
                    List <NXOpen.Assemblies.Component> ChildenComp = new List <NXOpen.Assemblies.Component>();
                    CaxAsm.GetCompChildren(out ChildenComp);

                    for (int i = 0; i < ChildenComp.Count; i++)
                    {
                        CaxAsm.SetWorkComponent(ChildenComp[i]);
                        string OperStr = ChildenComp[i].Name.Split(new string[] { "OP" }, StringSplitOptions.RemoveEmptyEntries)[1];

                        #region 建立三階CAM檔
                        //建立三階CAM檔
                        CAMCompFullPath = string.Format(@"{0}\{1}", Path.GetDirectoryName(AsmCompFileFullPath), PartNo + "_OP" + OperStr + "_CAM.prt");
                        status          = CaxAsm.CreateNewEmptyComp(CAMCompFullPath, out tempComp);
                        if (!status)
                        {
                            CaxLog.ShowListingWindow("建立三階CAM檔失敗");
                            return;
                        }
                        #endregion


                        #region 建立三階OIS檔
                        //先複製drafting_template.prt到OIS檔
                        string drafting_template_Path = string.Format(@"{0}\{1}", CaxEnv.GetGlobaltekEnvDir(), "drafting_template.prt");
                        OISCompFullPath = string.Format(@"{0}\{1}", Path.GetDirectoryName(AsmCompFileFullPath), PartNo + "_OIS" + OperStr + ".prt");
                        if (!File.Exists(drafting_template_Path))
                        {
                            CaxLog.ShowListingWindow("drafting_template.prt遺失,請聯繫開發工程師");
                            return;
                        }
                        System.IO.File.Copy(drafting_template_Path, OISCompFullPath, true);

                        //組立三階OIS檔
                        //status = CaxAsm.CreateNewEmptyComp(OISCompFullPath, out tempComp);
                        status = CaxAsm.AddComponentToAsmByDefault(OISCompFullPath, out tempComp);
                        if (!status)
                        {
                            CaxLog.ShowListingWindow("組立三階OIS檔失敗");
                            return;
                        }
                        #endregion
                    }

                    #endregion

                    #region 寫出PECreateData.dat

                    string PECreateDataJsonDat = string.Format(@"{0}\{1}", ModelFolderFullPath, "PECreateData.dat");
                    status = CaxFile.WriteJsonFileData(PECreateDataJsonDat, cPECreateData);
                    if (!status)
                    {
                        MessageBox.Show("PECreateData.dat 輸出失敗...");
                        return;
                    }

                    #endregion

                    #region (註解中)寫出METEDownloadData.dat

                    //string METEDownloadData = string.Format(@"{0}\{1}", CaxEnv.GetGlobaltekTaskDir(), "METEDownloadData.dat");
                    //METEDownloadData cMETEDownloadData = new METEDownloadData();

                    //if (File.Exists(METEDownloadData))
                    //{
                    //    #region METEDownloadData.dat檔案存在

                    //    status = CaxPublic.ReadMETEDownloadData(METEDownloadData, out cMETEDownloadData);
                    //    if (!status)
                    //    {
                    //        MessageBox.Show("METEDownloadData.dat讀取失敗...");
                    //        return;
                    //    }

                    //    int CusCount = 0, IndexOfCusName = -1;
                    //    for (int i = 0; i < cMETEDownloadData.EntirePartAry.Count; i++)
                    //    {
                    //        if (CusName != cMETEDownloadData.EntirePartAry[i].CusName)
                    //        {
                    //            CusCount++;
                    //        }
                    //        else
                    //        {
                    //            IndexOfCusName = i;
                    //            break;
                    //        }
                    //    }

                    //    //新的客戶且已經有METEDownloadDat.dat
                    //    if (CusCount == cMETEDownloadData.EntirePartAry.Count)
                    //    {
                    //        EntirePartAry cEntirePartAry = new EntirePartAry();
                    //        cEntirePartAry.CusName = CusName;
                    //        cEntirePartAry.CusPart = new List<CusPart>();

                    //        CusPart cCusPart = new CusPart();
                    //        cCusPart.PartNo = PartNo;
                    //        cCusPart.CusRev = new List<CusRev>();

                    //        CusRev cCusRev = new CusRev();
                    //        cCusRev.RevNo = CusRev.ToUpper();
                    //        cCusRev.OperAry1 = new List<string>();
                    //        cCusRev.OperAry2 = new List<string>();
                    //        cCusRev.OperAry1 = cPECreateData.Oper1Ary;
                    //        cCusRev.OperAry2 = cPECreateData.Oper2Ary;

                    //        cCusPart.CusRev.Add(cCusRev);
                    //        cEntirePartAry.CusPart.Add(cCusPart);
                    //        cMETEDownloadData.EntirePartAry.Add(cEntirePartAry);
                    //    }
                    //    //舊的客戶新增料號
                    //    else
                    //    {
                    //        //判斷料號是否已存在
                    //        int PartCount = 0; int IndexOfPartNo = -1;
                    //        for (int i = 0; i < cMETEDownloadData.EntirePartAry[IndexOfCusName].CusPart.Count; i++)
                    //        {
                    //            if (PartNo != cMETEDownloadData.EntirePartAry[IndexOfCusName].CusPart[i].PartNo)
                    //            {
                    //                PartCount++;
                    //            }
                    //            else
                    //            {
                    //                IndexOfPartNo = i;
                    //                break;
                    //            }
                    //        }

                    //        //舊的客戶且新的料號 PartCount == CusPart.Count 表示新的料號
                    //        if (PartCount == cMETEDownloadData.EntirePartAry[IndexOfCusName].CusPart.Count)
                    //        {
                    //            CusPart cCusPart = new CusPart();
                    //            cCusPart.PartNo = PartNo;
                    //            cCusPart.CusRev = new List<CusRev>();

                    //            CusRev cCusRev = new CusRev();
                    //            cCusRev.RevNo = CusRev.ToUpper();
                    //            cCusRev.OperAry1 = new List<string>();
                    //            cCusRev.OperAry2 = new List<string>();
                    //            cCusRev.OperAry1 = cPECreateData.Oper1Ary;
                    //            cCusRev.OperAry2 = cPECreateData.Oper2Ary;

                    //            cCusPart.CusRev.Add(cCusRev);
                    //            cMETEDownloadData.EntirePartAry[IndexOfCusName].CusPart.Add(cCusPart);
                    //        }
                    //        //舊的客戶且舊的料號新增客戶版次
                    //        else
                    //        {
                    //            CusRev cCusRev = new CusRev();
                    //            cCusRev.RevNo = CusRev.ToUpper();
                    //            cCusRev.OperAry1 = new List<string>();
                    //            cCusRev.OperAry1 = cPECreateData.Oper1Ary;

                    //            cMETEDownloadData.EntirePartAry[IndexOfCusName].CusPart[IndexOfPartNo].CusRev.Add(cCusRev);
                    //        }
                    //    }
                    //    /*
                    //    int PartCount = 0; int IndexOfPartNo = -1;
                    //    for (int i = 0; i < cMETEDownloadData.EntirePartAry.Count; i++)
                    //    {
                    //    if (PartNo != cMETEDownloadData.EntirePartAry[i].PartNo)
                    //    {
                    //    PartCount++;
                    //    }
                    //    else
                    //    {
                    //    IndexOfPartNo = i;
                    //    break;
                    //    }
                    //    }

                    //    //新的料號且已經有METEDownloadDat.dat
                    //    if (PartCount == cMETEDownloadData.EntirePartAry.Count)
                    //    {
                    //    EntirePartAry cEntirePartAry = new EntirePartAry();
                    //    cEntirePartAry.CusRev = new List<CusRev>();

                    //    CusRev cCusRev = new CusRev();
                    //    cCusRev.OperAry1 = new List<string>();
                    //    cCusRev.RevNo = CusRev.ToUpper();
                    //    cCusRev.OperAry1 = cPE_OutPutDat.Oper1Ary;

                    //    cEntirePartAry.CusName = CusName;
                    //    cEntirePartAry.PartNo = PartNo;
                    //    cEntirePartAry.CusRev.Add(cCusRev);

                    //    cMETEDownloadData.EntirePartAry.Add(cEntirePartAry);
                    //    }
                    //    //舊的料號新增客戶版次
                    //    else
                    //    {
                    //    CusRev cCusRev = new CusRev();
                    //    cCusRev.OperAry1 = new List<string>();
                    //    cCusRev.RevNo = CusRev.ToUpper();
                    //    cCusRev.OperAry1 = cPE_OutPutDat.Oper1Ary;

                    //    cMETEDownloadData.EntirePartAry[IndexOfPartNo].CusRev.Add(cCusRev);
                    //    }
                    //    */
                    //    #endregion
                    //}
                    //else
                    //{
                    //    #region METEDownloadData.dat檔案不存在

                    //    cMETEDownloadData.EntirePartAry = new List<EntirePartAry>();
                    //    EntirePartAry cEntirePartAry = new EntirePartAry();
                    //    cEntirePartAry.CusName = CusName;
                    //    cEntirePartAry.CusPart = new List<CusPart>();

                    //    CusPart cCusPart = new CusPart();
                    //    cCusPart.PartNo = PartNo;
                    //    cCusPart.CusRev = new List<CusRev>();

                    //    CusRev cCusRev = new CusRev();
                    //    cCusRev.RevNo = CusRev.ToUpper();
                    //    cCusRev.OperAry1 = new List<string>();
                    //    cCusRev.OperAry2 = new List<string>();
                    //    cCusRev.OperAry1 = cPECreateData.Oper1Ary;
                    //    cCusRev.OperAry2 = cPECreateData.Oper2Ary;

                    //    cCusPart.CusRev.Add(cCusRev);
                    //    cEntirePartAry.CusPart.Add(cCusPart);
                    //    cMETEDownloadData.EntirePartAry.Add(cEntirePartAry);

                    //    #endregion
                    //}

                    //status = CaxFile.WriteJsonFileData(METEDownloadData, cMETEDownloadData);
                    //if (!status)
                    //{
                    //    MessageBox.Show("METEDownloadData.dat輸出失敗...");
                    //    return;
                    //}

                    #endregion
                }

                CaxAsm.SetWorkComponent(null);
                CaxPart.Save();
                this.DialogResult = DialogResult.OK;
                this.Close();
            }
            catch (System.Exception ex)
            {
                CaxLog.ShowListingWindow(ex.ToString());
            }
        }