Hi Guys
I have an unique problem to solve
Imagine that your BGA ball has multiple dogbones connected to vias (through clines) and a bigger shape of same net overlapes it
w.r.to Allegro this is fine and no DRC or warning since they are same-net, I want to delete/find only those clines which are completly inside the bBox of the larger shape
I already have the logic to narrow down the clines where both the startEnd of clinesegs are inside the bBox of a shape dbid
(I am using axlGeoPointInShape)
and a way to isolate those clinesegs where atleast one point is in the bBox
But check the following link
http://www.codeproject.com/Articles/371959/A-brute-force-approach-to-check-if-a-line-segment
There are situations where the 2 points of a clineseg can just touch the bBox of the shape and it will be flagged as inside the bBox by my routine
Any help or thoughts would be awesome
Here is the procdure I wrote
procedure( _ClInorOutbBox(_sHp _mOde)
prog((_clineList _NotInBox)
_NotInBox = list()
axlClearSelSet()
axlSetFindFilter(?enabled list("noall" "CLINESEGS"), ?onButtons list("noall" "CLINESEGS"))
_clineList = setof(x axlGetSelSet(axlAddSelectBox(_sHp->bBox)) x->net->name == _sHp->net->name)
axlClearSelSet()
case(_mOde
("OUT"
_NotInBox = setof(y x
and(axlGeoPointInShape(xCoord(xCoord(y->startEnd)):yCoord(xCoord(y->startEnd)) _sHp),
axlGeoPointInShape(xCoord(yCoord(y->startEnd)):yCoord(yCoord(y->startEnd)) _sHp)) == nil
)
return(_NotInBox)
);Outside
("IN"
_NotInBox = setof(y x
and(axlGeoPointInShape(xCoord(xCoord(y->startEnd)):yCoord(xCoord(y->startEnd)) _sHp),
axlGeoPointInShape(xCoord(yCoord(y->startEnd)):yCoord(yCoord(y->startEnd)) _sHp)) == t
)
return(_NotInBox)
);Inside
);case
);prog
);procedure