pythonocc进阶学习:faces的inner wire与outer wire

总目录 >> PythonOCC入门进阶到实战(目前已更新入门篇、基础篇和进阶篇)

我们在这篇文章中绘制了带有holes的面,

本篇是在读取到外部文件如brep,igs,stp后获取面的性质,寻找面中的wires的正向与逆向

  • 只显示外wire

from OCC.Extend.DataExchange import read_iges_file
from OCC.Core.TopExp import TopExp_Explorer
from OCC.Core.TopAbs import TopAbs_FACE, TopAbs_WIRE
from OCC.Core.TopoDS import topods
from OCC.Core.BRepAdaptor import BRepAdaptor_Surface
from OCC.Display.SimpleGui import init_display
from OCC.Core.ShapeAnalysis import shapeanalysis_OuterWire
from OCC.Display.OCCViewer import rgb_color

# 加载零件模型文件
part = read_iges_file("assets/your_file.IGS")  # 替换为你的零件模型文件路径

# 初始化3D视图
display, start_display, _, _ = init_display()

# 设置颜色
highlight_color = (0.0, 0.0, 1.0)  # 蓝色

# 遍历面
face_explorer = TopExp_Explorer(part, TopAbs_FACE)
while face_explorer.More():
    face = topods.Face(face_explorer.Current())
   

    #获取wire线
    wires=shapeanalysis_OuterWire(face)

    display.DisplayShape(wires, color=rgb_color(0,1,0))

    face_explorer.Next()

# 显示3D视图
start_display()

只显示内wire

### 面的内外环线 https://blog.csdn.net/Mechanicoder/article/details/127477160


from OCC.Extend.DataExchange import read_iges_file
from OCC.Core.TopExp import TopExp_Explorer
from OCC.Core.TopAbs import TopAbs_FACE, TopAbs_WIRE
from OCC.Core.TopoDS import topods
from OCC.Core.BRepAdaptor import BRepAdaptor_Surface
from OCC.Display.SimpleGui import init_display
from OCC.Core.ShapeAnalysis import shapeanalysis_OuterWire
from OCC.Display.OCCViewer import rgb_color

# 加载零件模型文件
part = read_iges_file("assets/yourfile.IGS")  # 替换为你的零件模型文件路径

# 初始化3D视图
display, start_display, _, _ = init_display()

# 设置颜色
highlight_color = (0.0, 0.0, 1.0)  # 蓝色

# 提取内部为空的平面的内部边界线
face_explorer = TopExp_Explorer(part, TopAbs_FACE)
while face_explorer.More():
    face = topods.Face(face_explorer.Current())



    # 目标:内环线
    inner_wires=[]
    # 获取所有线
    wire_explorer = TopExp_Explorer(face, TopAbs_WIRE)
    # 获取外环wire线
    outer_wires = shapeanalysis_OuterWire(face)

    while wire_explorer.More():
        wire = topods.Wire(wire_explorer.Current())
        if not wire.IsSame(outer_wires):
            inner_wires.append(wire)
        wire_explorer.Next()

    display.DisplayShape(inner_wires, color=rgb_color(0,0,1))

    face_explorer.Next()

# 显示3D视图
start_display()

在这里插入图片描述


参考:
1,https://www.cnblogs.com/mechanicoder/p/16878903.html Open Cascade 获取面的内外环线
2. https://www.cnblogs.com/opencascade/p/MakeFaceWithHoles.html

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode热题100】打卡第37天:岛屿数量反转链表

文章目录 【LeetCode热题100】打卡第37天:岛屿数量&反转链表⛅前言 岛屿数量🔒题目🔑题解 反转链表🔒题目🔑题解 【LeetCode热题100】打卡第37天:岛屿数量&反转链表 ⛅前言 大家好,我是…

【Spring core学习二】创建Spring 项目 Spring的存

目录 🌟一、创建最原始的Spring-core项目。 🌟二、怎么往Spring中存取对象? 🌷1、在Spring中存对象 🌷2、通过getBean获取对象的三种方式 🌷3、通过factory方式获取对象 🌟三、对存对象的…

用github的copilot;tmux中进去了> 怎么退出

1、首先要学籍认证 (前提:(241条消息) Copilot使用的关卡——GitHub教育认证方法和注意事项_github教师认证_石去皿的博客-CSDN博客) 网址:Are you a student? - GitHub Education (241条消息) GitHub学生认证,可…

微信小程序开发学习之页面导航(声明式导航和编程式导航)

微信小程序之页面导航(声明式导航和编程式导航) 1.0 页面导航1.1. 声明式导航1.1.1. 导航到tabBar页面1.1.2. 导航到非tabBar页面1.1.3. 后退导航 1.2. 编程式导航1.2.1. 导航到tabBar页面1.2.2. 导航到非tabBar页面1.2.3. 后退导航 1.3. 导航传参1.3.1.…

开发工具篇第25讲:阿里云MFA绑定Chrome浏览器Authenticator插件

开发工具篇第25讲:阿里云MFA绑定Chrome浏览器Authenticator插件 本文是开发工具篇第25讲,登录阿里云旗下产品时,需要使用mfa登录,每次如果要用手机看mfa码很麻烦, Chrome浏览器提供了一个快捷的登录方法,可…

Mac上提取应用APP的LOGO

