UG NX二次开发(C++)-建模-利用UF_CURVE_ask_line_data()获取直线的矢量

news2024/11/24 14:23:26

文章目录

  • 1、前言
  • 2、总体思路
  • 3、代码实现
    • 3.1 在视图区选择对象
    • 3.2 将选择对象转换为直线对象
    • 3.3创建获取直线矢量的函数
  • 4、测试效果


1、前言

选择一条直线,获取直线的矢量方向,采用的是获取直线的数据,并根据直线的首末端点计算矢量方向,在计算时,要把这个矢量进行初始化。本文介绍一下如何用UFun函数来获取直线的矢量。欢迎加入QQ群讨论:QQ群749492565


2、总体思路

在获得直线矢量的时候,其总体思路如下:

  1. 在视图区选择对象
  2. 将选中的对象转换为直线对象
  3. 利用UFun函数获取直线数据
  4. 计算直线矢量
  5. 将直线矢量转换为单位矢量

3、代码实现

3.1 在视图区选择对象

其代码在UG NX二次开发模板中已经存在,如下:

//------------------------------------------------------------------------------
		// Selection any objects
		//------------------------------------------------------------------------------
		std::vector< NXOpen::TaggedObject* > UFModel::select_any_objects()
		{
			NXString message("Select any objects:");
			NXString title("Select objects");
			Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;
			bool include_features = 0;
			bool keep_highlighted = 0;
			std::vector< NXOpen::TaggedObject* > objectArray;

			// Select any object array
			Selection::Response res = selmgr->SelectTaggedObjects(
				message, title, scope, include_features,
				keep_highlighted, objectArray);

			return objectArray;
		}

其调用如下:

std::vector< NXOpen::TaggedObject* > any_objs = select_any_objects();

3.2 将选择对象转换为直线对象

NXObject* nXObject = dynamic_cast<NXOpen::NXObject*>(any_objs[0]);
			Line* line(dynamic_cast<NXOpen::Line*>(workPart->Lines()->FindObject(nXObject->JournalIdentifier())));

3.3创建获取直线矢量的函数

利用UF_CURVE_ask_line_data获取直线数据,根据首位点获得矢量,将矢量单位化,然后传出矢量。,其代码如下:

void UFModel::GetLineVector(Line *line, Vector3d* vector3D)
		{
			UF_CURVE_line_t lineData;
			UF_CURVE_ask_line_data(line->Tag(), &lineData);
			double vec1[3];
			vec1[0] = lineData.end_point[0] - lineData.start_point[0];
			vec1[1] = lineData.end_point[1] - lineData.start_point[1];
			vec1[2] = lineData.end_point[2] - lineData.start_point[2];
			double tor = 0.001;
			double ma;
			double vec[3];
			UF_VEC3_unitize(vec1,tor,&ma,vec);
			vector3D->X = vec[0];
			vector3D->Y = vec[1];
			vector3D->Z =  vec[2];
		}

调用函数:

Vector3d vector3D;
			GetLineVector(line, &vector3D);

			lw->Open();
			char st[255];
			sprintf_s(st, "直线X矢量方向为:%lf\n", vector3D.X);
			lw->WriteLine(st);

			sprintf_s(st, "直线Y矢量方向为:%lf\n", vector3D.Y);
			lw->WriteLine(st);

			sprintf_s(st, "直线Z矢量方向为:%lf\n", vector3D.Z);
			lw->WriteLine(st);

4、测试效果

调用dll
在这里插入图片描述
选择曲线:
在这里插入图片描述
输出直线矢量:
在这里插入图片描述

操作效果图如下:
在这里插入图片描述

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

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

相关文章

【TCP/IP 网络模型】

TCP/IP 网络模型 OSI七层模型、TIP/IP四层模型 OSI七层模型 应用层&#xff0c;负责给应用程序提供统一的接口&#xff1b; 表示层&#xff0c;负责把数据转换成兼容另一个系统能识别的格式&#xff1b; 会话层&#xff0c;负责建立、管理和终止表示层实体之间的通信会话&…

Java基础(十五)集合框架

1. 集合框架概述 1.1 生活中的容器 1.2 数组的特点与弊端 一方面&#xff0c;面向对象语言对事物的体现都是以对象的形式&#xff0c;为了方便对多个对象的操作&#xff0c;就要对对象进行存储。另一方面&#xff0c;使用数组存储对象方面具有一些弊端&#xff0c;而Java 集合…

研报精选230504

目录 【行业230504国联证券】食饮农业2022年报与1Q23季报总结&#xff1a;食饮业绩稳步改善&#xff0c;农业低猪价推动去产能 【行业230504中邮证券】美护行业22年&23Q1财报总结&#xff1a;龙头逆境彰显韧性&#xff0c;期待Q2行业加速 【行业230504安信证券】交通运输行…

3. 内存分区模型

一、内存分区模型 C程序在执行时&#xff0c;将内存大方向划分为4个区域 代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统进行管理的全局区&#xff1a;存放全局变量和静态变量以及常量栈区&#xff1a;由编译器自动分配释放&#xff0c;存放函数的参数值&a…

AI落地:程序员如何用AI?

对于程序员来说&#xff0c;真正能提高效率、可落地的AI应用场景都有哪些&#xff1f; 目前已经能切实落地&#xff0c;融入我日常工作生活的有以下几个场景&#xff1a; 开发工作&#xff1a;自然语言生成代码&#xff0c;自动补全代码 日常工作学习&#xff1a;写作、翻译、…

通达信如何检测未来函数?

未来函数可能引用未来发生的数据&#xff0c;对原来的判断进行修改&#xff0c;这会导致信号漂移&#xff0c;比如产生原来没有的信号、原来的信号改变位置或者已经产生的信号消失。 一、未来函数如何偷梁换柱&#xff1f; 单纯讲概念&#xff0c;对未来函数也没有深刻的认识…

