pythonocc进阶学习:分割面/合并面(体)splitter/glue
不同于布尔运算的交并补 ,此处进行的是对已有的图形的快速分割(splitter)以及合并(glue)
分割(splitter)
- 1.以边分面
from OCC.Core.BRepBuilderAPI import BRepBuilderAPI_MakeEdge, BRepBuilderAPI_MakeFace
from OCC.Display.SimpleGui import init_display
from OCC.Core.GEOMAlgo import GEOMAlgo_Splitter
from OCC.Core.gp import gp_Dir, gp_Pln, gp_Pnt
from OCC.Extend.TopologyUtils import TopologyExplorerdisplay, start_display, add_menu, add_function_to_menu = init_display()p0 = gp_Pnt()
vnorm = gp_Dir(1, 0, 0)
pln = gp_Pln(p0, vnorm)
face = BRepBuilderAPI_MakeFace(pln, -10, 10, -10, 10).Face()
p1 = gp_Pnt(0, 0, 15)
p2 = gp_Pnt(0, 0, -15)
edge = BRepBuilderAPI_MakeEdge(p1, p2).Edge()
# 启动分割函数
splitter = GEOMAlgo_Splitter()
# 将面作为参数,将边edge作为分割工具。
splitter.AddArgument(face)
splitter.AddTool(edge)
splitter.Perform()# 显示分割后的面
for shape in TopologyExplorer(splitter.Shape()).faces():display.DisplayShape(shape,update=True)# 显示使用的工具:边
display.DisplayShape(edge,update=True)
start_display()
- 2.以面分面
from OCC.Core.BRepBuilderAPI import BRepBuilderAPI_MakeFace
from OCC.Display.OCCViewer import rgb_color
from OCC.Display.SimpleGui import init_display
from OCC.Core.GEOMAlgo import GEOMAlgo_Splitter
from OCC.Core.gp import gp_Dir, gp_Pln, gp_Pnt
from OCC.Extend.TopologyUtils import TopologyExplorerdisplay, start_display, add_menu, add_function_to_menu = init_display()# 第一个面
p0 = gp_Pnt(5,5,5,)
vnorm = gp_Dir(1, 1, 1)
pln = gp_Pln(p0, vnorm)
face1 = BRepBuilderAPI_MakeFace(pln, -10, 10, -10, 10).Face()
# 工具面
p0 = gp_Pnt(5,5,5,)
vnorm = gp_Dir(1, 1, 0)
pln = gp_Pln(p0, vnorm)
face2 = BRepBuilderAPI_MakeFace(pln, -20, 20, -20, 20).Face()# 启动分割函数
splitter = GEOMAlgo_Splitter()
# 将face1作为参数,将面face2作为分割工具。
splitter.AddArgument(face1)
splitter.AddTool(face2)
splitter.Perform()# 显示分割后的face
for shape in TopologyExplorer(splitter.Shape()).faces():display.DisplayShape(shape,update=True)# 显示使用的工具:面
display.DisplayShape(face2,update=True,transparency=0.5,color=rgb_color(1,0.2,0))
start_display()
- 3.以面分体
from OCC.Core.BRepBuilderAPI import BRepBuilderAPI_MakeEdge, BRepBuilderAPI_MakeFace
from OCC.Core.BRepPrimAPI import BRepPrimAPI_MakeBox
from OCC.Display.OCCViewer import rgb_color
from OCC.Display.SimpleGui import init_display
from OCC.Core.GEOMAlgo import GEOMAlgo_Splitter
from OCC.Core.gp import gp_Dir, gp_Pln, gp_Pnt
from OCC.Extend.TopologyUtils import TopologyExplorerdisplay, start_display, add_menu, add_function_to_menu = init_display()p0 = gp_Pnt(5,5,5,)
vnorm = gp_Dir(1, 1, 1)
pln = gp_Pln(p0, vnorm)
face = BRepBuilderAPI_MakeFace(pln, -10, 10, -10, 10).Face()box=BRepPrimAPI_MakeBox (10,10,10).Shape()
# 启动分割函数
splitter = GEOMAlgo_Splitter()
# 将box作为参数,将面face作为分割工具。
splitter.AddArgument(box)
splitter.AddTool(face)
splitter.Perform()# 显示分割后的体
for shape in TopologyExplorer(splitter.Shape()).solids():display.DisplayShape(shape,update=True)# 显示使用的工具:面
display.DisplayShape(face,update=True,transparency=0.5,color=rgb_color(1,0.2,0))
start_display()
合并(glue)
参考链接:
https://github.com/tpaviot/pythonocc-demos/blob/master/examples/core_topology_glue.py
pythonocc进阶学习:分割面/合并面(体)splitter/glue相关推荐
- pythonocc进阶学习:曲线拟合(插值 Interpolation/逼近 Approximation)
2d 使用插值法: from OCC.Core.Geom2dAPI import Geom2dAPI_Interpolate from OCC.Core.TColgp import TColgp_HA ...
- 一起进阶学习JAVA:MySQL海量数据存储与优化
一起进阶学习JAVA:MySQL海量数据存储与优化 第一部分 分库分表实战及中间件 1.1 背景介绍 1.1.1 背景描述 刚开始我们的系统只用了 单机数据库 随着用户的不断增多,考虑到系统的高可用和 ...
- Redis进阶学习08--多级缓存
Redis进阶学习08--多级缓存 什么是多级缓存 JVM进程缓存 环境准备 docker安装mysql docker安装nginx 反向代理 初识Caffeine 实现JVM进程缓存 需求 实现 L ...
- “IT百科”进阶学习之“虚拟化技术全攻略”
"IT百科"进阶学习之"虚拟化技术全攻略" "虚拟化技术"针对从事IT技术的相关工作人员应该都有听说或者应用过,而对于多数网友朋友们可能没有 ...
- android java服务,Android进阶学习必会:Java Binder中的系统服务
前言 这个知识点是Android进阶学习必须掌握的知识点之一,也是高阶Android架构师经常问到的点.在这里分想给大家,希望对大家的工作和学习有所帮助.喜欢本文的记得点赞关注哦~ 在前面的Andro ...
- opencv进阶学习笔记3:像素运算和图像亮度对比度调节
基础版传送门: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版目录: python+opencv进阶版学习笔记目录(适合有一定基础) 像素运算 要求两张图大小,以及格式(np ...
- inventor(2):设置单位,显示完整工具区/功能区,创建分割面
好久没用inventor了,记录一些重新学习的基本操作 文章目录 1. inventor设置单位为cm 2. inventor显示完整工具区/功能区 3. inventor创建分割面 1. inven ...
- SSM框架学习——Maven进阶学习
her~~llo,我是你们的好朋友Lyle,是名梦想成为计算机大佬的男人! 博客是为了记录自我的学习历程,加强记忆方便复习,如有不足之处还望多多包涵!非常欢迎大家的批评指正. 今天我们进入新的学习环节 ...
- Tensorflow 进阶学习
Tensorflow 进阶学习 学习一个GAN网络代码,在train函数中,出现了如下调用tf的函数: def train(self):update_ops = tf.get_collection(t ...
最新文章
- 感知机中任一点到超平面的距离的公式推导
- DirectX11 With Windows SDK--24 Render-To-Texture(RTT)技术的应用
- 【可持久化线段树】【主席树】[HDU4417]Super Mario
- 【MySQL 】学习笔记千行总结
- 云原生安全助力在线教育三分钟搞定安全防护
- 统计图学习-类型介绍
- Oracle Database Gateway 安装
- 投放屏幕upnp协议探究抓包
- PAT 甲级 1003
- php win 输入密码,win10开机密码输入框不见了怎么办
- 排查DHCP服务器故障
- 使用 AppleALC 驱动黑苹果声卡
- FileUpload1文件上传
- JDK动态代理和CGLIB动态代理介绍
- iOS - Push 通知推送
- 【微信小程序/事件】事件响应的各种场景
- 学习C++可以做什么,可以从事哪些领域的工作
- Learn from Architects of Buildings
- 指标体系构建方法-四个模型
- 【肌电信号】基于matlab GUI脉搏信号分析(去噪+特征提取)【含Matlab源码 862期】