OGG几何内核开发-BRepAlgoAPI_Fuse与BRep_Builder.MakeCompound比较
最近在与同事讨论BRepAlgoAPI_Fuse与BRep_Builder.MakeCompound有什么区别。
一、从直觉上来说,BRepAlgoAPI_Fuse会对两个实体相交处理,相交的部分会重新的生成相关的曲面。而BRep_Builder.MakeCompound仅仅是把两个实体组合成一个新的实体,但相交的部分不会处理。
一个球体与一个长方体相交。三种方式:
1、直接放置在相近的位置,结果:两个独立的实体。
参考示例代码:
TopoDS_Shape topoBox = BRepPrimAPI_MakeBox(axis, 3.0, 4.0, 5.0).Shape();
TopoDS_Shape topoSphere = BRepPrimAPI_MakeSphere(axis, 2.5).Shape();
2、调用BRepAlgoAPI_Fuse,做融合,结果:融合成为一个实体。
参考示例代码:
TopoDS_Shape topoBox = BRepPrimAPI_MakeBox(axis, 3.0, 4.0, 5.0).Shape();
TopoDS_Shape topoSphere = BRepPrimAPI_MakeSphere(axis, 2.5).Shape();
TopoDS_Shape fusedShape = BRepAlgoAPI_Fuse(topoBox, topoSphere);
3、调用BRep_Builder.MakeCompound,做聚合,聚合成一个Compound实体。
参考示例代码:
TopoDS_Shape topoBox = BRepPrimAPI_MakeBox(axis, 3.0, 4.0, 5.0).Shape();
TopoDS_Shape topoSphere = BRepPrimAPI_MakeSphere(axis, 2.5).Shape();// Make a compound shape.TopoDS_Compound aComp;BRep_Builder aBuilder;aBuilder.MakeCompound(aComp);aBuilder.Add(aComp, topoBox);aBuilder.Add(aComp, topoSphere);
如下图所示:

二、如何发现BRepAlgoAPI_Fuse与BRep_Builder.MakeCompound区别。
方式一:点选实体,并切换Shading显示模式。

注意看,中间的Fuse的相交部分,有新的曲线与曲面生成。

方式二:对这些实体进行brep数据结构分析
1、长方体的6个Face ID: 28~33

2、Fuse融合的实体:是个Compound实体,只有一个Solid子实体,7个面中29,31,33是融合前的长方体的面,另4个面是重新生成的。

3、MakeCompound生成的聚合实体:有两个Solid子体。其中6个Face的ID,仍然是聚合前的长方体的6个Face。

所以,BRep_Builder.MakeCompound不会做曲面求交以及重新生成相交部分的曲线曲面的等动作。速度会大大快过BRepAlgoAPI_Fuse。但生成的聚合实体,可能不是你想要的。
三、几何内核信息

基于OCCT 7.7.0内核修改。
四、OGG 1.0内核
OGG 1.0内核,在OCCT 7.7.0的基础上有486项多改进。
编译并试用过后,目前情况是,OGG 1.0与OCCT 7.7.0的兼容性非常好。
只是我对内核的修改,ID生成,不知什么原因,全变成0了。

还需要进一步分析原因。
五、原因很简单,只添加了字段,未生成ID。
参考示例代码:
TopoDS_TShape()
: myFlags (TopoDS_TShape_Flags_Free| TopoDS_TShape_Flags_Modified | TopoDS_TShape_Flags_Orientable)
{id = getIdIndex();
}
编译OGG1.0的内核代码后,重新编译OGG测试插件,id生成正常。

