UG/NX二次开发Siemens官方NXOPEN实例解析—1.5 BlockStyler/MatrixOperations

本文为博客 VIP 文章,开通 VIP 后可阅读全文

开通 VIP

列文章目录

UG/NX二次开发Siemens官方NXOPEN实例解析—1.1 BlockStyler/ColoredBlock
UG/NX二次开发Siemens官方NXOPEN实例解析—1.2 BlockStyler/EditExpression
UG/NX二次开发Siemens官方NXOPEN实例解析—1.3 BlockStyler/ExtrudewithPreview
UG/NX二次开发Siemens官方NXOPEN实例解析—1.4 BlockStyler/HoleCoordinates
UG/NX二次开发Siemens官方NXOPEN实例解析—1.5 BlockStyler/MatrixOperations
UG/NX二次开发Siemens官方NXOPEN实例解析—1.6 BlockStyler/SelectionExample
UG/NX二次开发Siemens官方NXOPEN实例解析—1.7 BlockStyler/TreeListDemo
UG/NX二次开发Siemens官方NXOPEN实例解析—1.8 BlockStyler/UDB_CreateCylinder
UG/NX二次开发Siemens官方NXOPEN实例解析—1.9 BlockStyler/UpdateExample

文章目录

目录

列文章目录

文章目录

前言

一、UI样式文件分析

1. 样式文件目录

2. 样式文件导入预览 

 3. 样式文件解析

二、源码文件解析

1. 主程序分析

2. 处理模块分析

3. 运行结果截图

总结


前言

        随着工业智能化的不断发展,UG二次开发的需求越来越多,也吸引了大批的二开从业人员,本人作为一名资深IT从业者(10年+)也毅然加入二次开发大军。

        然而,和流行IT行业(互联网、金融、医疗等)相比,工业智能化的门槛显得更高一点,专业的工业软件,相对封闭的开发理念和更小的开发圈子,让刚进入二开的从业者有点举步维艰。边学边整理,希望通过这系列文章的整理能给二开的生态增添一叶绿。


一、UI样式文件分析

1. 样式文件目录

目录位置:UGOPEN\SampleNXOpenApplications\C++\BlockStyler\MatrixOperations\MatrixOperations.dlx

2. 样式文件导入预览 

3. 样式文件解析

本实例主要用到的控件如下:枚举、切换开关、指定矢量、双精度表、双精度数字

二、源码文件解析

1. 主程序分析

extern "C" DllExport void  ufusr(char *param, int *retcod, int param_len)
{
    try
    {
        theMatrixOperations = new MatrixOperations();
        // The following method shows the dialog immediately
        theMatrixOperations->Show();
    }
    catch(exception& ex)
    {
        //---- Enter your exception handling code here -----
        MatrixOperations::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
    }
    if(theMatrixOperations != NULL)
    {
        delete theMatrixOperations;
    }
}

MatrixOperations::MatrixOperations()
{
    try
    {
        // Initialize the NX Open C++ API environment
        MatrixOperations::theSession = NXOpen::Session::GetSession();
        MatrixOperations::theUI = UI::GetUI();
        theDialogName = "MatrixOperations.dlx";
        theDialog = MatrixOperations::theUI->CreateDialog(theDialogName.c_str());
        // Registration of callback functions
        theDialog->AddApplyHandler(make_callback(this, &MatrixOperations::apply_cb));
        theDialog->AddOkHandler(make_callback(this, &MatrixOperations::ok_cb));
        theDialog->AddUpdateHandler(make_callback(this, &MatrixOperations::update_cb));
        theDialog->AddInitializeHandler(make_callback(this, &MatrixOperations::initialize_cb));
        theDialog->AddFocusNotifyHandler(make_callback(this, &MatrixOperations::focusNotify_cb));
        theDialog->AddKeyboardFocusNotifyHandler(make_callback(this, &MatrixOperations::keyboardFocusNotify_cb));
        theDialog->AddDialogShownHandler(make_callback(this, &MatrixOperations::dialogShown_cb));
    }
    catch(exception& ex)
    {
        //---- Enter your exception handling code here -----
		MatrixOperations::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
        throw;
    }
}

