45 lineWidthA = static_cast<const LINE*>(
this )->Width() / 2;
48 lineWidthB = static_cast<const LINE*>( aOther )->Width() / 2;
82 const ZONE* zoneA = dynamic_cast<ZONE*>(
Parent() );
83 const ZONE* zoneB = dynamic_cast<ZONE*>( aOther->
Parent() );
85 if( zoneA && aOther->
Parent() && !checkKeepout( zoneA, aOther->
Parent() ) )
88 if( zoneB &&
Parent() && !checkKeepout( zoneB,
Parent() ) )
95 if( holeA && holeA->
Collide( shapeB, holeClearance + lineWidthB ) )
101 if( holeB && holeB->
Collide( shapeA, holeClearance + lineWidthA ) )
111 if( holeA->
Collide( holeB, holeToHoleClearance ) )
127 return shapeA->
Collide( shapeB, clearance + lineWidthA + lineWidthB );
142 const LINE* line = static_cast<const LINE*>(
this );
144 if( line->
EndsWithVia() && line->
Via().collideSimple( aOther, aNode, aDifferentNetsOnly ) )
150 const LINE* line = static_cast<const LINE*>( aOther );
152 if( line->
EndsWithVia() && line->
Via().collideSimple(
this, aNode, aDifferentNetsOnly ) )
164 case ARC_T:
return "arc";
165 case LINE_T:
return "line";
167 case VIA_T:
return "via";
171 default:
return "unknown";
VECTOR2_TRAITS< int >::extended_type extended_type
Base class for PNS router board items.
virtual const SHAPE * Hole() const
virtual int Layer() const
Keep the router "world" - i.e.
bool GetDoNotAllowFootprints() const
virtual void Mark(int aMarker) const
int GetHoleToHoleClearance(const ITEM *aA, const ITEM *aB, bool aUseClearanceEpsilon=true) const
Return the pre-set worst case clearance between any pair of items.
int GetClearance(const ITEM *aA, const ITEM *aB, bool aUseClearanceEpsilon=true) const
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
bool IsMultilayer() const
bool GetDoNotAllowVias() const
class PCB_ARC, an arc track segment on a copper layer
bool Overlaps(const LAYER_RANGE &aOther) const
BOARD_ITEM * Parent() const
class PAD, a pad in a footprint
Represents a track on a PCB, connecting two non-trivial joints (that is, vias, pads,...
virtual bool Collide(const VECTOR2I &aP, int aClearance=0, int *aActual=nullptr, VECTOR2I *aLocation=nullptr) const
Check if the boundary of shape (this) lies closer to the point aP than aClearance,...
int GetHoleClearance(const ITEM *aA, const ITEM *aB, bool aUseClearanceEpsilon=true) const
search types array terminator (End Of Types)
KICAD_T
The set of class identification values stored in EDA_ITEM::m_structType.
class PCB_TRACK, a track segment (segment on a copper layer)
VECTOR2I::extended_type ecoord
std::string KindStr() const
Returns the kind of the item, as string.
bool GetDoNotAllowPads() const
virtual const SHAPE * Shape() const
Return the geometrical shape of the item.
bool GetDoNotAllowTracks() const
bool Collide(const ITEM *aOther, const NODE *aNode, bool aDifferentNetsOnly=true) const
Check for a collision (clearance violation) with between us and item aOther.
Handle a list of polygons defining a copper zone.
An abstract shape on 2D plane.
virtual bool IsFlashedOnLayer(const PNS::ITEM *aItem, int aLayer) const =0
class PCB_VIA, a via (like a track segment on a copper layer)
Push and Shove diff pair dimensions (gap) settings dialog.
ROUTER_IFACE * GetInterface() const
static ROUTER * GetInstance()
const LAYER_RANGE & Layers() const
virtual int Marker() const
bool collideSimple(const ITEM *aOther, const NODE *aNode, bool aDifferentNetsOnly) const
BOARD_ITEM_CONTAINER * GetParentFootprint() const