Vytisknout stránku | Zavřít okno

Uprava Lispu

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=5100
Datum vytištění: 14.kvě.2026 v 12:37


Téma: Uprava Lispu
Odeslal: Augur
Předmět: Uprava Lispu
Datum odeslání: 03.zář.2007 v 10:40
Chcel by som poziadat o radu, pri modifikacii tohoto lispu.
Vysledok by mal byt taky, ze pri nezadani hodnoty na prepisanie sa pouzije predvolena hodnota napr. "X"

(defun c:repstring ()
(SETQ OSTRING (GETSTRING T "\nSTRING TO BE REPLACED: "))
(SETQ NSTRING (GETSTRING T "\nSTRING TO REPLACE WITH: "))
(REPSTRING OSTRING NSTRING)
)

Snazil som sa to zapisat nejako takto, ale nech robim, co robim, stale to nejde.

(defun c:repstring ()
(SETQ OSTRING (GETSTRING T "\nSTRING TO BE REPLACED: "))
(if (= "") (SETQ "x") (GETSTRING T "\nSTRING TO BE REPLACED: ")))
(REPSTRING OSTRING NSTRING))

-------------
Designer/Projektant/Ucitel
Autocad 2007



Odpovědi:
Odeslal: Vladimír Michl
Datum odeslání: 03.zář.2007 v 11:10
(defun c:repstring ()
(SETQ OSTRING (GETSTRING T "\nSTRING TO BE REPLACED: "))
(SETQ NSTRING (GETSTRING T "\nSTRING TO REPLACE WITH <něco>: "))
(if (= NSTRING "")(setq NSTRING "něco"))
(REPSTRING OSTRING NSTRING)
)


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


Odeslal: Augur
Datum odeslání: 03.zář.2007 v 11:34
Dakujem, funguje.

-------------
Designer/Projektant/Ucitel
Autocad 2007


Odeslal: Ferdinand
Datum odeslání: 03.zář.2007 v 16:47
Ve stařičké Učebnici Autolispu je následující řešení:
 
;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)
)
;;
;;Priklady volani implicitni hodnoty:
;;
;;  (setq PROM (default BB CC DD)) ;obecny tvar - v prikazovem radku se objevi:
;;[retezec CC:] <hodnota BB>
;;kde format BB bude DD
;;  (setq A1 (default 10 "\nZadejte cele cislo: " "int")) ;<default> pro promennou A1 bude hodnota <10> tj. Integer
;;  (setq A2 (default A1 "\nZadejte realne cislo: " "real")) ;<default> pro promennou A2 bude promenna <A1> a to Real
;;  (setq A3 (default "doleva" "\nSmer bude: " "str")) ;<default> pro promennou A3 bude retezec <doleva> tj. String
;;


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


Odeslal: Ferdinand
Datum odeslání: 08.led.2008 v 16:30
Původně odeslal(a) Vladimír Michl Vladimír Michl napsal(a):

(defun c:repstring ()
...
Mně to nefunguje:
Command: _appload repstring.lsp successfully loaded.
Command: repstring
STRING TO BE REPLACED: ABCDE
STRING TO REPLACE WITH <něco>: Enter
; error: no function definition: REPSTRING
 


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


Odeslal: Vladimír Michl
Datum odeslání: 08.led.2008 v 16:50
To byl jen fragment kódu - definice funkce (repstring) tam není.

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


Odeslal: Ferdinand
Datum odeslání: 08.led.2008 v 17:16
Původně odeslal(a) Augur Augur napsal(a):

...
(SETQ NSTRING (GETSTRING T "\nSTRING TO REPLACE WITH: "))
(if (= "") (SETQ "x") (GETSTRING T "\nSTRING TO BE REPLACED: ")))
(REPSTRING OSTRING NSTRING))
Pro tuto formu zápisu bych to spíše napsal:
 
;;predvolena hodnota:
(setq DFT (strcat "<ABC>"))
 
(setq OSTRING (getstring "\nSTRING TO BE REPLACED: "))
(setq NSTRING (getstring (strcat "\nSTRING TO REPLACE WITH: " DFT)))
(if (= NSTRING nil) (setq NSTRING DFT))
 
;;zamena OSTRING na NSTRING: (nevim jak)
(???? ???? ????)

Co to je "T" ?
 
Jinak je to řešeno - např. chgtext.lsp
http://www.cadinfo.net/scripts/LISPlib-software.cfm?StartRow=11&areano=331" rel="nofollow - http://www.cadinfo.net/scripts/LISPlib-software.cfm?StartRow=11&areano=331
http://www.design-drawing.com/lisp/LSP-chgtxt.htm" rel="nofollow - http://www.design-drawing.com/lisp/LSP-chgtxt.htm
http://www.cadcorner.ca/lisp.php" rel="nofollow - http://www.cadcorner.ca/lisp.php
http://www.itcad.net/ChangeText.htm" rel="nofollow - http://www.itcad.net/ChangeText.htm


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



Vytisknout stránku | Zavřít okno