USD BRep扫掠与曲面生成指南:linear_sweep、旋转曲面、ruled与skin一次讲透

发布时间:2026/10/16 2:41:48
USD BRep扫掠与曲面生成指南:linear_sweep、旋转曲面、ruled与skin一次讲透
【免费下载链接】usd-brepUSD BRep is a standalone C and Python library for NURBS-based boundary representation (BRep) solid modeling项目地址https://gitcode.com/gh_mirrors/us/usd-brep点击查看免费下载USD BRep 是一个基于 NURBS 的边界表示BRep实体建模库同时提供 C 与 Python 接口。它的扫掠sweep与曲面生成模块能让你从一条曲线出发快速生成拉伸体、旋转曲面、直纹面ruled和多截面放样skin等几何体是 CAD 建模工作流中最常用的工具之一。上图为 USD BRep 生态中 BRep 实体的渲染效果示意BrepArray 场景。扫掠操作的最终产物就是这类带完整拓扑关系的精确实体。 一分钟理解扫掠与曲面生成的关系可以把 USD BRep 的曲面生成 API 分成两层曲面层Surface只生成一张精确曲面不封闭成实体。例如create_extrude_surface沿直线拉伸成面、create_sweep_surface沿路径曲线扫出面、create_surface_revolution旋转曲面、create_ruled_surface直纹面、create_skin_surface放样面。实体层Brep在扫掠基础上自动封盖cap生成可用的实体。例如linear_sweep线性拉伸、rotational_sweep旋转扫掠、pipe_sweep管道扫掠、draft_sweep拔模拉伸。Python 端这些函数通过usd_brep包暴露并归入sweeps、surfaces、curves等子模块属性类型声明可参考 usd_brep/init.pyi。C 端对应的核心入口在 SmApiSurfaces.h 与 SmApiBrep.h底层实现位于 source/SMLib/如SmTopologySweep、SmSurfOfRevolution、SmTransSweepGeometry。 linear_sweep最常用的一次拉伸linear_sweep把一个剖面沿直线方向拉伸成实体等价于传统 CAD 里的拉伸Extrudeimport usd_brep as sm box sm.linear_sweep(profile_curves, (0, 0, 1), 10, cap_endsTrue)参数要点详见 SmPySweeps.cpp参数说明curves剖面曲线闭合平面环 → 实体开放曲线 → 片体sheet bodydirection方向向量(dx, dy, dz)模长被忽略只取方向distance实际拉伸长度必须非零cap_ends默认True自动封盖两端False得到开放壳体配套变体也很实用linear_sweep_with_repetitions可以一次生成多个首尾相接的拉伸段draft_sweep/taper_extrude则是带拔模角的拉伸常用于模具设计。 旋转曲面从 create_surface_revolution 到 rotational_sweep旋转曲面由一条母线generatrix绕轴旋转生成是构造球、锥、瓶状零件的基础surface sm.create_surface_revolution(profile, (0, 0, 0), (0, 0, 1), 360)关键行为源码注释见 SmPySurfaces.cppangle_deg传360得到闭合回转面小于 360 则是开口的回转曲面。它返回的是独立曲面而非实体。要生成回转实体如一个完整碗状零件改用rotational_sweep它在扫掠基础上自动加端盖。母线不能穿过旋转轴否则会自交失败——这是新手最常踩的坑。需要多圈连续旋转时用rotational_sweep_with_repetitions。 ruled 直纹面两条曲线之间拉直线create_ruled_surface在两条 B 样条曲线之间做线性插值用直线连接对应参数点形成直纹面ruled surfaceruled sm.create_ruled_surface(curve1, curve2)两个曲线之间的连线是直线因此 ruled 面是精确的双参数面适合做折板斜切壁这类由直线族构成的造型。注意两条曲线的参数化必须兼容否则连接点会错位、曲面会拧麻花。 skin 放样曲面多截面光顺过渡create_skin_surface接受至少两条截面曲线生成穿过所有截面的放样loft/skin曲面skin sm.create_skin_surface([profile1, profile2, profile3])它和 ruled 的关系可以这么记ruled 是两条曲线的特例skin 是三条及以上的一般情况。放样质量同样依赖截面曲线参数化一致。⚠️ 关键技巧先做 make_curves_compatibleruled 与 skin 都要求输入曲线共享节点、参数化一致。USD BRep 提供了专门的工具函数sm.make_curves_compatible([curve1, curve2, curve3]) sm.create_skin_surface([curve1, curve2, curve3])make_curves_compatible会对曲线重新参数化reparameterize让所有截面共享同一套节点。这条建议直接写在 usd_brep/init.pyi 的 docstring 里也是测试用例 test_omni_solid.py 覆盖的核心场景。规则截面来自不同来源时放样前务必先调它。 快速选型对照表需求推荐 API产物剖面拉伸出实体linear_sweepBrep可封盖单条曲线拉伸出面create_extrude_surfaceSurface沿路径曲线扫面create_sweep_surfaceSurface沿路径扫出实体管道pipe_sweepBrep母线旋转出回转面create_surface_revolutionSurface旋转出回转实体rotational_sweepBrep可封盖两曲线间直纹面create_ruled_surfaceSurface多截面放样曲面create_skin_surfaceSurface多截面放样实体create_skin_primitiveBrep平面路径扫掠如方弯管sweep_along_planar_pathBrep其中create_skin_primitive一步生成放样实体create_skin_from_faces则可直接复用已有面上的截面方便在既有模型上继续建模。 实战示例圆角弯管组合建模仓库中的 Examples/PyAPI/round_corner_pipe.py 演示了一个完整的组合工作流用sweep_along_planar_path沿方形路径扫出管体再用linear_sweep生成切割盒、boolean_difference布尔差集完成圆角处理最终校验is_manifold_solid()与体积。它是学习扫掠 布尔 查询配合使用的好范本可直接运行python Examples/PyAPI/round_corner_pipe.py --side 10 --radius 1 进阶阅读与源码路径Python 入门与包安装说明docs/python.rst曲面类 API 绑定与完整 docstringSmPySurfaces.cpp扫掠类 API 绑定linear_sweep、rotational_sweep、curve_sweep等SmPySweeps.cppC 高层曲面工厂函数SmApiSurfaces.hBRep 级扫掠含非流形non_manifold_linear_sweep等高级入口SmApiBrep.h曲线工具make_curves_compatible所在模块SmPyCurves.cpp掌握linear_sweep、rotational_sweep、create_ruled_surface与create_skin_surface这组核心函数再配合make_curves_compatible的参数化技巧你就能覆盖绝大多数 USD BRep 扫掠与曲面生成场景 赞分享【免费下载链接】usd-brepUSD BRep is a standalone C and Python library for NURBS-based boundary representation (BRep) solid modeling项目地址https://gitcode.com/gh_mirrors/us/usd-brep点击查看免费下载相关推荐three.js TubeGeometry 详解沿 3D 曲线扫掠生成管道网格几何体three.js TubeGeometry 详解沿 3D 曲线扫掠生成管道网格几何体 TubeGeometry 是 three.js 提供的一种按曲线路径扫前端3D渲染图形学上一篇终极Sunshine游戏串流指南5步打造你的私人云游戏平台下一篇PostHog Signals Session Replay 侦察兵实战捕获完整性监控与摩擦聚类检测的 Agent 技能详解创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考