//------------------------------------------------------------------------------ //Callback Name: dialogShown_cb //This callback is executed just before the dialog launch. Thus any value set //here will take precedence and dialog will be launched showing that value. //------------------------------------------------------------------------------ public void dialogShown_cb() { try { Logger.Write(Environment.NewLine + "--- PREPARE GUI ---"); // GET WORKING SIM mySIM = (NXOpen.CAE.SimPart)theSession.Parts.BaseWork; Logger.Write("Working SIM : " + mySIM.Name); // GET ALL SOLUTION OBJECTS mySolutions = mySIM.Simulation.Solutions.ToArray().ToList(); Logger.Write("# Solutions = " + mySolutions.Count.ToString()); foreach (NXOpen.CAE.SimSolution solution in mySolutions) { Logger.Write(" " + solution.Name); } // ADD SOLUTION OBJECTS TO GUI LISTBOX LB_Solutions.SetListItems(mySolutions.Select(x => x.Name).ToArray()); Logger.Write("Added solutions to GUI"); } catch (Exception ex) { //---- Enter your exception handling code here ----- theUI.NXMessageBox.Show("Block Styler", NXMessageBox.DialogType.Error, ex.ToString()); } }
//------------------------------------------------------------------------------ //Callback Name: dialogShown_cb //This callback is executed just before the dialog launch. Thus any value set //here will take precedence and dialog will be launched showing that value. //------------------------------------------------------------------------------ public void dialogShown_cb() { try { //---- Enter your callback code here ----- // Initializations lw.Open(); lw.WriteFullline( " ---------------------- " + Environment.NewLine + "| SHEET METAL DETECTOR |" + Environment.NewLine + " ---------------------- "); button_Verify.Enable = false; button_Verify.Tooltip = "Select at least one object to verify"; // Populate ListBox with current opened objects foreach (NXOpen.NXObject part in theSession.Parts) { string prefix = ""; switch (part.GetType().ToString()) { case "NXOpen.Part": prefix = "CAD | "; break; case "NXOpen.CAE.FemPart": prefix = "FEM | "; break; case "NXOpen.CAE.AssyFemPart": prefix = "AFEM | "; break; case "NXOpen.CAE.SimPart": prefix = "SIM | "; break; default: break; } allPartNames.Add(prefix + part.Name); } LB_SelObjs.SetListItems(allPartNames.ToArray()); } catch (Exception ex) { //---- Enter your exception handling code here ----- theUI.NXMessageBox.Show("Block Styler", NXMessageBox.DialogType.Error, ex.ToString()); } }
public void show_postNameList() { //遍历所有目前有的后处理器,并添加到列表框中 //测试后置处理器名称 int postCount; string[] postNames; theUfSession.Cam.OptAskPostNames(out postCount, out postNames); post_machine_count = postCount; //theUfSession.Ui.DisplayMessage(list_postName.GetSelectedItemBooleans().Length.ToString(), 1); //加入判断,如果是已经添加的将不再添加,否则会在列表框中重复出现一条 //添加到列表框中 for (int i = 0; i < postCount; i++) { listPostNames.Add(postNames[i]); } //对ArrayList进行判断将重复添加的名字剔除掉 //getSingleList(listPostNames); //for(int i=0; i<postCount; i++) //{ // theUfSession.Ui.DisplayMessage(listPostNames[i].ToString(), 1); //} string[] temppostarray = (string[])listPostNames.ToArray(typeof(string)); list_postName.SetListItems(temppostarray); //将输出目录设置为打开文件的默认目录 //取得当前工作部件的目录,并将其设置在输出目录里 string wholepath = workPart.FullPath; string part_name = workPart.Name; int indexofName = wholepath.LastIndexOf(part_name); string workpath = wholepath.Substring(0, indexofName); string_outfile.Value = workpath; //theUfSession.Ui.DisplayMessage(workpath, 1); }
//------------------------------------------------------------------------------ //Callback Name: dialogShown_cb //This callback is executed just before the dialog launch. Thus any value set //here will take precedence and dialog will be launched showing that value. //------------------------------------------------------------------------------ public void dialogShown_cb() { try { //---- Enter your callback code here ----- //遍历所有目前有的后处理器,并添加到列表框中 //测试后置处理器名称 int postCount; string[] postNames; theUfSession.Cam.OptAskPostNames(out postCount, out postNames); //theUfSession.Ui.DisplayMessage(listPostNames.Count.ToString(), 1); //foreach (string str in listPostNames) //{ // theUfSession.Ui.DisplayMessage(str, 1); //} //加入判断 //添加到列表框中 for (int i = 0; i < postCount; i++) { listPostNames.Add(postNames[i]); } string[] temparray = (string[])listPostNames.ToArray(typeof(string)); list_postName.SetListItems(temparray); list_postName.SingleSelect = true; //theUfSession.Ui.DisplayMessage(listPostNames.Count.ToString(), 1); } catch (Exception ex) { //---- Enter your exception handling code here ----- theUI.NXMessageBox.Show("Block Styler", NXMessageBox.DialogType.Error, ex.ToString()); theUI.NXMessageBox.Show("Block Styler", NXMessageBox.DialogType.Information, "请切换到加工模块使用此功能"); } }
//------------------------------------------------------------------------------ //Callback Name: update_cb //------------------------------------------------------------------------------ public int update_cb(NXOpen.BlockStyler.UIBlock block) { try { if (block == list_postName) { //---------Enter your code here----------- } else if (block == nativeFileBrowser_post) { //---------Enter your code here----------- string env_path = Environment.GetEnvironmentVariable("UGII_BASE_DIR"); //读取环境变量中NX的安装目录 string env_post_path = env_path + "\\MACH\\resource\\postprocessor\\"; //进一步寻找后处理文件所在位置 //theUfSession.Ui.DisplayMessage("测试环境变量的路径: " + env_post_path , 1); string post_template = env_post_path + "template_post.dat"; //theUfSession.Ui.DisplayMessage(post_template, 1); string using_path = nativeFileBrowser_post.Path; //输出整个选择的绝对路径 string[] post_all = using_path.Split('\\'); //通过‘\’将绝对路径进行分割 int co = post_all.Length; // 取得分割后字符串数组的个数 string post_usr_all = post_all[co - 1]; //去最后一个字符数组中的字符 string[] post_usr_all_cut = post_usr_all.Split('.'); //用'.'进行最后文件名的分割 string post_usr_name = post_usr_all_cut[0]; //去'.'分割的第一部分,即为我们要用的文件名 string[] add_post_name = new string[1]; add_post_name[0] = post_usr_name; list_postName.SetListItems(add_post_name); listPostNames.Add(post_usr_name); string[] temparray = (string[])listPostNames.ToArray(typeof(string)); list_postName.SetListItems(temparray); //先读取模板文件,按条读取,然后查重 //theUfSession.Ui.DisplayMessage(post_template, 1); StreamReader sr = new StreamReader(post_template, System.Text.Encoding.Default); int findstr = 0; while (sr.Peek() > -1) { string sk = sr.ReadLine(); //theUfSession.Ui.DisplayMessage(sk, 1); //st.WriteLine(sk); int indexofcoma = sk.IndexOf(","); //加入判断,只有该举有“,”存在才进行分割,并对findstr++; if (indexofcoma > -1) { string[] splitstr = sk.Split(','); if (splitstr[0] == post_usr_name) { findstr++; } else { continue; } } //theUfSession.Ui.DisplayMessage(splitstr[0], 1); //theUfSession.Ui.DisplayMessage((post_usr_name, 1); } sr.Close(); //theUfSession.Ui.DisplayMessage(findstr.ToString(), 1); StreamWriter sw = new StreamWriter(post_template, true, System.Text.Encoding.UTF8); if (findstr == 0) { sw.WriteLine(post_usr_name + "," + "${UGII_CAM_POST_DIR}" + post_usr_name + ".tcl" + "," + "${UGII_CAM_POST_DIR}" + post_usr_name + ".def"); } sw.Close(); //向模板文件写入 //using (StreamWriter sw = new StreamWriter(post_template, true, System.Text.Encoding.UTF8)) //{ // //先进行判断是否有重复的项,有重复的部需要重写 // sw.WriteLine(post_usr_name + "," + "${UGII_CAM_POST_DIR}" + post_usr_name + ".tcl" + "," + "${UGII_CAM_POST_DIR}" + post_usr_name + ".def"); // sw.Close(); //} //复制后处理相关文件到NX后处理默认目录 string post_file_path = nativeFileBrowser_post.Path; //后处理文件所在位置 //theUfSession.Ui.DisplayMessage("后处理所在位置: " + post_file_path, 1); int laindex = post_file_path.LastIndexOf(post_usr_name + "." + "pui"); string using_post_path = post_file_path.Substring(0, laindex); //theUfSession.Ui.DisplayMessage("用来复制的路径" + using_post_path, 1); string sc1 = using_post_path + post_usr_name + ".tcl"; string sc2 = using_post_path + post_usr_name + ".def"; string sc3 = using_post_path + post_usr_name + ".pui"; string aim_path = env_post_path; //要复制到的路径 string ncf1 = aim_path + post_usr_name + ".tcl"; string ncf2 = aim_path + post_usr_name + ".def"; string ncf3 = aim_path + post_usr_name + ".pui"; //合成复制文件路径 var ncf1_path = Path.Combine(ncf1); var ncf2_path = Path.Combine(ncf2); var ncf3_path = Path.Combine(ncf3); //复制文件 File.Copy(sc1, ncf1_path, true); File.Copy(sc2, ncf2_path, true); File.Copy(sc3, ncf3_path, true); } else if (block == string_outfile) { //---------Enter your code here----------- } else if (block == string_lastName) { //---------Enter your code here----------- } else if (block == nativeFolderBrowser_outpath) { //---------Enter your code here----------- string_outfile.Value = nativeFolderBrowser_outpath.Path; } else if (block == string_Unit) { //---------Enter your code here----------- } else if (block == toggle_showIt) { //---------Enter your code here----------- } else if (block == list_ncfiles) { //---------Enter your code here----------- } else if (block == button_output) { //---------Enter your code here----------- //增加一个选项,当选取输出目录不为null时,后处理好的文件的输出目录为选取目录中的目录,当为null时,默认为打开文件的目录为输出目录 //输出后处理 //将选中的节点的数量及tag返回 int selectNodeCount; Tag[] selTags; theUfSession.UiOnt.AskSelectedNodes(out selectNodeCount, out selTags); string[] postlistName = new string[selectNodeCount]; NXOpen.CAM.CAMObject[] camObjects = new NXOpen.CAM.CAMObject[selectNodeCount]; //取得当前工作部件的目录,并将其设置在输出目录里 string wholepath = workPart.FullPath; string part_name = workPart.Name; int indexofName = wholepath.LastIndexOf(part_name); string workpath = nativeFolderBrowser_outpath.Path; //theUfSession.Ui.DisplayMessage(workpath, 1); //测试工作目录是否正确 //返回选中的后处理器的名称 string[] usingpostname = list_postName.GetSelectedItemStrings(); //获取选中的后处理器的名称,用于后处理设置中给定的machine name,每次后处理只允许选取一个后处理器,不允许多选,因此取“0”个元素 //theUfSession.Ui.DisplayMessage("选中的列的文本: " + usingpostname[0], 1); string[] all_postmachin_name = list_postName.GetListItems(); post_machine_name = usingpostname[0]; //开始设置循环,进行多个程序文件的后处理 for (int i = 0; i < selectNodeCount; i++) { camObjects[i] = (NXOpen.CAM.CAMObject)NXObjectManager.Get(selTags[i]); postlistName[i] = camObjects[i].Name + "." + string_lastName.Value; //theUfSession.Ui.DisplayMessage("选中的后处理器名称" + post_machine_name, 1); string testpath = string_outfile.Value + @"\" + postlistName[i]; //theUfSession.Ui.DisplayMessage("路径是: " + testpath, 1); NXOpen.CAM.CAMObject[] tempObj = new NXOpen.CAM.CAMObject[1]; tempObj[0] = camObjects[i]; //nativeFolderBrowser_outpath.Path = string_outfile.Value + "\\" + camObjects[i].Name; //theUfSession.Ui.DisplayMessage("输出文件路径: " + nativeFile_outfilepath.Path, 1); //workPart.CAMSetup.OutputClsf(tempObj, enum_clsf.ValueAsString, nativeFolderBrowser_Path.Path + camObjects[i].Name, NXOpen.CAM.CAMSetup.OutputUnits.Metric); if (File.Exists(string_outfile.Value + postlistName[i])) { //theUfSession.Ui.DisplayMessage("文件已经存在了", 1); File.Delete(string_outfile.Value + postlistName[i]); } //theUfSession.Ui.DisplayMessage(string_outfile.Value + postlistName[i], 1); workPart.CAMSetup.PostprocessWithSetting(tempObj, post_machine_name, string_outfile.Value + "\\" + postlistName[i], NXOpen.CAM.CAMSetup.OutputUnits.Metric, NXOpen.CAM.CAMSetup.PostprocessSettingsOutputWarning.PostDefined, NXOpen.CAM.CAMSetup.PostprocessSettingsReviewTool.PostDefined); } //添加选中的要后处理的程序文件到列表框中,并进行输出 int selpostcount; Tag[] selpostTags; //将选中的节点的数量及tag返回 theUfSession.UiOnt.AskSelectedNodes(out selpostcount, out selpostTags); string[] listpostName_sec = new string[selpostcount]; NXOpen.CAM.CAMObject[] postObjects = new NXOpen.CAM.CAMObject[selpostcount]; for (int k = 0; k < selpostcount; k++) { postObjects[k] = (NXOpen.CAM.CAMObject)NXObjectManager.Get(selpostTags[k]); listpostName_sec[k] = postObjects[k].Name + "." + string_lastName.Value; } list_ncfiles.SetListItems(listpostName_sec); //将导出文件名称转存到公共字符串数组,方便窗口显示文件调用 posted_name_list = listpostName_sec; //当勾选,显示输出后置处理好的文件 if (toggle_showIt.Value == true) { string[] temp_output_posts = posted_name_list; //string wholepath = workPart.FullPath; //string part_name = workPart.Name; //int indexofName = wholepath.LastIndexOf(part_name); //string workpath = wholepath.Substring(0, indexofName); theUfSession.Ui.OpenListingWindow(); for (int i = 0; i < temp_output_posts.Length; i++) { //打开列表窗口,只能打开一个信息窗口,因此会在一个窗口中循环显示,已经后处理的文件 string using_workpath = workpath + "\\" + temp_output_posts[i]; StreamReader sw = new StreamReader(using_workpath); string temp_outfile = sw.ReadToEnd(); theUfSession.Ui.WriteListingWindow("已经后处理的程序文件:" + temp_output_posts[i] + "\n"); theUfSession.Ui.WriteListingWindow(temp_outfile + "\n"); sw.Close(); } } } } catch (Exception ex) { //---- Enter your exception handling code here ----- theUI.NXMessageBox.Show("Block Styler", NXMessageBox.DialogType.Error, ex.ToString()); } return(0); }