NX二次开发 Block UI 指定方位控件的应用

一、概述

         NX二次开发中一般都是多个控件的组合,这里我首先对指定方位控件进行说明并结合选择对象控件,具体如下图所示。

二、实现功能获取方位其在选择面上原点的目标

2.1 在initialize_cb()函数中进行初始化,实现对象选择过滤面

//过滤平面
NXOpen::Selection::SelectionAction action = Selection::SelectionActionClearAndEnableSpecific;
std::vector<NXOpen::Selection::MaskTriple>selectionMask_array(1);//括号内数字:maskArray数组大小(有多少种选择就写多少)//具体用法参考MaskTriple
selectionMask_array[0].Type = UF_solid_type;
selectionMask_array[0].Subtype = UF_solid_face_subtype;
selectionMask_array[0].SolidBodySubtype = UF_UI_SEL_FEATURE_ANY_FACE;

NXOpen::BlockStyler::PropertyList *selComponentProps = SelectPoint->GetProperties();//selComp为对象收集器的ID
selComponentProps->SetSelectionFilter("SelectionFilter", action, selectionMask_array);
delete selComponentProps;
selComponentProps = NULL;

2.2在update_cb函数中通过选择面获得面上点击屏幕点将其设置为指定方位控件的原点,并通过输入面的TAG值,获得选择平面X、Y的向量值设置为指定方位控件的X、Y向量。

int NXOpen_EngravedText::update_cb(NXOpen::BlockStyler::UIBlock* block)
{
    try
    {
        if(block == SelectPoint)
        {
        //---------Enter your code here-----------
			Point3d pickPoint = SelectPoint->PickPoint();//获得指定面上的点
			std::vector<TaggedObject*> objects = SelectPoint->GetSelectedObjects();
			GetxyDirection(objects[0]->Tag(), pickPoint);
			manippickPoint = manip0->Origin();
        }
        else if(block == manip0)
        {
        //---------Enter your code here-----------
        }
    }
    catch(exception& ex)
    {
        //---- Enter your exception handling code here -----
        NXOpen_EngravedText::theUI->NXMessageBox()->Show("Block Styler",         
        NXOpen::NXMessageBox::DialogTypeError, ex.what());
    }
    return 0;
}

//通过输入面的TAG值,获得选择平面X、Y的向量值
void GetxyDirection(tag_t object, Point3d pickPoint)
{
	int faceTpye = 0;
	UF_MODL_ask_face_type(object, &faceTpye);
	vector<double> Directi;
	if (faceTpye == UF_MODL_PLANAR_FACE)
	{
		int type = 0;
		double point[3];
		double dir[3];
		double box[6];
		double radius;
		double rad_data[2];
		int norm_dir = 0;
		UF_MODL_ask_face_data(object, &type, point, dir, box, &radius, rad_data, &norm_dir);

		double mtx[9];
		UF_MTX3_initialize_z(dir, mtx);

		manip0->SetOrigin(pickPoint);//指定方位器出现的原点
		Vector3d xDirection1(mtx[0], mtx[1], mtx[2]);
		Vector3d yDirection1(mtx[3], mtx[4], mtx[5]);
		manip0->SetXAxis(xDirection1);
		manip0->SetYAxis(yDirection1);
	}
}

2.3打印坐标,在void GetxyDirection(tag_t object, Point3d pickPoint)函数中只需将mtx按照X、Y、Z每个三个值分好分别进行打印即可,这里不提供代码。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

系统性介绍MoE模型架构,以及在如今大模型方向的发展现状

知乎&#xff1a;Verlocksss编辑&#xff1a;马景锐链接&#xff1a;https://zhuanlan.zhihu.com/p/675216281 1 学习动机 第一次了解到MoE&#xff08;Mixture of experts&#xff09;&#xff0c;是在GPT-4模型架构泄漏事件&#xff0c;听说GPT-4的架构是8个GPT-3级别大小的模…

运用tomcat在浏览器中对数据库信息进行查询

在idea中创建好项目后&#xff0c;添加web项目 然后打开idea的setting&#xff0c;跳转到下面的页面&#xff0c;下载maven插件。 出现下面的选项&#xff0c;才正确。 添加好web项目后&#xff0c;打开pom文件&#xff0c;添加相应的依赖&#xff1a; <?xml version"…

新世界葡萄酒黑马美国加州

新世界葡萄酒黑马美国加州 一、新旧葡萄酒国 在葡萄酒的世界里&#xff0c;除了传统老牌的葡萄酒国家比如法国&#xff0c;西班牙、葡萄牙和格鲁吉亚等外。进入二十世纪&#xff0c;一些新兴的葡萄酒酿造国家也在如耀眼的明星般升起&#xff0c;如美国&#xff0c;澳大利亚和…

高防服务器、高防 IP 和高防 CDN 之间有什么区别?

网络运营人员最头痛的是什么&#xff1f; 网络攻击无疑名列前茅。一旦企业遭受网络攻击&#xff0c;所面临的损失可能是无法估量的。那么&#xff0c;如何有效地抵御网络攻击呢&#xff1f; 高防 IP、高防 CDN 和高防服务器是当前主流的防御手段。那何为“高防”呢&#xff1…

小米机型解锁bl 绕过社区等级5才可以解锁的限制的教程

小米机型目前限制了解锁bl的机制。从以前单一的绑定解锁到目前绑定账号必须小米社区5级的条件限制。切必须要答题分数够才可以申请解锁。限制的根本原因也在为消费者提供更好的服务。避免刷机小白无基础常识解锁bl后第三方固件或者软件造成的故障。另外一方面也在于市场格机脚本…