构造函数里,我们需要关注dlx文件加载,回调方法里面主要关注:提交方法apply_cb、更新方法update_cb、初始化方法initialize_cb。

2. 处理模块分析

2.1 初始化方法

void MatrixOperations::initialize_cb()
{
    try
    {
        SelectOperationsGroup = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("SelectOperationsGroup"));
        SelectOperation = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("SelectOperation"));
        Input = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("Input"));
        Matrix1Group = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("Matrix1Group"));
        Matrix1 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("Matrix1"));
        Matrix2Group = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("Matrix2Group"));
        Matrix2 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("Matrix2"));
        VectorGroup = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("VectorGroup"));
        AllowSelection = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("AllowSelection"));
        SelectVector = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("SelectVector"));
        Vector1 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("Vector1"));
        EnterAngle = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()-
从零到一:在Visual Studio中搭建NX二次开发与调试环境 本文详细介绍了在Visual Studio中搭建NX二次开发与调试环境的完整流程,包括版本匹配、项目创建、调试配置及常见问题排查。重点讲解了C#在NX二次开发中的应用,帮助开发者快速掌握UG二次开发技巧,提升开发效率。 阅读详情

相关推荐

NX二次开发TIPS

另外该类型还有一系列的SET+类型的方法,可以设置一些属性,比较常用的有SetTaggedObjectVector,可以将一些对象添加至现有选择集中。各个选择意图规则类的对象是通过ScRuleFactory类对象创建的,该类中有创建各类选择意图规则类对象的方法(这个方法的命名一般是CreateRule+名称A+名称B),该方法的参数是名称B类型的对象数组(对于名称B为dumb的,为名称A类型的对象数组),ScRuleFactory类对象可通过PART的ScRuleFactory属性得到;

hohoyu的专栏 739

SiemensNX(UG)软件二次开发概述

Siemens NX提供了丰富的API(应用程序编程接口),允许开发者扩展其功能。NXOpen API是主要的开发接口,它支持C++和.NET两种编程语言。API覆盖了从基本的几何创建到复杂的装配和仿真功能。在Siemens NX (UG)软件中,自定义菜单和工具条是实现高级二次开发的重要手段之一。通过自定义,用户可以将常用的功能或自定义的程序集成到NX的界面中,提高工作效率。下面将介绍如何使用NXOpen API来自定义菜单和工具条。自定义菜单主要通过类来实现。// 引入NXOpen命名空间。

kkchenjj的博客 3795

UG/NX二次开发Siemens官方NXOPEN实例解析—2.5 QuickExtrude(拉伸)

随着工业智能化的不断发展,UG二次开发的需求越来越多,也吸引了大批的二开从业人员,本人作为一名资深IT从业者(10年+)也毅然加入二次开发大军。然而,和流行IT行业(互联网、金融、医疗等)相比,工业智能化的门槛显得更高一点,专业的工业软件,相对封闭的开发理念和更小的开发圈子,让刚进入二开的从业者有点举步维艰。边学边整理,希望通过这系列文章的整理能给二开的生态增添一叶绿。一、知识点提取本案例实现了快速拉伸草图,主要知识点如下:1)不使用blockui实现选择草图功能2)返回输入参数3)快速拉伸草图。

MarcoPro的博客 2158

UG\NX二次开发 获取所有子部件,封装两个函数

UG\NX二次开发 获取所有子部件,封装两个函数。

王牌飞行员_里海的博客 816

NX/UG二次开发环境配置方法—史上最详细版(以NX11.0和Visual Studio 2017为例)

