NX二次开发-调内部函数创建进度条MT_create_progress_bar

news2024/9/29 17:33:31

一、概述

        最近学习NX二次开发,看到NX打开装配模型或者加载模型时会显示进度条的问题,个人觉得很有意思,然后参考阿飞2018中的文章进行学习。

二、代码解析

    //User Defined Header File
    #include <uf.h>
    #include <uf_ui.h>
    #include <uf_modl.h>
    #include <uf_view.h>
    #include <atlstr.h>


    //User Defined code
    UF_initialize();

	//加载
	char *library_name = "D:\\ug\\NXBIN\\libdisp.dll";
	//调内部函数 创建进度条
	typedef void(*create_progress_bar)(int v1, bool v2, long *v3);//定义传参
	create_progress_bar MT_create_progress_bar = NULL;
	UF_load_library(library_name, "?MT_create_progress_bar@@YA_NH_NPEAJ@Z", (UF_load_f_p_t *)&MT_create_progress_bar);

	//调内部函数 设置进度条的当前位置
	typedef void(*set_progress_pos)(long *v1, int v2);//定义传参
	set_progress_pos MT_set_progress_pos = NULL;
	UF_load_library(library_name, "?MT_set_progress_pos@@YAXPEAJH@Z", (UF_load_f_p_t *)&MT_set_progress_pos);

	//调内部函数 显示进度条
	typedef void(*show_progress_bar)(long *v1);//定义传参
	show_progress_bar MT_show_progress_bar = NULL;
	UF_load_library(library_name, "?MT_show_progress_bar@@YAXPEAJ@Z", (UF_load_f_p_t *)&MT_show_progress_bar);

	//调内部函数 设置进度条的起始值和终止值
	typedef void(*set_progress_range)(long *v1, int v2, int v3);//定义传参
	set_progress_range MT_set_progress_range = NULL;
	UF_load_library(library_name, "?MT_set_progress_range@@YAXPEAJHH@Z", (UF_load_f_p_t *)&MT_set_progress_range);

	//调内部函数 获得提示环境句柄(输出long*指针)
	typedef __int64(*ask_progress_cue_context)(void);//定义传参
	ask_progress_cue_context MT_ask_progress_cue_context = NULL;
	UF_load_library(library_name, "?MT_ask_progress_cue_context@@YAHXZ", (UF_load_f_p_t *)&MT_ask_progress_cue_context);

	//调内部函数 删除进度条
	typedef __int64(*delete_progress_bar)(long *v1);//定义传参
	delete_progress_bar MT_delete_progress_bar = NULL;
	UF_load_library(library_name, "?MT_delete_progress_bar@@YAXPEAJ@Z", (UF_load_f_p_t *)&MT_delete_progress_bar);

	//调内部函数 进度条显示文本
	typedef __int64(*set_progress_text)(long *v1, char *v2, bool v3);//定义传参
	set_progress_text MT_set_progress_text = NULL;
	UF_load_library(library_name, "?MT_set_progress_text@@YAXPEAJPEAD_N@Z", (UF_load_f_p_t *)&MT_set_progress_text);


	if (MT_ask_progress_cue_context == NULL || MT_create_progress_bar == NULL || MT_show_progress_bar == NULL
		|| MT_set_progress_text == NULL || MT_set_progress_range == NULL || MT_set_progress_pos == NULL
		|| MT_delete_progress_bar == NULL)
	{
		uc1601("温馨提示:请仔细检查,存在错误", 1);
		return;
	}

	//获得提示环境句柄(输出long*指针)
	__int64 cc = MT_ask_progress_cue_context();

	//创建进度条
	long aa = 0;
	MT_create_progress_bar(cc, true, &aa);//true和false控制是否显示百分比数字

										  //显示进度条
	MT_show_progress_bar(&aa);

	//进度条显示文本
	MT_set_progress_text(&aa, "Loading progress prompt", true);//此处用中文不显示

										  //设置进度条的起始值和终止值
	int num = 100;
	MT_set_progress_range(&aa, 0, num);

	for (int i = 0; i < num; i++)
	{
		//在NX状态区显示一行文本
		UF_UI_set_status("白雪公主的后妈");

		//创建块
		UF_FEATURE_SIGN Sign = UF_NULLSIGN;//设置布尔
		double Corner_pt[3] = { i * 150, 0.0, 0.0 };//设置原点
		char *Edge_Len[3] = { "100", "100", "100" };//设置长宽高
		tag_t BlkTag = NULL_TAG;
		UF_MODL_create_block1(Sign, Corner_pt, Edge_Len, &BlkTag);

		//设置进度条的当前位置
		MT_set_progress_pos(&aa, i);
	}

	//删除进度条
	MT_delete_progress_bar(&aa);

	//获得工作视图的tag
	tag_t work_view = NULL_TAG;
	UF_VIEW_ask_work_view(&work_view);

	//适合窗口
	UF_VIEW_fit_view(work_view, 1.0);

	//在NX状态区显示一行文本
	UF_UI_set_status("白雪公主的后妈提示:创建完成");

	//卸载
	UF_unload_library(library_name);

	UF_terminate();

