TA的每日心情 | 开心 2021-10-26 15:48 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
不好意思,如下源码,请求大佬查看
axlCmdRegister("clear_RF" `clear_RF)
axlSetAlias( "~R" "clear_RF")
defun( clear_RF ()
clear_RF_form()
axlSetFindFilter(?enabled `("NOALL" "CLINES" "pins" "vias" ) ?onButtons `("CLINES"))
axlClearSelSet()
cline_list=nil
while( axlSelect()
ls=axlGetSelSet()
a=car(ls)
if( a->objType=="path" then
a=nthelem(2 parseString(a->layer "/"))
else
a=nthelem(2 parseString(car(a->startEnd) "/"))
)
if( a=="TOP" then
layer=nthelem(2 layer_list)
axlFormListSelect(fs "layer_name" layer)
else
if( a=="BOTTOM" then
layer=nthelem(length(layer_list)-1 layer_list)
axlFormListSelect(fs "layer_name" layer)
)
)
)
axlFinishEnterFun()
)
defun( clear_RF_form ()
clear_RF_file="./clesr_RF_file.form"
p=outfile(clear_RF_file "w")
if( car(axlDBGetDesignUnits())=="mils" then
s="mil"
else
s="mm"
)
if(p != nil then
fprintf(p "FILE_TYPE=FORM_DEFN VERSION=2\n")
fprintf(p "FORM\n")
fprintf(p "FIXED\n")
fprintf(p " ORT 40 60\n")
fprintf(p "HEADER \"fanout BBvia\"\n")
fprintf(p "TILE\n")
fprintf(p "\n")
fprintf(p "TEXT \"clear layer\"\n")
fprintf(p "TLOC 1 1\n")
fprintf(p "ENDTEXT\n")
fprintf(p "\n")
fprintf(p "FIELD layer_name\n")
fprintf(p "FLOC 9 1\n")
fprintf(p "LIST \" 12 5\n")
fprintf(p "ENDFIELD\n")
fprintf(p "\n")
fprintf(p "GROUP \"clear space\"\n")
fprintf(p "GLOC 1 11\n")
fprintf(p "GSIZE 20 7\n")
fprintf(p "ENDGROUP\n")
fprintf(p "\n")
fprintf(p "FIELD xws\n")
fprintf(p "FLOC 2 13\n")
fprintf(p "CHECKLIST \"1\"\n")
fprintf(p "ENDFIELD\n")
fprintf(p "\n")
fprintf(p "FIELD width\n")
fprintf(p "FLOC 2 15\n")
fprintf(p "CHECKLIST \"1\"\n")
fprintf(p "ENDFIELD\n")
fprintf(p "\n")
fprintf(p "FIELD xw\n")
fprintf(p "FLOC 5 13\n")
fprintf(p "REALFILLIN 6 3\n")
fprintf(p "ENDFIELD\n")
fprintf(p "\n")
fprintf(p "FIELD um\n")
fprintf(p "FLOC 5 15\n")
fprintf(p "REALFILLIN 6 6\n")
fprintf(p "ENDFIELD\n")
fprintf(p "\n")
fprintf(p "TEXT \"W\"\n")
fprintf(p "TLOC 13 13\n")
fprintf(p "ENDTEXT\n")
fprintf(p "\n")
fprintf(p "TEXT \"%s\"\n" s)
fprintf(p "TLOC 13 15\n")
fprintf(p "ENDTEXT\n")
fprintf(p "\n")
fprintf(p "FIELD add_s\n")
fprintf(p "FLOC 1 19\n")
fprintf(p "MENUBUTTON \"add keepout\" 15 3\n")
fprintf(p "ENDFIELD\n")
fprintf(p "\n")
fprintf(p "FIELD add_L\n")
fprintf(p "FLOC 1 22\n")
fprintf(p "MENUBUTTON \"add line keepout\" 15 3\n")
fprintf(p "ENDFIELD\n")
fprintf(p "\n")
fprintf(p "ENDTILE\n")
fprintf(p "ENDFORM\n")
else
printf("ERROR,can't create form file!")
)
close(p)
;axlFormCreate('fs clear_RF_file '("msgLines" 0) 'do_clear_RF nil nil )
axlMiniStatusLoad( 'fs clear_RF_file 'do_clear_RF t )
a=axlLayerGet("ETCH/TOP")
s=""
layer_list=nil
while( s!=nil
s=a->name
layer_list=append1(layer_list s)
s=a->nextLayer
if( s!=nil then
nextlayer=strcat("ETCH" "/" s)
a=axlLayerGet(nextlayer)
)
)
layer=nthelem(2 layer_list)
axlFormListDeleteAll(fs "layer_name")
axlFormSetField(fs "layer_name" layer_list)
axlFormListSelect(fs "layer_name" layer)
axlFormSetField(fs "xws" t)
if( boundp('xs)==nil then
xs="2.0"
xum="0.6"
)
axlFormSetField(fs "xw" xs)
axlFormSetField(fs "um" xum)
axlFormDisplay(fs)
if(isFile( clear_RF_file) then
deleteFile(clear_RF_file)
)
)
defun( do_clear_RF (fs)
case( fs->curField
("layer_name"
layer=fs->curValue
)
("xw"
xs=fs->curValue
)
("um"
xum=fs->curValue
)
("add_s"
if( ls!=nil then
foreach(a ls
polydbid = axlPolyFromDB(a, ?layer car(a->startEnd) ?padType 'REGULAR)
if( axlFormGetField( fs "xws")=="1" then
i=1
while( nthelem(i ls)->objType!="path" && i<length(ls)
i=i+1
)
b=nthelem(i ls)
if( b->objType=="path" then
if( b->isSameWidth==t then
s=car(b->segments)->width*atof(xs)
else
s=0
foreach(c b->segments
if( c->width>s then s=c->width)
)
s=s*atof(xs)
)
else
s=atof(xum)
axlFormSetField(fs "width" t)
)
else
s=atof(xum)
)
exp_poly = (axlPolyExpand polydbid s 'ACU_ARC)
axlDBCreateShape(car(exp_poly) t strcat("ROUTE KEEPOUT/" layer))
sprintf(xum "%f" s)
axlFormSetField(fs "um" xum)
)
)
)
("add_L"
if( length(ls)==2 then
if( car(ls)->objType="pin" && cadr(ls)->objType=="pin" then
s=atof(xum)
polydbid = axlPolyFromDB(car(ls), ?layer car(car(ls)->startEnd) ?padType 'REGULAR)
exp_poly = (axlPolyExpand polydbid s 'NONE)
a=car(exp_poly)->bBox
w1=abs(caar(a)-caadr(a))/2
h1=abs(cadar(a)-cadadr(a))/2
polydbid = axlPolyFromDB(cadr(ls), ?layer car(cadr(ls)->startEnd) ?padType 'REGULAR)
exp_poly = (axlPolyExpand polydbid s 'NONE)
a=car(exp_poly)->bBox
w2=abs(caar(a)-caadr(a))/2
h2=abs(cadar(a)-cadadr(a))/2
s=atof(xum)
a=car(ls)->xy
b=cadr(ls)->xy
if( abs(car(a)-car(b))>abs(cadr(a)-cadr(b)) then
path = axlPathStart( list(car(a):cadr(a)-h1 car(a):cadr(a)+h1 car(b):cadr(b)+h2 car(b):cadr(b)-h2 car(a):cadr(a)-h1 ))
else
path = axlPathStart( list(car(a)-w1:cadr(a) car(a)+w1:cadr(a) car(b)+w2:cadr(b) car(b)-w2:cadr(b) car(a)-w1:cadr(a)))
)
axlDBCreateShape(path t strcat("ROUTE KEEPOUT/" layer))
else
print("Select two pins.")
)
else
print("Select two pins.")
)
)
)
)
|
|