不同于布尔运算的交并补 ,此处进行的是对已有的图形的快速分割(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相关推荐

  1. pythonocc进阶学习:曲线拟合(插值 Interpolation/逼近 Approximation)

    2d 使用插值法: from OCC.Core.Geom2dAPI import Geom2dAPI_Interpolate from OCC.Core.TColgp import TColgp_HA ...

  2. 一起进阶学习JAVA:MySQL海量数据存储与优化

    一起进阶学习JAVA:MySQL海量数据存储与优化 第一部分 分库分表实战及中间件 1.1 背景介绍 1.1.1 背景描述 刚开始我们的系统只用了 单机数据库 随着用户的不断增多,考虑到系统的高可用和 ...

  3. Redis进阶学习08--多级缓存

    Redis进阶学习08--多级缓存 什么是多级缓存 JVM进程缓存 环境准备 docker安装mysql docker安装nginx 反向代理 初识Caffeine 实现JVM进程缓存 需求 实现 L ...

  4. “IT百科”进阶学习之“虚拟化技术全攻略”

    "IT百科"进阶学习之"虚拟化技术全攻略" "虚拟化技术"针对从事IT技术的相关工作人员应该都有听说或者应用过,而对于多数网友朋友们可能没有 ...

  5. android java服务,Android进阶学习必会:Java Binder中的系统服务

    前言 这个知识点是Android进阶学习必须掌握的知识点之一,也是高阶Android架构师经常问到的点.在这里分想给大家,希望对大家的工作和学习有所帮助.喜欢本文的记得点赞关注哦~ 在前面的Andro ...

  6. opencv进阶学习笔记3:像素运算和图像亮度对比度调节

    基础版传送门: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版目录: python+opencv进阶版学习笔记目录(适合有一定基础) 像素运算 要求两张图大小,以及格式(np ...

  7. inventor(2):设置单位,显示完整工具区/功能区,创建分割面

    好久没用inventor了,记录一些重新学习的基本操作 文章目录 1. inventor设置单位为cm 2. inventor显示完整工具区/功能区 3. inventor创建分割面 1. inven ...

  8. SSM框架学习——Maven进阶学习

    her~~llo,我是你们的好朋友Lyle,是名梦想成为计算机大佬的男人! 博客是为了记录自我的学习历程,加强记忆方便复习,如有不足之处还望多多包涵!非常欢迎大家的批评指正. 今天我们进入新的学习环节 ...

  9. Tensorflow 进阶学习

    Tensorflow 进阶学习 学习一个GAN网络代码,在train函数中,出现了如下调用tf的函数: def train(self):update_ops = tf.get_collection(t ...

最新文章

  1. 感知机中任一点到超平面的距离的公式推导
  2. DirectX11 With Windows SDK--24 Render-To-Texture(RTT)技术的应用
  3. 【可持久化线段树】【主席树】[HDU4417]Super Mario
  4. 【MySQL 】学习笔记千行总结
  5. 云原生安全助力在线教育三分钟搞定安全防护
  6. 统计图学习-类型介绍
  7. Oracle Database Gateway 安装
  8. 投放屏幕upnp协议探究抓包
  9. PAT 甲级 1003
  10. php win 输入密码,win10开机密码输入框不见了怎么办
  11. 排查DHCP服务器故障
  12. 使用 AppleALC 驱动黑苹果声卡
  13. FileUpload1文件上传
  14. JDK动态代理和CGLIB动态代理介绍
  15. iOS - Push 通知推送
  16. 【微信小程序/事件】事件响应的各种场景
  17. 学习C++可以做什么,可以从事哪些领域的工作
  18. Learn from Architects of Buildings
  19. 指标体系构建方法-四个模型
  20. 【肌电信号】基于matlab GUI脉搏信号分析(去噪+特征提取)【含Matlab源码 862期】

热门文章

  1. Docker学习——docker高级
  2. mx-date-picker Uni-app日期时间选择插件,支持更多选择方式(日期范围,日期时间范围)
  3. 漫画版:什么是深度学习?
  4. app读取低功耗蓝牙设备的数据并返回数据
  5. 【运算】超长小学生计算题
  6. 读书笔记 - 《富甲美国》
  7. tar 解压出指定文件到指定目录
  8. 如何制作一个横版格斗过关游戏 Cocos2d-x 2 0 4
  9. 安装ug怎么显示无效服务器名称,ug安装无效的服务器名称
  10. iOS开发——Appcode代码检查分析