Vytisknout stránku | Zavřít okno

default

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=2870
Datum vytištění: 28.čer.2026 v 04:12


Téma: default
Odeslal: Ferdinand
Předmět: default
Datum odeslání: 25.čvc.2006 v 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 ?


-------------
-FerTh-



Odpovědi:
Odeslal: Seiner
Datum odeslání: 25.čvc.2006 v 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))



-------------
Vítězslav Seiner

Chrudim


Odeslal: Ferdinand
Datum odeslání: 27.čvc.2006 v 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)
    )
  )
...



-------------
-FerTh-


Odeslal: Seiner
Datum odeslání: 27.čvc.2006 v 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)
    )
  )



-------------
Vítězslav Seiner

Chrudim


Odeslal: Seiner
Datum odeslání: 27.čvc.2006 v 11:54

samozřejmě by to šlo řešit taky:

(cond    ((OR(= keypart "H")(= keypart nil))...



-------------
Vítězslav Seiner

Chrudim


Odeslal: Ferdinand
Datum odeslání: 27.čvc.2006 v 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...

-------------
-FerTh-


Odeslal: Ferdinand
Datum odeslání: 30.říj.2006 v 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í jako
Zadejte měřtko bloku pro směr Y :  <hodnota MX>
A o to mi šloSmile


-------------
-FerTh-



Vytisknout stránku | Zavřít okno