Grafikus tervezőrendszerek programozása 7. előadás Kiválasztási halmazok • Kiválasztási halmazok létrehozása (ssget [mód] ...) • A mód megadja a kiválasztás típusát: – Semmi: A felhasználótól kér.

Download Report

Transcript Grafikus tervezőrendszerek programozása 7. előadás Kiválasztási halmazok • Kiválasztási halmazok létrehozása (ssget [mód] ...) • A mód megadja a kiválasztás típusát: – Semmi: A felhasználótól kér.

Grafikus tervezőrendszerek
programozása
7. előadás
Kiválasztási halmazok
• Kiválasztási halmazok létrehozása
(ssget [mód] ...)
• A mód megadja a kiválasztás típusát:
– Semmi: A felhasználótól kér több rajzelem
kiválasztását
– ”_w” : Ablak kiválasztás
– ”_c” : Metsző kiválasztás
– ”_l” : Utolsó rajzelem kiválasztása
– ”_p” : Előző kiválasztás
– ”_x” : Összes elem kiválasztása
Példa
• Általános kiválasztás
(ssget)
• Előző kiválasztás
(ssget ”_P”)
• A 2,2 –es ponton áthaladó rajzelemek
kiválasztása
(ssget ’(2 2))
• Kiválasztás egy ablakkal
(ssget ”_W” ’(0 0) ’(5 5))
Kiválasztási halmazok
• Maximum 128 kiválasztási halmaz lehet
• Miután nem kell a kiválasztási halmaz
„szabadítsuk fel”
• Minden rajzelem csak egyszer szerepelhet a
kiválasztási halmazban
• A kiválasztási halmaz átadható bármely
AutoCAD parancsnak rajzelem választásnál
Kiválasztási halmazok kezelése 1.
• Kiválasztási halmaz mérete
(sslength halmaz)
• A kiválasztási halmaz n-edik elemét adja meg
(ssname halmaz index)
– Az első elem indexe zérus
– Helytelen index esetén nil-t ad vissza
• Megvizsgálja hogy egy rajzelem tagja-e a
kiválasztási halmaznak
(ssmemb ename halmaz)
Kiválasztási halmazok kezelése 2.
: Új, üres kiválasztási halmazzal tér vissza
(ssadd ename) : Új kiválasztási halmazt hoz létre
egy rajzelemmel és a halmazzal tér vissza
(ssadd ename halmaz) : Rajzelemet hozzáadja a
kiválasztási halmazhoz és a módosított halmazzal
tér vissza
• (ssadd)
•
•
– Ha a rajzelem már benne van a halmazban, nem hiba
: Rajzelemet törli a
kiválasztási halmazból és a módosított halmazzal
tér vissza
• (ssdel ename halmaz)
Kiválasztási halmazok filterezése 1.
• Csak TEXT objektumok kiválasztását engedi a
felhasználó által
(ssget '((0 . “TEXT”)))
• Kiválasztja az összes circle objektumot a my
layer-en
(ssget “_X” ‘((8 . “my”) (0 . “circle”)) )
(ssget “_X” (list (cons 8 “my”)
(cons 0 “circle”)) )
Példa
• Törölni minden sárga színű objektumot az adott
fólián
(defun c:torolsarga ( / name flist ss)
(setq name (getstring “\nFolia neve:”))
(setq flist (list (cons 8 name)
‘(62 . 2)))
(setq ss (ssget “_X” flist))
(command “_erase” ss “”)
)
Kiválasztási halmazok filterezése 2.
• Logikai műveletek a filterrel:
– ”<or” feltételek
”or>”
– ”<and” feltételek
”and>”
– ”<not” egy feltétel ”not>”
– ”<xor” két feltétel ”xor>”
• A nyitó és záró jelek legyenek egyensúlyban
Példa
• Kiválasztja a vonal objektumokat melyek a
„text” fólián vannak
• Az objektumnak két tulajdonsága van:
vonal és „text” fólián van
(ssget ‘( (-4 . “<and”)
(0 . “line”)
(8 . “text”)
(-4 . “and>”)
)
)
Példa
• Vonal vagy a „text” fólián van
(ssget ‘( (-4 . “<or”)
(0 . “line”)
(8 . “text”)
(-4 . “or>”)
)
)
Példa
• Kiválasztja azokat az objektumokat melyek
vagy vonalak vagy a „text” fólián vannak
• (Csak az egyik feltételt elégítik ki.)
(ssget ‘( (-4 . “<xor”)
(0 . “line”)
(8 . “text”)
(-4 . “xor>”)
)
)
Példa
• Kiválasztunk minden nem vonal objektumot
(ssget ‘( (-4 . “<not”)
(0 . “line”)
(-4 . “not>”)
)
)
Példa
• Kiválasztja az összes circle objektumot
amelyek a lay1 vagy lay2 fólián vannak
• Alapesetben ÉS kapcsolat feltételezett
(ssget ”_X” ‘( (0 . circle)
(-4 . ”<or”)
(8 . ”lay1”) (8 . ”lay2”)
(-4 . ”or>”)
))
Példa
• Kiválasztja az egység sugarú köröket és az
ABC layer-en levő vonalakat
(ssget ”_X”
'( (-4 . "<OR")
(-4 . "<AND")
(0 . "CIRCLE") (40 . 1.0)
(-4 . "AND>")
(-4 . "<AND")
(0 . "LINE") (8 . "ABC")
(-4 . "AND>")
(-4 . "OR>")
))
Kiválasztási halmazok filterezése 3.
• Kiválasztás relációs függvények alapján
– Reláció: =, /=, >, >=, <, <=
• Csak 2.0 egységnél nagyobb sugarú kör
objektumok kiválasztását engedi
(ssget ”_X” '( (0 . "CIRCLE")
(-4 . ">=") (40 . 2.0)))
Kiválasztási halmazok filterezése 4.
• Lehet felhasználói alkalmazások adataival is
filterezni
• Például:
(ssget ”_X”
'((0 . "CIRCLE") (-3 ("APPNAME"))))
• Olyan köröket választ ki amelyekhez APPNAME
nevű felhasználói alkalmazási adatok vannak
rendelve
Kiválasztási halmazok filterezése 5.
• Lehet wildcard (*) karaktert használni a
szövegekben
• Például:
(ssget ”_X” '((2 . ”*_bb”)))
• Olyan blokkokat választ ki amelyek neve _bb-vel
végződik
Szimbólum táblázatok
• Az AutoCAD nem látható objektumainak
táblázatai:
–
–
–
–
–
–
–
–
–
LAYER: fóliák
LTYPE: vonaltípusok
VIEW: nézetek
STYLE: stílusok
BLOCK: blokkok
UCS: lokális koordinátarendszerek
VPORT: nézet ablakok
DIMSTYLE: méretezési stílusok
APPID: alkalmazás azonosítók
Szimbólum táblázatok
• A táblázatok módosíthatók:
– entdel, entget, entmake, entmod,
entnext, handent
– egy objektummal tér vissza
– tblnext – folyamatosan megy végig a
táblázaton
– tblsearch
tblnext
(tblnext table-név [visszatekerés])
• Ha visszatekerés nem zérus akkor az első
objektumot adja vissza a táblázatból
• Egyébként a következő objektumot adja
vissza
Példa
(defun c:foliak (/ folia)
(setq folia (tblnext "LAYER" 1))
(princ (cdr (assoc 2 folia)))
(terpri)
(while (setq folia (tblnext "LAYER"))
(princ (cdr (assoc 2 folia)))
(terpri)
)
(terpri)
)
Eredmény
0
Layer1
Layer2
Layer3
nil
tblsearch
(tblsearch table-név symbol [setnext])
• Egy szimbólumot keres a táblában
• Ha setnext értéke nil akkor nincs hatással a
tblnext parancsra
• Ha setnext értéke nem nil akkor a tblnext
parancs a tblsearch parancs által visszaadott
objektum utáni objektumot adja vissza
Példa
(setq t (tblsearch "LAYER" "0"))
( (0 . "LAYER")
(2 . “0")
(70 . 0)
(62 . 7)
(6 . "CONTINUOUS")
)
Megjelenítésvezérlő parancsok 1.
• A szöveges képernyőre váltás
(textscr)
• A szöveges képernyőre letörlése (DOS) és
átváltás
(textpage)
• A grafikus képernyőre váltás
(graphscr)
Megjelenítésvezérlő parancsok 2.
• Alacsony szintű rajzoló parancsok
• Csak a képernyőn jelennek meg
• Egy megadott objektumot frissít az aktuális
ablakban
(redraw [ename [mode]])
• Egy vektort rajzol két pont közé
(grdraw from to color [highlight])
• Vektorokat rajzol a grafikus képernyőre
(grvecs vlist [trans])
• Egy szöveget ír az állapotsorba vagy a képernyőre
(grtext [box text [highlight]])
Példa
Példa
• Az összes rajzelemen végigmegy, kijelöli
majd megszünteti a kijelölést
(defun c:kiemel (/ elem)
(setq elem (entnext))
(redraw elem 3)
(command "_delay" 1000)
(redraw elem 4)
(while (setq elem (entnext elem))
(redraw elem 3)
(command "_delay" 1000)
(redraw elem 4)
)
)
Slide
• Az aktuális képernyő elmentése
– Prezentációhoz
– Kép menühöz
Slide
• Parancs az aktuális képernyő elmentésére:
mslide
• Csak a képernyőn megjelenő objektumok
képét menti el
• Nem menti el :
– a kikapcsolt fóliákon levő elemeket
– a képernyőn kívüli elemeket
• A slide file kiterjesztése: sld
Slide-ok megtekintése
• A képernyő (slide) visszatöltése: vslide
– Mintha egy képet töltenénk be
– Az aktuális rajzot nem változtatja meg
• Prezentáció is készíthető, kép sorozat
Slide gyűjtemény
• Több slide egy file-ba szervezhető
• A slide gyűjtemény kiterjesztése : slb
• slidelib.exe progammal lehet létrehozni
• slidelib gyűjtemény < slide-lista
• A slide-lista a file név list
• A slide gyűjtemény módosítása csak az eredeti
slide-okkal lehetséges!!!
Slide gyűjtemény példa
slidelib ajtok.slb < ajto.lst
ajto.lst tartalma
door1.sld
door2.sld
például
Eredmény:
SLIDELIB 1.2 (3/8/89)
© Copyright 1987-1989,1994,1995 Autodesk, Inc
All Rights Reserved
Slide betöltése gyüjteményből
; dialógus ablak ne jelenjen meg
Command: setvar
Enter variable name or [?]: filedia
Enter new value for FILEDIA <1>: 0
Command: vslide
Enter name of slide file to view:
C:\temp\ajtok(door1)
; eredeti kép visszaállítása
Command: redraw
Parancs file (script)
• Parancs sorozat végrehajtásához parancs
file-t lehet definiálni
• A parancs file futtatása: script
• Egy sor egy parancs
• Minden SPACE-nek szerepe van!!!
• Megjegyzés pontosvesszővel kezdődik
Hasznos parancsok
• delay : várakozás milliszekundumig
• rscript : a parancs file ismétlése
• resume : a megszakított scipt folytatása
• graphscr : grafikus képernyőre váltás
• textscr : szöveges képernyőre váltás
Prezentációs parancs file
; Kezdjük a prezentációt, töltsük be: SLIDE1
VSLIDE SLIDE1
; Előzetes betöltés, megjelenítés nélkül: SLIDE2
VSLIDE *SLIDE2
; A SLIDE1 2000 milliszekundumig látható
DELAY 2000
; Jelenítsük meg SLIDE2-t
VSLIDE
; Előtöltés SLIDE3
VSLIDE *SLIDE3
; SLIDE2 megjelenítése 2000 milliszekundumig
DELAY 2000
; Jelenítsük meg SLIDE3-t
VSLIDE
; SLIDE3 megjelenítése 3000 milliszekundumig
DELAY 3000
; Ismételjük a parancs file-t
RSCRIPT
Rajzoló parancs file
circle 20,20 10
zoom e
delay 1200
circle 15,25 2
delay 1200
circle 25,25 2
delay 1200
line 20,22 18,18 22,18 c
delay 1200
arc 14,16 e 26,16 20,22