45 lineWidthA =
static_cast<const LINE*
>( this )->Width() / 2;
48 lineWidthB =
static_cast<const LINE*
>( aOther )->Width() / 2;
87 if( zoneA && aOther->
Parent() && !checkKeepout( zoneA, aOther->
Parent() ) )
90 if( zoneB &&
Parent() && !checkKeepout( zoneB,
Parent() ) )
97 || ( thisNotFlashed || otherNotFlashed ) )
98 && ( holeA || holeB ) )
102 if( holeClearance >= 0 && holeA && holeA->
Collide( shapeB, holeClearance + lineWidthB ) )
108 if( holeB && holeClearance >= 0 && holeB->
Collide( shapeA, holeClearance + lineWidthA ) )
118 if( holeToHoleClearance >= 0 && holeA->
Collide( holeB, holeToHoleClearance ) )
130 if( !
Layers().IsMultilayer() && otherNotFlashed )
133 int clearance = aOverrideClearance >= 0 ? aOverrideClearance : aNode->
GetClearance(
this, aOther );
140 if( checkCastellation || checkNetTie )
146 if( shapeA->
Collide( shapeB, clearance + lineWidthA, &actual, &pos ) )
160 if( shapeA->
Collide( shapeB, clearance + lineWidthA + lineWidthB ) )
171 if(
collideSimple( aOther, aNode, aDifferentNetsOnly, aOverrideClearance ) )
180 const LINE* line =
static_cast<const LINE*
>( this );
188 const LINE* line =
static_cast<const LINE*
>( aOther );
202 case ARC_T:
return "arc";
203 case LINE_T:
return "line";
205 case VIA_T:
return "via";
209 default:
return "unknown";
220 std::stringstream ss;
222 ss <<
"net " <<
m_net <<
" ";
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
virtual PCB_LAYER_ID GetLayer() const
Return the primary layer this item is on.
BOARD_ITEM_CONTAINER * GetParentFootprint() const
bool IsMultilayer() const
bool Overlaps(const LAYER_RANGE &aOther) const
Base class for PNS router board items.
BOARD_ITEM * Parent() const
virtual const std::string Format() const
bool Collide(const ITEM *aOther, const NODE *aNode, bool aDifferentNetsOnly=true, int aOverrideClearance=-1) const
Check for a collision (clearance violation) with between us and item aOther.
virtual const SHAPE * Hole() const
virtual int Layer() const
virtual const SHAPE * Shape() const
Return the geometrical shape of the item.
const LAYER_RANGE & Layers() const
bool collideSimple(const ITEM *aOther, const NODE *aNode, bool aDifferentNetsOnly, int aOverrideClearance) const
std::string KindStr() const
Returns the kind of the item, as string.
virtual void Mark(int aMarker) const
virtual int Marker() const
Represents a track on a PCB, connecting two non-trivial joints (that is, vias, pads,...
Keep the router "world" - i.e.
COLLISION_QUERY_SCOPE GetCollisionQueryScope() const
int GetClearance(const ITEM *aA, const ITEM *aB, bool aUseClearanceEpsilon=true) const
@ CQS_ALL_RULES
check all rules
bool QueryEdgeExclusions(const VECTOR2I &aPos) 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.
RULE_RESOLVER * GetRuleResolver() const
Return the number of joints.
int GetHoleClearance(const ITEM *aA, const ITEM *aB, bool aUseClearanceEpsilon=true) const
virtual bool IsFlashedOnLayer(const PNS::ITEM *aItem, int aLayer) const =0
ROUTER_IFACE * GetInterface() const
static ROUTER * GetInstance()
virtual bool IsNetTieExclusion(const PNS::ITEM *aItem, const VECTOR2I &aCollisionPos, const PNS::ITEM *aCollidingItem)=0
virtual bool IsInNetTie(const ITEM *aA)=0
An abstract shape on 2D plane.
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,...
VECTOR2_TRAITS< int >::extended_type extended_type
Handle a list of polygons defining a copper zone.
bool GetDoNotAllowVias() const
bool GetDoNotAllowPads() const
bool GetDoNotAllowTracks() const
bool GetDoNotAllowFootprints() const
Push and Shove diff pair dimensions (gap) settings dialog.
VECTOR2I::extended_type ecoord
@ PCB_VIA_T
class PCB_VIA, a via (like a track segment on a copper layer)
@ PCB_PAD_T
class PAD, a pad in a footprint
@ PCB_ARC_T
class PCB_ARC, an arc track segment on a copper layer
@ PCB_TRACE_T
class PCB_TRACK, a track segment (segment on a copper layer)