1、找到想提取LOGO的应用,右键「显示包内容」 2、 双击【Contents】文件夹,再双击【Resources】文件夹 3、双击图标打开,选择最清晰的一帧,右键【导出为】 4、选择保存位置,格式注意选择常见格式,如png

通过git管理远程gitee仓库(push、pull)

通过git管理远程gitee仓库(push、pull) Git:是一种分布式版本控制系统,用于跟踪和管理软件开发项目的源代码和文件。它可以记录文件的修改历史,允许多人协同工作,并提供了撤销更改、分支管理、合并代码等功能。 Git最初…

一、对象的概念(2)

本章概要 复用继承 “是一个”与“像是一个”的关系 多态 复用 一个类经创建和测试后,理应是可复用的。然而很多时候,由于程序员没有足够的编程经验和远见,我们的代码复用性并不强。 代码和设计方案的复用性是面向对象程序设计的优点之一…

Spring Boot 中的 @Query 注解是什么,原理,如何使用

Spring Boot 中的 Query 注解是什么,原理,如何使用 在 Spring Boot 中,Query 注解是一个非常常用的注解,用于定义自定义查询语句。本文将介绍 Query 注解的作用、原理和使用方法。 1. Query 注解的作用 在 Spring Boot 中&#…

Linux——进程信号的发送

目录 一.信号发送的概念 首先来讲几个发送术语: 它有三种情况: 注意: 二.信号在内核中的表示示意图 三.信号捕捉 所以总结一下: 此时,会出现这样一个疑问:操作系统是如何得知现在被执行的进程是用户态…

【Spring Cloud Alibaba Seata 处理分布式事务】——每天一点小知识

💧 S p r i n g C l o u d A l i b a b a S e a t a 处理分布式事务 \color{#FF1493}{Spring Cloud Alibaba Seata 处理分布式事务} SpringCloudAlibabaSeata处理分布式事务💧 🌷 仰望天空,妳我亦是行人.✨ &#x1f98…

SpringCloud(4) Eureka 如何主动下线服务节点

目录 1.直接停掉客户端服务2.发送HTTP请求1)调用DELETE接口2)调用状态变更接口 3.客户端主动通知注册中心下线1)代码示例2)补充3)测试 一共有三种从 Eureka 注册中心剔除服务的方式: 1.直接停掉客户端服务…

Unity Obfuscator

官方仓库 学习日期:2023-07-13(防止后续仓库特性或功能更新无对比时间) 目标:本文介绍使用此github库,混淆unity项目的代码,在ILSpy中无法正确反编译。 一、说明 官方说明 配置界面 Features: ControlFlow…

【Spring Boot】单元测试

单元测试 单元测试在日常项目开发中必不可少,Spring Boot提供了完善的单元测试框架和工具用于测试开发的应用。接下来介绍Spring Boot为单元测试提供了哪些支持,以及如何在Spring Boot项目中进行单元测试。 1.Spring Boot集成单元测试 单元测试主要用…

LabVIEW FPGA利用响应式数字电子板快速开发空间应用程序

LabVIEW FPGA利用响应式数字电子板快速开发空间应用程序 与传统的基于文本的语言相比,LabVIEW的编程和设计已被证明可以缩短开发时间。各种研究表明,生产率的提高在3到10倍之间。LabVIEW通过图形语言、集成开发环境和多个编译器的组合来实现这一点。 图…

Django_发送邮件

目录 一、开启SMTP服务并获取授权码 二、在Django的配置文件中添加邮箱服务配置 三、发送邮箱代码 源码等资料获取方法 使用django邮箱功能需要搭建smtp服务器,如果没有,可以使用第三方smtp服务器。 本文以第三方QQ邮箱服务器演示如何使用python的s…

接口的幂等性如何设计

前言 所谓幂等: 多次调用方法或者接口不会改变业务状态,可以保证重复调用的结果和单次调用的结果一致。 我们在开发中主要操作也就是CURD,其中读取操作和删除操作是天然幂等的,我们所关心的就是创建操作、更新操作。 创建操作一定是非幂等的因为要涉及…

SpringBoot 如何使用 MockMvc 进行 Web 集成测试

SpringBoot 如何使用 MockMvc 进行 Web 集成测试 介绍 SpringBoot 是一个流行的 Java Web 开发框架,它提供了一些强大的工具和库,使得开发 Web 应用程序变得更加容易。其中之一是 MockMvc,它提供了一种测试 SpringBoot Web 应用程序的方式&…

(EMQX)STM32L+BC20+MQTT协议传输温湿度,ADC,电压,GPS数据到EMQX

1、材料准备 准备以下材料 2、设备连接 2.1 插入物联网卡,天线 首先把BC20核心板从开发板上拆下来 然后将物联卡放置在BC20核心板内 物联卡放置完成将BC20核心板重新插入到开发板内(注意不要弄错方向) 同时接入天线 2.2 连接ST-Link仿真…

RabbitMQ系列(27)--RabbitMQ使用Federation Exchange(联邦交换机)解决异地访问延迟问题

前言: (broker北京)、(broker深圳)彼此之间相距甚远,网络延迟是一个不得不面对的问题。有一个在北京的业务(Client北京)需要连接(broker北京),向其中的交换器exchangeA发送消息,此时的网络延迟很小,(Client北京)可以迅速将消息发…