三、效果展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1541084.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Zookeeper(八)序列化与协议

目录 一 序列化与反序列化1.1 Jute序列化工具1.1 Recor接口1.2 OutputArchive和InputArchive 二 通信协议2.1 请求部分2.1.1 请求头2.2.2 请求体2.1.3 案例分析 2.2 响应部分2.2.1 响应头2.2.2 响应内容2.2.3 案例分析 官网&#xff1a;Apache ZooKeeper 一 序列化与反序列化 …

vivado 查看消息、增量编译消息、查看实施报告

查看消息 重要&#xff01;查看所有消息。这些信息可能会建议如何改进您的设计性能、功率、面积和布线。严重警告还可能暴露时间限制问题必须解决。 以非项目模式查看消息 在非项目模式下&#xff0c;查看Vivado日志文件&#xff08;Vivado.log&#xff09;中的以下内容&…

QToolButton 设置图标变灰

1、目的 使用一张图片来实现QToolButton控件两种状态&#xff08;ON和OFF状态&#xff09;的图标。前提不能使用两张图片&#xff0c;也不能使用setEnable来图标变灰&#xff0c;因为当设置了false之后&#xff0c;控件将不能再切换了。 2、方法 知道可以通过QToolButton有s…

Python编程—Ajax数据爬取

Python编程—Ajax数据爬取 ​ 在浏览器中可以看到正常显示的页面数据&#xff0c;而使用requests得到的结果中并没有这些数据。这是因为requests获取的都是原始HTML文档&#xff0c;而浏览器中的页面是JavaScript处理数据后生成的结果&#xff0c;这些数据有多种来源&#xff…

Docker(二):Docker常用命令

docker 查看docker支持的所有命令和参数。 ➜ ~ docker Management Commands:config Manage Docker configscontainer Manage containersimage Manage imagesnetwork Manage networksnode Manage Swarm nodesplugin Manage pluginssecret …

golang 对接第三方接口 RSA 做签(加密) 验签(解密)

一、过程 1.调用第三方接口前&#xff0c;一般需要按规则将参数按key1value1&key2value2 阿斯克码排序,sign参数不参与加密 2.将排序并连接好的参数字符串通过我方的私钥证书&#xff08;.pem&#xff09;进行加密得到加密串&#xff0c;当然加密得到的是 []byte 字节流&…

vue iframe实现父页面实时调用子页面方法和内容,已解决

父页面标签添加鼠标按下事件 父页方法中建立iframe通信 实时调用子页面方法 实时更改子页面文本内容

Chrome 114 带着侧边栏扩展来了

