一.用类库方式创建

1.新建类库

NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_c#

进来后编译代码,成功

NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_html_02

 添加NXOPEN的库到项目中

NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_回调函数_03

 NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_头文件_04

 NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_c#_05

 不同NX版本,可能dll所在位置不一样,NX11以上版本在NXBIN这里,NX11以下版本大概在UGII。

NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_头文件_06

 添加头文件



using NXOpen;
using NXOpen.Utilities;
using NXOpen.UF;


NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_头文件_07

 2.添加winform窗体

NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_回调函数_08

 NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_控件_09

 NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_回调函数_10

 3.添加main入口函数和卸载方式

NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_头文件_11



1 public static int Main()
2 {
3 Form1 aa = new Form1();
4 aa.Show();//1.使用.show()为非模态对话框2.使用.ShowDialog()为模态对话框
5
6 return 0;
7 }
8
9 public static int GetUnloadOption(string dummy)
10 {
11 return UFConstants.UF_UNLOAD_UG_TERMINATE;//卸载方式显示卸载
12 }
13
14 Caesar卢尚宇
15 2020年3月1日


4.去winform对话框设计控件

在工具箱中拖过去botton控件

NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_c#_12

 设置控件属性

NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_头文件_13

 更改控件显示的名字

NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_头文件_14

更改控件ID

 NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_回调函数_15

添加回调函数,按回车创建。

 NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_控件_16

 NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_控件_17

 依次在添加如下几个控件,就不详细截图了。不会弄,去看C# winform使用相关知识

NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_回调函数_18

添加头文件

NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_控件_19

 添加Session代码

NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_c#_20

5.去回调函数里添加代码Form1.cs



1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Linq;
7 using System.Text;
8 using System.Threading.Tasks;
9 using System.Windows.Forms;
10
11 using NXOpen;
12 using NXOpen.Utilities;
13 using NXOpen.UF;
14
15 namespace test
16 {
17 public partial class Form1 : Form
18 {
19 public Form1()
20 {
21 InitializeComponent();
22 }
23
24 public static Session theSession = Session.GetSession();
25 public static UFSession theUfSession = UFSession.GetUFSession();
26 public static UFUi theUFUi = theUfSession.Ui;
27
28 double[] base_pt;
29 private void setOrigin(object sender, EventArgs e)
30 {
31 theUfSession.Ui.LockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM);//对话框加锁
32
33 //使用点构造器创建点
34 string cue = "请选择一点";
35 UFUi.PointBaseMethod basemethod = UFUi.PointBaseMethod.PointCursorPos;
36 Tag tPt;
37 base_pt = new double[3];
38 int resp;
39 theUFUi.PointConstruct(cue, ref basemethod, out tPt, base_pt, out resp);
40
41 theUfSession.Ui.UnlockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM);//对话框解锁
42 }
43
44 private void createBlock(object sender, EventArgs e)
45 {
46 FeatureSigns sign = FeatureSigns.Nullsign;//定义布尔
47 string[] edge_len = { textL.Text, textW.Text, textH.Text };//定义长宽高
48 Tag blk_obj_id = new Tag();
49 theUfSession.Modl.CreateBlock1(sign, base_pt, edge_len, out blk_obj_id);//创建块
50
51 this.Close();//关闭对话框
52 }
53 }
54 }
55 Caesar卢尚宇
56 2020年3月1日


NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_头文件_21

 Caesar卢尚宇

2020年3月1日

二.NXOPEN C#向导方式创建(对话框嵌套在NX主窗口)

2020年7月5日新增

1.新建项目

NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_回调函数_22

 NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_头文件_23

更改卸载方式,要不然Winform对话框显示不出来

 NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_c#_24

 2.添加对话框

NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_头文件_25

 NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_c#_26

 NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_c#_27

 3.调用对话框

1.添加对话框命名空间



using System;
using NXOpen;
using NXOpen.UF;
using NXOpenUI;
using NXOpen.Utilities;
using NX9_Open_CS_Wizard3;


 2.在main函数里调用对话框



//调用对话框
MyDialog dlg = new MyDialog();

//使显示的窗口成为主NX窗口的子窗口
NXOpenUI.FormUtilities.SetApplicationIcon(dlg);
NXOpenUI.FormUtilities.ReparentForm(dlg);
dlg.Show();


NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_html_28

 3.设置对话框属性

NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_回调函数_29

图片出处  https://study.163.com/course/introduction/1209726808.htm

根据需要设置对应的属性(我这里只设置两处)

NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_回调函数_30

 4.演示

NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_c#_31


NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套)_头文件_32