当前位置: 首页 > news >正文

Python_occ 学习记录 | 细观建模(1) - 教程

概念理解

拓扑 vs. 几何

  • 几何:点 gp_Pnt、圆 gp_Circ、平面 gp_Pln 等,描述“形状的数学定义”
  • 拓扑:边 Edge、线框 Wire、面 Face 等,描述“几何的连接关系与方向”

孔洞Face 有一个外环(outer wire)和若干内环(inner wires)。内环的方向与外环相反,就会被视为“孔”。

挖孔

from OCC.Core.gp import gp, gp_Pnt, gp_Circ
from OCC.Core.BRepBuilderAPI import BRepBuilderAPI_MakeEdge, BRepBuilderAPI_MakeWire, BRepBuilderAPI_MakeFace
from OCC.Display.SimpleGui import init_display
# 外矩形 10x10
p00, p10, p11, p01 = gp_Pnt(0,0,0), gp_Pnt(10,0,0), gp_Pnt(10,10,0), gp_Pnt(0,10,0)
outer = BRepBuilderAPI_MakeWire(
BRepBuilderAPI_MakeEdge(p00, p10).Edge(),
BRepBuilderAPI_MakeEdge(p10, p11).Edge(),
BRepBuilderAPI_MakeEdge(p11, p01).Edge(),
BRepBuilderAPI_MakeEdge(p01, p00).Edge()
).Wire()
# 基于外环建面
face_mk = BRepBuilderAPI_MakeFace(outer)
# 加入三个圆孔( Reverse)
ax2 = gp.XOY()
for cx, cy in [(3,3), (7,3), (3,7)]:
circ = gp_Circ(ax2, 1.0) # 在 XOY 平面、半径 1 的圆
circ.SetLocation(gp_Pnt(cx, cy, 0.0)) # 移动圆心到 (cx, cy, 0.0)
w = BRepBuilderAPI_MakeWire(BRepBuilderAPI_MakeEdge(circ).Edge()).Wire()
w.Reverse() # 反向 = 作为“孔”
face_mk.Add(w)
face = face_mk.Shape()
display, start_display, add_menu, add_function_to_menu = init_display()
display.DisplayShape(face, update=True)
start_display()

拉伸

from OCC.Core.gp import gp_Vec
from OCC.Core.BRepPrimAPI import BRepPrimAPI_MakePrism
solid = BRepPrimAPI_MakePrism(face, gp_Vec(0,0,1)).Shape() # 厚度 1
http://www.jsqmd.com/news/117/

相关文章:

  • 深入解析:uv:用 Rust 重写的极速 Python 包管理器
  • Caused by: java.lang.ClassNotFoundException: org.apache.rocketmq.remoting.common.RemotingUtil
  • VAE In JAX【个人记录向】
  • BLE蓝牙配网双模式实操:STA+SoftAP技术原理与避坑指南
  • 【小白也能懂】PyTorch 里的 0.5 到底是干啥的?——一次把 Normalize 讲透! - 教程
  • 第58天:RCE代码amp;命令执行amp;过滤绕过amp;异或无字符amp;无回显方案amp;黑白盒挖掘
  • 057-Web攻防-SSRFDemo源码Gopher项目等
  • 060-WEB攻防-PHP反序列化POP链构造魔术方法流程漏洞触发条件属性修改
  • 059-Web攻防-XXE安全DTD实体复现源码等
  • 061-WEB攻防-PHP反序列化原生类TIPSCVE绕过漏洞属性类型特征
  • 051-Web攻防-文件安全目录安全测试源码等
  • Dilworth定理及其在算法题中的应用
  • error: xxxxx does not have a commit checked out
  • 049-WEB攻防-文件上传存储安全OSS对象分站解析安全解码还原目录执行
  • 云原生周刊:MetalBear 融资、Chaos Mesh 漏洞、Dapr 1.16 与 AI 平台新趋势
  • AI一周资讯 250913-250919
  • 045-WEB攻防-PHP应用SQL二次注入堆叠执行DNS带外功能点黑白盒条件-cnblog
  • linux 命令语句
  • 用 Kotlin 实现英文数字验证码识别
  • UM2003A 一款 200 ~ 960MHz ASK/OOK +18dBm 发射功率的单发射
  • 达芬奇(DaVinci Reslove)字体文件 bugb标签
  • 语音芯片怎样挑选?语音芯片关键选型要点?
  • KingbaseES Schema权限及空间限额
  • UM2003A 一款 200 ~ 960MHz ASK/OOK +18dBm 发射功率的单发射芯片
  • HTTP库开发实战:核心库与httpplus扩展库示例解析
  • QMT交易系统向服务器同步订单丢失问题排查
  • 笔记1
  • 用 Python 和 Tesseract 实现英文数字验证码识别
  • 深入解析:上门按摩平台 “0 抽成 + 无底薪” 双模式拆解:如何让技师主动创收?
  • 实用指南:OSPF特殊区域、路由汇总及其他特性