//------------------------------------------------------------------------------
        //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());
            }
        }
示例#3
0
    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);
    }
示例#4
0
    //------------------------------------------------------------------------------
    //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, "请切换到加工模块使用此功能");
        }
    }
示例#5
0
    //------------------------------------------------------------------------------
    //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);
    }