New Features
- Open/Closed TriangleShells: ability to implement specific algorithm to triangles
- Block: faces_center (calculate directly point in the middle of the faces)
- Circle2D: split_by_line
- BoundingRectangle: bounds, plot, area, center, b_rectangle_intersection, is_inside_b_rectangle, point_belongs, intersection_area, distance_to_b_rectangle, distance_to_point
- Cylinder: random_point_inside, interference_volume_with_other_cylinder, lhs_points_inside
- CylindricalSurface3D: line_intersections, linesegment_intersections, plane_intersection
- Line2D: point_distance
- Line3D: to_2d
- Line3D: skew_to (verifies if two Line3D are skew)
- LineSegment3D: line_interserctions
- ArcEllipse3D: discretization_points
- FullArc3D: linesegment_intersections
- Line: sort_points_along_line
- Line2D: point_belongs
- ArcEllipse2D: length, point_belongs, abscissa, bounding_rectangle, straight_line_area, discretization_points, reverse
Fixed
- Contour2D: point_belongs
- BsplineCurve: abscissa (use different start point between 0 and length)
- Arc3D: plot
- Cylinder: point_belongs
- FullArc3D: plot (use discretization_points instead of discretise)
- Face3D: line_intersections: consider borders
- STL: from stream (use BinaryFile and StringFile instead of io.BinaryIO and FileIO)
- Step: from stream (use BinaryFile instead of io.BinaryIO)
- Contour: is_overlapping (consider intersecting_points is empty)
- LineSegment2D: to_wire (use discretization_points instead of discretise)
- ArcEllipse2D: to_3d
- Fix boolean operations when faces are 100% coincident
- Fix some to_step methods from edges.py and faces.py
Performance improvements
- Avoid unneeded bbox computation
Refactorings
- cleanup of ClosedShell (double methods with Openshells)
- LineSegment3D: intersections
- Line2D: sort_points_along_line
Unittests
- PlaneFace3D: line_intersections
- BsplineCurve: abscissa
- Circle2D: split_by_line
- BoundingRectangle: area, center, intersection, is_inside, point_belongs, intersection_area, distance_to_point, distance_to_b_rectangle
- Cylinder: point_belongs, random_point_inside, interference_volume_with_other_cylinder, min_distance_to_other_cylinder, is_intersecting_other_cylinder, lhs_points_inside
- CylindricalFace3D: linesegment_intersections
- CylindricalSurface3D: line_intersections
- Line3D: line_distance
- Line3D: skew_to
- Line3D: intersections
- LineSegment3D: line_intersections
- LineSegment3D: linesegment_intersections
- Contour: is_overlapping
- LineSegment2D: line_intersections
- ArcEllipse3D: discretization_points
- FullArc3D: linesegment_intersections
- Line2D: sort_points_along_line
- Line3D: sort_points_along_line
- ArcEllipse2D: length, point_belongs, abscissa, bounding_rectangle, straight_line_area, discretization_points, reverse