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

用到的函数:

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二次开发】判断面是否相切,相切面。的更多相关文章

  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. iwrite复制攻略

    打开iwrite,一提交作业,发现: 这可咋办啊! 那就跟着步骤来呗: 按F12打开元素审查 点一下左上角 再点一下文本框,就能定位到HTML中的位置 在文本框中写几个字母,康康具体位置: 那就复制进 ...

  2. 【CSS】CSS3从入门到深入(复习查漏向

    CSS3从入门到深入(复习查漏向 pre_section CSS:层叠样式表,决定网页表现 网页为多层结构,CSS为每一层设置样式,最后显示最上一层 CSS语句 = 选择器 + 声明块 形式 内联样式 ...

  3. 『政善治』Postman工具 — 8、Postman中Pre-request Script的使用

    目录 1.Pre-request Script介绍 2.常用SNIPPETS(片段)说明 (1)获取变量脚本: (2)设置变量脚本: (3)清空变量脚本: (4)Send a request代码片段 ...

  4. [MySQL数据库之表的详细操作:存储引擎、表介绍、表字段之数据类型]

    [MySQL数据库之表的详细操作:存储引擎.表介绍.表字段之数据类型] 表的详细操作 存储引擎 mysql中建立的库======>文件夹 库中建立的表======>文件 用来存储数据的文件 ...

  5. MSSQL·查询数据库中所有索引的相关信息

    阅文时长 | 0.45分钟 字数统计 | 784字符 主要内容 | 1.引言&背景 2.声明与参考资料 『MSSQL·查询数据库中所有索引的相关信息』 编写人 | SCscHero 编写时间 ...

  6. 使用CSS设置边框和背景

    一.设置边框 1.边框样式 属性 说明 border-width 设置边框的宽度 boder-style 设置边框的样式 border-color 设置边框的颜色 a.border-width属性 自 ...

  7. ltp日志

    grep "fail" -i /var/log/messages |wc -lgrep "fail" -i /var/log/messagesgrep &quo ...

  8. 攻防世界(八)web2

    攻防世界系列:web2 1.代码审计  知识补充: strrev(string):反转字符串 strlen(string):字符串长度 substr(string,start,length):截取字符 ...

  9. Linux——CentOS7添加/删除用户和用户组1

    Linux--CentOS7添加/删除用户和用户组 2017.05.02 19:58 23012浏览   前言 今天又重新装了centos7突然有关用户和用户组有关的命令记不清了,所以记一下,也方便你 ...

  10. Otter远程调试

    Otter远程调试 环境配置: 机器 172.16.0.2 172.16.0.3 172.16.0.4 ZK FOLLOWER FOLLOWER LEADER MySQL Manager MySQL ...