VBA érlelődik

1. ábra MRU + - segédprogram, amely lehetővé teszi, hogy figyelemmel kíséri a közelmúltbeli AutoCAD fájlok

Üdvözöljük a VBA AutoCAD

Kétféle projektek VBA

2. ábra. VBA párbeszédpanel lehetővé teszi, hogy manipulálják a beágyazott és a globális VBA projekt







Természetesen a globális projekt érdekében előnyösebb eszközök célja, hogy rögzítse az adatokat illetően több rajzokat. Abban az esetben, MRU +, a globális projekt faly MRUPlus.dvb. Expansion „dvb” használt AutoCAD globális projektek, amelyek tárolják a lemezen.

Betöltése indításkor

Azt is megteheti, tegye AutoLisp csapat acad.lsp fájlt, ami szintén az AutoCAD könyvtárban. Minden olyan funkció AutoLisp INDÍTÁSKOR nevek ebben a fájlban automatikusan végrehajtásra, ha a fájl betöltése. Mint látni fogja ebben a cikkben, az Autodesk tett egy jó munkát, hogy a kapcsolat a vezető nyelv Lisp és a VBA egy új nyelvet, akkor lehetővé válna a Lisp kódját, hívja a VBA-kódot, és fordítva.

Mert egy alkalmazást, egy jó ötlet, hogy módosítsa acad.lsp fájlt kell betölteni, ha elindítja az alkalmazást. A legtöbb AutoCAD felhasználók tisztában vannak a változások ebben a fájlt, és AutoLISP nyelv, így hozzá egy sort, hogy töltse le az alkalmazást kell könnyű nekik. Egyszerűen töltse le az alkalmazást, vagy letöltheti az alkalmazást, és futtatni egy makrót, hogy ugyanabban az időben.

Az alkalmazás letöltéséhez, akkor AutoLISP kódot okoz AutoCAD vbaload parancsot:

Vagy futtatni az előkészítési folyamat az alkalmazás, akkor hívja a parancsot VBAFUTTAT:

VBAFUTTAT parancsargumentum lehet teljesen minősített formában:

Ha ez a fájl nincs betöltve, akkor először betöltődik, majd a makró lefut. Alapértelmezésben VBAFUTTAT vbaload parancsok vagy fájlok letöltése csak a fő AutoCAD könyvtárban. Ha a közüzemi tárolja egy másik helyen, meg kell adni a teljes elérési utat és fájlnevet az érvelés. Ebben az esetben meg kell „menekülési” a karakterek backslash duplájára őket. Például volt ereje, hogy legyen acad.lsp file:

Ennek részeként a boot-kód, MRU + hozzáfűzi magát a AutoCAD Fájl menü fölött a beépített legutóbb használt fájlokat. Az AutoCAD korábbi verzióiban ez a művelet teljesen lehetetlen VBA kódot. Most egy új ága a AutoCAD objektum modell nem a dolgok triviális.

A 3. ábra az új AutoCAD objektumokat rendelkezésre manipuláció eszköztár és menü. Menüsor objektum vezérli az összes menü éppen látható AutoCAD fő menüsor. Akkor vstavilyat és törlése menüben hívja módszerek InsertInMenuBar és RemoveFromMenuBar tárgy PopupMenu.

3. ábra. Kifogásolja, hogy manipulálják menük és eszköztárak

PopupMenu objektum egy szabványos legördülő menüben vagy a menü hívják jobb egérgombbal. PopupMenuItem objektum képviseli egy menüpontot.







Eszköztárak eszköztár rendszer objektumokat tartalmaz. mindegyike egy eszköztár. Egyéni gombok bemutatott tárgyak ToolbarItem.

MRU + rezsi teszi a lehető legegyszerűbb művelet ezekkel a tárgyakkal: Hozzáteszi, egy menüpont, amely megjeleníti a felhasználói felület a Fájl menüben. Ez egy sor kód:

