今天是国庆节,放假休息懒得动,没有出去玩,在家研究一下发射线函数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的用法的更多相关文章

  1. NX二次开发-UFUN拉伸函数UF_MODL_create_extruded

    NX9+VS2012 //NX二次开发中常用拉伸函数为UF_MODL_create_extruded2,但是此函数不能拉伸片体, //想要拉伸片体用函数UF_MODL_create_extruded. ...

  2. NX二次开发-UFUN拉伸函数UF_MODL_create_extruded2

    NX9+VS2012 //NX二次开发中常用拉伸函数为UF_MODL_create_extruded2,但是此函数不能拉伸片体, //想要拉伸片体用函数UF_MODL_create_extruded. ...

  3. NX二次开发-UFUN计时函数UF_begin_timer

    NX9+VS2012 #include <uf.h> #include <uf_modl.h> UF_initialize(); //计时开始 UF_timer_t Timer ...

  4. 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 //计时开 ...

  5. NX二次开发-UFUN遍历函数UF_OBJ_cycle_objs_in_part

    NX11+VS2013 #include <uf.h> #include <uf_obj.h> #include <uf_modl.h> #include < ...

  6. NX二次开发-UFUN遍历函数UF_OBJ_cycle_all

    NX11+VS2013 #include <uf.h> #include <uf_obj.h> #include <uf_modl.h> #include < ...

  7. NX二次开发-UFUN将工程图转成CGM和PDF文件UF_CGM_export_cgm

    文章转载自唐康林NX二次开发论坛,原文出处: http://www.nxopen.cn/thread-126-1-1.html 刚才有同学问到这个问题,如果是用NXOpen来做,直接录制一下就可以了: ...

  8. NX二次开发-UFUN获取NX系统默认导出CGM的选项设置UF_CGM_ask_default_export_options

    文章转载自唐康林NX二次开发论坛,原文出处: http://www.nxopen.cn/thread-126-1-1.html 刚才有同学问到这个问题,如果是用NXOpen来做,直接录制一下就可以了: ...

  9. NX二次开发-UFUN获取当前导出CGM选项设置UF_CGM_ask_session_export_options

    文章转载自唐康林NX二次开发论坛,原文出处: http://www.nxopen.cn/thread-126-1-1.html 刚才有同学问到这个问题,如果是用NXOpen来做,直接录制一下就可以了: ...

随机推荐

  1. 72.Properties(配置文件)

    Properties(配置文件):主要用于存储配置文件到硬盘上面和读取配置文件 public class Properties extends Hashtable<Object,Object&g ...

  2. leetcood学习笔记-26-删除排序数组中的重复项

    题目描述: 第一次提交: class Solution: def removeDuplicates(self, nums) -> int: for i in range(len(nums)-1, ...

  3. 画PCB时检查点总结

    一.画原理图时 NPN的引脚是否对应.继电器的引脚是否对应 设计通信电路时,MCU_RX和通信芯片RS232的ROUT接.同理MCU_TX和RS232的TIN接. MCU最好留个外接晶振接口,用NPN ...

  4. 【LeetCode 25】K 个一组翻转链表

    题目链接 [题解] 模拟就好. 就k个k个节点地翻转. 每个节点都把next域指向它前面那个节点 修改完之后把这个节点前面的那个节点的next域改成这一段的最后一个节点. 然后把这一段最左边的那个节点 ...

  5. Android中对消息机制(Handler)的再次解读

    今天遇到一些关于在子线程中操作Handler的问题,感觉又要研究源代码了,但是关于Handler的话,我之前研究过,可以参考这篇文章:http://blog.csdn.net/jiangwei0910 ...

  6. unittest框架学习笔记一之testcase

    # coding=utf-8案例一: 2 ''' 3 Created on 2017-7-22 4 @author: Jennifer 5 Project:登录百度测试用例 6 ''' 7 from ...

  7. 关于ios 的耳机线线控

    如题 线控主要就是指的用ios耳机的  中间那个键来自定义一些程序自己的事件(比如玩吃鸡的时候,作为开枪扳机) 而想要控制耳机的音量加减的事件, 有一种方法,就是监听 系统音量的变化,根据音量变化来触 ...

  8. java IO 类概述表

    列举常用的类方便查看,温故知新! byte input byte output character input character output Basic InputStream OutputStr ...

  9. jQuery实用美化input 上传组建

     下载插件    (5)     简要教程 jquery-filestyle是一款可以简单实用的表单文件上传域美化jQuery插件.该插件可以将表单的文件上传域转换为类似Bootstrap按钮组的样式 ...

  10. centos7下jenkins升级

    systemctl stop jenkins cd cd /usr/lib/jenkins/ mv jenkins.war jenkins.war.bac rz #上传下载好的最新jinkens.wa ...