Funkce vytiskniPozdrav() je definována s prefixem c:. Z toho plyne, že je možné ji použít jako nový příkaz AutoCADu vytiskniPozdrav. Zadá-li uživatel tento příkaz do příkazové řádky, je ve Wordu vypsán zformátovaný text.
Ve funkci je před vytvořením funkce nahrána podpora ActiveX prvků. Je-li příkaz pro nahrání podpory ActiveX umístěn na začátku souboru (není v žádné funkci), je zpuštěn jako první.Následuje deklarace funkce s prefixem c:, zajišťujícím snadné volání funkce v prostředí AutoCADu - jako příkazu.
Je zkontrolována přítomnost knihovny typů MS Wordu. Není-li knihovna typů importována, importuje-ji pomocí příkazu vlax-import-type-library.
V dalším úseku kódu se AutoLISP pokusí získat pointer na objekt Word. Číslo 9 signalizuje verzi aplikace - Word2000. V případě, že číslo verze neuvedeme bude nahrána libovolná verze přítomná v systému. Pokud se získání pointru nepodaří = Word není spuštěn, je zavolána funkce pro vytvoření objektu Word (spustí Word). Aby byla spuštěná aplikace viditelná musí se spustit funkce vla-put-visible.
Nyní AutoLISP získá pointry na skupinu documents (obdoba modelového prostoru v AutoCADu). Ve skupině documents vytvoří AutoLISP nový dokument (vytvoření nového dokumentu umožňuje při novém spuštění funkce vytiskniPozdrav otevřít vždy nový dokument). V novém dokumentu otevřeme nový odstavec. Před posláním první části textu, AutoLISP zjistí poslední odstavec, určí jeho délku a nastaví tloušťku písma. Poté vypíše první úsek textu za poslední odstavec (pomocí zjištěné velikosti odstavce). Následuje obdobné nastavení (změní se pouze tloušťka písma) a pošle se druhá část textu.
(vl-load-com) (defun c:vytiskniPozdrav () (if (equal nil mswc-wd100Words) ;;; kontrola zda je nahrána knihovna typů Wordu (vlax-import-type-library :tlb-filename "D:/msword9.olb" :methods-prefix "mswm-" :properties-prefix "mswp-" :constants-prefix "mswc-" ) ;;; nahrání knihovny typů a definování prefixů ;;; pro metody, vlastnosti a konstanty ;;; POZOR musí být zadána správná cesta ;;; VAROVÁNÍ VLisp nepozná jméno souboru, ;;; v kterém je mezera např. "program files" ) (setq mswAppObj (vlax-get-object "Word.Application.9")) ;;; pokus o získání objektu aplikace Wordu (if (equal nil mswAppObj) ;;; pokud objekt aplikace Wordu nebyl získán ;;; aplikace Word není v systému spuštěna vytvoř objekt ;;; a zviditelni ho (progn (setq mswAppObj(vlax-create-object "Word.Application.9")) (vla-put-visible mswAppObj :vlax-true) ) ) (if (/= nil mswAppObj) ;;; pokud je objekt korektně vytvořen (progn ;;; získej pointer na objekt skupina dokumentů (setq docs (vla-get-documents mswAppObj)) ;;; vytvoř nový dokument (setq doc (mswm-add docs)) ;;; získej pointer na objekt odstavce v dokumentu (setq paragraphs (mswp-get-paragraphs doc)) ;;; získej poslední odstavec (setq pg (mswp-get-last paragraphs)) ;;; urči rozsah odstavů (setq range (mswp-get-range pg)) ;;; nastav písmo na tlusté (mswp-put-bold range 1) ;;; vlož za poslední odstavec (mswm-InsertAfter range (strcat "Dobrý den\n") ) ;;; urči nový rozsah (setq range (mswp-get-range pg)) ;;; nastav písmo na normální (mswp-put-bold range 0) ;;; vlož za poslední odstavec (mswm-InsertAfter range (strcat "\nTento text vypisuje ve Wordu AutoLISP!\n Podobným způsobem můžete posílat do Wordu i důležitější informace.\nNashledanou." ) ) ) (alert "Aplikace MSWord nebyla v sytému nalezena.") ;;; pokud není MSWord v systému obsažen vytiskne se chyba ) )
Zdrojový kód funkce vytiskniPozdrav().