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

   2023-02-09 学习力0
核心提示:一.用类库方式创建1.新建类库进来后编译代码,成功 添加NXOPEN的库到项目中   不同NX版本,可能dll所在位置不一样,NX11以上版本在NXBIN这里,NX11以下版本大概在UGII。 添加头文件using NXOpen;using NXOpen.Utilities;using NXOpen.UF; 2.添加winform

一.用类库方式创建

1.新建类库

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

进来后编译代码,成功

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

 添加NXOPEN的库到项目中

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

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

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

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

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

 添加头文件

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

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

 2.添加winform窗体

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

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

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

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

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

 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#交互的开发(对话框嵌套)

 设置控件属性

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

 更改控件显示的名字

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

更改控件ID

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

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

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

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

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

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

添加头文件

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

 添加Session代码

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

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#交互的开发(对话框嵌套)

 Caesar卢尚宇

2020年3月1日

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

2020年7月5日新增

1.新建项目

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

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

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

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

 2.添加对话框

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

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

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

 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#交互的开发(对话框嵌套)

 3.设置对话框属性

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

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

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

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

 4.演示

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

参考资料

https://www.ugapi.com/thread-10016.html

https://www.icax.org/thread-191354-1-1.html

 

Caesar卢尚宇

2020年7月5日

 

2022年5月23日 补充

逼站某位大神的视频教程

NX二次开发 C# NXOPEN 使用第三方UI(Winform)进行开发 以创建方块举例 https://www.bilibili.com/video/BV1Ga411b76d?spm_id_from=333.999.0.0

NX二次开发 NXOPEN C#方式 添加NX启动图片的方法 https://www.bilibili.com/video/BV1ZL411P7hC?spm_id_from=333.999.0.0

https://www.cnblogs.com/fxp888/

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

 

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 使用C#编写一个.NET分析器(一) 使用csv模块的什么方法可以一次性将一行数据写入文件
    使用C#编写一个.NET分析器(一) 使用csv模块的
    译者注这是在Datadog公司任职的Kevin Gosse大佬使用C#编写.NET分析器的系列文章之一,在国内只有很少很少的人了解和研究.NET分析器,它常被用于APM(应用性能诊断)、IDE、诊断工具中,比如Datadog的APM,Visual Studio的分析器以及Rider和Reshaper等等。之前
    03-08
  • 跨语言调用C#代码的新方式-DllExport 跨语言调用本质
    跨语言调用C#代码的新方式-DllExport 跨语言调
    简介上一篇文章使用C#编写一个.NET分析器文章发布以后,很多小伙伴都对最新的NativeAOT函数导出比较感兴趣,今天故写一篇短文来介绍一下如何使用它。在以前,如果有其他语言需要调用C#编写的库,那基本上只有通过各种RPC的方式(HTTP、GRPC)或者引入一层C++
    03-08
  • 我比较了 Go 和 C# 的速度
    我比较了 Go 和 C# 的速度
    我在 Go 和 C# 之间进行了速度比较。我通常使用 C#,但我有机会使用 Go,并且由于传闻 Go 速度很快,所以我实际测量了它。测量内容我在 Go 和 C# 中执行了一个简单的循环和判断过程,以查看整数 2 到 N 是否为质数。来源是Github参考。测量模式 逻辑内核 8 Wi
    03-08
  • [C#]使用 AltCover 获得代码覆盖率 - E2E Test 和 Unit Test
    [C#]使用 AltCover 获得代码覆盖率 - E2E Test
    背景在 CI/CD 流程当中,测试是 CI 中很重要的部分。跟开发人员关系最大的就是单元测试,单元测试编写完成之后,我们可以使用 IDE 或者 dot cover 等工具获得单元测试对于业务代码的覆盖率。不过我们需要一个独立的 CLI 工具,这样我们才能够在 Jenkins 的 CI
  • C#中LINQ的Select与SelectMany函数如何使用 c反应蛋白高说明什么
    C#中LINQ的Select与SelectMany函数如何使用 c反
    本篇内容主要讲解“C#中LINQ的Select与SelectMany函数如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#中LINQ的Select与SelectMany函数如何使用”吧!LINQ的Select与SelectMany函数使用Select扩展函
    02-09 linqselect
  • PerfView专题 (第三篇):如何寻找 C# 中的 VirtualAlloc 内存泄漏
    PerfView专题 (第三篇):如何寻找 C# 中的 Virt
    一:背景上一篇我们聊到了如何用 PerfView 去侦察 NTHeap 的内存泄漏,这种内存泄漏往往是用 C 的 malloc 或者 C++ 的 new 分配而不释放所造成的,这一篇我们来聊一下由 VirtualAlloc 方法造成的泄漏如何去甄别?了解 VirtualAlloc 的朋友肯定说, C# 这种高
    02-09
  • Blazor和Vue对比学习(知识点杂锦3.04):Blazor中C#和JS互操作(超长文)
    Blazor和Vue对比学习(知识点杂锦3.04):Blazo
    C#和JS互操作的基本语法是比较简单的,但小知识点特别多,同时,受应用加载顺序、组件生命周期以及参数类型的影响,会有比较多坑,需要耐心的学习。在C#中调用JS的场景会比较多,特别是在WASM模式下,由于WebAssembly的限制,很多时候,还是需要借助JS去控制D
    02-09
  • 的键">C#怎么使用struct类型作为泛型Dictionary
    本文小编为大家详细介绍“C#怎么使用struct类型作为泛型DictionaryTKey,TValue的键”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#怎么使用struct类型作为泛型DictionaryTKey,TValue的键”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学
  • C#如何实现折半查找算法 彩票查询
    C#如何实现折半查找算法 彩票查询
    本篇内容主要讲解“C#如何实现折半查找算法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#如何实现折半查找算法”吧!折半查找,也叫二分查找,当在一个数组或集合中查找某个元素时,先定位出中间位置元素
    02-09
  • C#如何实现选择排序 c罗
    C#如何实现选择排序 c罗
    本篇内容主要讲解“C#如何实现选择排序”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#如何实现选择排序”吧!选择排序是一种低效的排序算法,大致过程是:遍历数组的每一个元素,先假设0号位置上的元素是最
    02-09
点击排行