AllegroはSkill言語でNETに基づいてネットワーク下のすべての穴を通る座標情報を取得する


コードは次のとおりです.
defun(GetViaCoordinate (NetName)
axlClearSelSet()
axlSetFindFilter( ?enabled (list "nets" ) ?onButtons (list "nets"))
;p = axlSelectByName("NET" "DDR_B4420_MDQ0" t)
p = axlSelectByName("NET" NetName t)
parentGroups = car(p)->parentGroups
branches = car(p)->branches
branches_length = length(branches)
name = car(p)->name;   
nBranches = car(p)->nBranches;   
objType = car(p)->objType;NET
readOnly = car(p)->readOnly;t nil
prop = car(p)->prop;    
pinpair = car(p)->pinpair
ratT = car(p)->ratT
ratsnest= car(p)->ratsnest
ratsnestOn = car(p)->ratsnestOn;t nil
bus = car(p)->bus
diffpair = car(p)->diffpair
xnet = car(p)->xnet
scheduleLocked= car(p)->scheduleLocked
isBundled = car(p)->isBundled
rpd = car(p)->rpd
unconnected = car(p)->unconnected
unplaced= car(p)->unplaced
;defvar(via_list)
let((my_via_table)
via_table = makeTable("table")
for(i 0 nBranches-1
children = nth(i branches)->children
children_len = length(children)
axlUIWPrint(nil "children_len=%d" children_len)
for(j 0 children_len-1
length_via_table=length(via_table) 
axlUIWPrint(nil "length_via_table=%d" length_via_table) 
if(nth(j children)->name=="VIA8D16"
via_table[length_via_table] = nth(j children)->xy
)

)
)
my_via_table = via_table
)

)

使用方法:
1.新規*il、上記のコードをコピーして入ります.
2.Allegroインタフェースskill load(「*.ilのフルネーム」)を実行
3.Allegroコマンドインタフェースskillと入力:ViaCoord=GetViaCoordinate(「DDR_B 4420_MDQ 0」)と入力し、DDR_B4420_MDQ 0はネットワーク名で、ViaCoord[0]、ViaCoord[1]...これらの穴を通る座標が含まれています.