一、前言 本人之前在用NX12.0以及Visual Studio 2017进行NX二次开发时,进行过开发环境的配置,当时也遇到了一点问题,好在最后解决了。最近由于项目需求,我卸载了NX12.0,重装了NX11.0,然后在配置环境的时候就遇到了麻烦的问题,为了避免大家绕弯路,这里直接把我的经验分享给大家,觉得有用的话点个赞吧! 配置开发环境的方法分为以下几步,按照这个方法一步一步来,基本可以保证大家都能配置成功! 二、二次开发环境配置方法 因为我使用的NX11.0和Visual Studio 2017 ,所以

Zqingong的博客 4万+

NX二次开发超详细知识点教程 NX二次开发重点内容总结

NX二次开发是指在NX软件的基础上,利用其提供的API(Application Programming Interface)和开发工具,编写自定义的程序和脚本,以实现特定的功能和需求。NX API是NX二次开发的核心,它提供了丰富的函数和类库,可以访问和操作NX中的各种模型和数据。在学习UI界面开发时,需要掌握NX UI框架的基本概念和使用方法,包括如何创建和配置UI控件、如何设置控件的属性和事件等。通过调试和错误处理,可以及时发现和修复程序中的错误和漏洞,提高程序的稳定性和可靠性。

m0_72216164的博客 3152

UG/NX二次开发环境配置方法(nx1980+vs2019)

看到网上关于此类入门的教程并不算多,而且vs和nx版本各异,有不少是作者个人笔记,描述不够详尽,我在实测的过程中发现了一些描述不清的问题,对于入门者来说很不友好,于是我打算写这篇文章,方便想入门的读者,我尽量详细描述操作方法与注意事项,方面入门者一步一步操作。最近需要尝试nx二次开发,结合网上的文字教程以及一些视频教程,总算是完成了环境的配置以及简单实例的运行——根据用户输入的数据,在特定的点上创建一个指定长宽高的立方体,配合了简单的UI界面,完成了基本功能。,变量值设为刚刚新建的那个文件夹,我这里是。

秋月的私语 7669

UG/NX二次开发NXOpen实践指南

NX作为一款先进的产品设计和工程软件,其内置的二次开发功能允许开发者扩展NX的原生功能,以满足特定的设计需求。对于希望优化设计流程、实现自动化和定制化设计的工程师和开发者来说,掌握NX二次开发是提升生产力的关键。

weixin_29940495的博客 3098

NX二次开发 开发总结

简介: 从事NX二次开发已经有三年了,却从未写过总结性的文章,今天就补一篇! 第一部分:方案布局 首先,由于开发的工具包可能编译多个NX版本,所以启动NX项目通常使用批处理文件,设置VS&NX版本。 第二部分:解决方案与项目 A方案:使用一个解决方案,一个项目,然后项目内部代码分类布局 B方案:使用一个解决方案,多个项目 方案 ...

qq_30722721的博客 1万+

NX二次开发——基础

NX中,tag_t是 NX对象法人句柄,即任何确定存在的NX对象的唯一标识。在此过程中,句柄的实际值对程序来说是无关紧要的。看到这两种格式,一般不用定义成这样,在定义的时候,是直接把*或者p给去掉,然后在后面引用的时候用取址&符号就可以。UC1601是将想显示的内容显示在一个UI消息框中,或者是状态栏,如果内容很多的时候,就不适合使用UC1601。要实现这个功能具有的逻辑,先是要打开信息窗口,在写内容,如果只打开,不写,打开就是一个空的。生成解决方案,打开NX,Ctrl+U,选择生成的.dll文件打开。

weixin_48726365的博客 1381

