KiCad PCB EDA Suite
Loading...
Searching...
No Matches
convert_shape_list_to_polygon.h File Reference

Go to the source code of this file.

Typedefs

typedef const std::function< void(const wxString &msg, BOARD_ITEM *itemA, BOARD_ITEM *itemB, const VECTOR2I &pt)> OUTLINE_ERROR_HANDLER
 

Functions

bool TestBoardOutlinesGraphicItems (BOARD *aBoard, int aMinDist, OUTLINE_ERROR_HANDLER *aErrorHandler)
 Test a board graphic items on edge cut layer for validity.
 
bool ConvertOutlineToPolygon (std::vector< PCB_SHAPE * > &aShapeList, SHAPE_POLY_SET &aPolygons, int aErrorMax, int aChainingEpsilon, bool aAllowDisjoint, OUTLINE_ERROR_HANDLER *aErrorHandler, bool aAllowUseArcsInPolygons=false)
 Build a polygon set with holes from a PCB_SHAPE list.
 
bool BuildBoardPolygonOutlines (BOARD *aBoard, SHAPE_POLY_SET &aOutlines, int aErrorMax, int aChainingEpsilon, OUTLINE_ERROR_HANDLER *aErrorHandler=nullptr, bool aAllowUseArcsInPolygons=false)
 Extract the board outlines and build a closed polygon from lines, arcs and circle items on edge cut layer.
 
bool BuildFootprintPolygonOutlines (BOARD *aBoard, SHAPE_POLY_SET &aOutlines, int aErrorMax, int aChainingEpsilon, OUTLINE_ERROR_HANDLER *aErrorHandler=nullptr)
 Extract a board outline for a footprint view.
 

Typedef Documentation

◆ OUTLINE_ERROR_HANDLER

typedef const std::function<void( const wxString& msg, BOARD_ITEM* itemA, BOARD_ITEM* itemB, const VECTOR2I& pt )> OUTLINE_ERROR_HANDLER

Definition at line 33 of file convert_shape_list_to_polygon.h.

Function Documentation

◆ BuildBoardPolygonOutlines()

bool BuildBoardPolygonOutlines ( BOARD aBoard,
SHAPE_POLY_SET aOutlines,
int  aErrorMax,
int  aChainingEpsilon,
OUTLINE_ERROR_HANDLER aErrorHandler = nullptr,
bool  aAllowUseArcsInPolygons = false 
)

Extract the board outlines and build a closed polygon from lines, arcs and circle items on edge cut layer.

Any closed outline inside the main outline is a hole. All contours should be closed, i.e. are valid vertices for a closed polygon.

Parameters
aBoardis the board to build outlines.
aOutlineswill contain the outlines ( complex polygons ).
aErrorMaxis the max error distance when polygonizing a curve (internal units).
aChainingEpsilonis the max distance from one endPt to the next startPt (internal units),
aErrorHandler= an optional error handler.
aAllowUseArcsInPolygonsis an option to allow adding arcs in SHAPE_LINE_CHAIN polylines/polygons when building outlines from aShapeList This is mainly for export to STEP files.
Returns
true if success, false if a contour is not valid.

Definition at line 735 of file convert_shape_list_to_polygon.cpp.

References SHAPE_POLY_SET::AddHole(), SHAPE_POLY_SET::Append(), PCB_TYPE_COLLECTOR::Collect(), BOARD::ComputeBoundingBox(), SHAPE_LINE_CHAIN::CPoint(), doConvertOutlineToPolygon(), Edge_Cuts, BOARD::Footprints(), BOARD::GetBoardEdgesBoundingBox(), COLLECTOR::GetCount(), BOX2< Vec >::GetEnd(), EDA_ITEM::GetFlags(), BOX2< Vec >::GetHeight(), PCB_SHAPE::GetLayer(), BOX2< Vec >::GetOrigin(), BOX2< Vec >::GetWidth(), BOX2< Vec >::Inflate(), isCopperOutside(), EDA_IU_SCALE::mmToIU(), SHAPE_POLY_SET::NewOutline(), SHAPE_POLY_SET::Outline(), SHAPE_POLY_SET::OutlineCount(), PCB_SHAPE_T, pcbIUScale, SHAPE_LINE_CHAIN_BASE::PointInside(), SHAPE_POLY_SET::RemoveAllContours(), SKIP_STRUCT, VECTOR2< T >::x, and VECTOR2< T >::y.

