NX二次开发-UFUN发射线函数UF_MODL_trace_a_ray的用法
今天是国庆节,放假休息懒得动,没有出去玩,在家研究一下发射线函数UF_MODL_trace_a_ray。小弟以前在软件公司混的时候,当时我做的那个项目就用到了UF_MODL_trace_a_ray,当时为了赶项目,从别处抄了代码,改吧改吧。自己也没有仔细的去研究一下这个函数的用法。UF_MODL_trace_a_ray在NX二次开发中算是一个用到比较高频的函数,今天研究了一下,写了一道例题,UFUN和NXOpen C++简单混合去用了一下,大致介绍下函数的用法。如有错误,还请各位前辈多多指教小弟!

NX11+VS2013
#include <uf.h>
#include <uf_ui.h>
#include <uf_modl.h>
#include <uf_mtx.h>
#include <uf_curve.h>
#include <NXOpen/CurveCollection.hxx>
#include <NXOpen/NXObject.hxx>
#include <NXOpen/Part.hxx>
#include <NXOpen/PartCollection.hxx>
#include <uf_obj.h>
#include <NXOpen/ListingWindow.hxx>
NXOpen::Session *theSession = NXOpen::Session::GetSession();
NXOpen::Part *workPart(theSession->Parts()->Work());
NXOpen::Part *displayPart(theSession->Parts()->Display());
UF_initialize();
//创建点
double Point1[] = { -300.0, 50.0, 50.0 };
tag_t PointTag = NULL_TAG;
UF_CURVE_create_point(Point1, &PointTag);
//创建块
UF_FEATURE_SIGN Sign = UF_NULLSIGN;
double Corner_pt[] = { 0.0, 0.0, 0.0 };
char *Edge_len[] = { "", "", ""};
tag_t BlkTag = NULL_TAG;
UF_MODL_create_block1(Sign, Corner_pt, Edge_len, &BlkTag);
//特征找体
tag_t BodyTag = NULL_TAG;
UF_MODL_ask_feat_body(BlkTag, &BodyTag);
//创建射线(从点出发,向X方向,发射到块上)
tag_t Bodies[] = { BodyTag };
double Direction[] = { 1.0, 0.0, 0.0 };
double TransForm[];
UF_MTX4_identity(TransForm);
int num_results;
UF_MODL_ray_hit_point_info_p_t hit_list;
UF_MODL_trace_a_ray(, Bodies, Point1, Direction, TransForm, , &num_results, &hit_list);
//判断射线与块是否有交点
if ( num_results == )
{
uc1601("提示:找不到射线交点", );
}
if ( num_results != )
{
//创建直线(连接发射点和射线与块的第一个交点)
NXOpen::Point3d StartPoint1{ Point1[], Point1[], Point1[] };
NXOpen::Point3d EndPoint1{ hit_list[].hit_point[], hit_list[].hit_point[], hit_list[].hit_point[] };
NXOpen::Line *Line1;
Line1 = workPart->Curves()->CreateLine(StartPoint1, EndPoint1);
//赋予直线红色
UF_OBJ_set_color(Line1->Tag(), );
//创建直线(连接射线与块的第一个交点与第二个交点)
NXOpen::Point3d EndPoint2{ hit_list[].hit_point[], hit_list[].hit_point[], hit_list[].hit_point[] };
NXOpen::Line *Line2;
Line2 = workPart->Curves()->CreateLine(EndPoint1, EndPoint2);
//赋予直线绿色
UF_OBJ_set_color(Line2->Tag(), );
//赋予第一个交点所在面为蓝色
tag_t FirstFaceTag = { hit_list[].hit_face };
UF_OBJ_set_color(FirstFaceTag, );
//赋予第二个交点所在面为紫色
tag_t SecondFaceTag = { hit_list[].hit_face };
UF_OBJ_set_color(SecondFaceTag, );
//打印坐标点和方向
char msg[];
sprintf_s(msg, "交点数量为:%d\n射线与块第一个交点坐标为:\nX坐标:%f\nY坐标:%f\nZ坐标:%f\n射线与块第二个交点坐标为:\nX坐标:%f\nY坐标:%f\nZ坐标:%f",
num_results,hit_list[].hit_point[], hit_list[].hit_point[], hit_list[].hit_point[], hit_list[].hit_point[], hit_list[].hit_point[], hit_list[].hit_point[]);
lw->Open();
lw->WriteLine(msg);
}
UF_terminate();

