判断面是否相切,相切面。

用到的函数:

  1. UF_MODL_ask_minimum_dist 获取两个对象之间的最短距离,以及点坐标
  2. UF_MODL_ask_face_parm 给定一个参考点,返回曲面上的面参数(u,v),以及点。
  3. UF_MODL_ask_face_props 输入面、面的uv参数。输出此位置的面法线

源码:

  1. bool bool_is_Tangent(tag_t tagFace1, tag_t tagFace2);
  2. extern DllExport void ufsta(char *param, int *returnCode, int rlen)
  3. {
  4. UF_initialize();
  5. tag_t tag_Face1 = 46607;
  6. tag_t tag_Face2 = 47338;
  7. if (bool_is_Tangent(tag_Face1, tag_Face2))
  8. {
  9. uc1601("相切", 1);
  10. }
  11. else
  12. {
  13. uc1601("不相切", 1);
  14. }
  15. UF_terminate();
  16. }
  17.  
  18. extern int ufusr_ask_unload(void)
  19. {
  20. return (UF_UNLOAD_IMMEDIATELY);
  21. }
  22. bool bool_is_Tangent(tag_t tagFace1, tag_t tagFace2)
  23. {
  24. double guess1[3] = { 0.0,0.0,0.0 };
  25. double guess2[3] = { 0.0,0.0,0.0 };
  26. double min_dist = 0.0;
  27. double pt_on_ent1[3] = { 0.0,0.0,0.0 };
  28. double pt_on_ent2[3] = { 0.0,0.0,0.0 };
  29. UF_MODL_ask_minimum_dist(tagFace1, tagFace2, 0, guess1, 0, guess2, &min_dist, pt_on_ent1, pt_on_ent2);
  30. if (min_dist > 0.01)
  31. {
  32. return false;
  33. }
  34. double param1[2] = { 0.0,0.0 };//面部参数(u,v)
  35. double param2[2] = { 0.0,0.0 };//面部参数(u,v)
  36. UF_MODL_ask_face_parm(tagFace1, pt_on_ent1, param1, pt_on_ent1);
  37. UF_MODL_ask_face_parm(tagFace2, pt_on_ent2, param2, pt_on_ent2);
  38.  
  39. double u1[3] = { 0.0,0.0,0.0 };
  40. double v1[3] = { 0.0,0.0,0.0 };
  41. double u2[3] = { 0.0,0.0,0.0 };
  42. double v2[3] = { 0.0,0.0,0.0 };
  43. double fx_1[3] = { 0.0,0.0,0.0 };//面法线
  44. double fx_2[3] = { 0.0,0.0,0.0 };//面法线
  45. double radii[2] = { 0.0,0.0 };
  46.  
  47. //输入面,面的uv参数。输出此位置的面法线
  48. UF_MODL_ask_face_props(tagFace1, param1, pt_on_ent1, u1, v1, u2, v2, fx_1, radii);
  49. UF_MODL_ask_face_props(tagFace2, param2, pt_on_ent2, u2, v2, u2, v2, fx_2, radii);
  50.  
  51. double dTolerance = 0.01; //相切公差
  52. if (fabs(fabs(fx_1[0]) - fabs(fx_2[0])) < dTolerance
  53. && fabs(fabs(fx_1[1]) - fabs(fx_2[1])) < dTolerance
  54. && fabs(fabs(fx_1[2]) - fabs(fx_2[2])) < dTolerance)
  55. {
  56. return true;
  57. }
  58. else
  59. {
  60. return false;
  61. }
  62. }

效果:

