丫丫的灰机 发表于 2023-9-1 17:31:30

运行命令后不能缩放界面,希望能改进一下

markgoob 发表于 2024-1-23 09:40:03

; 帮版主修正了部分码源,怕有人有设自己的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
页: 1 2 3 4 5 6 7 8 9 [10]
查看完整版本: 解决放置BGA去耦电容的烦恼