Ez a kód hozzáad egy új bekezdés a 20. pozícióban (jobbról nulla) PopupMenuItems rendszer a bal szélső PopupMenu alapértelmezés a menüsor (más szóval, a Fájl menüben). A második érv - a szöveg jelenik meg a menüben, és a harmadik argumentum - AutoCAD menümakró hogy hívják, ha a menüpont van kiválasztva.

Makrók segítségével AutoCAD menü szinte azonos a formája, mint az AutoCAD parancsokat, de van néhány különbség. Egyikük - a kihívás VBAFUTTAT parancsok segítségével a szintaxis és funkciók aláhúzás, hogy elnyomja a kijelzőn a párbeszédablak, amelyet egyébként is okozott. Megjegyzés jelenlétében egy hely után a nevét egy VBA makró elvégzésére. Makrók menüben szóközöket értelmezi a végén a bemeneti töredék. Enélkül a neve a VBA makró kellene tenni az AutoCAD parancssor, de nem a végrehajtás.

Bár lehetséges, hogy több egyidejű betöltése globális VBA projekt az ezekhez egyetlen objektum nevű ThisDrawing. Ez az objektum az aktív AutoCAD dokumentum a felhasználói felületet, és AcadDocument osztályban. (Ellentétben sok más tárgy modellek, AutoCAD modellek neveit minden tárgy nachinayutsya előtaggal „Acad”, annak érdekében, hogy az egyediséget a műveletek). Ha több VBA-projektek közé rakodók eseményeit ThisDrawing objektumot. minden esemény rakodók hivatkoznak viszont.

Használata ThisDrawing események egyszerű. Minden globális VBA projekt létrehozásakor automatikusan tartalmaz példa ThisDrawing objektumot nem lehet eltávolítani. A MRU alkalmazás + ThisDrawing.BeginClose esemény szolgál, hogy értesítse a fő formája a rajz kikerül a felhasználói felületen. Ez az esemény tartalmazza a minimális kódot hívja a módszer nyilvánosság formáit felhasználói felület, hogy keresse meg a megfelelő Listitem a ListView és nem tudja irányítani.

Az alábbi táblázat tartalmazza az események listáját által támogatott ThisDrawing. Mint látható, sok ilyen esemény - új AutoCAD. A különleges események BeginShortcutMenu. BeginLisp. Object, és lehetővé teszi az új utakat, másokkal AutoCAD programozási nyelven.

Event objektum AcadDocument

Az ablak mozgatásakor vagy átméretezett

A összekapcsolódása az Application objektum

Amellett, ThisDrawing. mely egy aktív dokumentum MRU + rezsi kell megfigyelni az eseményeket AcadApplication tárgy (ami közvetlenül AutoCAD), hogy mikor egy új képet indult. Ellentétben ThisDrawing objektumot. Ugyanakkor a globális VBA tárgyak nem kapnak automatikusan minta AcadApplication objektumot. Szerencsére, akkor használja a kulcsszó WithEvents VBA. hogy saját. Az események sorozata, amely a MRU +, hogy vegyenek ösztönző vagy esemény EndOpen AcadApplication objektumot. ami által alkalmazott minden egyes alkalommal, amikor megnyit egy új rajzot, kiemelve a következő bekezdésekben.

acad.lsp fájl, ahogy már láttuk, tartalmaz egy kódot hívás LoadMRUPlus eljárások basMRUPlus. Együtt a másik indító kódot, az eljárás beállítja a minta saját nevű osztály CAPP és állítsa egyik tulajdonságok:

CAPP osztály létezik, csak a héj AcadApplication objektumot. ThisDrawing beágyazott objektum egy tulajdonság feltüntetik az egyetlen példa AcadApplication objektumot. amely megkönnyíti, hogy a kódot, hogy megtalálja. Itt a kód a CAPP osztályban. Itt fontos, hogy - a saját változó típusú AcadApplication bejelentett WithEvents. Ez egy speciális kulcsszó AcadApplication teszi az eseményeket elérhetővé teszi kódot osztály modult. Nyomtatás kódot az MRU + közüzemi végén a cikk.

Event objektum AcadApplication