效果展示 manifest.json {"manifest_version": 3,"name": "ChatGPT学习","version": "0.0.2","description": "ChatGPT,GPT-4,Claude3,Midjourney,Stable Diffusion,AI,人工智能,AI","icons"…

C语言经典算法-9

文章目录 其他经典例题跳转链接46.稀疏矩阵47.多维矩阵转一维矩阵48.上三角、下三角、对称矩阵49.奇数魔方阵50.4N 魔方阵51.2(2N1) 魔方阵 其他经典例题跳转链接 C语言经典算法-1 1.汉若塔 2. 费式数列 3. 巴斯卡三角形 4. 三色棋 5. 老鼠走迷官&#xff08;一&#xff09;6.…

【go从入门到精通】for循环控制

作者简介&#xff1a; 高科&#xff0c;先后在 IBM PlatformComputing从事网格计算&#xff0c;淘米网&#xff0c;网易从事游戏服务器开发&#xff0c;拥有丰富的C&#xff0c;go等语言开发经验&#xff0c;mysql&#xff0c;mongo&#xff0c;redis等数据库&#xff0c;设计模…

ssm003在线医疗服务系统+jsp

在线医疗服务系统的设计与实现 摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0c;所以对于信息的宣传和管…

bevformer转模型经验(需要时序tranformer所有模型都可以参考)

先上bevformer的网络结构图 不难发现&#xff0c;他有两个输入。当前的环视图和历史bev。历史bev是通过历史环视图生成的。也就是说在生成bev特征提取模型这部分被使用了两次。在装模型时候&#xff0c;需要作以下工作&#xff1a; 1 bev特征提取模型单独提出来&#xff0c;转…

用Kimichat学习王庆法老师关于Sora的文章

目录 一 引言:二 提示词方面:三 与Kimi的聊天记录我:假如你是一名大模型方面的专家,提取一下这篇文章的核心观点,用三列表格的形式,https://mp.weixin.qq.com/s/Y-vmxmPu4_-tHaeP35hDJg我:上述文章的一、Spacetime Latent Patches 潜变量时空碎片, 建构视觉语言系统部分…

python处理Excel的方法之xlrd

python处理Excel常用到的模块是xlrd。使用xlrd可以非常方便的处理Excel文档&#xff0c;下面介绍一下基本用法 打开文件 import xlrd data xlrd.open_workbook("c:\\skills.xls") 获取一个工作表 table data.sheet_by_name(uskills) #也可以 table data.sheet_by_…

PTA-练习7

目录 实验8-2-1 找最小的字符串 实验8-2-2 找最长的字符串 实验8-2-8 字符串排序 实验8-2-10 IP地址转换 结构体 实验9-1 计算职工工资 实验9-2 时间换算 实验9-3 计算平均成绩 实验9-5 查找书籍 实验9-8 通讯录排序 实验9-9 有理数比较 实验11-1-1 英文单词排序 …

在 Windows 中安装配置并启动运行 Jenkins【图文详细教程】

安装 Jenkins 的系统要求&#xff1a; 最少 256MB 可用内存最少 1GB 可用磁盘空间JDK 8 / 11 /17&#xff08;Jenkins 是用 Java 写的&#xff0c;打包成 war 包&#xff09; 查看 JDK 的版本 Java JDK 在 Windows 中安装可以参考&#xff1a;https://www.yuque.com/u27599042/…

iscsi网络协议(连接硬件设备)

iscsi概念 iscsi是一种互联网协议&#xff0c;用于将存储设备&#xff08;如硬盘驱动器或磁带驱动器&#xff09;通过网络连接到计算机。它是一种存储区域网络&#xff08;SAN&#xff09;技术&#xff0c;允许服务器通过网络连接到存储设备&#xff0c;就像它们是本地设备一样…

【C++】1596. 火柴棒三角形问题

问题&#xff1a;1596. 火柴棒三角形问题 类型&#xff1a;基本运算、整数运算 题目描述&#xff1a; 如下图所示&#xff0c;摆 1 个火柴棒三角形需要 3 根火柴&#xff0c;那么摆 2 个火柴棒三角形就需要 6 根火柴&#xff0c;请问摆 n 个火柴棒三角形需要多少根火柴&#…

由浅入深一步步了解什么是哈希(概念向)

文章目录 什么是哈希哈希函数直接定址法除留余数法 哈希冲突闭散列线性探测法二次探测法负载因子和闭散列的扩容 开散列开散列的扩容 非整形关键码 什么是哈希 我们来重新认识一下数据查找的过程&#xff1a; 在顺序结构以及平衡树中&#xff0c;记录的关键码与其存储位置之间…

基因在各个细胞系表达情况

从CCLE下载数据得到基因在每个细胞系中的 现在从DepMap: The Cancer Dependency Map Project at Broad Institute 需要先选择Custom Downloads 就可以下载数据进行处理了&#xff1a; rm(list ls()) library(tidyverse) library(ggpubr) rt <- data.table::fread("…