当前位置: 首页 > news >正文

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题二进制求和

题目&#xff1a; 题解&#xff1a; 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”油泼辣子作为商标&#xff0c;还准备禁止华人餐馆使用投诉侵权并索赔&#xff0c;普推知产老杨在USPTO上面检索发现&#xff0c;这个人申请的主要是30类方便食品的调味品&#xff0c;商标分类是全球通用的。 商标名称不能申请本类所属的通…...

深入探索MySQL视图

前言 在数据库的世界里&#xff0c;MySQL视图作为数据抽象的一把利剑&#xff0c;为我们提供了一种灵活而高效的方式来管理和查询数据。它不仅能够简化复杂的查询逻辑&#xff0c;还能在不改动底层数据结构的前提下&#xff0c;实现数据的定制化展示与访问控制。本文旨在深入解…...

C语言逻辑语句

叠甲&#xff1a;以下文章主要是依靠我的实际编码学习中总结出来的经验之谈&#xff0c;求逻辑自洽&#xff0c;不能百分百保证正确&#xff0c;有错误、未定义、不合适的内容请尽情指出&#xff01; 文章目录 1.何为控制语句2.控制语句-分支语句2.1.if2.2.switch 3.控制语句-循…...

C++青少年简明教程:基础知识

C青少年简明教程&#xff1a;基础知识 电脑程序设计&#xff08;Computer programming&#xff09;&#xff0c;或称程序设计&#xff08;programming&#xff09;&#xff0c;是给出解决特定问题程序的过程&#xff0c;程序设计往往以某种程序设计语言为工具&#xff0c;给出这…...

