运行命令后不能缩放界面,希望能改进一下
; 帮版主修正了部分码源,怕有人有设自己的env快捷键 这边就移除了相关代码 (快捷键qp)
axlCmdRegister("qp" 'Quick_place ?cmdType "general")
procedure(Quick_place()
formPath = "./snap.form"
pform = outfile( formPath "w")
fprintf(pform "FILE_TYPE=FORM_DEFN VERSION=2\n")
fprintf(pform "FORM AUTOGREYTEXT\n")
fprintf(pform "FIXED\n")
fprintf(pform "PORT 35 10\n")
fprintf(pform strcat("HEADER " "\"" "Quick Place" "\"\n"))
fprintf(pform "TILE\n")
fprintf(pform "FIELD sel\n")
fprintf(pform "FLOC 2 1\n")
fprintf(pform strcat("MENUBUTTON " "\"" "1.Select Area" "\"" " 14 4\n"))
fprintf(pform "ENDFIELD\n")
fprintf(pform "FIELD pic\n")
fprintf(pform "FLOC 18 1\n")
fprintf(pform strcat("MENUBUTTON " "\"" "2.Place each" "\"" " 14 4\n"))
fprintf(pform "ENDFIELD\n")
; fprintf(pform strcat("TEXT " "\"" "Snap to Pin: " "\"\n"))
; fprintf(pform "TLOC 2 5\n")
; fprintf(pform "ENDTEXT\n")
; fprintf(pform strcat("TEXT " "\"" "Pick symbols:" "\"\n"))
; fprintf(pform "TLOC 2 7\n")
; fprintf(pform "ENDTEXT\n")
fprintf(pform "ENDTILE\n")
fprintf(pform "ENDFORM\n")
close(pform)
snp = axlFormCreate( (gensym) "snap.form" '(e inner) 'snpCB t nil)
axlFormDisplay(snp)
deleteFile(formPath)
formove = nil
);defun
defun(snpCB (snp)
func_list = axlGetFunckey(nil)
func_list = append( axlGetAlias(nil) func_list)
case(snp->curField
("sel" axlUIWPrint(snp "select box") SelectSym());case 1
("pic" if(!formove then
axlUIWPrint(snp "Select symbols by box")
else
if(I != 0 then
box = axlLastPick(nil)
lastbox = axlWindowBoxGet()
)
place_each()
);if
);case 2
);case
;when(snp->doneState == 3
;axlSetFunckey("F11" "zoom in" t);吸附命令
;axlSetFunckey("F12" "zoom out" t);放置命令
;);when
);defun
defun(SelectSym ()
I = 0;
axlClearSelSet()
axlSetFindFilter(?enabled list( "noall" "symbols" ) ?onButtons list( "noall" "symbols"))
;axlSelect(?groupMode nil ?prompt nil)
axlAddSelectBox()
syms = axlGetSelSet()
formove = nil
foreach(db syms
formove = append1(formove db->refdes)
);foreach
axlUIWPrint(snp sprintf(nil "%d symbols are ready for placing!" length(syms)))
);defun
defun(place_each ()
prog(()
unless(formove return("select box first"))
if(I != 0 then
box = axlLastPick(nil)
lastbox = axlWindowBoxGet()
)
active = car(formove)
formove = cdr(formove)
if(active then
axlShell("move")
axlShell("setwindow form.mini")
axlShell("FORM mini rotate_point Sym Pin # ")
axlShell("setwindow form.find")
axlShell("FORM find name_type Symbol (or Pin)")
axlShell(sprintf(nil "FORM find find_name %s" active))
axlShell("setwindow pcb")
when(I != 0
axlWindowBoxSet(lastbox)
);when
I++;
axlUIWPrint(snp sprintf(nil "%d/%d symbols statue!" I ,length(syms)))
);if
);prog
);defun
defun(snap ()
cursor = axlCursorGet(nil)
axlShell(sprintf(nil "prepopup %L" cursor))
axlShell("pop dyn_option_select 'Snap pick to@:@Pin'")
);defun