【NX二次开发】判断面是否相切,相切面。的更多相关文章

  1. NX二次开发-BlockUI对话框嵌套MFC对话框制作进度条

    半年前在一些QQ群看到有大神NX二次开发做出了进度条,那个时候我还不会弄,也不知道怎么弄得,后来断断续续得研究了一下,直到今天我把它做出来了.内心还是很喜悦的!回想自己这两年当初从没公司肯给我做NX二 ...

  2. NX二次开发-UFUN发射线函数UF_MODL_trace_a_ray的用法

    今天是国庆节,放假休息懒得动,没有出去玩,在家研究一下发射线函数UF_MODL_trace_a_ray.小弟以前在软件公司混的时候,当时我做的那个项目就用到了UF_MODL_trace_a_ray,当 ...

  3. NX二次开发-Block UI C++界面关于 在Block UI中UF_initialize();和UF_terminate();的使用

    关于 在Block UI中UF_initialize();和UF_terminate();的使用 用Block UI作NX二次开发的时候,不需要在使用UFUN函数的时候加UF_initialize() ...

  4. NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))

    NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的 ...

  5. NX二次开发-基于NX开发向导模板的NX对Excel读写操作(OLE方式(COM组件))

    在看这个博客前,请读者先去完整看完:NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))https://ufun-nxopen.blog.csdn.net/article ...

  6. NX二次开发-基于MFC界面对话框与NX交互的开发

    打开VS2013 点击新建,选择MFC DLL 点击确定 点下一步 什么都不改,直接点完成 进来之后先编译一下,看是否编译成功 打开项目属性,更改这几处 $(UGII_BASE_DIR)\ugopen ...

  7. NX二次开发-UDO用户自定义对象(UFUN)【持续完善】

    每当提起UDO总是会让我想起大专毕业那会失业找工作,后来有个宝贵机会去了软件公司上班,拿到了我人生中的第一个NX二次开发项目,一个关于测量汽车前后左右摄像头的项目.当时那个项目就用到了UDO,对于只看 ...

  8. NX二次开发-UFUN计算两点距离UF_VEC3_distance

    NX11+VS2013 #include <uf.h> #include <uf_curve.h> #include <uf_vec.h> UF_initializ ...

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

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

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

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

随机推荐

  1. [C#] 使用 NAudio 实现音频可视化

    预览: 捕捉声卡输出: 实现音频可视化, 第一步就是获得音频采样, 这里我们选择使用计算机正在播放的音频作为采样源进行处理: NAudio 中, 可以借助 WasapiLoopbackCapture ...

  2. Mybatis 遍历 List<Map<String,Object>>

    在上一篇博客中总结了MyBatis Plus 实现多表分页模糊查询(链接在最后).返回类型是编写一个专门的vo类.这次是返回List < Map > 前言 ​ 编写一个专门的vo返回类,主 ...

  3. Github + Picgo + Typora 让笔记远走高飞

    Github设置 登录 2.新建仓库 设置token 打开设置 然后点击,按钮生成Generate token Picgo设置 下载PicGo 参考视频 PicGo设置 设置Server 图床设置 上 ...

  4. spring为何要注入接口,而注入接口的实现类就会报错

    首先说明,注入的对象确实为实现类的对象.(并不是实现类的代理对象,注入并不涉及代理) 如果只是单纯注入是可以用实现类接收注入对象的,但是往往开发中会对实现类做增强,如事务,日志等,实现增强的AOP技术 ...

  5. ruby基础(二)

    ruby语法基础 1.方法 方法时对象定义的与该对象相关的操作.在Ruby中,对象的所有的操作都被封装成 方法. 语法糖:语法糖是一种为了照顾一般人的习惯而产生的特殊语法. ruby中一切数据都是对象 ...

  6. nano 按Ctrl+X 输入Y 回车

    如何退出nano 1.nano 按Ctrl+X 如果你修改了文件,下面会询问你是否需要保存修改. 2.输入Y确认保存,输入N不保存,按Ctrl+C取消返回.如果输入了Y,下一步会让你输入想要保存的文件 ...

  7. linux基本命令随笔

    cd(change directory) 不跟参数,直接进入当前登录用户的家目录 . 代表当前目录 .. 代表上级目录 ls(list) -l 显示文件详细信息 -a 显示隐藏文件 -S 以文件大小排 ...

  8. 用于监视Linux上的内存使用情况的Bash脚本

    用于监视Linux上的内存使用情况的Bash脚本 2019-06-17 11:32:45作者:戴进稿源:云网牛站 在本文中,我们添加了两个shell脚本来监视Linux操作系统上的内存利用率,即用于监 ...

  9. TCP/IP协议三次握手_四次挥手

    TCP/IP协议 TCP是一种面向连接的端到端的可靠传输协议. TCP报头格式 三次握手的过程 一.客户端发送一个连接请求,发送一个随机数X,这时客户端的端口状态变为SYN_SENT状态. 二.服务端 ...

  10. CentOS7安装vncserver(启动失败及连接黑屏解决办法)

    CentOS7安装vncserver(启动失败及连接黑屏解决办法) 转载weixin_34167043 最后发布于2017-11-09 15:11:00 阅读数 42  收藏 展开 AutoSAR入门 ...