NX二次开发-UFUN发射线函数UF_MODL_trace_a_ray的用法的更多相关文章
- NX二次开发-UFUN拉伸函数UF_MODL_create_extruded
NX9+VS2012 //NX二次开发中常用拉伸函数为UF_MODL_create_extruded2,但是此函数不能拉伸片体, //想要拉伸片体用函数UF_MODL_create_extruded. ...
- NX二次开发-UFUN拉伸函数UF_MODL_create_extruded2
NX9+VS2012 //NX二次开发中常用拉伸函数为UF_MODL_create_extruded2,但是此函数不能拉伸片体, //想要拉伸片体用函数UF_MODL_create_extruded. ...
- NX二次开发-UFUN计时函数UF_begin_timer
NX9+VS2012 #include <uf.h> #include <uf_modl.h> UF_initialize(); //计时开始 UF_timer_t Timer ...
- NX二次开发-UFUN计时函数UF_end_timer
1 NX9+VS2012 2 3 #include <uf.h> 4 #include <uf_modl.h> 5 6 7 UF_initialize(); 8 9 //计时开 ...
- NX二次开发-UFUN遍历函数UF_OBJ_cycle_objs_in_part
NX11+VS2013 #include <uf.h> #include <uf_obj.h> #include <uf_modl.h> #include < ...
- NX二次开发-UFUN遍历函数UF_OBJ_cycle_all
NX11+VS2013 #include <uf.h> #include <uf_obj.h> #include <uf_modl.h> #include < ...
- NX二次开发-UFUN将工程图转成CGM和PDF文件UF_CGM_export_cgm
文章转载自唐康林NX二次开发论坛,原文出处: http://www.nxopen.cn/thread-126-1-1.html 刚才有同学问到这个问题,如果是用NXOpen来做,直接录制一下就可以了: ...
- NX二次开发-UFUN获取NX系统默认导出CGM的选项设置UF_CGM_ask_default_export_options
文章转载自唐康林NX二次开发论坛,原文出处: http://www.nxopen.cn/thread-126-1-1.html 刚才有同学问到这个问题,如果是用NXOpen来做,直接录制一下就可以了: ...
- NX二次开发-UFUN获取当前导出CGM选项设置UF_CGM_ask_session_export_options
文章转载自唐康林NX二次开发论坛,原文出处: http://www.nxopen.cn/thread-126-1-1.html 刚才有同学问到这个问题,如果是用NXOpen来做,直接录制一下就可以了: ...
随机推荐
- 72.Properties(配置文件)
Properties(配置文件):主要用于存储配置文件到硬盘上面和读取配置文件 public class Properties extends Hashtable<Object,Object&g ...
- leetcood学习笔记-26-删除排序数组中的重复项
题目描述: 第一次提交: class Solution: def removeDuplicates(self, nums) -> int: for i in range(len(nums)-1, ...
- 画PCB时检查点总结
一.画原理图时 NPN的引脚是否对应.继电器的引脚是否对应 设计通信电路时,MCU_RX和通信芯片RS232的ROUT接.同理MCU_TX和RS232的TIN接. MCU最好留个外接晶振接口,用NPN ...
- 【LeetCode 25】K 个一组翻转链表
题目链接 [题解] 模拟就好. 就k个k个节点地翻转. 每个节点都把next域指向它前面那个节点 修改完之后把这个节点前面的那个节点的next域改成这一段的最后一个节点. 然后把这一段最左边的那个节点 ...
- Android中对消息机制(Handler)的再次解读
今天遇到一些关于在子线程中操作Handler的问题,感觉又要研究源代码了,但是关于Handler的话,我之前研究过,可以参考这篇文章:http://blog.csdn.net/jiangwei0910 ...
- unittest框架学习笔记一之testcase
# coding=utf-8案例一: 2 ''' 3 Created on 2017-7-22 4 @author: Jennifer 5 Project:登录百度测试用例 6 ''' 7 from ...
- 关于ios 的耳机线线控
如题 线控主要就是指的用ios耳机的 中间那个键来自定义一些程序自己的事件(比如玩吃鸡的时候,作为开枪扳机) 而想要控制耳机的音量加减的事件, 有一种方法,就是监听 系统音量的变化,根据音量变化来触 ...
- java IO 类概述表
列举常用的类方便查看,温故知新! byte input byte output character input character output Basic InputStream OutputStr ...
- jQuery实用美化input 上传组建
下载插件 (5) 简要教程 jquery-filestyle是一款可以简单实用的表单文件上传域美化jQuery插件.该插件可以将表单的文件上传域转换为类似Bootstrap按钮组的样式 ...
- centos7下jenkins升级
systemctl stop jenkins cd cd /usr/lib/jenkins/ mv jenkins.war jenkins.war.bac rz #上传下载好的最新jinkens.wa ...