OCCUtils provides a conveniece function for creating a TopoDS_Edge between two points (i.e. a straight line):
#include <occutils/Edge.hxx> using namespace OCCUtils; gp_Pnt p1 = /* ... */; gp_Pnt p2 = /* ... */; TopoDS_Edge edge = Edge::FromPoints(p1, p2);
In case you want to do it manually (i.e. without OCCUtils), use this snippet
TopoDS_Edge edge = BRepBuilderAPI_MakeEdge(p1, p2).Edge();
but be aware that you also have to handle the case of p1 == p2
i.e.
if (p1.Distance(p2) <= Precision::Confusion()) { // Don't try to create an Edge in this case }
OCCUtil’s Edge::FromPoints
handles this case by returning TopoDS_Edge()
i.e. a TopoDS_Edge
where edge.IsNull() == true
.