Proceduri automate și autolisp

Descărcați procedurile AutoLISP la pornirea programului și executați comenzi sau funcții în timpul lucrului cu desenul.

Programele bazate pe AutoCAD încarcă automat conținutul a trei fișiere definite de utilizator, acad.lsp. acaddoc.lsp și fișierul MNL asociat fișierului actual de adaptare.

În mod implicit, fișierul acad.lsp este descărcat o singură dată la începutul sesiunii de program nou, în timp ce fișierul acaddoc.lsp este descărcat pentru fiecare document (sau desen). Aceasta vă permite să asociați descărcarea fișierului acad.lsp cu lansarea aplicației și să încărcați fișierul acaddoc.lsp cu deschiderea documentului (sau desenului). Metoda de încărcare descrisă poate fi modificată prin modificarea valorii variabilei de sistem ACADLSPASDOC.

Dacă unul dintre aceste fișiere definește o funcție specială S :: STARTUP. se execută automat imediat după inițializarea desenului. În plus, lista de aplicații pentru descărcare automată poate fi selectată utilizând parametrul ZAGGRIL. În acest din urmă caz, nu este necesară editarea fișierelor.

Fișierele de pornire acad.lsp și acaddoc.lsp nu sunt livrate împreună cu software-ul bazat pe AutoCAD. Dacă este necesar, utilizatorul trebuie să-l creeze el însuși.

Comandă autoloader

Când încărcați AutoLISP fișier de definire a comanda în fișierul ocupa o anumită cantitate de memorie, chiar și în cazul în care echipa nu este în uz. caracteristică limba autoload AutoLISP vă permite să faceți comanda disponibilă fără a încărca codul în memorie. Adăugarea următoarele expresii în acaddoc.lsp fișier se descarcă în mod automat comanda command1 comanda2 și KOMANDA3 cmds.lsp fișierului și echipa de la dosar New Song Pop newcmd.lsp.

Când introduceți prima dată numele unei comenzi încărcate automat, AutoLISP încarcă definiția completă a acestei comenzi din fișierul corespunzător. AutoLISP are, de asemenea, o funcție autoarxload pentru aplicațiile ObjectARX.

Aproximativ Dacă există mai multe fișiere de pornire AutoLISP cu același nume, este încărcată cea care are cel mai recent timbru de dată și oră. Același lucru se întâmplă atunci când încărcați fișiere cu extensii LSP, cu excepția cazului în care este specificat numele întregului fișier (cu extensie).

Fișierul ACAD.LSP

Utilizatorul poate crea un fișier acad.lsp pentru utilizarea regulată a programelor pe AutoLISP. Când începe AutoCAD, fișierul de suport acad.lsp este căutat. Dacă este găsit un fișier acad.lsp, acesta este încărcat în memorie.

Acest lucru se datorează faptului că fișierul acad.lsp este destinat pentru autoloading de aplicații speciale. Prin urmare, toate variabilele și funcțiile definite în fișierul acad.lsp. Disponibil numai pentru primul desen. Dacă doriți ca anumite proceduri să fie disponibile pentru toate documentele deschise, acestea trebuie plasate în fișierul .lsp acaddoc.

Descărcările de fișiere acad.lsp și acaddoc.lsp pot fi controlate utilizând variabila de sistem ACADLSPASDOC. Dacă variabila de sistem ACADLSPASDOC este setată la 0 (valoarea implicită), fișierul acad.lsp este încărcat o singură dată: când începe aplicația. Dacă este 1, fișierul acad.lsp este încărcat când creați un nou desen sau deschideți un fișier de desen existent.

Fișierul acad.lsp poate conține codul AutoLISP al uneia sau mai multor proceduri sau numai secvența de apeluri către funcția de încărcare. Ultima metodă este mai preferabilă, deoarece simplifică posibila modificare a listei procedurilor și aplicațiilor descărcate. Dacă următorul cod este salvat ca fișier acad.lsp. mysessionapp1.lsp. databasesynch.lsp și drawingmanager.lsp vor fi încărcate de fiecare dată când programul este rulat.

Fișierul ACADDOC.LSP

Fișierul acaddoc.lsp este conceput pentru a inițializa fiecare document (desen). Acest fișier este util pentru descărcarea automată a bibliotecilor de proceduri AutoLISP atunci când creați un nou desen sau deschideți unul existent.

De fiecare dată când deschideți un desen, AutoCAD caută fișierul acaddoc.lsp pe calea bibliotecii. Dacă se găsește un astfel de fișier, acesta este încărcat în memorie. Fișierul acaddoc.lsp este întotdeauna încărcat cu fiecare desen, indiferent de valoarea ACADLSPASDOC.

