//节点选中变化 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 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); } } }
//打开图纸页按钮 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_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; } } } }
//删除图纸页按钮 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(); }
//刷新图纸树 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(); }