Fig.1 MRU + - utilitar care vă permite să monitorizeze utilizarea recentă a fișierelor AutoCAD
Bine ați venit la VBA AutoCAD
Două tipuri de proiecte în VBA
Fig.2. caseta de dialog Manager de VBA vă permite să manipuleze proiectul VBA încorporat și la nivel mondial
Desigur, proiect global este mai de preferat pentru instrumente concepute pentru a înregistra informații cu privire la o multitudine de desene. În cazul MRU +, proiectul la nivel mondial este MRUPlus.dvb faly. Extinderea „dvb“ folosit AutoCAD pentru proiecte globale care sunt stocate pe disc.
Se încarcă la pornire
Alternativ, puteți plasa AutoLISP fișier echipa ACAD.LSP, care ar trebui să fie, de asemenea, în directorul AutoCAD. Orice funcție Nume AutoLISP StartUp în acest fișier va fi executat în mod automat atunci când este încărcat fișierul. După cum veți vedea în acest articol, Autodesk a făcut o treabă bună de a face legătura între Lisp limba senior și VBA o nouă limbă, ar deveni posibil cod Lisp, apel cod VBA, și vice-versa.
Pentru o aplicație, o idee bună de a modifica ACAD.LSP fișier pentru a încărca atunci când porniți aplicația. Cei mai mulți utilizatori AutoCAD sunt familiarizați cu schimbările din acest fișier și limbajul AutoLISP, adăugând astfel o linie de cod pentru a descărca aplicația ar trebui să fie ușor pentru ei. Puteți descărca pur și simplu aplicația, sau puteți descărca aplicația și rula un macro de la ea în același timp.
Pentru a descărca aplicația, puteți folosi codul AutoLISP pentru a determina comanda AutoCAD vbaload:
Sau, pentru a rula procesul de inițializare în aplicația, puteți apela VBARUN comanda:
Argumentul VBARUN comanda poate fi pe deplin calificat în formă de:
Dacă fișierul specificat nu este încărcat, acesta este mai întâi încărcat, iar apoi macro este executat. În mod implicit, VBARUN vbaload comenzi sau descărcarea fișierelor numai din directorul principal AutoCAD. În cazul în care utilitatea este stocată într-o altă locație, trebuie să specificați calea completă și numele de fișier în argumentul. În acest caz, trebuie să „scape“ de backslash de caractere dublarea acestora. De exemplu, a avut puterea de a fi în ACAD.LSP fișier:
Ca parte a codului său de pornire, MRU + se adaugă la meniul AutoCAD Fișier, chiar deasupra listei built-in de fișiere utilizate recent. În versiunile anterioare ale AutoCAD, această operațiune a fost complet imposibil pentru codul VBA. Acum, o nouă ramură a modelului de obiect AutoCAD face lucruri banale.
Figura 3 prezintă noile obiecte AutoCAD disponibile pentru bara de instrumente de manipulare și de meniu. obiect MenuBar controlează toate meniurile afișate în prezent în AutoCAD bara de meniu principal. Puteți vstavilyat și șterge meniul prin apelarea unor metode InsertInMenuBar și RemoveFromMenuBar obiect PopupMenu.
Figura 3. Obiecte pentru a manipula meniuri și bare de instrumente
PopupMenu obiect este un meniu standard trage în jos, sau un meniu numit prin butonul din dreapta al mouse-ului. PopupMenuItem obiect reprezintă un singur element de meniu.
Sistemul Bare de instrumente Bara de instrumente conține obiecte. fiecare reprezentând o bară de instrumente. Butoanele individuale prezentate obiecte ToolbarItem.
MRU + utilitate face cea mai simplă posibilă funcționare cu aceste obiecte: Se adaugă un element de meniu care afișează interfața cu utilizatorul la meniul de fișiere. Aceasta este o linie de cod:
Acest cod adaugă un nou alineat în poziția a 20-a (numărând de la zero), sistemul de PopupMenuItems pe extrema stângă PopupMenu setat implicit MenuBar (cu alte cuvinte, din meniul File). Al doilea argument - textul care va apărea în meniul, iar al treilea argument - din meniul macro AutoCAD, care se numește atunci când este selectat elementul de meniu.
Utilizarea meniului Macrocomenzi AutoCAD este aproape aceeași sintaxă ca și comenzile AutoCAD, dar are unele diferențe. Unul dintre ei - provocarea VBARUN comenzilor folosind sintaxa și caracteristici de subliniere pentru a suprima afișarea casetei de dialog, care ar fi în mod normal, cauzate. Notă prezența unui spațiu după numele unei VBA macro pentru a efectua. Meniul Macrocomenzi, la sfârșit este interpretat ca spațiu sfârșitul fragmentului de intrare. Fără ea, numele macro VBA se va face în linia de comandă AutoCAD, dar nu și execuția.
Deși este posibil să existe mai multe proiecte VBA la nivel mondial încărcate simultan, toate folosesc un singur obiect numit ThisDrawing. Acest obiect este un document AutoCAD activ în interfața cu utilizatorul, și are clasa AcadDocument. (Spre deosebire de multe alte modele de obiecte, modele AutoCAD numele tuturor obiectelor nachinayutsya cu prefixul „Acad“, în scopul de a asigura unicitatea în operațiuni). În cazul în care mai multe proiecte VBA includ stivuitoare pentru evenimentele pentru obiect ThisDrawing. fiecare dintre Stivuitoare eveniment este invocată la rândul său.
Utilizarea evenimente ThisDrawing ușor. Fiecare proiect global VBA pe care le creați în mod automat conține un obiect ThisDrawing exemplu care nu pot fi eliminate. Aplicația MRU + ThisDrawing.BeginClose eveniment este utilizat pentru a notifica forma principală atunci când desenul este descărcat din interfața cu utilizatorul. Acest eveniment conține un minim de cod pentru a apela formele publice metoda de interfață cu utilizatorul pentru a localiza ListItem corespunzătoare în ListView și nu-l controla.
Tabelul de mai jos conține o listă de evenimente susținute de ThisDrawing. După cum puteți vedea, multe dintre aceste evenimente - noi în AutoCAD. În special, evenimente BeginShortcutMenu. BeginLisp. Obiectul și permite noi modalități de a interacționa cu alții în limbaje de programare AutoCAD.
Eveniment AcadDocument Obiect
Fereastra este mutat sau redimensionate
Angrenarea obiectului Application
Pe lângă faptul că ThisDrawing. care reprezintă un document de MRU activ + utilitate trebuie să monitorizeze, de asemenea, evenimente obiect AcadApplication (care reprezintă direct AutoCAD) să știe când o nouă imagine a fost deschisă. Spre deosebire de obiect ThisDrawing. Cu toate acestea, obiectele globale VBA nu primesc automat un obiect de probă AcadApplication. Din fericire, puteți utiliza WithEvents cuvinte cheie în VBA. pentru a crea propriul. Secvența de evenimente care utilizează + MRU, pentru a se angaja sau de stimulare obiect Event EndOpen AcadApplication. care este implementat de fiecare dată când deschideți un desen nou, evidențiate în paragrafele următoare.
fișier ACAD.LSP, după cum ați văzut deja, conține un cod de apel proceduri LoadMRUPlus basMRUPlus. Împreună cu celălalt codul de pornire, procedura stabilește modelul de clasă privat numit CAPP și a stabilit una dintre proprietățile sale:
clasa CAPP există numai ca un înveliș pentru obiect AcadApplication. ThisDrawing obiect încorporat conține o aplicație proprietate ce indică singurul obiect exemplu AcadApplication. care o face ușor pentru a rula codul pentru a găsi. Iată codul pentru clasa CAPP. Este important aici - că variabila privată de tip AcadApplication declarate WithEvents. Acesta este un AcadApplication special de cuvinte cheie face ca evenimentele accesibile cod în module de clasă. Codul de imprimare pentru MRU + utilitate la sfârșitul articolului.
Eveniment AcadApplication Obiect