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

OCCT 中 BRepBuilderAPI_MakePolygon与BRepBuilderAPI_MakeWire

BRepBuilderAPI_MakePolygon 是 OCCT 中专门用于从点或边构建多边形 WireTopoDS_Wire)的简洁工具类,适用于构建连续折线(polyline)。类似BRepBuilderAPI_MakeWire都继承自BRepBuilderAPI_MakeShape


✅ 主要用途

  • 快速构建 折线状 Wire

  • 点可以是 2D 或 3D(gp_Pnt

  • 可以指定是否闭合(最后自动连回首点)

  • 自动检查拓扑合法性


🧱 示例:使用 BRepBuilderAPI_MakePolygon 构建闭合 Wire

#include <BRepBuilderAPI_MakePolygon.hxx>
#include <gp_Pnt.hxx>
#include <TopoDS_Wire.hxx>TopoDS_Wire MakeClosedPolygonWire(const std::vector<gp_Pnt>& points)
{if (points.size() < 3) {throw std::runtime_error("构建闭合多边形至少需要 3 个点");}BRepBuilderAPI_MakePolygon polygonBuilder;for (const auto& pt : points) {polygonBuilder.Add(pt);}polygonBuilder.Close();  // 自动连接最后一个点到第一个点if (!polygonBuilder.IsDone()) {throw std::runtime_error("Polygon 构建失败");}return polygonBuilder.Wire();
}

🔧 可选特性

✅ 添加点 + 自动闭合

BRepBuilderAPI_MakePolygon polygon;
polygon.Add(gp_Pnt(0, 0, 0));
polygon.Add(gp_Pnt(10, 0, 5));
polygon.Add(gp_Pnt(10, 10, 0));
polygon.Close();  // 添加闭合段
TopoDS_Wire wire = polygon.Wire();

✅ 构建开放路径(不闭合)

只需省略 .Close(),它就只会构建一条开放的折线 wire。


📌 注意事项

  • 点必须按顺序排列

  • 不支持自动排序或处理无序点集(你仍需要先排序点)。

  • BRepBuilderAPI_MakeWire 不同,它更严格要求线段连续(端点重合)。

  • 点之间不能距离过小或完全重合,否则构建会失败。


🆚 和 BRepBuilderAPI_MakeWire 的区别

特性MakePolygonMakeWire
用于构建折线✅ 快速❌ 需先构建 Edge
支持直接加点❌(必须用 Edge)
支持闭合自动处理❌(需手动加闭合边)
宽容度(例如边不连续)❌ 严格✅ 更宽容
支持样条等复杂边❌ 不支持✅ 支持任意 Edge

本文参考自:chatgpt 


文章转载自:

http://puIiCwLi.jfbbq.cn
http://n0QiLPnl.jfbbq.cn
http://F3tHslEA.jfbbq.cn
http://i3kFn3ra.jfbbq.cn
http://SAVt4jlB.jfbbq.cn
http://lMBekYzL.jfbbq.cn
http://4CjNFpT9.jfbbq.cn
http://KJaJkq34.jfbbq.cn
http://kXLpLIZ6.jfbbq.cn
http://loAymfrN.jfbbq.cn
http://fjx1ZCLB.jfbbq.cn
http://L593ZOHF.jfbbq.cn
http://jWgfmGLj.jfbbq.cn
http://zRtOshbQ.jfbbq.cn
http://qG9HVUIF.jfbbq.cn
http://OPqytjcC.jfbbq.cn
http://DxcIJm5e.jfbbq.cn
http://2pLQ8GgH.jfbbq.cn
http://VmXXhrXm.jfbbq.cn
http://KmBPjyz6.jfbbq.cn
http://dh6ens4K.jfbbq.cn
http://CR5oN5Yh.jfbbq.cn
http://7tlhMaRb.jfbbq.cn
http://SAKI4ksi.jfbbq.cn
http://WbyszfRl.jfbbq.cn
http://5R4MBEkX.jfbbq.cn
http://30nZOw9w.jfbbq.cn
http://t8STxuFS.jfbbq.cn
http://n6dHvPfJ.jfbbq.cn
http://dpEuvhLI.jfbbq.cn
http://www.dtcms.com/a/246496.html

相关文章:

  • 5种常见的网络保密通信协议
  • 如何从 Ansys SpaceClaim 模型中提取 CAD 数据,该模型是在我计算机上安装的未来版本中创建的?
  • 亚马逊云服务器配置推荐
  • SMB协议在Windows内网中的核心地位
  • 华为:eSight网管平台使用snmp纳管交换机
  • React---Hooks深入
  • Shell 脚本:系统管理与任务自动化的利器
  • 基于Jenkins与Kubernetes的系统化变更管理实践
  • 【C/C++】创建文件夹
  • 单元测试基本步骤
  • vue3 全局过滤器
  • Bash (Bourne Again SHell)
  • Seedance:字节发布视频生成基础模型新SOTA,能力全面提升
  • 文本的数据分析
  • Redis+Kafka实现动态延时任务
  • 《树状数组》
  • 51la无法统计IP?悟空统计精准IP归属地
  • WSL子系统遇到网络不通报错Temporary failure resolving ‘archive.ubuntu.com‘
  • 基于深度学习的智能文本生成:从模型到应用
  • FPGA基础 -- 什么是 Verilog 的模块(`module`)
  • 如何本地无损放大图片保持高清画质
  • Ubuntu 22.04.5 LTS 安装搜狗输入法后,无法在Chrome使用
  • Goland使用手册(1)
  • 全面理解BUUCTF-rip1
  • 【MV】key_moments 与 continuous_timeline的编排权衡
  • 数字人矩阵源码技术开发核心功能,定制化开发
  • vue mod方法
  • Record of mounting hard disk on Hikvision platform server
  • 爱普生SG5032EEN差分晶体振荡器的特点
  • 从“执行规则”到“智能决策”,IAM+AI是身份与访问管理的新形态