def divide_edge_by_nr_of_points(edg, n_pts): '''returns a nested list of parameters and points on the edge at the requested interval [(param, gp_Pnt),...] ''' curve_adapt = BRepAdaptor_Curve(edg) _lbound, _ubound = curve_adapt.FirstParameter(), curve_adapt.LastParameter( ) if n_pts <= 1: # minimally two points or a Standard_ConstructionError is raised raise AssertionError("minimally 2 points required") npts = GCPnts_UniformAbscissa(curve_adapt, n_pts, _lbound, _ubound) if npts.IsDone(): tmp = [] for i in range(1, npts.NbPoints() + 1): param = npts.Parameter(i) pnt = curve_adapt.Value(param) tmp.append((param, pnt)) return tmp
def length_from_edge(edg): curve_adapt = BRepAdaptor_Curve(edg) length = GCPnts_AbscissaPoint().Length(curve_adapt, curve_adapt.FirstParameter(), curve_adapt.LastParameter(), 1e-6) return length