如何在 OpenCASCADE 中从两个 gp_Pnt 创建 TopoDS_Edge
OCCUtils 提供了在两点之间创建 TopoDS_Edge(即直线)的便捷函数:
edge_from_points_occ.cpp
#include <occutils/Edge.hxx>
using namespace OCCUtils;
gp_Pnt p1 = /* ... */;
gp_Pnt p2 = /* ... */;
TopoDS_Edge edge = Edge::FromPoints(p1, p2);如果你想手动操作(即不使用 OCCUtils),使用此代码片段
makeedge_manual.cpp
TopoDS_Edge edge = BRepBuilderAPI_MakeEdge(p1, p2).Edge();但请注意你还需要处理 p1 == p2 的情况,即
check_points_equal.cpp
if (p1.Distance(p2) <= Precision::Confusion()) {
// 在这种情况下不要尝试创建 Edge
}OCCUtil 的 Edge::FromPoints 通过返回 TopoDS_Edge() 即 edge.IsNull() == true 的 TopoDS_Edge 来处理这种情况。
Check out similar posts by category:
C/C++, OpenCASCADE
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow