首页/文章/ 详情

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

11月前浏览292

概念理解

拓扑 vs. 几何

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

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

挖孔

|500  
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()

拉伸

|500  
from OCC.Core.gp import gp_Vec
from OCC.Core.BRepPrimAPI import BRepPrimAPI_MakePris m
solid = BRepPrimAPI_MakePris m(face, gp_Vec(0,0,1)).Shape()  # 厚度 1


来源:易木木响叮当
python
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-09-10
最近编辑:11月前
易木木响叮当
硕士 有限元爱好者
获赞 278粉丝 412文章 449课程 2
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