250 likes | 353 Vues
Grafikus tervezőrendszerek programozása. 9. előadás. AutoLISP hibák. Error függvény. Saját hibakezelő függvény definiálható ( defun my error (str) ( if ( /= str "Function cancelled") ( princ ( strcat "<br>***ERROR***" str ” ***"))) ( setq *error* olderr) ) ( defun c:pr g 1 ()
E N D
Grafikus tervezőrendszerek programozása 9. előadás
Error függvény • Saját hibakezelő függvény definiálható (defunmyerror (str) (if (/= str "Function cancelled") (princ (strcat "\n***ERROR***" str ”***"))) (setq *error* olderr) ) (defun c:prg1() (setq olderr *error* *error* myerror) . . . . . program . . . . . (setq *error* olderr) )
Automatikus indítás • acad2004.lsp – Csak az AutoCAD megnyitásánál töltődik be • acad2004doc.lsp – Minden AutoCAD rajz megnyitásánál töltődik be • Ezekben a file-okban elhelyezett függvények betöltődnek
Menü file felépítése • A menü file szakaszokra oszlik. • A menü szakaszok almenüket foglalhatnak magukba • Egy menü elem kiválasztása egy menü makrót futtat le • A menü makró lehet makró nyelvi (DIESEL) vagy AutoLisp parancs
Menü példa ***MENUGROUP=teszt ***POP1 P1_1[Teszt menu] P1_2[Line] P1_3[Copy] P1_4[Move] P1_5[Zoom]
Menü felépítés ***MENUGROUP=teszt Definiálja a részleges menü nevét ***POP1 Definiálja a menü típusát, legördülő menü P1_1 Egy azonosítót definiál [Teszt menu] A típus utáni első sor adja meg a menü cimkéjét, ami a menü sorban megjelenik
Menü betöltése Menü betöltése: menuload
Menü példa Menü tevékenység definiálása ***MENUGROUP=teszt ***POP1 [Teszt menu] [Line]_line [Copy]_copy [Move]_move [Zoom]_zoom
Menü karakterek 1. • A név [ ] zárójelek között szerepel • A név utáni részt hajtja végre, mintha a parancs után egy SPACE karaktert is lenyomtunk volna • Például: _line<Szóköz> • Néha több szóköz vagy ENTER kell. Ebben az esetben a pontosvessző (;) használható ami a szóköz vagy ENTER karaktert jelenti.
Menü karakterek 2. • Speciális karakterek
Menü karakterek példa [Cím] _text \1 0 A vállalat címe;;;+ 1011 Bp.;;;Fontos utca 2.; • Elindítja a szöveg kirajzoló parancsot • Bekér egy pontot • Megadja a méreteket, a szöget és kiírja az első sort • Az első ; lezárja a szöveget, a második ; megismétli a _text parancsot, a harmadik ; elfogadja az alapértelmezés beállításokat
Menü parancsok megszakítása [Vonal] ^C^C_line [Kor ] ^C^C_circle • Bármely előző parancsot meg kell szakítani, hogy az új parancsot végre lehessen hajtani • Bár egyetlen Control-C megszakítja a legtöbb parancsot, de néha kettő kell, így a biztonság kedvéért mindig két Control-C –t érdemes megadni
Bonyolult példa Négyzet rajzoló menü pont: [Doboz](setq a (getpoint “Első pont”));\+ (setq b (getcornera “Második pont”));\+ _pline !a (list (car a) (cadr b))+ !b (list (car b) (cadr a)) c
Kép menü • Kép menü slide-okból hozható létre • Slide file vagy gyűjtemény is használható
Kép menü definiálása ***IMAGE **Ajtok [Sajat ajtok] [ajtok(door1,ajto1)]_text \1 0 Ajto1; [ajtok(door2,ajto2)] _text \1 0 Ajto2; [ajtok(door3,ajto3)] _text \1 0 Ajto3; [ajtok(door4,ajto4)] _text \1 0 Ajto4; Értelmezés: ajtok( : slide gyűjtemény neve door1 : slide neve a gyűjteményben ajto1) : a menüben megjelenő címke
Kép menü aktiválása ***MENUGROUP=teszt ***POP1 [Teszt menu] [Ajtok]^C^C$I=teszt.Ajtok $I=* Értelmezés: $I=teszt.Ajtok : “Ajtok” menü a “teszt” menü része, menü betöltése $I=* : A menü megjelenítése
Almenü ***MENUGROUP=teszt ***POP1 [Teszteles] [Vonal ] _line [->Cimek ] [Vállalat ]_text \1 0 A vállalat címe; [~Üres ] [<-Otthon ] _text \1 0 Otthoni címe; [Kor ] _circle
Részleges menü betöltés (setvar ”filedia” 0) (command ”_menuload” ”teszt.mnu”) (menucmd ”P6=+teszt.pop1”) • A hatodik pozícióba helyezi a menüt
Menü azonosító • Státusz sorban segéd üzenet is megjelenik ***MENUGROUP=teszt ***POP1 P1_1 [Teszt menu] P1_2 [Line]_line P1_3 [Copy]_copy ***HELPSTRINGS P1_2 [Vonal húzás] P1_3 [Objektum másolás]
Menü file típusok • .mnu : Minta menü file • .mnc, .mnx : Lefordított menü file (bináris) • .mnr : Menü forrásfile, menü által használt bittérképek • .mns : Forrás menü file • .mnl : Menü LISP file