I am trying to improve the dangling_lines15_5.il routine.
I have a BRD with quite a lot of these dangle.
I want to be able to delete these segs.
So when I am in the list of items (in the form), I added a Delete button.
But, this routine does not select the right seg. Sometimes it selects the good clines instead of the dangling line.
By clicking again in the list on the same seg, I pass through segs. But sometimes it does not select at all the faulty seg.
As the seg to be deleted as a "off-grid" coordinate, is there a way to "axlSingleSelect-something" with a snap, to be sure to select the wanted object?
Dangline lines are often segs within 0.1mils or 0.01mils value...
OK, Due to the big amount of answers, I have to change the way to proceed... ;-)I need another tip:How to simulate a user click in a Form field list with the code?When I click on the "delete" button, I want the selected item to be deleted, the next to be selected.It works, but I have to click on the selected item again to get the code running.How to make that the axlFormListSelect( dl_form "dl_list" l_index + 1) automatically runs the code of the form_action?l_index=dl_form->curValueIntaxlFormSetActiveField( dl_form "dl_list")axlFormListSelect( dl_form "dl_list" l_index + 1)axlFormListDeleteItem( dl_form "dl_list" l_index)
Try using axlSingleSelectBox. Set the bbox size very small.
Not having the dangling_lines15_5 code in front of me I can only guess, but it sounds like it finds stub clines not stub clinesegs. Looping through a list of clinesegs coupled with a testing of results of axlDBGetConnect plus an optional testing on length should get you what you want.HTH,Chris Walterslocal Cadence guru()
Dave: The select box, as small as it is, selects all clines close to it:FUNCTION Find all objects that intersect with the input box and meet the find filter criteria.The problem is with very small clines (close to 0.1mils long or 0.01)I succeeded to extract only the one I want, by parsing selected clines->segments and analyzing startEnd. If it meets the one of the report, I select it. So now it works.report line: Dangling line on "VCC_IN_1" TOP from *(5507.00 3995.87) to (5506.89 3995.76) list1 list2foreach(cline selbox segs=cline->segments firstSeg=nth(0 segs) clineStart=car(firstSeg->startEnd) lastSeg=nth(length(segs)-1 segs) clineEnd=cadr(lastSeg->startEnd) list1=list(xs1 ys1) list2=list(xs2 ys2) if(list(list1 list2) == list(clineStart clineEnd) then dbid_list=append1(dbid_list cline)) );foreachThen, now I still have a problem with the form list.How can I do to select the next item in the list and make the same effects as if I was clicking manually in the list.Actually, the "axlFormListSelect( dl_form "dl_list" dl_form->curValueInt + 1)" code select graphically the next item (it is greyed), but the if I run "dl_form->curValueInt" in skill mode, I am still on the previous one (equal to 0, no zoom to dbid is applied)....If I manually click on the selected item, then dl_form->curValueInt is equal to 1 and the zoom is on the next dbid).
I found a workaround with an axlShell command... but if someone has the solution, I'd like it.itemVal=axlFormListGetItem( dl_form "dl_list" dl_form->curValueInt + 1) axlFormListDeleteItem( dl_form "dl_list" dl_form->curValueInt) axlShell(sprintf(nil "setwindow form.dl_form;FORM dl_form dl_list '%s'" itemVal))
I would try axlFormGetField to get the current selected item in a list control.
I tried this but unsucessfully.... I tried with the index (curValueInt) or the string (curValue).Then I used axlFormListSelect with one or the other.The only thing it does is to put the item in blue (selected) but a dl_form->>?? still shows that curValue and curValueInt are those of the previous selected item...