java中Queue、BlockingQueue以及DelayQueue的用法

java中Queue、BlockingQueue以及DelayQueue的用法 一 Queue 的用法Java中Queue的api 二 BlockingQueue 的用法阻塞队列的边界 三 DelayQueue使用DelayQueue常见的应用场景 一 Queue 的用法 Queue(队列)&#xff1a;其特性是先进先出。只允许在表的一端进行插入&#xff0c;而在…

【图像分割】视觉大模型SEEM(Segment Everything Everywhere All at Once)原理解读

文章目录 摘要&#xff08;效果&#xff09;二、前言三、相关工作四、method4.1 多用途4.2 组合性4.3 交互式。4.4 语义感知 五、实验 论文地址&#xff1a;https://arxiv.org/abs/2304.06718 测试代码&#xff1a;https://github.com/UX-Decoder/Segment-Everything-Everywher…

Flask使用Flask-SQLAlchemy对数据库操作详解一(配置、表与表之间一对一、多对一、多对多关系及增删改查参数和代码详细总结)

文章目录 1.先来一个简单的示例2.SQLAlchemy 配置&#xff08;所有的配置都在Flask初始化应用程序之前就执行了&#xff09; 3.声明模型3.1声明模型参数3.2表与表之间的关系&#xff08;详细介绍&#xff09;1.一对一关系2.多对一关系3.多对多关系 1.先来一个简单的示例 from …

【Unity3D小功能】Unity3D中实现轮船在水面上移动效果

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 标题是啥我写啥&#xff0c;大家好&#xff0c;今天给大家带来…

chatgpt帮我写的一个小程序气泡框代码

效果图 这是一个气泡框 .bubble { position: relative; padding: 10px; border-radius: 8px; background-color: #ddd; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); } .triangle { position: absolute; width: 0; height: 0; top: -10px; left: 50%; margin-left: -10px; bor…

vue集成animate.css

vue集成animate.css 一 <transition> 标签的用法二 关于animate.css三 vue集成animate.css使用 一 <transition> 标签的用法 使用<transition></transition>标签包裹要加动画的元素。 标签中添加属性name&#xff0c;表示执行动画的名字&#xff0c;不…

python 网络接口测试(post)

代码&#xff1a; import requests url https://xxx.com/xxx # 注意这里必须以json字符串构造数据 data { "username": "showdoc", "password": "xxx" } headers {content-type: application/json} # 与 get 请求一样…

STC15W104 定时器实现灯的闪烁(定时器原理讲解)

一&#xff1a;STC15W104单片机有几个定时器 STC15W104单片机共有2个定时器&#xff0c;分别为定时器0、定时器2。 二&#xff1a;定时器的作用 定时器是单片机中的一种常用外设&#xff0c;用于在一定时间间隔内产生中断。 定时器通常用于计时、测量时间间隔、生成PWM信号等应…

【MybatisPlus】高级版可视化、可配置 自动生成代码

今天看别人使用了一个更加智能的生成代码工具&#xff0c;可视化、可配置策略&#xff0c;非常方便&#xff0c;配置一次&#xff0c;在哪都可以使用&#xff0c;也不会跟项目藕合下面简单说一下使用方式。 1、介绍mybatis-plus-generator-ui 主要是封装了mybatis-plus-gener…

【深度学习】计算机视觉(13)——模型评价及结果记录

1 Tensorboard怎么解读&#xff1f; 因为意识到tensorboard的使用远不止画个图放个图片那么简单&#xff0c;所以这里总结一些关键知识的笔记。由于时间问题&#xff0c;我先学习目前使用最多的功能&#xff0c;大部分源码都包含summary的具体使用&#xff0c;基本不需要自己修…

【AWS入门】将EC2的系统日志推送到CloudWatch

创建一个 EC2 实例&#xff0c;不附加任何 IAM profile. ※这里注意不要用23年最新版本的镜像&#xff0c;该镜像不支持awslogs 选择旧版镜像可成功安装awslogs 开始创建一个 IAM profile 创建角色&#xff0c;服务选择 EC2, policy 选择 CloudWatchAgentServerPolicy. 切换回…

GPT 学术优化 (ChatGPT Academic)搭建过程(含ChatGLM cuda INT4量化环境和newbing cookie)

文章目录 1、GPT Academic2、chatGPT3、chatGLM4、newbing 1、GPT Academic 项目地址&#xff1a;地址 安装部分 git clone https://github.com/binary-husky/chatgpt_academic.git cd chatgpt_academicconda create -n gptac_venv python3.11 conda activate gptac_venv pyt…

ASEMI代理ADM3202ARUZ-REEL7原装ADI车规级ADM3202ARUZ-REEL7

编辑&#xff1a;ll ASEMI代理ADM3202ARUZ-REEL7原装ADI车规级ADM3202ARUZ-REEL7 型号&#xff1a;ADM3202ARUZ-REEL7 品牌&#xff1a;ADI /亚德诺 封装&#xff1a;TSSOP-16 批号&#xff1a;2023 安装类型&#xff1a;表面贴装型 引脚数量&#xff1a;16 工作温度: …

助力数字轻工发展,企企通亮相第十三届中国轻工业信息化大会

新一代数字技术蓬勃发展&#xff0c;数字经济和实体经济加速融合&#xff0c;数字化不仅仅是生产和管理方式的转变&#xff0c;更是一场创新的革命&#xff0c;只有通过持续创新、不断优化产品内容和服务&#xff0c;才能真正满足客户的需求。 近日&#xff0c;第十三届中国轻工…