KiCad PCB EDA Suite
Loading...
Searching...
No Matches
drc_creepage_utils.cpp File Reference

Go to the source code of this file.

Functions

void BuildCreepageBoardEdges (BOARD &aBoard, std::vector< BOARD_ITEM * > &aVector, std::vector< std::unique_ptr< PCB_SHAPE > > &aOwned, const std::set< const BOARD_ITEM * > *aExclude)
 Collect the board-edge items used by the creepage graph.
 
bool segmentIntersectsArc (const VECTOR2I &p1, const VECTOR2I &p2, const VECTOR2I &center, double radius, EDA_ANGLE startAngle, EDA_ANGLE endAngle, std::vector< VECTOR2I > *aIntersectionPoints=nullptr)
 
bool segments_intersect (const VECTOR2I &p1, const VECTOR2I &q1, const VECTOR2I &p2, const VECTOR2I &q2, std::vector< VECTOR2I > &aIntersectionPoints)
 
bool compareShapes (const CREEP_SHAPE *a, const CREEP_SHAPE *b)
 
bool areEquivalent (const CREEP_SHAPE *a, const CREEP_SHAPE *b)
 
VECTOR2I closestPointOnSegment (const VECTOR2I &A, const VECTOR2I &B, const VECTOR2I &P)
 
bool segmentIntersectsCircle (const VECTOR2I &p1, const VECTOR2I &p2, const VECTOR2I &center, double radius, std::vector< VECTOR2I > *aIntersectPoints)
 
bool SegmentIntersectsBoard (const VECTOR2I &aP1, const VECTOR2I &aP2, const std::vector< BOARD_ITEM * > &aBe, const std::vector< const BOARD_ITEM * > &aDontTestAgainst, int aMinGrooveWidth)
 
std::vector< PATH_CONNECTIONGetPaths (CREEP_SHAPE *aS1, CREEP_SHAPE *aS2, double aMaxWeight)
 

Function Documentation

◆ areEquivalent()

bool areEquivalent ( const CREEP_SHAPE * a,
const CREEP_SHAPE * b )

◆ BuildCreepageBoardEdges()

void BuildCreepageBoardEdges ( BOARD & aBoard,
std::vector< BOARD_ITEM * > & aVector,
std::vector< std::unique_ptr< PCB_SHAPE > > & aOwned,
const std::set< const BOARD_ITEM * > * aExclude = nullptr )

Collect the board-edge items used by the creepage graph.

Gathers Edge.Cuts drawings (flattening Bezier curves to owned segments) and NPTH pad holes (circles and oblong slots) into aVector, with transient owned shapes parked in aOwned. When aExclude is non-null, board items owned by any excluded item (for example the pads of a footprint being dragged) are skipped so the caller can treat them as moving geometry.

Definition at line 27 of file drc_creepage_utils.cpp.

References ARC, BEZIER, CIRCLE, BOARD::Drawings(), Edge_Cuts, BOARD::Footprints(), EDA_SHAPE::GetBezierPoints(), BOARD::GetDesignSettings(), BOARD::GetPads(), EDA_SHAPE::GetShape(), BOARD_DESIGN_SETTINGS::m_MaxError, NPTH, VECTOR2< T >::Perpendicular(), radius, EDA_SHAPE::RebuildBezierToSegmentsPointsList(), VECTOR2< T >::Resize(), and SEGMENT.

Referenced by DRC_TEST_PROVIDER_CREEPAGE::CollectBoardEdges(), and CREEPAGE_ENGINE::populateBoardEdgeGraph().

◆ closestPointOnSegment()

VECTOR2I closestPointOnSegment ( const VECTOR2I & A,
const VECTOR2I & B,
const VECTOR2I & P )

◆ compareShapes()

bool compareShapes ( const CREEP_SHAPE * a,
const CREEP_SHAPE * b )

◆ GetPaths()

◆ segmentIntersectsArc()

bool segmentIntersectsArc ( const VECTOR2I & p1,
const VECTOR2I & p2,
const VECTOR2I & center,
double radius,
EDA_ANGLE startAngle,
EDA_ANGLE endAngle,
std::vector< VECTOR2I > * aIntersectionPoints = nullptr )

◆ SegmentIntersectsBoard()

◆ segmentIntersectsCircle()

bool segmentIntersectsCircle ( const VECTOR2I & p1,
const VECTOR2I & p2,
const VECTOR2I & center,
double radius,
std::vector< VECTOR2I > * aIntersectPoints )

Definition at line 1885 of file drc_creepage_utils.cpp.

References center, circle(), and radius.

Referenced by SegmentIntersectsBoard().

◆ segments_intersect()

bool segments_intersect ( const VECTOR2I & p1,
const VECTOR2I & q1,
const VECTOR2I & p2,
const VECTOR2I & q2,
std::vector< VECTOR2I > & aIntersectionPoints )

Definition at line 214 of file drc_creepage_utils.cpp.

Referenced by SegmentIntersectsBoard().