当前位置: 首页 > 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…...

Primr:开源AI研究代理,35分钟自动生成公司深度战略分析报告

1. 项目概述&#xff1a;Primr&#xff0c;一个将公司网站转化为深度战略分析的AI研究代理 如果你做过公司研究、市场分析或者投资尽调&#xff0c;你肯定知道那有多痛苦。打开浏览器&#xff0c;输入公司网址&#xff0c;在“关于我们”、“产品”、“新闻”和“博客”之间来…...

基于Tauri与Rust构建跨平台Claude桌面客户端:架构设计与工程实践

1. 项目概述&#xff1a;一个为Claude设计的“圣杯”级桌面应用 如果你和我一样&#xff0c;在日常开发、写作或信息处理中重度依赖Anthropic的Claude模型&#xff0c;那么你肯定也经历过在浏览器标签页间反复横跳、复制粘贴、以及管理冗长对话历史的烦恼。 CoderLuii/HolyCla…...

告别MATLAB命令行里的‘天书’:手把手教你用symdisp优雅展示LaTeX公式

MATLAB符号计算可视化革命&#xff1a;用symdisp实现LaTeX级公式渲染 在科研和工程计算领域&#xff0c;MATLAB的符号计算工具箱一直是数学推导的利器&#xff0c;但长期以来&#xff0c;命令行输出的公式展示方式让许多研究者头疼——密密麻麻的文本表达式不仅难以直观理解&am…...

毫米波雷达选型指南:HLK-LD1125H-24G vs 传统红外/超声波,在智能办公场景下怎么选?

毫米波雷达选型指南&#xff1a;HLK-LD1125H-24G vs 传统红外/超声波&#xff0c;在智能办公场景下怎么选&#xff1f; 在智能办公场景中&#xff0c;人员检测技术的选择直接影响着空间管理效率与用户体验。传统红外&#xff08;PIR&#xff09;和超声波传感器曾长期主导市场&…...

3分钟掌握罗技鼠标宏:PUBG自动压枪脚本终极指南

3分钟掌握罗技鼠标宏&#xff1a;PUBG自动压枪脚本终极指南 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 还在为《绝地求生》中难以控制的枪械…...

插入排序,选择排序,希尔排序

一、插入排序从头开始依次选取一个元素&#xff0c;和他前面的数比较&#xff0c;先把值存为 c &#xff0c;这样就不用交换值了若比前面的元素大&#xff0c;就让 qq 1的位置的值改为前面的数&#xff0c;qq 往前移一位若前面的数小&#xff0c;就把 qq 1的位置的值改为cvo…...

泛微OA ecology 9实战:手把手教你写一个能取表单数据的Java自定义接口

泛微OA Ecology 9深度开发&#xff1a;构建高效表单数据交互的Java接口实践 在当今企业数字化转型浪潮中&#xff0c;办公自动化系统(OA)作为核心支撑平台&#xff0c;其灵活性和扩展性直接影响着企业运营效率。泛微OA Ecology 9作为国内领先的协同办公平台&#xff0c;提供了丰…...

汽车存储技术演进:从边缘计算到车规级设计的核心挑战与选型指南

1. 汽车存储需求变迁&#xff1a;从机械心脏到数字大脑二十年前&#xff0c;我们选车看的是发动机的轰鸣、变速箱的平顺和底盘的扎实。如今&#xff0c;走进4S店&#xff0c;销售顾问会先带你坐进驾驶舱&#xff0c;点亮那块巨大的中控屏&#xff0c;演示语音助手、在线导航、高…...

【数字孪生实战案例】怎样设置数据筛选条件,精准控制电子地图飞线的呈现效果?~山海鲸可视化

在数据可视化大屏应用里&#xff0c;电子地图飞线是展示跨地域关联数据的重要载体。当飞线数据量大、维度繁杂时&#xff0c;通过配置数据条件对地图飞线做精准筛选&#xff0c;能够过滤冗余信息、聚焦核心数据&#xff0c;让地图呈现更简洁直观&#xff0c;有效提升整体可视化…...

Chartist图表库终极指南:如何构建响应式数据可视化应用

Chartist图表库终极指南&#xff1a;如何构建响应式数据可视化应用 【免费下载链接】chartist Simple responsive charts 项目地址: https://gitcode.com/gh_mirrors/ch/chartist Chartist是一款轻量级且功能强大的响应式图表库&#xff0c;专为现代Web应用设计。它能够…...