UG NX二次开发(C#)-获取模型文件的预览图片

UG NX保持的prt文件中保存了模型的预览位图,但是采用UG NX二次开发时不能直接提取出来,本文讲解一下将prt文件的预览位图提取出来并单独保存。如果我们在UG NX中打开过某个prt文件,在历史记录中能看到曾经打开的模型文件,如下图所示:在历史记录中显示的图片就是保存模型文件中得预览图。如果我们将模型文件的背景修改了,然后另存到一个新的地址中,其保存的预览图就会更改为最后修改后的图,如上图的第二张图就是更改后保存的预览图。

GimiGimmy 2234

UG NX 二次开发 显示位图的完整列表 C#

二次开发时,有时候想引用UG自带的位图,这样会大大提高工作效率,且更美观。但苦于没有简便的方法寻找位图名称。下面分享一个快速查找位图的一个小工具。

weixin_42577120的博客 1584

Revti二次开发—获取族文件缩略图,并添加到wpf窗口

1.首先在项目中添加WindowsAPICodePack的Nuget包 项目(P)——管理NuGet程序包——搜索“Microsoft-WindowsAPICodePack-Shell”,安装 2.在项目中添加引用 using Microsoft.WindowsAPICodePack.Shell; 3.获取族文件缩略图完整代码 //【1】获取文件缩略图 ShellObject so = ShellFile.FromFilePath("C:\.

qq_31121227的博客 1205

Siemens-NXUG二次开发-Java开发环境配置[20231203]

因此,对于每种语言开发API为了区分语境方便,称为java api和java uf api、python api和python uf api,其中uf式api是tag为ug对象标识,java api和python api以语言类对象为ug对象标识。②“变量名”:UGII_JVM_LIBRARY_DIR,“变量值”:上述java-jre安装目录(如:C:\java\jre1.8.0_291\bin\server)。目的:编译NX/UG java语言二次开发.java源文件,获得.class文件。

TDTX博客 3276

NX二次开发UF_MTX3_rotate_about_axis 函数介绍

返回一个关于轴的3x3旋转矩阵,并通过指定的旋转角度。

王牌飞行员_里海的博客 792

UG/NX二次开发Siemens官方NXOPEN实例解析—2.1 AssemblyViewer(树列表)

随着工业智能化的不断发展,UG二次开发的需求越来越多,也吸引了大批的二开从业人员,本人作为一名资深IT从业者(10年+)也毅然加入二次开发大军。然而,和流行IT行业(互联网、金融、医疗等)相比,工业智能化的门槛显得更高一点,专业的工业软件,相对封闭的开发理念和更小的开发圈子,让刚进入二开的从业者有点举步维艰。边学边整理,希望通过这系列文章的整理能给二开的生态增添一叶绿。一、知识点提取汇总1、树列表控件的初始化和数据加载2、选择对象控件过滤器使用3、对象颜色拾取器的使用4、遍历组件方法的实现。

MarcoPro的博客 3084

UG\NX二次开发NXOpen 移动对象(moveObjectBuilder)

【代码】【UG\NX二次开发NXOpen 移动对象(moveObjectBuilder)

社恐猫的博客 1934

NXNX二次开发BlockUI集列表的详细使用步骤

为了在点击添加按钮的时候,可以自动有一些动作,比如初始化界面等(这里说一下,nx初始化界面一般是放在dialogShown_cb()中的,但是因为这个是作为list控件的种子块,dialogShown_cb()并不会执行,所以这种情况下的初始化应该放在添加按钮的回调函数中)。》,这两篇文章,对我的帮助很大,但是因为使用的编程语言不同(我使用的是c++),仍然遇到了很多困难,不过最终在我不断的摸索和尝试下,终于有个完整的使用流程,特此分享给需要的同学,避免跟我一样一下子不知道从何下手。

秋月的私语 3342
上一篇: UG/NX二次开发Siemens官方NXOPEN实例解析—1.4 BlockStyler/HoleCoordinates
下一篇: UG/NX二次开发Siemens官方NXOPEN实例解析—1.6 BlockStyler/SelectionExample
MarcoPro
博客等级 码龄4年 415粉丝 144原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MarcoPro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值