opencascade 布爾運算筆記

BRepAlgoAPI_Common 對兩個topods求解 沒有公共部分也返回結果了 我想要的結果是沒有公共部分返回false

在 Open CASCADE 中使用 BRepAlgoAPI_Common 進行布爾操作時,即使兩個 TopoDS_Shape 沒有公共部分,操作仍會返回一個結果。為了判斷兩個形狀是否確實有公共部分,并在沒有公共部分時返回 false,你可以檢查生成的結果是否為空或其屬性是否表明它沒有有效的幾何內容。以下是一個實現該邏輯的示例:

using System;
using System.Linq;
using OpenCascade;class Program
{static void Main(string[] args){// 創建兩個 TopoDS_Shape 對象TopoDS_Shape shape1 = CreateShape1();TopoDS_Shape shape2 = CreateShape2();// 使用 BRepAlgoAPI_Common 計算公共部分BRepAlgoAPI_Common common = new BRepAlgoAPI_Common(shape1, shape2);TopoDS_Shape commonShape = common.Shape();// 檢查公共部分是否有效if (IsCommonShapeValid(commonShape)){Console.WriteLine("The shapes have a common part.");}else{Console.WriteLine("The shapes do not have a common part.");}}static TopoDS_Shape CreateShape1(){// 創建第一個形狀BRepPrimAPI_MakeBox boxMaker = new BRepPrimAPI_MakeBox(100, 100, 100);return boxMaker.Shape();}static TopoDS_Shape CreateShape2(){// 創建第二個形狀BRepPrimAPI_MakeSphere sphereMaker = new BRepPrimAPI_MakeSphere(50);return sphereMaker.Shape();}static bool IsCommonShapeValid(TopoDS_Shape commonShape){// 檢查形狀是否為空if (commonShape.IsNull){return false;}// 檢查形狀中的實體數目是否為零TopExp_Explorer explorer = new TopExp_Explorer(commonShape, TopAbs_ShapeEnum.TopAbs_SOLID);if (!explorer.More()){return false;}// 進一步檢查是否有有效的幾何內容BRepBuilderAPI_MakeSolid solidMaker = new BRepBuilderAPI_MakeSolid(commonShape);if (!solidMaker.IsDone()){return false;}return true;}
}

代碼說明

  1. 創建形狀: CreateShape1CreateShape2 函數創建兩個示例形狀,分別是一個長方體和一個球體。

  2. 布爾操作: 使用 BRepAlgoAPI_Common 計算兩個形狀的公共部分。

  3. 驗證公共部分: IsCommonShapeValid 函數用于驗證公共部分是否有效。該函數通過以下幾個步驟進行檢查:

    • 檢查結果形狀是否為空。
    • 使用 TopExp_Explorer 檢查結果形狀中是否有實體(例如,實體、面等)。
    • 使用 BRepBuilderAPI_MakeSolid 進一步檢查是否有有效的幾何內容。

如果以上任何檢查失敗,則返回 false,表示沒有有效的公共部分。

這種方法確保你可以正確判斷兩個形狀是否確實有公共部分,并在沒有公共部分時返回 false

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/22024.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/22024.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/22024.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue3封裝echarts組件---通俗易懂

1、封裝的原因 如果在vue項目中有多個組件或者同個組件多出地方需要不同的圖表,因此自己封裝一個方便多次復用的Mycharts圖表組件。 2、具體步驟: 2.1 安裝echarts pnpm i echarts --save 2.2 新建MyCharts組件 : ~components/echarts/MyCharts.vu…

x264 參考幀管理原理:i_poc 變量

POC H.264中的POC(Picture Order Count)用于表示解碼幀的顯示順序。當視頻碼流中存在B幀時,解碼順序和顯示順序可能不一致,因此需要根據POC來重新排列視頻幀的顯示順序,以避免跳幀或畫面不連貫的問題。 具體來說,POC的作用包括: 重排顯示順序:POC確保即使在存在B幀的情…

基于javacv ffmpeg 使用原生ffmpeg命令

基于javacv ffmpeg 使用原生ffmpeg命令 1. ffmpeg2. ffprobe 相關閱讀: javacv ffmpeg使用筆記 測試過程中,發現ffmpeg-6.0-1.5.9-linux-x86_64.jar 存在問題(ffmpeg原生命令執行失敗),降級到ffmpeg-5.1.2-1.5.8-linux…

RPG Maker MV 踩坑十一 精靈及背景繪制問題

精靈繪制問題 RPG Maker MV戰斗問題入場飛身戰斗背景繪制精靈集及精靈 RPG Maker MV戰斗問題 在RMMV中戰斗是在場景中調用戰斗管理器,通過管理器去操作角色對象行動及精靈的繪制的。 入場飛身 在其中就發現一個問題加載圖片進場時,會偏高,…

Python編程學習第一篇——Python零基礎快速入門(五)—元組(Tuple)操作

Python元組是一種不可變的有序集合,可以存儲多個不同類型的數據。元組使用小括號來表示,其中的元素用逗號分隔開。與列表不同,元組的元素不能被修改、刪除或添加。它的一些常規操作包括元組的創建、訪問、添加、修改、刪除、運算等等&#xf…

電力電子功率模塊在工程應用中測溫NTC的使用

電力電子功率模塊在工程應用中測溫NTC的使用 1.概述2.什么是NTC3.模塊內部NTC3.1 絕緣隔離措施3.2 NTC熱量考慮 4.使用模擬方法測量NTC溫度4.1 分壓電阻大小 5.使用數字方法測量NTC溫度 1.概述 最近做項目的時候突然被問到一個問題。做實驗測溫用的NTC到底怎么用?為…

【Python】超時請求或計算的處理

超時機制 一般應用于處理阻塞問題 場景: 復雜度較大的計算(解析)某個數值、加解密計算等請求中遇到阻塞,避免長時間等待網絡波動,避免長時間請求,浪費時間 1. requests 請求超時機制 reqeusts 依賴中的…

[大師C語言(第十九篇)]C語言函數式編程技術詳解

引言 函數式編程(Functional Programming,FP)是一種編程范式,強調通過使用純函數和不可變數據來編寫代碼。這種范式具有許多優點,如易于測試、可維護性高、并發友好等。盡管C語言被認為是一種過程式編程語言&#xff…

JAVA設計模式-策略模式及在Springboot2.X中寫法

JAVA設計模式-策略模式及在Springboot2.X中寫法 一、經典的策略模式寫法二、Springboot2.X中策略模式寫法 策略模式的定義:策略模式是一種行為型設計模式,定義了一系列算法,并將每個算法封裝起來,使它們可以互相替換 策略模式:在策略模式(Str…

算法 java 排序和查找

排序和查找 冒泡排序(穩定)選擇排序(不穩定)插入排序(穩定)希爾排序(不穩定)歸并排序(穩定)快速排序(不穩定)堆排序計數排序桶排序基數…

YOLOv8+PyQt5海洋船只檢測(可以重新訓練,yolov8模型,從圖像、視頻和攝像頭三種路徑識別檢測)

1.效果視頻:海洋船只檢測yoloV8檢測(https://mbd.pub/o/bread/mbd-ZpaYk55r)_嗶哩嗶哩_bilibili資源包含可視化的海洋船只檢測系統,可對于高空拍攝到的海洋圖片進行輪船檢測,基于最新的YOLOv8訓練的海洋船只檢測模型&a…

多線程知識-11

Runnable 和 Thread 用哪個好 使用Runnable接口的好處是: 避免了單繼承的限制:當你的類已經繼承了另一個類時,你仍然可以實現Runnable接口來創建線程。提高代碼的復用性:你可以將Runnable對象傳遞給多個線程來執行,從…

C++設計模式-策略模式,AI角色動態選擇行為

運行在VS2022,x86,Debug下。 27. 策略模式 策略模式讓算法的選擇與使用獨立開來,使得代碼更靈活、可擴展和易維護。應用:如在游戲開發中,AI角色需要根據環境和條件做出不同的行為,如尋路、攻擊、躲避等。可…

深度解析CSS中為什么會有Stacking Context的概念

CSS中的堆疊上下文(Stacking Context)概念是為了管理和控制網頁元素的重疊順序而引入的。堆疊上下文的引入解決了以下幾個關鍵問題: 層次管理: 在網頁中,多個元素可能會相互重疊,堆疊上下文定義了這些元素的…

01-CompressionWebpackPlugin---提高 Web 應用性能的利器

CompressionWebpackPlugin—提高 Web 應用性能的利器 筆記分享 在現代 Web 開發中,優化資源加載速度是提升用戶體驗的重要環節。減少文件大小可以顯著提升網頁加載速度,從而改善用戶體驗。CompressionWebpackPlugin 是一個強大的 Webpack 插件&#xff…

【安裝筆記-20240529-Windows-Electerm 終端工具】

安裝筆記-系列文章目錄 安裝筆記-20240529-Windows-Electerm 終端工具 文章目錄 安裝筆記-系列文章目錄安裝筆記-20240529-Windows-Electerm 終端工具 前言一、軟件介紹名稱:Wireshark主頁官方介紹功能特性 二、安裝步驟測試版本:electerm-1.39.35-win-…

【藍橋杯】常見的數據結構

🌸個人主頁:Yang-ai-cao 📕系列專欄:藍橋杯 C語言 🍍博學而日參省乎己,知明而行無過矣 目錄 🌸個人主頁:Yang-ai-cao 📕系列專欄:藍橋杯 C語言 &…

Spring項目中Ordered接口的應用:全局過濾器(GlobalFilter)的順序控制

在Spring框架,尤其是Spring Cloud Gateway或Spring WebFlux項目中,Ordered接口扮演著重要的角色,特別是在實現全局過濾器(GlobalFilter)時,用于控制過濾器執行的優先級。下面將介紹如何在Spring項目中使用Ordered接口來管理Global…

【AIoT-Robot】3d hand pose

手語是聾啞人士的主要溝通工具,它是利用手部和身體的動作來傳達意義。雖然手語幫助它的使用者之間互相溝通,但聾啞人士與一般人的溝通卻十分困難,這個溝通障礙是源于大部分人不懂得手語。 1. 手勢&&手語 手勢:手的姿勢 ,通常稱作手勢。它指的是人在運用手臂時,所…

初識springcloud

springcloud eureka eureka的作用 消費者該如何獲取服務提供者具體信息? 服務提供者啟動時向eureka注冊自己的信息,eureka保存這些信息消費者,根據服務名稱向eureka拉取提供者信息 如果有多個服務提供者,消費者該如何選擇? 服務消費者利…