Referenced by BOARD::GetBoardPolygonOutlines(), DIALOG_EXPORT_STEP::onExportButton(), and DRC_TEST_PROVIDER_MISC::testOutline().

◆ BuildFootprintPolygonOutlines()

bool BuildFootprintPolygonOutlines ( BOARD aBoard,
SHAPE_POLY_SET aOutlines,
int  aErrorMax,
int  aChainingEpsilon,
OUTLINE_ERROR_HANDLER aErrorHandler = nullptr 
)

Extract a board outline for a footprint view.

  • Incomplete outlines will be closed by joining the end of the outline onto the bounding box (by simply projecting the end points) and then take the area that contains the copper.
  • If all copper lies inside a closed outline, than that outline will be treated as an external board outline.
  • If copper is located outside a closed outline, then that outline will be treated as a hole, and the outer edge will be formed using the bounding box.

Definition at line 979 of file convert_shape_list_to_polygon.cpp.

References SHAPE_POLY_SET::AddHole(), SHAPE_LINE_CHAIN::Append(), SHAPE_POLY_SET::Append(), buildBoardBoundingBoxPoly(), PCB_TYPE_COLLECTOR::Collect(), SEG::Contains(), doConvertOutlineToPolygon(), Edge_Cuts, findEndSegments(), COLLECTOR::GetCount(), BOARD::GetFirstFootprint(), SHAPE_LINE_CHAIN::GetPoint(), SHAPE_POLY_SET::Hole(), SHAPE_POLY_SET::HoleCount(), SEG::IntersectLines(), SHAPE_LINE_CHAIN::IsClosed(), isCopperOutside(), SHAPE_POLY_SET::NewOutline(), SHAPE_POLY_SET::Outline(), SHAPE_POLY_SET::OutlineCount(), PCB_SHAPE_T, SHAPE_LINE_CHAIN::Segment(), SHAPE_LINE_CHAIN::SegmentCount(), SHAPE_LINE_CHAIN::SetClosed(), SKIP_STRUCT, and traceBoardOutline.

Referenced by BOARD_ADAPTER::createBoardPolygon().

◆ ConvertOutlineToPolygon()

bool ConvertOutlineToPolygon ( std::vector< PCB_SHAPE * > &  aShapeList,
SHAPE_POLY_SET aPolygons,
int  aErrorMax,
int  aChainingEpsilon,
bool  aAllowDisjoint,
OUTLINE_ERROR_HANDLER aErrorHandler,
bool  aAllowUseArcsInPolygons = false 
)

Build a polygon set with holes from a PCB_SHAPE list.

The shape list is expected to be one or more top-level closed outlines with zero or more holes in each. Optionally, it can be limited to a single top-level closed outline.

Parameters
aShapeListthe initial list of drawsegments (only lines, circles and arcs).
aPolygonswill contain the complex polygon.
aErrorMaxis the max error distance when polygonizing a curve (internal units).
aChainingEpsilonis the max distance from one endPt to the next startPt (internal units).
aAllowDisjointindicates multiple top-level outlines are allowed.
aErrorHandleris an optional error handler.
aAllowUseArcsInPolygonsis an option to allow adding arcs in SHAPE_LINE_CHAIN polylines/polygons when building outlines from aShapeList This is mainly for export to STEP files.
Returns
true if success, false if a contour is not valid (self intersecting).

Definition at line 590 of file convert_shape_list_to_polygon.cpp.

References doConvertOutlineToPolygon(), and SKIP_STRUCT.

Referenced by FOOTPRINT::BuildCourtyardCaches().

◆ TestBoardOutlinesGraphicItems()

bool TestBoardOutlinesGraphicItems ( BOARD aBoard,
int  aMinDist,
OUTLINE_ERROR_HANDLER aErrorHandler 
)

Test a board graphic items on edge cut layer for validity.

Parameters
aBoardis the board to test.
aMinDistis the min length of a segment (or radius, or diagonal size of a rect) to be valid.
aErrorHandleris an optional error handler.

Definition at line 602 of file convert_shape_list_to_polygon.cpp.

References _, ARC, BEZIER, CIRCLE, PCB_TYPE_COLLECTOR::Collect(), Edge_Cuts, VECTOR2< T >::EuclideanNorm(), BOARD::Footprints(), COLLECTOR::GetCount(), PCB_SHAPE::GetLayer(), PCB_SHAPE_T, POLY, RECTANGLE, SEGMENT, and UNIMPLEMENTED_FOR.

Referenced by DRC_TEST_PROVIDER_MISC::testOutline().