Amazing OpenAI API:把非 OpenAI 模型都按 OpenAI API 调用

分享一个有趣的小工具&#xff0c;10MB 身材的小工具&#xff0c;能够将各种不同的模型 API 转换为开箱即用的 OpenAI API 格式。 让许多依赖 OpenAI API 的软件能够借助开发者能够接触到的&#xff0c;非 OpenAI 的 API 私有部署和使用起来。 写在前面 这个小工具软件写于两…

平板怎么录屏?轻松掌握录屏方法!

随着科技的发展&#xff0c;使用平板电脑进行学习、工作、娱乐的人越来越多。录制平板屏幕成为许多用户需要的功能&#xff0c;无论是用来制作教程、记录游戏过程还是保存重要信息。可是平板怎么录屏呢&#xff1f;在本文中&#xff0c;我们将为大家提供详细的步骤指导&#xf…

速学python·输入输出

和用户交互 程序与用户交互工程中 用户把信息传送给程序的过程是 输入 程序把结果展示给用户的过程是 输出 输入输出的最简单的方法是利用控制台 例如 和 都是控制台,进行输入和输出的作用 但是: 我们常见的交互界面,例如QQ,浏览器,Wegame等,都不需要输入命令,大大简化了操…

Windows环境下使用HTML5播放RTSP流

本文搭建环境选用Windows平台 一、使用笔记本摄像头推送RTSP视频流 参考文章:笔记本摄像头模拟监控推送RTSP流-CSDN博客 二、搭建Vue项目 参考项目&#xff1a; HTML5 播放 rtsp视频流 2.1 下载压缩包 2.2 解压文件&#xff0c;使用VSCode打开项目 2.3 启动项目 注&#…

Linux网络命令

文章目录 Linux网络网络配置命令1、ifconfig&#xff1a;查看网络接口信息&#xff08;显示所有活动网卡&#xff09;1.1 常用命令格式1.2 命令格式&#xff08;图文详解&#xff09;1.2.1 临时修改网卡名称1.2.2 永久修改网卡名称1.2.3 永久修改单个网卡 2、hostname&#xff…

Open CASCADE学习|模块组成

OpenCASCADE由七个模块组成&#xff0c;分别如下&#xff1a; Foundation Classes基础类 Modeling Data 建模数据 Modeling Algorithms 建模算法 Visualization 可视化 Data Exchange 数据交换 Application Framework 程序框架 Kernel Classes 核心类 2D Geometry 二维几…

巧用 G5g 畅游Android流媒体游戏

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; 巧用 G5g 畅游Android流媒体游戏 概览 Amazon EC2 G5g 实例由 AWS Graviton2 处理器提供支持&#xff0c;并配备 NVIDIA T4G Tensor Core GPU&#xff0c;可为 Andro…

了解DC电源模块的基本参数及选择方法

BOSHIDA 了解DC电源模块的基本参数及选择方法 DC电源模块是一种用来提供稳定直流电源的设备&#xff0c;常被应用在电子产品测试、实验室设备等领域。了解DC电源模块的基本参数和选择方法有助于正确选择和使用合适的模块。 1. 输出电压范围&#xff1a;DC电源模块通常有固定的…

linux(ubuntu)中crontab定时器命令详解 以及windows中定时器

linux&#xff08;ubuntu&#xff09;中crontab定时器命令详解 crontab 是一个用于创建、编辑和管理用户的定时任务的命令&#xff0c;它可以让用户在指定的时间自动执行指定的命令或脚本。 基本语法 -e&#xff1a;编辑用户的 crontab 文件&#xff1b;-l&#xff1a;列出用…

dubbo与seata集成

1.seata是什么? Seata 是一款开源的分布式事务解决方案&#xff0c;致力于在微服务架构下提供高性能和简单易用的分布式事务服务。 2.seata的注解 GlobalTransactional&#xff1a;全局事务注解&#xff0c;添加了以后可实现分布式事务的回滚和提交&#xff0c;用法与spring…

计算机科学速成课【学习笔记】(4)——二进制

本集课程B站链接&#xff1a; 4. 二进制-Representing Numbers and Letters with Binary_BiliBili_哔哩哔哩_bilibili4. 二进制-Representing Numbers and Letters with Binary_BiliBili是【计算机科学速成课】[40集全/精校] - Crash Course Computer Science的第4集视频&…

Linux-shell简单学习

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 其他…

基于 SpringBoot + vue 的医院管理系统(含源码,数据库,文档)

基于 SpringBoot vue 的医院管理系统 †前后端分离思想&#xff0c;这个系统简直太棒了&#xff01;屯 光这个系统采用了 前后端分离思想&#xff0c;后端使用 SpringBoot和 SpringMVC框架&#xff0c;让代码更高效&#xff0c;更易于维护。前端则使用了 vue js 和ElementU…

极智AI | 谈谈通义舞王背后的技术Animate Anyone 让任何人动起来

欢迎关注我的公众号 [极智视界],获取我的更多技术分享 大家好,我是极智视界,本文分享了 谈谈通义舞王背后的技术Animate Anyone 让任何人动起来。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码下载,链接:https://t.zsxq.com/0aiNxERDq 来吧,让我们…

【C++】十大排序算法

文章目录 十大排序算法插入排序O(n^2^)冒泡排序O(n^2^)选择排序O(n^2^)希尔排序——缩小增量排序O(nlogn)快速排序O(nlogn)堆排序O(nlogn)归并排序(nlogn)计数排序O(nk)基数排序O(n*k)桶排序O(nk) 十大排序算法 排序算法的稳定性&#xff1a;在具有多个相同关键字的记录中&…