Zobrazit plnou verzi příspěvku: default

Ferdinand
25.07.2006, 13:56
V aplikaci BLEADER.LSP mám bezprostředně za sebou 2 dvojice výběru (první=[O/K], druhá=[H/V] ). Chtěl bych tam dostat implicitní (tj. předem danou, Enterem potvrzovatelnou) hodnotu (první=<K>, druhou=<H>) pomocí této utilitky:;default.lsp;B...implicitni hodnota;C...vyzva uzivateli (to, co bude v zavorkach tj. <C>);D...typ promenne (real, int, str)(defun default (B C D / TEMP)  (cond    ((= D "real")     (if (= B nil)       (setq B 1)     )     (prompt (strcat C " <" (rtos B 2 2) "> "))     (setq TEMP (getreal))     (if (= TEMP nil)       B       TEMP     )    )    ((= D "int")     (if (= B nil)       (setq B 1)     )     (prompt (strcat C " <" (rtos B 2 0) "> "))     (setq TEMP (getint))     (if (= TEMP nil)       B       TEMP     )    )    ((= D "str")     (if (= B nil)       (setq B "")     )     (prompt (strcat C " <" B "> "))     (setq TEMP (getstring t))     (if (= TEMP "")       B       TEMP     )    )  )  (prinC))Jak to volat v bleader.lsp?=první volba: default má být K(setq NECO1 (default B "1.VÝZVA NA PŘÍKAZOVÉM ŘÁDKU" "str"))...Co má být NECO1 ?Jak to bude pokračovat pro případ volby O ?=druhá volba: default má být H
(setq NECO2 (default B "2.VÝZVA NA PŘÍKAZOVÉM ŘÁDKU" "str"))Co má být NECO2 ?Jak to bude pokračovat pro případ volby V ?

Seiner
25.07.2006, 14:05
Jestli se orientuji ve Vašem košatém dotazu, pomůže Vám funkce GetKWord.Příklad:
 (Initget "N P V K J") (setq jak (GetKWord "Nad/Pod/Vodorovně/Jinde/<Konec> ")) (If (= jak nil)(setq jak "K" konec T))Seiner2006-7-25 14:6:55

Ferdinand
27.07.2006, 11:37
To ano, ale jak tam dostanu tu přednastavenou hodnotu?Konkrétně mám:...(initget "H V")  (SETQ keypart (getkword "\nOrientace položky bude [Horizontálně/Vertikálně]:"))  (cond    ((= keypart "H")     (SETQ DG HO)     (setq part 1)    )    ((= keypart "V")     (SETQ DG VE)     (setq part 2)    )  )...

Seiner
27.07.2006, 11:52
Dyť povídám
(initget "H V")
  (SETQ keypart (getkword "\nOrientace položky bude [Horizontálně/Vertikálně]:"))  (If (= keypart nil)(setq keypart "H"))  (cond    ((= keypart "H")     (SETQ DG HO)     (setq part 1)    )    ((= keypart "V")     (SETQ DG VE)     (setq part 2)    )  )

Seiner
27.07.2006, 11:54
samozřejmě by to šlo řešit taky:
(cond    ((OR(= keypart "H")(= keypart nil))...

Ferdinand
27.07.2006, 15:28
Ano, tak to udělat jde, ale neřeší to můj původní záměr: Univerzální použití lispu default.lsp v různých aplikacích...

Ferdinand
30.10.2006, 12:58
Tak jsem po nějaké době prolistoval stařičkou příručku Učebnice Autolispu, a:(setq MY (default MX "\Zadejte měřtko bloku pro směr Y : " "int"))což se na přík. řádku zobrazí jakoZadejte měřtko bloku pro směr Y :  <hodnota MX>A o to mi šlo