【NX】NX二次开发中判断曲线是否重合

news2024/10/7 8:30:04

在NX二次开发中,并没有直接的函数判断两条曲线是否重合,那么我们自己有没有办法判断两条曲线是否重合呢,自然是有的,那么首先我们得定义一下什么叫做重合,几乎重合的曲线算重合吗,这里就涉及到一个容忍度的问题。

我这里采用一个并不是严格判断重合的办法,但是日常用问题不大。

 

思路就是对两条曲线分别采样,当采样点的距离接近的时候认为两条曲线重合,否则认为不重合,注意因为曲线的方向可能不同,所以要正反两个方向采样,只要有一个方向满足条件,则认为两条曲线重合,具体代码如下,仅供参考。

//author:autumoon
//邮箱:9506@163.com
//日期:2023-07-06 
bool IsTwoCurvesCoincide(Curve *ipCurveF, Curve *ipCurveS, int inSamplePtCount /*= 5*/, double dTolerance /*= 0.001*/)
{
	if (ipCurveF == nullptr || ipCurveS == nullptr || inSamplePtCount < 2 || dTolerance < 0.0)
	{
		return false;
	}

	double dSampleProp = 1.0 / (inSamplePtCount - 1);

	AUTUMOONMathPoint3d ptF1, ptS1;
	AUTUMOONMathVector3d vecF1, vecS1;


	bool bPosTest = true;
	for (double dSamplePos = 0.0; dSamplePos < 1.0; dSamplePos += dSampleProp)
	{
		AUTUMOONNXCurve::AskCurveProps(ipCurveF->Tag(), dSamplePos, &ptF1, &vecF1);
		AUTUMOONNXCurve::AskCurveProps(ipCurveS->Tag(), dSamplePos, &ptS1, &vecS1);

		if (ptF1.Distance(ptS1) > dTolerance || !vecF1.IsParallel(vecS1, dTolerance))
		{
			bPosTest = false;
			break;
		}
	}


	bool bNegTest = true;
	if (!bPosTest)
	{
		for (double dSamplePos = 0.0; dSamplePos < 1.0; dSamplePos += dSampleProp)
		{
			AUTUMOONNXCurve::AskCurveProps(ipCurveF->Tag(), 1.0 - dSamplePos, &ptF1, &vecF1);
			AUTUMOONNXCurve::AskCurveProps(ipCurveS->Tag(), dSamplePos, &ptS1, &vecS1);

			if (ptF1.Distance(ptS1) > dTolerance || !vecF1.IsParallel(vecS1, dTolerance))
			{
				bNegTest = false;
				break;
			}
		}
	}

	return bPosTest || bNegTest;
}

项目原因部分不重要的代码实现无法公开,可以自己考虑实现,或者查阅资料,调用UG自带的函数。

欢迎交流与讨论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/723243.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何控制滚轮横向滑动(原生JS实现方法)

控制滚轮横向滑动 提示&#xff1a;这个是以前讨论的时候遇到的情况 ; 回头想了一下应用场景确实挺多的,.所以今天趁周末大致的记录一下如何通过js去实现【横向滚动】 文章目录 控制滚轮横向滑动解决思路如下1.如何在页面中展示横向滚动条2.如何获取鼠标的【滚动轮】3.通过什么…

AI for Science 交流会来了!科学计算前沿邀您共同探讨

随着深度学习不断驱动技术创新&#xff0c;人工智能科学计算迈向高质量发展道路。百度飞桨作为科学计算的坚定支持者&#xff0c;计划于7月13日举办飞桨科学计算线下交流会。本次交流会以百度飞桨深度学习框架为基座&#xff0c;广泛联动人工智能科学计算领域头部专家学者、高等…

数据宝董事长汤寒林应邀将在2023世界人工智能大会发言

摘要&#xff1a;2023世界人工智能大会即将在上海举行&#xff0c;数据宝董事长、华东江苏大数据交易中心总经理汤寒林应邀将出席产业区块链生态论坛&#xff0c;并将围绕“数据要素流通与交易”话题展开讨论。 由国家发展和改革委员会、科学技术部、工业和信息化部、国家互联…

【Linux】如何将自定义源文件打包并生成动态库

在这之前我们已经讲述了如何将自定义源文件打包并生成静态库&#xff0c;本文来带你了解如何打包成为动态库并使用 动态库打包动态库使用1.增加环境变量方法2.配置.conf文件3.创建一个软连接在当前目录4.创建一个软连接在系统库目录 静态库的加载动态库的加载 关于源文件的书写…

使用Maven创建Java Web项目

环境 windows环境 jdk8 maven3.6 IDEA2022 步骤 1.新建maven工程 使用IDEA工具&#xff0c;File->New->Project->选择项目目录&#xff0c;填写项目名称&#xff0c;选择对应选项&#xff0c;其中Create Git repository可不勾选&#xff0c;如下图所示&#xff…

怎样将递归函数转为非递归函数

一道非常不错的面试题&#xff1a;不支持递归的程序语言如何实现递归程序&#xff1f; 之所以说这道题好&#xff0c;是因为&#xff1a; 首先&#xff0c;它不是纯粹考概念和死记硬背&#xff0c;求职者在回答问题之前需要进行一定的思考&#xff1b; 其次&#xff0c;这道题…

phar协议文件包含