În majoritatea cazurilor, este suficient ca un utilizator să aibă un fișier acaddoc.lsp pentru toate procedurile AutoLISP care funcționează direct cu documentele. Programul caută fișierul acaddoc.lsp în ordinea specificată în căile de bibliotecă standard. Prin urmare, atunci când lucrați cu diferite tipuri de desene din fiecare dosar cu desene, puteți stoca fișierul acaddoc.lsp pentru a încărca setul necesar de proceduri AutoLISP.

Fișierul acaddoc.lsp poate stoca codul pentru una sau mai multe proceduri sau o serie de interogări pentru funcția de încărcare. Ultima metodă este mai preferabilă, deoarece simplifică posibila modificare a listei procedurilor și aplicațiilor descărcate. Dacă codul de mai jos este salvat ca acaddoc.lsp. fișierele mydocumentapp1.lsp. build.lsp și counter.lsp vor fi încărcate de fiecare dată când va fi deschis un nou document.

Adaptarea fișierelor MNL și a meniului AutoLISP

În timpul descărcării fișierului de adaptare (CUI / CUIx), programul caută un fișier MNL cu același nume. Când se găsește un fișier, acesta este încărcat în memorie. Acest mecanism vă permite să încărcați funcțiile AutoLISP necesare pentru elementele interfeței utilizator.

De exemplu, fișierul de adaptare acad.cuix caută fișierul acad.mnl. care poate identifica diferitele funcții AutoLISP utilizate de elementele interfeței utilizator în fișierul de personalizare. Fișierul MNL este încărcat după fișierul acaddoc.lsp.

Aproximativ Dacă fișierul de adaptare este încărcat utilizând funcția de comandă din AutoLISP, care are formatul (comanda "meniu" "meniu nou"). apoi fișierul MNL corespunzător este încărcat numai după ce a pornit întreaga procedură AutoLISP.

În acest exemplu, funcția prinț a fost utilizată pentru a scoate mesajul. Prima dată când accesați funcția princ, următorul text este afișat pe linia de comandă:

Utilitările "noul meniu" sunt ... încărcate.

Al doilea apel către princ este folosit pentru a finaliza funcția AutoLISP. Fără un al doilea apel prinț, mesajul apare de două ori pe linia de comandă. Așa cum am menționat mai devreme, puteți folosi argumentul la eroare atunci când sunați funcția de încărcare pentru a îmbunătăți fiabilitatea procedurilor.

Funcția S :: STARTUP: execuție după inițializarea desenului

Pentru a efectua operațiile de configurare după inițializarea desenului, puteți scrie funcția S :: STARTUP.

Toate fișierele LISP descărcate automat (acad.lsp.acaddoc.lsp și MNL) sunt stocate în memorie până la finalizarea inițializării complete a desenului. De obicei, aceasta nu provoacă probleme, cu excepția cazului în care folosiți funcția de comandă; Funcționalitatea fiabilă a acestei funcții este posibilă numai după finalizarea inițializării desenului.

Dacă funcția S :: STARTUP. definită de utilizator, este cuprinsă în fișierele acad.lsp. acaddoc.lsp sau MNL, se execută de fiecare dată când se creează un desen nou sau se deschide unul deja existent. Astfel, pentru a efectua operații de configurare, puteți crea funcția S :: STARTUP și plasați-o în fișierul AutoLISP auto-încărcat.

Să presupunem, de exemplu, că doriți să suprascrieți comanda BURST standard, astfel încât atunci când introduceți numele acesteia, se va apela comanda SCRIPT și se va emite un mesaj corespunzător. Pentru aceasta, adăugați următorul cod în fișierul acaddoc.lsp:

Înainte de finalizarea inițializării desenului, funcția defun oferă noi descrieri ale comenzilor BURST și BURST. După desenarea inițializată, este apelată funcția S :: STARTUP. care dezactivează descrierea standard a comenzii BURST.

Aproximativ Pentru ca funcția S :: STARTUP să nu suprascrie funcțiile cu același nume din alte fișiere, aceasta trebuie definită cu funcția defun-q. dar nu defunct.

Deoarece funcția cu numele S :: STARTUP poate fi determinat în diferite fișiere (ACAD.LSP. Acaddoc.lsp. Fișier MNL sau orice alte fișiere AutoLISP), funcția S :: STARTUP definit anterior pot fi înlocuite.

Următorul exemplu oferă o modalitate de a defini această funcție pentru a evita astfel de situații.

. funcția executată automat.

Ca rezultat al acestei definiții, codul funcției încărcate anterior S :: STARTUP este adăugat la codul noii funcții S :: STARTUP. Această metodă de definire poate fi utilizată independent de funcția existentă S :: STARTUP.

Concepte înrudite

Articole similare