【NX二次开发】判断面是否相切,相切面。
判断面是否相切,相切面。
用到的函数:
- UF_MODL_ask_minimum_dist 获取两个对象之间的最短距离,以及点坐标
- UF_MODL_ask_face_parm 给定一个参考点,返回曲面上的面参数(u,v),以及点。
- UF_MODL_ask_face_props 输入面、面的uv参数。输出此位置的面法线
源码:
- bool bool_is_Tangent(tag_t tagFace1, tag_t tagFace2);
- extern DllExport void ufsta(char *param, int *returnCode, int rlen)
- {
- UF_initialize();
- tag_t tag_Face1 = 46607;
- tag_t tag_Face2 = 47338;
- if (bool_is_Tangent(tag_Face1, tag_Face2))
- {
- uc1601("相切", 1);
- }
- else
- {
- uc1601("不相切", 1);
- }
- UF_terminate();
- }
- extern int ufusr_ask_unload(void)
- {
- return (UF_UNLOAD_IMMEDIATELY);
- }
- bool bool_is_Tangent(tag_t tagFace1, tag_t tagFace2)
- {
- double guess1[3] = { 0.0,0.0,0.0 };
- double guess2[3] = { 0.0,0.0,0.0 };
- double min_dist = 0.0;
- double pt_on_ent1[3] = { 0.0,0.0,0.0 };
- double pt_on_ent2[3] = { 0.0,0.0,0.0 };
- UF_MODL_ask_minimum_dist(tagFace1, tagFace2, 0, guess1, 0, guess2, &min_dist, pt_on_ent1, pt_on_ent2);
- if (min_dist > 0.01)
- {
- return false;
- }
- double param1[2] = { 0.0,0.0 };//面部参数(u,v)
- double param2[2] = { 0.0,0.0 };//面部参数(u,v)
- UF_MODL_ask_face_parm(tagFace1, pt_on_ent1, param1, pt_on_ent1);
- UF_MODL_ask_face_parm(tagFace2, pt_on_ent2, param2, pt_on_ent2);
- double u1[3] = { 0.0,0.0,0.0 };
- double v1[3] = { 0.0,0.0,0.0 };
- double u2[3] = { 0.0,0.0,0.0 };
- double v2[3] = { 0.0,0.0,0.0 };
- double fx_1[3] = { 0.0,0.0,0.0 };//面法线
- double fx_2[3] = { 0.0,0.0,0.0 };//面法线
- double radii[2] = { 0.0,0.0 };
- //输入面,面的uv参数。输出此位置的面法线
- UF_MODL_ask_face_props(tagFace1, param1, pt_on_ent1, u1, v1, u2, v2, fx_1, radii);
- UF_MODL_ask_face_props(tagFace2, param2, pt_on_ent2, u2, v2, u2, v2, fx_2, radii);
- double dTolerance = 0.01; //相切公差
- if (fabs(fabs(fx_1[0]) - fabs(fx_2[0])) < dTolerance
- && fabs(fabs(fx_1[1]) - fabs(fx_2[1])) < dTolerance
- && fabs(fabs(fx_1[2]) - fabs(fx_2[2])) < dTolerance)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
效果:
【NX二次开发】判断面是否相切,相切面。的更多相关文章
- NX二次开发-BlockUI对话框嵌套MFC对话框制作进度条
半年前在一些QQ群看到有大神NX二次开发做出了进度条,那个时候我还不会弄,也不知道怎么弄得,后来断断续续得研究了一下,直到今天我把它做出来了.内心还是很喜悦的!回想自己这两年当初从没公司肯给我做NX二 ...
- NX二次开发-UFUN发射线函数UF_MODL_trace_a_ray的用法
今天是国庆节,放假休息懒得动,没有出去玩,在家研究一下发射线函数UF_MODL_trace_a_ray.小弟以前在软件公司混的时候,当时我做的那个项目就用到了UF_MODL_trace_a_ray,当 ...
- NX二次开发-Block UI C++界面关于 在Block UI中UF_initialize();和UF_terminate();的使用
关于 在Block UI中UF_initialize();和UF_terminate();的使用 用Block UI作NX二次开发的时候,不需要在使用UFUN函数的时候加UF_initialize() ...
- NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))
NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的 ...
- NX二次开发-基于NX开发向导模板的NX对Excel读写操作(OLE方式(COM组件))
在看这个博客前,请读者先去完整看完:NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))https://ufun-nxopen.blog.csdn.net/article ...
- NX二次开发-基于MFC界面对话框与NX交互的开发
打开VS2013 点击新建,选择MFC DLL 点击确定 点下一步 什么都不改,直接点完成 进来之后先编译一下,看是否编译成功 打开项目属性,更改这几处 $(UGII_BASE_DIR)\ugopen ...
- NX二次开发-UDO用户自定义对象(UFUN)【持续完善】
每当提起UDO总是会让我想起大专毕业那会失业找工作,后来有个宝贵机会去了软件公司上班,拿到了我人生中的第一个NX二次开发项目,一个关于测量汽车前后左右摄像头的项目.当时那个项目就用到了UDO,对于只看 ...
- NX二次开发-UFUN计算两点距离UF_VEC3_distance
NX11+VS2013 #include <uf.h> #include <uf_curve.h> #include <uf_vec.h> UF_initializ ...
- 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. ...
随机推荐
- [C#] 使用 NAudio 实现音频可视化
预览: 捕捉声卡输出: 实现音频可视化, 第一步就是获得音频采样, 这里我们选择使用计算机正在播放的音频作为采样源进行处理: NAudio 中, 可以借助 WasapiLoopbackCapture ...
- Mybatis 遍历 List<Map<String,Object>>
在上一篇博客中总结了MyBatis Plus 实现多表分页模糊查询(链接在最后).返回类型是编写一个专门的vo类.这次是返回List < Map > 前言 编写一个专门的vo返回类,主 ...
- Github + Picgo + Typora 让笔记远走高飞
Github设置 登录 2.新建仓库 设置token 打开设置 然后点击,按钮生成Generate token Picgo设置 下载PicGo 参考视频 PicGo设置 设置Server 图床设置 上 ...
- spring为何要注入接口,而注入接口的实现类就会报错
首先说明,注入的对象确实为实现类的对象.(并不是实现类的代理对象,注入并不涉及代理) 如果只是单纯注入是可以用实现类接收注入对象的,但是往往开发中会对实现类做增强,如事务,日志等,实现增强的AOP技术 ...
- ruby基础(二)
ruby语法基础 1.方法 方法时对象定义的与该对象相关的操作.在Ruby中,对象的所有的操作都被封装成 方法. 语法糖:语法糖是一种为了照顾一般人的习惯而产生的特殊语法. ruby中一切数据都是对象 ...
- nano 按Ctrl+X 输入Y 回车
如何退出nano 1.nano 按Ctrl+X 如果你修改了文件,下面会询问你是否需要保存修改. 2.输入Y确认保存,输入N不保存,按Ctrl+C取消返回.如果输入了Y,下一步会让你输入想要保存的文件 ...
- linux基本命令随笔
cd(change directory) 不跟参数,直接进入当前登录用户的家目录 . 代表当前目录 .. 代表上级目录 ls(list) -l 显示文件详细信息 -a 显示隐藏文件 -S 以文件大小排 ...
- 用于监视Linux上的内存使用情况的Bash脚本
用于监视Linux上的内存使用情况的Bash脚本 2019-06-17 11:32:45作者:戴进稿源:云网牛站 在本文中,我们添加了两个shell脚本来监视Linux操作系统上的内存利用率,即用于监 ...
- TCP/IP协议三次握手_四次挥手
TCP/IP协议 TCP是一种面向连接的端到端的可靠传输协议. TCP报头格式 三次握手的过程 一.客户端发送一个连接请求,发送一个随机数X,这时客户端的端口状态变为SYN_SENT状态. 二.服务端 ...
- CentOS7安装vncserver(启动失败及连接黑屏解决办法)
CentOS7安装vncserver(启动失败及连接黑屏解决办法) 转载weixin_34167043 最后发布于2017-11-09 15:11:00 阅读数 42 收藏 展开 AutoSAR入门 ...