//设置硬度按钮 private void tsrbtnSetHardness_Click(object sender, EventArgs e) { IsEditYingdu = true; tsrbtnOk.Visible = true; tsrbtnCancel.Visible = true; tsrbtnEdit.Visible = false; tsrbtnSetHardness.Visible = false; tvwGongYi.Enabled = false; tsrGongyiTree.Enabled = false; List <S_Yingdu> YingduList = XML3DPPM.GetYingduList(XmlFile); int i = 0; dgvYingdu.Rows.Clear(); string tempYD = "硬度临时值"; foreach (S_Yingdu s_yingdu in YingduList) { if (s_yingdu.yingdu != tempYD) { dgvYingdu.Rows.Add(); dgvYingdu[0, i].Value = (i + 1).ToString(); dgvYingdu[1, i].Value = s_yingdu.gongxuhao; dgvYingdu[2, i].Value = tempYD = s_yingdu.yingdu; i++; } } dgvYingdu.BringToFront(); SetStatusLabel("提示:仅设置发生硬度更改的工序即可!", 2); }
//节点选中变化 private void tvwSheet_AfterSelect(object sender, TreeViewEventArgs e) { TreeNode sel = tvwSheet.SelectedNode; if (sel == null) { tsrbtnAdd.Enabled = false; tsrbtnDel.Enabled = false; tsrbtnOpen.Enabled = false; } else if (sel.Tag.ToString() == "Gongyi" || sel.Tag.ToString() == "Gongxu") { string filename = XML3DPPM.GetModelName(0, sel.Index, XmlFile); if (string.IsNullOrEmpty(filename)) { tsrbtnAdd.Enabled = false; tsrbtnDel.Enabled = false; tsrbtnOpen.Enabled = false; } else { tsrbtnAdd.Enabled = true; tsrbtnDel.Enabled = false; tsrbtnOpen.Enabled = false; } } else if (sel.Tag.ToString() == "Sheet") { tsrbtnAdd.Enabled = false; tsrbtnDel.Enabled = true; tsrbtnOpen.Enabled = true; } }
//新建图纸页按钮 private void tsrbtnAdd_Click(object sender, EventArgs e) { TreeNode sel = tvwSheet.SelectedNode; if (sel == null || (sel.Tag.ToString() != "Gongyi" && sel.Tag.ToString() != "Gongxu")) { SetStatusLabel("请选中树中工艺或工序节点", 1); return; } int index = sel.Index; string filename = XML3DPPM.GetModelName(0, index, XmlFile); if (string.IsNullOrEmpty(filename)) { SetStatusLabel("选中节点下无模型,请在编辑模型模块中创建模型!", 1); return; } Part prt = NXFun.OpenPrt(ToFullPath(filename)); if (prt == null) { SetStatusLabel("打开模型错误!", 1); return; } mainDlg.Enabled = false; //如果这里不禁用主窗口,再点击一次添加或退出就会出错,而如果直接隐藏主窗口有时会把NX隐藏,奇怪的很。 // mainDlg.WindowState = FormWindowState.Minimized; CreateSheet.MainFun(); mainDlg.Enabled = true; // mainDlg.WindowState = FormWindowState.Normal; SetStatusLabel("添加图纸页返回", 2); FreshSheetTree(); }
//添加工序菜单 private void cmsGongyiAddGongxu_Click(object sender, EventArgs e) { AddGongxuFun(-1); SetStatusLabel("已添加工序到末尾", 2); FreshGongYiTree(); //编辑工序节点 OnEditGongxu = XML3DPPM.GetGongxuCount(XmlFile); OnEditGongbu = 0; IsEdit = true; FreshEditTable(); }
//向下移动按钮 private void tsrbtnMoveDown_Click(object sender, EventArgs e) { TreeNode sel = tvwGongYi.SelectedNode; if (sel == null) { SetStatusLabel("请选中工序或工步节点", 1); return; } if (sel.Tag.ToString() == "Gongyi") { SetStatusLabel("请选中工序或工步节点", 1); return; } else if (sel.Tag.ToString() == "Gongxu") { if (sel.NextNode != null) { int a = sel.Index; XML3DPPM.MoveNode(a + 1, 0, false, XmlFile); SetStatusLabel("已成功向下移动工序", 2); FreshGongYiTree(); tvwGongYi.SelectedNode = GetIndexedTreeNode(a + 2, 0); } else { SetStatusLabel("该工序已置尾", 1); } } else if (sel.Tag.ToString() == "Gongbu") { if (sel.NextNode != null) { int a = sel.Parent.Index; int b = sel.Index; XML3DPPM.MoveNode(a + 1, b + 1, false, XmlFile); SetStatusLabel("已成功向下移动工步", 2); FreshGongYiTree(); tvwGongYi.SelectedNode = GetIndexedTreeNode(a + 1, b + 2); } else { SetStatusLabel("该工步已置尾", 1); } } return; }
//打开图纸页按钮 private void tsrbtnOpen_Click(object sender, EventArgs e) { TreeNode sel = tvwSheet.SelectedNode; if (sel == null || sel.Tag.ToString() != "Sheet") { SetStatusLabel("请选中树中图纸节点", 1); return; } string prtfullpath = ToFullPath(XML3DPPM.GetModelName(0, sel.Parent.Index, XmlFile)); string guid = sel.Name; NXFun.OpenPrt(prtfullpath); NXFun.ShowSheetByGuid(prtfullpath, guid); SetStatusLabel("已显示图纸页", 2); //FreshSheetTree(); }
//双击打开模型 private void tvwSheet_MouseDoubleClick(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { System.Drawing.Point clickPoint = new System.Drawing.Point(e.X, e.Y); TreeNode sel = tvwSheet.GetNodeAt(clickPoint); //判断点击的是否是一个节点 if (sel != null && sel.Tag.ToString() == "Sheet") { string prtfullpath = ToFullPath(XML3DPPM.GetModelName(0, sel.Parent.Index, XmlFile)); string guid = sel.Name; NXFun.OpenPrt(prtfullpath); NXFun.ShowSheetByGuid(prtfullpath, guid); SetStatusLabel("已显示图纸页", 2); } } }
//读取控件的值 /// <summary> /// 读取控件的值 (0,0)表示工艺 (N,0)表示第N个工序 (N,M)表示第N个工序的第M个工步 /// </summary> /// <param name="a">第几个工序</param> /// <param name="b">第几个工步</param> private void InitializeInputBox(int a, int b) { if (a == 0 && b == 0) { //读取并刷新工艺面板 foreach (Control control in tlpGongyiNormal.Controls) { if (control is TextBox) { ((TextBox)control).Text = XML3DPPM.GetIndexAttr(a, b, control.Name, XmlFile); } } } else if (a > 0 && b == 0) { //读取并刷新工序面板 foreach (Control control in tlpGongxuNormal.Controls) { if (control is TextBox) { ((TextBox)control).Text = XML3DPPM.GetIndexAttr(a, b, control.Name, XmlFile); } else if (control is CheckBox) { bool check = NXFun.string2bool(XML3DPPM.GetIndexAttr(a, b, control.Name, XmlFile)); ((CheckBox)control).CheckState = check?CheckState.Checked:CheckState.Unchecked; } } } else if (a > 0 && b > 0) { //读取并刷新工步面板 foreach (Control control in tlpGongbu.Controls) { if (control is TextBox) { ((TextBox)control).Text = XML3DPPM.GetIndexAttr(a, b, control.Name, XmlFile); } } //读取并刷新子工步面板 UpdateZigongbu(a, b, true); } }
//添加工序按钮 private void tsrbtnAddGongxu_Click(object sender, EventArgs e) { TreeNode sel = tvwGongYi.SelectedNode; if (sel == null) { SetStatusLabel("请先选中树节点", 1); return; } if (sel.Tag.ToString() == "Gongyi") { AddGongxuFun(-1); SetStatusLabel("已创建新工序到末尾", 2); FreshGongYiTree(); //编辑工序节点 OnEditGongxu = XML3DPPM.GetGongxuCount(XmlFile); OnEditGongbu = 0; IsEdit = true; FreshEditTable(); return; } else if (sel.Tag.ToString() == "Gongxu") { int index = sel.Index; AddGongxuFun(index); SetStatusLabel("已插入新工序在选中节点前", 2); FreshGongYiTree(); //编辑工序节点 OnEditGongxu = index + 1; OnEditGongbu = 0; IsEdit = true; FreshEditTable(); return; } else if (sel.Tag.ToString() == "Gongbu") { SetStatusLabel("请选中工艺或工序节点", 2); return; } return; }
//添加工步菜单 private void cmsGongxuAddGongbu_Click(object sender, EventArgs e) { TreeNode sel = tvwGongYi.SelectedNode; if (sel == null || sel.Tag.ToString() != "Gongxu") { SetStatusLabel("请选中工序节点", 1); return; } int index = sel.Index; AddGongbuFun(index, -1); SetStatusLabel("已插入新工步在选中工序末尾", 2); FreshGongYiTree(); //编辑工序节点 OnEditGongxu = index + 1; OnEditGongbu = XML3DPPM.GetGongbuCount(index + 1, XmlFile); IsEdit = true; FreshEditTable(); return; }
//添加工步按钮 private void tsrbtnAddGongbu_Click(object sender, EventArgs e) { TreeNode sel = tvwGongYi.SelectedNode; if (sel == null || sel.Tag.ToString() == "Gongyi") { SetStatusLabel("请选中工序或工步节点", 1); return; } else if (sel.Tag.ToString() == "Gongxu") { int index = sel.Index; AddGongbuFun(index, -1); SetStatusLabel("已插入新工步在选中工序末尾", 2); FreshGongYiTree(); //编辑工序节点 OnEditGongxu = index + 1; OnEditGongbu = XML3DPPM.GetGongbuCount(index + 1, XmlFile); IsEdit = true; FreshEditTable(); return; } else if (sel.Tag.ToString() == "Gongbu") { int a = sel.Parent.Index; int b = sel.Index; AddGongbuFun(a, b); SetStatusLabel("已插入新工步在选中节点前", 2); FreshGongYiTree(); //编辑工序节点 OnEditGongxu = a + 1; OnEditGongbu = b + 1; IsEdit = true; FreshEditTable(); return; } FreshGongYiTree(); return; }
//恢复工艺 private void RecoverProject() { folderBrowserDialog.Description = "请选择要打开的工艺临时文件夹:"; folderBrowserDialog.ShowNewFolderButton = false; DialogResult result = folderBrowserDialog.ShowDialog(); if (result == DialogResult.OK) { string path = folderBrowserDialog.SelectedPath; //判断合法性 string root = Path.GetPathRoot(path); string pathname = Path.GetDirectoryName(path); string filename = Path.GetFileName(path); if (path.Equals(root) && string.IsNullOrEmpty(pathname) && string.IsNullOrEmpty(filename)) { MessageBox.Show("请不要选择根目录!"); return; } else if (NXFun.IsChina(path)) { MessageBox.Show("NX不支持中文路径,请修改路径!"); return; } else if (!NXFun.isFileExist(path + "\\" + NXFun.ProcessXML)) { MessageBox.Show("所选路径非工艺临时数据包"); return; } else { ProPath = pathname; ProName = filename; XmlFile = ToFullPath(NXFun.ProcessXML); XML3DPPM.Update3dppm(XmlFile, TemplateXML); OpenOrCreateProjectInit(); } } }
//关闭工艺 private bool CloseProject(bool isSave) { bool result = false; List <S_Model> ModelList = XML3DPPM.GetModelList(XmlFile); //关闭所有并保存压缩 foreach (S_Model model in ModelList) { if (!String.IsNullOrEmpty(model.filename)) { NXFun.ClosePrt(ToFullPath(model.filename), isSave); } } if (isSave) { //压缩 string tempZip = ProPath + "\\" + ProName + ".tmp"; bool isSaved = Compress.RAR(NXFun.TDPPMPath + NXFun.RarEXE, tempZip, ProPath + "\\" + ProName); if (isSaved) { File.Copy(tempZip, ProPath + "\\" + ProName + ".3dppm", true); File.Delete(tempZip); NXFun.DeleteDirectory(ProPath + "\\" + ProName); SetStatusLabel("保存工艺成功!", 2); result = true; } else { result = false; } } else { result = true; } return(result); }
//更新或保存子工步信息 /// <summary> /// 更新或保存子工步信息 /// </summary> /// <param name="a">工序</param> /// <param name="b">工步</param> /// <param name="isRead">true为读xml到控件,flase为写控件到xml</param> private void UpdateZigongbu(int a, int b, bool isRead) { if (isRead) { S_ChildStep[] childsteps = XML3DPPM.GetChildStepList(a, b, XmlFile); dgvZigongbu.Rows.Clear(); for (int i = 0; i < childsteps.Length; i++) { dgvZigongbu.Rows.Add(); dgvZigongbu[0, i].Value = i; dgvZigongbu[1, i].Value = childsteps[i].name; dgvZigongbu[2, i].Value = childsteps[i].renju; dgvZigongbu[3, i].Value = childsteps[i].liangju; dgvZigongbu[4, i].Value = childsteps[i].beizhu; } } else { List <S_ChildStep> childsteps = new List <S_ChildStep>(); S_ChildStep childstep; for (int i = 0; i < dgvZigongbu.Rows.Count; i++) { childstep.name = (string)dgvZigongbu[1, i].Value; childstep.renju = (string)dgvZigongbu[2, i].Value; childstep.liangju = (string)dgvZigongbu[3, i].Value; childstep.beizhu = (string)dgvZigongbu[4, i].Value; if (!(string.IsNullOrEmpty(childstep.name) && string.IsNullOrEmpty(childstep.renju) && string.IsNullOrEmpty(childstep.liangju) && string.IsNullOrEmpty(childstep.beizhu))) { childsteps.Add(childstep); } } XML3DPPM.SetChildStepList(a, b, childsteps, XmlFile, TemplateXML); } }
//打开或新建工艺时初始化 private void OpenOrCreateProjectInit() { //变量值 IsProjectOpen = true; //控件状态 pnlWelcome.Hide(); pnlMain.Show(); this.Text = ProPath + "\\" + ProName + ".3dppm"; //更新会签 if (NXFun.isFileExist(ToFullPath(NXFun.SignOffXML))) { bool result = XML3DPPM.UpdateSignOff(XmlFile, ToFullPath(NXFun.SignOffXML)); if (result) { NXFun.MessageBox("更新会签信息成功,请在\"编辑图纸->二维图表\"模块点击\"更新表头\"来刷新会签信息。"); } else { NXFun.MessageBox("更新会签信息失败,请确认会签文件是否有效!"); } } //操作 ProcessEdit.ProPath = ProPath; ProcessEdit.ProName = ProName; ProcessEdit.Init(); ModelEdit.ProPath = ProPath; ModelEdit.ProName = ProName; ModelEdit.Init(); SheetEdit.ProPath = ProPath; SheetEdit.ProName = ProName; SheetEdit.Init(); }
//删除图纸页按钮 private void tsrbtnDel_Click(object sender, EventArgs e) { TreeNode sel = tvwSheet.SelectedNode; if (sel == null || sel.Tag.ToString() != "Sheet") { SetStatusLabel("请选中树中图纸节点", 1); return; } DialogResult dialogResult = MessageBox.Show("是否删除选中图纸?", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dialogResult != DialogResult.Yes) { return; } string prtfullpath = ToFullPath(XML3DPPM.GetModelName(0, sel.Parent.Index, XmlFile)); string guid = sel.Name; NXFun.OpenPrt(prtfullpath); NXOpen.Drawings.DrawingSheet ds = NXFun.GetSheetByGuid(prtfullpath, guid); NXFun.DeleteObject(ds); SetStatusLabel("已删除图纸页", 2); FreshSheetTree(); }
//右击菜单 private void tvwSheet_MouseClick(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { System.Drawing.Point clickPoint = new System.Drawing.Point(e.X, e.Y); TreeNode sel = tvwSheet.GetNodeAt(clickPoint); if (sel != null) { tvwSheet.SelectedNode = sel; if (sel.Tag.ToString() == "Gongyi" || sel.Tag.ToString() == "Gongxu") { string filename = XML3DPPM.GetModelName(0, sel.Index, XmlFile); if (!string.IsNullOrEmpty(filename)) { sel.ContextMenuStrip = cmsModel; } } else if (sel.Tag.ToString() == "Sheet") { sel.ContextMenuStrip = cmsSheet; } } } }
//刷新图纸树 public void FreshSheetTree() { tvwSheet.Nodes.Clear(); tvwSheet.ImageIndex = 3; tvwSheet.SelectedImageIndex = 3; //第一个为工艺节点 TreeNode gyTreeNode = new TreeNode(); string filename = XML3DPPM.GetModelName(0, 0, XmlFile); gyTreeNode.Text = XML3DPPM.GetIndexAttr(0, 0, "gongyi_jianming", XmlFile) + " (" + filename + ")"; gyTreeNode.Tag = "Gongyi"; bool IsNull = string.IsNullOrEmpty(filename); gyTreeNode.ImageIndex = IsNull?1:0; gyTreeNode.SelectedImageIndex = IsNull ? 1 : 0; tvwSheet.Nodes.Add(gyTreeNode); if (!string.IsNullOrEmpty(filename)) { List <S_Sheet> SheetTempletList = NXFun.GetSheetTempletList(ToFullPath(filename)); foreach (S_Sheet sheet in SheetTempletList) { TreeNode sheetTreeNode = new TreeNode(); sheetTreeNode.Text = sheet.SheetName + "_" + sheet.Remark; sheetTreeNode.Tag = "Sheet"; sheetTreeNode.Name = sheet.guid; //利用guid标识图纸 sheetTreeNode.ImageIndex = 2; sheetTreeNode.SelectedImageIndex = 2; gyTreeNode.Nodes.Add(sheetTreeNode); } } //之后为工序节点 int gxNum = XML3DPPM.GetGongxuCount(XmlFile); for (int i = 0; i < gxNum; i++) { TreeNode gxTreeNode = new TreeNode(); filename = XML3DPPM.GetModelName(0, i + 1, XmlFile); gxTreeNode.Text = XML3DPPM.GetIndexAttr(i + 1, 0, "gongxu_gongxuhao", XmlFile) + "_" + XML3DPPM.GetIndexAttr(i + 1, 0, "gongxu_gongxumingcheng", XmlFile) + " (" + filename + ")"; gxTreeNode.Tag = "Gongxu"; IsNull = string.IsNullOrEmpty(filename); gxTreeNode.ImageIndex = IsNull ? 1 : 0; gxTreeNode.SelectedImageIndex = IsNull ? 1 : 0; tvwSheet.Nodes.Add(gxTreeNode); if (!string.IsNullOrEmpty(filename)) { List <S_Sheet> SheetTempletList = NXFun.GetSheetTempletList(ToFullPath(filename)); foreach (S_Sheet sheet in SheetTempletList) { TreeNode sheetTreeNode = new TreeNode(); sheetTreeNode.Text = sheet.SheetName + "_" + sheet.Remark; sheetTreeNode.Tag = "Sheet"; sheetTreeNode.Name = sheet.guid; //利用guid标识图纸 sheetTreeNode.ImageIndex = 2; sheetTreeNode.SelectedImageIndex = 2; gxTreeNode.Nodes.Add(sheetTreeNode); } } } tvwSheet.ExpandAll(); CharEdit.RefreshSheet(); }
//删除工序或者工步 // 0 0 工艺 不可用 // N 0 第N个工序 // N M 第N个工序的第M个工步 /// <summary> /// 删除工序或者工步 /// </summary> /// <param name="gongxu_index">工序坐标</param> /// <param name="gongbu_index">工步坐标</param> private bool DelNodeFun(int gongxu_index, int gongbu_index) { return(XML3DPPM.DelNode(gongxu_index, gongbu_index, XmlFile)); }
//添加工序节点的函数 //插入节点坐标的位置: //原 新(index) // 0 //0------- // 1 //1------- // 2 //2------- // 3 or -1 //-------- /// <summary> /// 添加工序节点 /// </summary> /// <param name="index">插入节点坐标的位置</param> private void AddGongxuFun(int index) { XML3DPPM.AddGongxu(index, "普通工序", XmlFile, TemplateXML); }
//添加工步节点的函数 //插入节点坐标的位置: //原 新(index) // 0 //0------- // 1 //1------- // 2 //2------- // 3 or -1 //-------- /// <summary> /// 添加工步节点 /// </summary> /// <param name="gongxu_index">工序位置 从0算起 </param> /// <param name="gongbu_index">新工步位置 0 为首 …… -1为末</param> private void AddGongbuFun(int gongxu_index, int gongbu_index) { XML3DPPM.AddGongbu(gongxu_index, gongbu_index, XmlFile, TemplateXML); }
//确定按钮 private void tsrbtnOk_Click(object sender, EventArgs e) { if (IsEditYingdu) { //编辑硬度 dgvYingdu.EndEdit(); List <S_Yingdu> YingduList = new List <S_Yingdu>(); S_Yingdu s_yingdu; for (int i = 0; i < dgvYingdu.Rows.Count; i++) { s_yingdu.gongxuhao = (string)dgvYingdu[1, i].Value; s_yingdu.yingdu = (string)dgvYingdu[2, i].Value; YingduList.Add(s_yingdu); } bool result = XML3DPPM.SetYingduList(YingduList, XmlFile); if (!result) { SetStatusLabel("硬度设置失败!请检查输入工序号正确与否。", 1); return; } tsrbtnSetHardness.Visible = true; IsEditYingdu = false; dgvYingdu.SendToBack(); FreshEditTable(); SetStatusLabel("硬度设置成功", 2); return; } else { //编辑工艺 dgvZigongbu.EndEdit(); IsEdit = false; //保存 if (OnEditGongxu == 0 && OnEditGongbu == 0) { //保存工艺界面 foreach (Control control in tlpGongyiNormal.Controls) { if (control is TextBox) { XML3DPPM.SetIndexAttr(OnEditGongxu, OnEditGongbu, control.Name, ((TextBox)control).Text, XmlFile); } } } else if (OnEditGongxu > 0 && OnEditGongbu == 0) { //保存工序界面 foreach (Control control in tlpGongxuNormal.Controls) { if (control is TextBox) { XML3DPPM.SetIndexAttr(OnEditGongxu, OnEditGongbu, control.Name, ((TextBox)control).Text, XmlFile); } else if (control is CheckBox) { bool check = ((CheckBox)control).CheckState == CheckState.Checked; XML3DPPM.SetIndexAttr(OnEditGongxu, OnEditGongbu, control.Name, NXFun.bool2string(check), XmlFile); } } } else if (OnEditGongxu > 0 && OnEditGongbu > 0) { //保存工步界面 foreach (Control control in tlpGongbu.Controls) { if (control is TextBox) { XML3DPPM.SetIndexAttr(OnEditGongxu, OnEditGongbu, control.Name, ((TextBox)control).Text, XmlFile); } } UpdateZigongbu(OnEditGongxu, OnEditGongbu, false); } FreshEditTable(); FreshGongYiTree(); SetStatusLabel("已保存编辑", 2); } }
//------------------------------------------------------------------------------ //Callback Name: dialogShown_cb //------------------------------------------------------------------------------ public void dialogShown_cb() { try { //读取SheetTemplet.xml中的模板信息 string xmlpath = NXFun.TDPPMPath + "SheetTemplet.xml"; List <S_SheetTemplet> SheetTempletList = XML3DPPM.GetSheetTempletList(xmlpath); //分类存储 SheetTempletListA3.Clear(); SheetTempletListA4.Clear(); SheetTempletListOther.Clear(); foreach (S_SheetTemplet SheetTemplet in SheetTempletList) { if (SheetTemplet.type == "A3") { SheetTempletListA3.Add(SheetTemplet); } else if (SheetTemplet.type == "A4") { SheetTempletListA4.Add(SheetTemplet); } else { SheetTempletListOther.Add(SheetTemplet); } } stringA3 = new string[SheetTempletListA3.Count]; for (int i = 0; i < SheetTempletListA3.Count; i++) { stringA3[i] = SheetTempletListA3[i].chinese; } stringA4 = new string[SheetTempletListA4.Count]; for (int i = 0; i < SheetTempletListA4.Count; i++) { stringA4[i] = SheetTempletListA4[i].chinese; } stringOther = new string[SheetTempletListOther.Count]; for (int i = 0; i < SheetTempletListOther.Count; i++) { stringOther[i] = SheetTempletListOther[i].chinese; } //设置初始显示状态 enum0.GetProperties().SetEnumAsString("Value", "A3"); list_box0.GetProperties().SetStrings("ListItems", stringA3); //取得当前的图纸名称列表 NXOpen.Drawings.DrawingSheet[] ds = theSession.Parts.Work.DrawingSheets.ToArray(); SheetNames = new string[ds.Length]; for (int i = 0; i < ds.Length; i++) { SheetNames[i] = ds[i].Name; } list_box02.GetProperties().SetStrings("ListItems", SheetNames); //设置图纸名 string name; int n = 1; do { name = "SHT" + n.ToString(); n++; } while (NXFun.isFindInList(SheetNames, name)); string0.GetProperties().SetString("Value", name); } catch (Exception ex) { theUI.NXMessageBox.Show("Block Styler", NXMessageBox.DialogType.Error, ex.ToString()); } }
//打开工艺 private void OpenProject() { openFileDialog.Title = "请选择要打开的工艺文件:"; openFileDialog.Filter = "3DPPM 文件 (*.3dppm)|*.3dppm"; openFileDialog.FileName = ""; if (openFileDialog.ShowDialog() == DialogResult.OK) { string filename = openFileDialog.FileName; if (NXFun.IsChina(filename)) { MessageBox.Show("NX不支持中文路径,请将工艺文件放到英文路径下再打开."); return; } else { //得到工艺路径和文件名; ProPath = Path.GetDirectoryName(filename); ProName = Path.GetFileNameWithoutExtension(filename); XmlFile = ToFullPath(NXFun.ProcessXML); //删除文件夹; bool result = NXFun.DeleteDirectory(ProPath + "\\" + ProName); if (!result) { MessageBox.Show("文件夹" + ProPath + "\\" + ProName + "无法删除,请手动关闭可能已打开的文件并删除该目录。"); return; } //判断是否是压缩文件 int type = GetFileRealType(filename); switch (type) { case -1: MessageBox.Show("读取文件出错,请确认文件是否有效!"); return; case 0: break; case 1: break; default: MessageBox.Show("读取文件出错,请确认文件是否有效!"); return; } //解压 bool isUnZip = true; if (type == 0) { //按zip格式解压 isUnZip = Compress.UnZipFileDictory(filename, ""); } else if (type == 1) { //按rar格式解压 isUnZip = Compress.UnRAR(NXFun.TDPPMPath + NXFun.RarEXE, filename, ToFullPath("")); } if (!isUnZip) { MessageBox.Show( "工艺文件打开失败!请确认以下几项:\r\n" + "1:文件有是否有效;\r\n" + "2:工艺临时文件夹或其中文件若处于打开状态请关闭。"); return; } //检测文件有效性 if (!NXFun.isFileExist(XmlFile)) { MessageBox.Show("工艺数据文件丢失!请确认文件有效!"); } //检测版本有效性,若旧版则自动升级 XML3DPPM.Update3dppm(XmlFile, TemplateXML); OpenOrCreateProjectInit(); //打开所有模型 List <S_Model> ModelList = XML3DPPM.GetModelList(XmlFile); foreach (S_Model model in ModelList) { if (!String.IsNullOrEmpty(model.filename)) { NXFun.OpenPrtQuiet(ToFullPath(model.filename)); } } SetStatusLabel("工艺打开成功!", 2); } } }
//保存工艺 private bool SaveProject(bool isQuit) { try { bool result = false; List <S_Model> ModelList = XML3DPPM.GetModelList(XmlFile); if (isQuit) { //关闭所有并保存压缩 foreach (S_Model model in ModelList) { if (!String.IsNullOrEmpty(model.filename)) { NXFun.ClosePrt(ToFullPath(model.filename), true); } } //压缩 string tempZip = ProPath + "\\" + ProName + ".tmp"; bool isSaved = Compress.RAR(NXFun.TDPPMPath + NXFun.RarEXE, tempZip, ProPath + "\\" + ProName); if (isSaved) { File.Copy(tempZip, ProPath + "\\" + ProName + ".3dppm", true); File.Delete(tempZip); NXFun.DeleteDirectory(ProPath + "\\" + ProName); SetStatusLabel("保存工艺成功!", 2); result = true; } else { SetStatusLabel("工艺保存失败!", 1); MessageBox.Show("工艺保存失败!"); result = false; } } else { //仅保存 foreach (S_Model model in ModelList) { if (!String.IsNullOrEmpty(model.filename)) { NXFun.SavePrt(ToFullPath(model.filename)); } } //压缩 string tempZip = ProPath + "\\" + ProName + ".tmp"; bool isSaved = Compress.RAR(NXFun.TDPPMPath + NXFun.RarEXE, tempZip, ProPath + "\\" + ProName); if (isSaved) { File.Copy(tempZip, ProPath + "\\" + ProName + ".3dppm", true); File.Delete(tempZip); SetStatusLabel("保存工艺成功!", 2); result = true; } else { SetStatusLabel("工艺保存失败!", 1); MessageBox.Show("工艺保存失败!"); result = false; } } return(result); } catch (System.Exception ex) { MessageBox.Show(ex.Message); return(false); } }