相关文章:
OGG几何内核开发-BRepAlgoAPI_Fuse与BRep_Builder.MakeCompound比较
最近在与同事讨论BRepAlgoAPI_Fuse与BRep_Builder.MakeCompound有什么区别。 一、从直觉上来说,BRepAlgoAPI_Fuse会对两个实体相交处理,相交的部分会重新的生成相关的曲面。而BRep_Builder.MakeCompound仅仅是把两个实体组合成一个新的实体,…...
C语言 | Leetcode C语言题解之第67题二进制求和
题目: 题解: void reserve(char* s) {int len strlen(s);for (int i 0; i < len / 2; i) {char t s[i];s[i] s[len - i - 1], s[len - i - 1] t;} }char* addBinary(char* a, char* b) {reserve(a);reserve(b);int len_a strlen(a), len_b st…...
油泼辣子在食品类别可以申请成商标不!
前阵韩国人在美国申请“chili crunch”油泼辣子作为商标,还准备禁止华人餐馆使用投诉侵权并索赔,普推知产老杨在USPTO上面检索发现,这个人申请的主要是30类方便食品的调味品,商标分类是全球通用的。 商标名称不能申请本类所属的通…...
深入探索MySQL视图
前言 在数据库的世界里,MySQL视图作为数据抽象的一把利剑,为我们提供了一种灵活而高效的方式来管理和查询数据。它不仅能够简化复杂的查询逻辑,还能在不改动底层数据结构的前提下,实现数据的定制化展示与访问控制。本文旨在深入解…...
C语言逻辑语句
叠甲:以下文章主要是依靠我的实际编码学习中总结出来的经验之谈,求逻辑自洽,不能百分百保证正确,有错误、未定义、不合适的内容请尽情指出! 文章目录 1.何为控制语句2.控制语句-分支语句2.1.if2.2.switch 3.控制语句-循…...
C++青少年简明教程:基础知识
C青少年简明教程:基础知识 电脑程序设计(Computer programming),或称程序设计(programming),是给出解决特定问题程序的过程,程序设计往往以某种程序设计语言为工具,给出这…...
[AutoSar]lauterbach_001_ORTI_CPUload_Trace
目录 关键词平台说明一、ORTI概述二、ORTI文件的生成三、ORTI文件的导入四、Trace 功能4.1 Trace 功能菜单介绍4.2 Trace功能的配置4.3 Trace MCDS 设置4.4 Task Switches断点的设置4.5 Trace 数据的录取4.6 CPU 负载和Task调度的查看 关键词 嵌入式、C语言、autosar、OS、BSW…...
课程设计 大学生竞赛系统
课程设计 大学生竞赛系统 wx:help-assignment 学生用户: wx:help-assignment 首页:推荐一些竞赛,热门活动等; 广场:用户可以通过广场来发表动态,同时也可以查看别人发布的动态,并且可以 关注…...
优先队列全面讲解
主题: 优先队列是一种非常有用的数据结构,它让你能够管理一组数据,使得每次访问或移除数据时,总是得到当前集合中优先级最高(或最低)的那个元素。这个特性让优先队列非常适用于需要快速访问集合中最重要元…...
即插即用篇 | YOLOv8 引入多光谱通道注意力 | 频率领域中的通道注意力网络
本改进已集成到 YOLOv8-Magic 框架。 注意力机制,尤其是通道注意力,在计算机视觉领域取得了巨大成功。许多工作聚焦于如何设计高效的通道注意力机制,同时忽略了一个基本问题,即通道注意力机制使用标量来表示通道,这很困难,因为会造成大量信息的丢失。在这项工作中,我们从…...
Topaz Video AI 5.0.3激活版 AI视频无损缩放增强
Topaz Video AI专注于很好地完成一些视频增强任务:去隔行,放大和运动插值。我们花了五年时间制作足够强大的人工智能模型,以便在真实世界的镜头上获得自然的结果。 Topaz Video AI 还将充分利用您的现代工作站,因为我们直接与硬件…...
ppt通过修改幻灯片母版修改页脚
修改幻灯片母版 幻灯片母版就可以了,就可以修改页脚...
【数组算法】598. 区间加法
给你一个 m x n 的矩阵 M 和一个操作数组 op 。矩阵初始化时所有的单元格都为 0 。ops[i] [ai, bi] 意味着当所有的 0 < x < ai 和 0 < y < bi 时, M[x][y] 应该加 1。 在 执行完所有操作后 ,计算并返回 矩阵中最大整数的个数 。 示例 1: …...
Java | Leetcode Java题解之第68题文本左右对齐
题目: 题解: class Solution {private String line(List<String> list,int maxWidth,int totalLength,boolean isLast){StringBuilder sb new StringBuilder();sb.append(list.get(0));if(list.size() 1){String ap " ".repeat(maxW…...
Windows安装MySQL 8.4.0免安装版
下载地址:MySQL :: Begin Your Download 1 管理员权限打开cmd,切换到MySQL安装路径的bin目录下 cmd> C: cmd> cd ..\mysql-8.4.0-winx64\bin 2 移除已安装的MySQL服务(若有) 2.1 停止老的MySQL服务 net stop mysql …...
初识java--javaSE(3)--方法,递归,数组,
文章目录 一 方法的使用1.1 什么是方法?main方法注意事项 1.2 方法的调用嵌套调用在方法调用时形参与实参的关系: 1.3 方法的重载方法重载的意义?总结方法重载:方法签名: 二 递归什么是递归?递归的精髓&…...
AWS ECS Fargate: 如何获取正在运行的服务
AWS Fargate 是一个无服务器计算引擎,用于容器,可以与 Amazon Elastic Container Service (ECS) 配合使用,实现容器的自动部署、管理、扩展和调整。在日常的开发和运维过程中,了解哪些服务正在运行及其状态是非常重要的。本文将介绍如何使用 Python 和 AWS SDK(boto3)来检…...
Rust 常用 Web 开源代码库
Rust的web开发有许多优秀的开源库可供选择,以下是一些值得关注的库: Web框架: Axum:由Rust社区的异步事实标准Tokio团队开发,以高性能和强大的异步支持著称。其特点包括使用无宏API将请求路由到处理程序、使用提取器以…...
零代码平台助力中国石化江苏油田实现高效评价体系
概述: 中国石化集团江苏石油勘探局有限公司面临着评价体系依赖人工处理数据、计算繁琐且容易出错的挑战。为解决这一问题,他们决定借助零代码平台明道云开发江苏油田高质量发展经济指标评价系统。该系统旨在实现原始数据批量导入与在线管理、权重及评分…...
[优选算法]------滑动窗⼝——209. 长度最小的子数组
目录 1.题目 1.解法⼀(暴⼒求解)(会超时): 2.解法⼆(滑动窗⼝): 1.算法思路: 2.手撕图解 3.代码实现 1.C 2.C语言 1.题目 209. 长度最小的子数组 给定一个含有 n…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
Pydantic + Function Calling的结合
1、Pydantic Pydantic 是一个 Python 库,用于数据验证和设置管理,通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发(如 FastAPI)、配置管理和数据解析,核心功能包括: 数据验证:通过…...
