You are on page 1of 1

AutoLISP

(setq lista1 '(a b (c d) b))


(subst 'XX 'b minta) eredménye ( A XX ( C D ) XX )
(subst 'XX 'z minta) eredménye ( A B ( C D ) B )
(subst 'XX '(c d) minta) eredménye ( A B XX B )
(subst '(XX rr) '(c d) minta) eredménye ( A B ( XX RR ) B )
(subst '(XX rr) 'z minta) eredménye ( A B ( C D ) B )

Megjegyzés: az AutoLISP a kiértékelésben az s-kifejezéseket (a karakterso-


rok kivételével) nagybetüvel tériti vissza.

A subst függvényt az assoc függvénnyel együtt használva, egy asszociációs lis-


ta adott kódjához tartozó értékeit egyszerűen lecserélheti. Példa:

Command: circle
3P/2P/TTR <center point>:0,0
Diameter/<Radisu>:10
Command: (setq koros1 (entget (entlast)))
((-1 . <Entity name: 7ef95f10>) (0 . "CIRCLE") (330 .
<Entity name: 7ef95cf8>) (5 . "9A") (100 .
"AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 .
"AcDbCircle") (10 0.0 0.0 0.0) (40 . 10.0) (210 0.0 0.0
1.0))
Command:(setq old_radius (assoc 40 koros1)))
(40 . 10.0)
Command: (setq new_center (cons 40 1))
(40 . 1)
Command: (setq koros1 (subst new_center old_center ko-
ros1))
((-1 . <Entity name: 7ef95f10>) (0 . "CIRCLE") (330 .
<Entity name: 7ef95cf8>) (5 . "9A") (100 .
"AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 .
"AcDbCircle") (10 0.0 0.0 0.0) (40 . 1.0) (210 0.0 0.0
1.0)).

Látható, hogy a 40-es kódszámú pontozott pár tartalmával megváltozott a ko-


ros1 asszociációs lista tartalma is. De nem történt semmi a rajzon. Megállapítható,
hogy a subst függvény nem destruktív (a listát érintetlenül hagyja)! Ha a rajzon is
változatni akarunk, akkor egy másik AutoLISP függvényt is kell használnunk: az
entmod-ot.

(entmod <asszocios lista>)

38

You might also like