实验目的 通过本实验&#xff0c;了解php封装伪协议&#xff0c;掌握phar协议文件包含的用法 实验环境 操作机&#xff1a;kali 靶机&#xff1a;Windows 2007 实验地址&#xff1a;http://靶机ip/exp/include2/phar/phar1/ 用户名&#xff1a;college 密码&#xff1a;360C…

Script file ‘D:\Anaconda365\Scripts\conda-script.py‘ is not present

运行anaconda&#xff0c;出现错误&#xff0c;找不到conda-script.py&#xff0c; 解决途径&#xff1a; 用everything查找电脑上的conda-script.py文件&#xff0c; 将查到的codna-script.py文件放入Script文件夹完美解决。 再从运行conda list&#xff0c;就不报错了。

监控系统Zabbix

zabbix概述 作为一个运维&#xff0c;需要会使用监控系统查看服务器状态以及网站流量指标&#xff0c;利用监控系统的数据去了解上线发布的结果&#xff0c;和网站的健康状态。 利用一个优秀的监控软件&#xff0c;我们可以&#xff1a; 通过一个友好的界面进行浏览整个网站…

前端Vue自定义精美上下滚动通告栏组件 常用于展示公告信息 上下滚动跑马灯 上下滚动广播

前端Vue自定义精美上下滚动通告栏组件 常用于展示公告信息 上下滚动跑马灯 上下滚动广播,下载完整代码请访问uni-app插件市场地址&#xff1a;https://ext.dcloud.net.cn/plugin?id13318 效果图如下: # cc-noticeBar #### 使用方法 使用方法 <!-- 默认颜色#333公告栏 -…

YoloV5/YoloV7改进---注意力机制:SRM,卷积神经网络再校准模块,性能优于SE、GE

目录 1.SRM介绍 ​编辑 2.SRM引入到yolov5 2.1 加入common.py中&#xff1a; 2.2 加入yolo.py中&#xff1a; 2.3 yolov5s_SRM.yaml 2.4 yolov5s_SRM1.yaml 3.YOLOv5/YOLOv7魔术师专栏介绍 1.SRM介绍 论文&#xff1a;https://openaccess.thecvf.com/content…

设计模式7:装饰者模式

目录 装饰者模式是要解决什么问题&#xff1f;装饰者模式在JDK中有哪些实际应用&#xff1f;装饰者模式在Android SDK中有哪些实际应用&#xff1f;装饰者模式和适配器模式的区别是什么&#xff1f;装饰者模式和代理模式的区别是什么&#xff1f; 装饰者模式是要解决什么问题&a…

基于matlab使用单类全卷积数据描述异常检测网络检测药丸图像上的缺陷(附源码)

一、前言 此示例演示如何使用单类全卷积数据描述 &#xff08;FCDD&#xff09; 异常检测网络检测药丸图像上的缺陷。 异常检测的一个关键目标是让人类观察者能够理解为什么经过训练的网络将图像分类为异常。FCDD支持e可解释的分类&#xff0c;它用证明神经网络如何达到其分类…

Python快速将多个文件夹内的文件移动至一个文件夹内

在日常办公中生活中&#xff0c;我们经常需要将多个文件夹内的文件如&#xff1a;(图片png,jpg,jpeg&#xff0c;word文档&#xff0c;Excel,PPT等等)&#xff0c;需要将这个文件夹内的文件移动至同一个文件夹内&#xff0c;如果我们复制粘贴的话&#xff0c;将会非常的繁琐以及…

Impala3.4源码阅读笔记(七)解析ScanNode(上)

前言 本文为笔者个人阅读Apache Impala源码时的笔记&#xff0c;仅代表我个人对代码的理解&#xff0c;个人水平有限&#xff0c;文章可能存在理解错误、遗漏或者过时之处。如果有任何错误或者有更好的见解&#xff0c;欢迎指正。 正文 我们知道Impala执行一条SQL的主要流程…

在vscode中配置git bash终端

将以下配置添加到vscode中的settings.json中 "terminal.integrated.profiles.windows": {"PowerShell": {"source": "PowerShell","icon": "terminal-powershell"},"Command Prompt": {"path"…

【C++】类和对象(中篇)----->六大默认成员函数

目录 一、类的6个默认成员函数 二、构造函数 1、概念 2、特性 三、析构函数 1、概念 2、特性 四、拷贝构造函数 1、概念 2、特征 五、赋值运算符重载 1、运算符重载 2、值运算符重载 2.1 赋值运算符重载格式 2.2 赋值运算符只能重载成类的成员函数不能重载成全局函数 2.3…

使用postman发请求报错Error: connect ECONNREFUSED 127.0.0.1:33210

原因&#xff1a;代理服务器问题 解决&#xff1a; 两种方案任选其一 1.电脑网络设置&#xff0c;关闭代理服务器 2.postman 的设置proxy 取消勾选

Mac中VSCode配置vue项目环境

一、下载VSCode 进入VSCode官网&#xff0c;下载Mac版安装包 设置中文: vscode导航栏view -> Command Palette -> 输入Configure Display Language -> 选择简体中文 -> 重启 二、下载node.js 下载地址&#xff1a;node.js官网&#xff0c;建议下载长期维护版本…

交叉编译paho带SSL

1.新建文件夹 /home/yiweijiao/woke_lab/paho 2.解压paho.mqtt.c到/home/yiweijiao/woke_lab/paho/paho.mqtt.c 3.新建文件夹/home/yiweijiao/woke_lab/paho/openssl_lib 将已经交叉编译好的openssl复制到这里 4.cd /home/yiweijiao/woke_lab/paho/paho.mqtt.c 新建文件夹…