Opencascad(C++)-判断直线段与TopoDS_Shape是否相交(干涉)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 1、前言
  • 2、根据两个点创建有界直线段
  • 3、判断TopoDS_Shape与直线段相交


1、前言

最近在研究Opencascad的开发,有个需求是判断直线与TopoDS_Shpae是否存在相交,如果相交了,则认为是干涉的,如果不相交则是不干涉的。由于直线是无线的,采用直线判断是不合理的,所以要采用有界的直线段来判断。这里我开发的经验之谈,有什么不足的或者有更好方法的,可以在评论区留言。


2、根据两个点创建有界直线段

采用两个点创建有界直线段所使用的的方法为:BRepBuilderAPI_MakeEdge,我们可以查到你说明如下(我就不翻译了):

在这里插入图片描述
其源代码为:

	BRepBuilderAPI_MakeEdge edgeMaker(pnt1, pnt2);TopoDS_Edge aEdge = edgeMaker.Edge();

3、判断TopoDS_Shape与直线段相交

其源代码为:

TopoDS_Shape shape = productHandle->GetShape();  //这里获取的是TopoDS_Shape,根据自己的需求来改TopExp_Explorer exp;for (exp.Init(shape, TopAbs_SOLID); exp.More(); exp.Next()){TopoDS_Solid face = TopoDS::Solid(exp.Current());BRepExtrema_DistShapeShape extrema(aEdge, face);if (extrema.IsDone() && extrema.NbSolution() > 0 && extrema.Value() < 1e-6){return true;}}for (exp.Init(shape, TopAbs_SHELL); exp.More(); exp.Next()){TopoDS_Shell face = TopoDS::Shell(exp.Current());BRepExtrema_DistShapeShape extrema(aEdge, face);if (extrema.IsDone() && extrema.NbSolution() > 0 && extrema.Value() < 1e-6){return true;}}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

0开始配置Cartographer建图和导航定位

0开始配置Cartographer 日期&#xff1a;12-19 硬件&#xff1a;激光雷达IMU 小车的tf变换&#xff1a; 建图配置 lua文件配置&#xff1a;my_robot.lua include "map_builder.lua" include "trajectory_builder.lua"options {map_builder MAP_BUILDE…

Pycharm 切换interpreter---python的环境和第三方库问题

这篇回答两个问题&#xff1a; 1.为什么在 pycharm中打开新的project&#xff0c;切换interpreter 之后发现自己之前装的库消失了&#xff1f; 2.为什么 interpreter 切换到python3.8了&#xff0c; terminal 还是在 3.9&#xff1f;&#xff1f; 问题的关键&#xff1a;搞懂什…

概率论相关题型

文章目录 概率论的基本概念放杯子问题条件概率与重要公式的结合独立的运用 随机变量以及分布离散随机变量的分布函数特点连续随机变量的分布函数在某一点的值为0正态分布标准化随机变量函数的分布 多维随机变量以及分布条件概率max 与 min 函数的相关计算二维随机变量二维随机变…

raise readtimeouterror(self._pool, none, “Read timed out.“)

解决办法&#xff1a; 在Windows下&#xff1a; C:\用户\Administrator\下&#xff0c;新建pip文件夹&#xff0c;在创建pip.ini文件&#xff0c;拷贝下面代码进去&#xff0c;保存&#xff1b; [global] index-url https://pypi.tuna.tsinghua.edu.cn/simple 然后重新执行…

批量抠图软件哪个好用?推荐这三款抠图工具给你

在数字图像处理的世界里&#xff0c;抠图是个不可或缺的环节。对于那些经常需要从复杂背景中提取主体的设计师和摄影师来说&#xff0c;抠图技巧无疑是一项宝贵的职业技能。然而&#xff0c;当面对大量的抠图需求时&#xff0c;手动处理不仅耗时&#xff0c;而且效率低下。因此…

UWB高精度人员定位系统源码,全方位护航安全生产

定位管理系统使用UWB定位技术&#xff0c;通过在厂区安装定位基站&#xff0c;为人员或设备佩戴定位标签的形式&#xff0c;实现人员精准实时定位。可以实现人员、车辆物资实时定位、工作考勤、电子围栏、历史轨迹回放、巡检巡查、物资盘点、路径规划、三维显示等&#xff0c;以…

2分钟明白什么是SCADA?

SCADA——数据采集和监控系统的英文缩写&#xff0c;国内流行的叫法是&#xff0c;监控组态软件&#xff0c;是生产控制的核心&#xff0c;是位于控制设备之上&#xff0c;侧重于管理的纯软件&#xff0c;在ERP/MES/PCS架构中起承上启下的作用。SCADA负责控制或监控整个工厂&am…

数组形式的整数加法C语言❤

一、题目&#xff1a; 整数的 数组形式 是按照从左到右的顺序表示其数字的数组。num 例如&#xff0c;对于 &#xff0c;数组形式是 。num 1321[1,3,2,1] 给定 &#xff0c;整数的 数组形式 &#xff0c;和整数 &#xff0c;返回 整数 num k 的 数组形式 。numk 示例 1&…

蓝桥杯嵌入式UART

1.电路原理图 2.CubeMX配置 3.串口发送 4.串口接收

Zookeeper之快速入门

前言 本篇文章主要还是让人快速上手入门&#xff0c;想要深入的话可以通过书籍系统的学习。 简介 是什么 可用于协调、构建分布式应用。 本质上是一个分布式的小文件存储系统。提供基于类似于文件系统的目录树方式的数据存储&#xff0c;并且可以对树中的节点进行有效管理…

o2o生活通全开源尊享版+多城市切换+企业付款+交友IM+平台快报

搭建教程 1.把 pigo2ov282.sql 文件里面的网址 test.souho.net 全部批量替换为你的自己的 2.使用 phpmyadmin 导入 pigo2ov282.sql 到你的数据库&#xff08;直接访问/phpmyadmin 即可&#xff09; 3.修改数据库文件/conf/db.php 里的数据库连接信息&#xff08;请勿使用记事本…

PAT 乙级 1033 旧键盘打字

旧键盘上坏了几个键&#xff0c;于是在敲一段文字的时候&#xff0c;对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键&#xff0c;打出的结果文字会是怎样&#xff1f; 输入格式&#xff1a; 输入在 2 行中分别给出坏掉的那些键、以及应该输入的文字。其…