Vytisknout stránku | Zavřít okno

asociacni seznam

Vytištěno z: CAD Fórum
Kategorie: Autodesk - stavebnictví, strojírenství, CAD/GIS
Název fóra: CAD programování
Popis fóra: Otázky programování - nadstavby a utility pro CAD a GIS aplikace Autodesk (VBA, AutoLISP, ARX/C++, .Net, JavaScript, Python, MEL...)
URL: https://www.cadforum.cz/forum/forum_posts.asp?TID=772
Datum vytištění: 11.čer.2026 v 19:13


Téma: asociacni seznam
Odeslal: pavlacka
Předmět: asociacni seznam
Datum odeslání: 28.dub.2005 v 00:20

Dobry den,

Vytvarim asociacni seznam neco jako (setq seznam '((MOD "1") (NAZEV "aaaa") (POCET  10) ...) )

lze nejak misto hodnot  "1", "aaaa", 10 ... pouzit PROMENNE?

Dekuji za odpoved.

roman pavlacka




Odpovědi:
Odeslal: Vladimír Michl
Datum odeslání: 28.dub.2005 v 08:25

Jak to myslíte? Při vytváření seznamu (list) nebo spíše (cons) můžete použít hodnoty proměnných. Pokud chcete získat aktuální hodnoty proměnných při asociování, musíte použít něco jako
(eval(cdr(assoc 'POCET seznam))) a v seznamu mít
.... (POCET nazevpromennenebofunkce) ...



-------------
Vladimír Michl (moderátor)
ARKANCE CZ - https://arkance.world - arkance.world
(podpora viz emea.support.arkance.world)


Odeslal: pavlacka
Datum odeslání: 28.dub.2005 v 13:42

Mate pravdu,

vyjadril jsem se trochu nepresne, pokusim se to napravit. Potrebuji vytvorit tento dvourozmerny seznam:

 ((MOD "1") (NAZEV "aaaa") (POCET  10) ...),

ale hodnoty "1", "aaaa", 10 mam v promenych c_mode, c_nazev, c_pocet ....

dekuji za radu

roman pavlacka



Odeslal: Vladimír Michl
Datum odeslání: 28.dub.2005 v 13:55
aha, tak to je ten jednodušší případ - stačí použít funkci (list), resp. (list) a (cons)

-------------
Vladimír Michl (moderátor)
ARKANCE CZ - https://arkance.world - arkance.world
(podpora viz emea.support.arkance.world)


Odeslal: pavlacka
Datum odeslání: 28.dub.2005 v 15:05

Nevim, ale asi chci neco co je urcite trivialni, ale ja na to nemohu prijit a zabredavam do prilis slozitych konstrukci.

umim to kdyz hodnoty do seznamu zadam primo takto:

pripad A) vytvoreni seznamu
  (setq seznam (list '(MOD "0") '(NAZEV "aaa") '(POCET 10)))
  (setq seznam (cons '(PLOCHA 32.22) seznam)) ; pridani do seznamu na zacatek

pripad B) jde mi pak o nahrazovani hodnot u prislusnych navesti, tady konkretne u navest MOD  hodnotu "0" za "1"
  (setq seznam (subst '(MOD "1") (assoc 'MOD seznam) seznam) )

neumim to v tomto pripade:

vytvorit stejny seznam jako v bode A) a provest nahradu v bode B), kdyz mam mam tu "0" i "1" i ty dalsi hodnoty v prommennych.

dekuji za radu

roman pavlacka

 



Odeslal: Seiner
Datum odeslání: 28.dub.2005 v 15:12

Jestli to dobře chápu:

Příkaz: (setq a "0")
"0"

Příkaz: (setq b (list 'MOD a))
(MOD "0")

Příkaz: !b
(MOD "0")



Odeslal: pavlacka
Datum odeslání: 28.dub.2005 v 17:58

Ano,

Příkaz: (setq a "0")
"0"

Příkaz: (setq aa "aaa")
"aaa"

Příkaz: (setq b (list 'MOD a 'NAZEV aa))
(MOD "0" NAZEV "aaa")

Příkaz: !b
(MOD "0" NAZEV "aaa")

to funguje, ale ja potrebuji seznam ((MOD "0") (NAZEV "aaa"))

v tom predeslem se nedaji nahrazovat hodnoty takto, a navic tu "1" mam v promenne

Příkaz: (subst '(MOD "1") (assoc 'MOD a) a)

roman



Odeslal: Seiner
Datum odeslání: 28.dub.2005 v 18:24
(ja to myslel jako navod a dal, že už je to jasne :-)
 
(setq b (list(list 'MOD a)(list 'NAZEV aa)))


Odeslal: pavlacka
Datum odeslání: 28.dub.2005 v 18:49

Pane Seiner dekuji,

ne, ze bych byl uplny zacatecnik v programovani, ale prece jenom LISP nemam jeste uplne zazity a verim, ze narazim jeste na dalsi orisky.

pekny den,

roma pavlacka



Odeslal: Seiner
Datum odeslání: 28.dub.2005 v 20:21
Rádo se stalo. Lost In a Sea of Parentheses taky používám jen když není zbytí. Spíš jsem se orientoval na VB.



Vytisknout stránku | Zavřít okno