[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 学生用户&#xff1a; wx:help-assignment 首页&#xff1a;推荐一些竞赛&#xff0c;热门活动等&#xff1b; 广场&#xff1a;用户可以通过广场来发表动态&#xff0c;同时也可以查看别人发布的动态&#xff0c;并且可以 关注…...

优先队列全面讲解

主题&#xff1a; 优先队列是一种非常有用的数据结构&#xff0c;它让你能够管理一组数据&#xff0c;使得每次访问或移除数据时&#xff0c;总是得到当前集合中优先级最高&#xff08;或最低&#xff09;的那个元素。这个特性让优先队列非常适用于需要快速访问集合中最重要元…...

即插即用篇 | YOLOv8 引入多光谱通道注意力 | 频率领域中的通道注意力网络

本改进已集成到 YOLOv8-Magic 框架。 注意力机制,尤其是通道注意力,在计算机视觉领域取得了巨大成功。许多工作聚焦于如何设计高效的通道注意力机制,同时忽略了一个基本问题,即通道注意力机制使用标量来表示通道,这很困难,因为会造成大量信息的丢失。在这项工作中,我们从…...

Topaz Video AI 5.0.3激活版 AI视频无损缩放增强

Topaz Video AI专注于很好地完成一些视频增强任务&#xff1a;去隔行&#xff0c;放大和运动插值。我们花了五年时间制作足够强大的人工智能模型&#xff0c;以便在真实世界的镜头上获得自然的结果。 Topaz Video AI 还将充分利用您的现代工作站&#xff0c;因为我们直接与硬件…...

ppt通过修改幻灯片母版修改页脚

修改幻灯片母版 幻灯片母版就可以了&#xff0c;就可以修改页脚...

【数组算法】598. 区间加法

给你一个 m x n 的矩阵 M 和一个操作数组 op 。矩阵初始化时所有的单元格都为 0 。ops[i] [ai, bi] 意味着当所有的 0 < x < ai 和 0 < y < bi 时&#xff0c; M[x][y] 应该加 1。 在 执行完所有操作后 &#xff0c;计算并返回 矩阵中最大整数的个数 。 示例 1: …...

Java | Leetcode Java题解之第68题文本左右对齐

题目&#xff1a; 题解&#xff1a; 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免安装版

下载地址&#xff1a;MySQL :: Begin Your Download 1 管理员权限打开cmd&#xff0c;切换到MySQL安装路径的bin目录下 cmd> C: cmd> cd ..\mysql-8.4.0-winx64\bin 2 移除已安装的MySQL服务&#xff08;若有&#xff09; 2.1 停止老的MySQL服务 net stop mysql …...

初识java--javaSE(3)--方法,递归,数组,

文章目录 一 方法的使用1.1 什么是方法&#xff1f;main方法注意事项 1.2 方法的调用嵌套调用在方法调用时形参与实参的关系&#xff1a; 1.3 方法的重载方法重载的意义&#xff1f;总结方法重载&#xff1a;方法签名&#xff1a; 二 递归什么是递归&#xff1f;递归的精髓&…...

AWS ECS Fargate: 如何获取正在运行的服务

AWS Fargate 是一个无服务器计算引擎,用于容器,可以与 Amazon Elastic Container Service (ECS) 配合使用,实现容器的自动部署、管理、扩展和调整。在日常的开发和运维过程中,了解哪些服务正在运行及其状态是非常重要的。本文将介绍如何使用 Python 和 AWS SDK(boto3)来检…...

Rust 常用 Web 开源代码库

Rust的web开发有许多优秀的开源库可供选择&#xff0c;以下是一些值得关注的库&#xff1a; Web框架&#xff1a; Axum&#xff1a;由Rust社区的异步事实标准Tokio团队开发&#xff0c;以高性能和强大的异步支持著称。其特点包括使用无宏API将请求路由到处理程序、使用提取器以…...

零代码平台助力中国石化江苏油田实现高效评价体系

概述&#xff1a; 中国石化集团江苏石油勘探局有限公司面临着评价体系依赖人工处理数据、计算繁琐且容易出错的挑战。为解决这一问题&#xff0c;他们决定借助零代码平台明道云开发江苏油田高质量发展经济指标评价系统。该系统旨在实现原始数据批量导入与在线管理、权重及评分…...

[优选算法]------滑动窗⼝——209. 长度最小的子数组

目录 1.题目 1.解法⼀&#xff08;暴⼒求解&#xff09;&#xff08;会超时&#xff09;&#xff1a; 2.解法⼆&#xff08;滑动窗⼝&#xff09;&#xff1a; 1.算法思路&#xff1a; 2.手撕图解 3.代码实现 1.C 2.C语言 1.题目 209. 长度最小的子数组 给定一个含有 n…...

嵌入式开发中的编程规范实践与行业标准解析

1. 编程规范的本质与价值在嵌入式汽车电子领域干了十五年&#xff0c;我见过太多因为代码不规范导致的惨痛教训。有一次&#xff0c;某车企的ECU控制模块在零下30度环境突然死机&#xff0c;排查三周后发现是未初始化的指针在低温环境下产生了非预期行为——这种问题本可以通过…...

2026年AI Agent工具淘汰预警:这7个已停止维护/降级为社区版/终止Python 3.12支持的工具请立即停用

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;2026年最佳AI Agent工具推荐 随着多模态推理、自主记忆与跨平台协同能力的成熟&#xff0c;2026年的AI Agent已从实验原型迈入生产级应用阶段。主流工具普遍支持RAG增强、动态工具调用&#xff08;Tool Calli…...

LangChain RAG开发套件:模块化架构与生产级实践指南

1. 项目概述&#xff1a;一个面向RAG应用开发的“瑞士军刀”如果你正在或打算基于LangChain构建检索增强生成&#xff08;RAG&#xff09;应用&#xff0c;那么“Vargha-Kh/Langchain-RAG-DevelopmentKit”这个项目&#xff0c;很可能就是你一直在寻找的那个“工具箱”。它不是…...

免费开源桌面分区工具:如何用NoFences在5分钟内整理好你的Windows桌面

免费开源桌面分区工具&#xff1a;如何用NoFences在5分钟内整理好你的Windows桌面 【免费下载链接】NoFences &#x1f6a7; Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 你是否每天都要面对杂乱无章的Windows桌面&…...

Linux 设备树深度解析之Amlogic SoC 多媒体

第一部分&#xff1a;Amlogic Canvas —— 视频像素缓冲区元数据中间件1.1 设计精髓分析Amlogic Canvas本质上是一个硬件级别的像素缓冲区描述符池。它存储每个编号对应的宽度、高度、物理地址、包裹模式、块模式&#xff08;GXBB及之后还支持端序&#xff09;等元数据。视频解…...

基于STC89C51单片机的多波形信号发生器设计与Proteus仿真

基于STC89C51单片机的多波形信号发生器设计与Proteus仿真 摘 要 随着电子技术和集成电路的飞速发展&#xff0c;信号发生器作为电子测量领域的基础设备&#xff0c;其性能和智能化水平不断提升。本设计以STC89C51单片机为控制核心&#xff0c;设计了一款多波形信号发生器。系统…...

告别AT指令!用nRF52832的BLE NUS服务,5分钟搞定手机与开发板的双向通信

用nRF52832的BLE NUS服务实现高效蓝牙串口通信 在嵌入式开发中&#xff0c;设备与移动端的双向通信一直是个痛点。传统AT指令虽然简单&#xff0c;但效率低下、扩展性差&#xff0c;每次通信都需要复杂的握手流程。而基于nRF52832的BLE NUS&#xff08;Nordic UART Service&…...

无国界技术创业:构建全球化产品支持与远程协作体系

1. 从“车库”到“云端”&#xff1a;无国界创业的底层逻辑变迁 十年前&#xff0c;如果你在硅谷创立一家芯片设计工具&#xff08;EDA&#xff09;或嵌入式软件公司&#xff0c;头两年的客户拜访路线图大概就是101号公路沿线。工程师可以早上开车去圣何塞的客户办公室&#xf…...

告别“检测即损伤”:激光加工重塑电路检测与修复新路径

随着芯片互联兴起&#xff0c;电路结构日趋复杂&#xff0c;隐性缺陷对良率的威胁显著增加。如何在不破坏电路的前提下发现短路、断路等问题并对其进行精准处置&#xff0c;是半导体集成电路领域提升器件性能与良率的首要任务。在这一需求驱动下&#xff0c;激光技术凭借其特性…...

构建高效AI学习伙伴:从系统提示词到结构化交互设计

1. 项目概述&#xff1a;一个为学习者量身定制的AI交互模式最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“learner-ai-mode”。光看名字&#xff0c;你可能会觉得这又是一个普通的AI应用或者学习工具。但当我深入去研究它的代码和设计理念后&#xff0c;发现它其实指向…...