Vytisknout stránku | Zavřít okno

lisp - změna des. tečky na čárku

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=321
Datum vytištění: 10.kvě.2026 v 12:40


Téma: lisp - změna des. tečky na čárku
Odeslal: Mantlík
Předmět: lisp - změna des. tečky na čárku
Datum odeslání: 07.led.2005 v 11:10

Dobrý den

Prosím o radu s následujícím problémem

Mám jednu jednoduchou funkci, jejímž výsledkem jsou dvě číselné hodnoty (s 2  desetinnými místy). Převedu si je na řetězec a spolu s několika fixními texty (jednotky) spojím do jednoho řetězce a jako text vložím do výkresu.

Je pravdou, že by tam mohla zůstat desetinná tečka, ale vzhledem k místním zvyklostem bych tam chtěl dát čárku. Kam to umístit, bych věděl, ale nějak mne nenapadá jednoduché řešení - jen (snad) rozříznout řetězec na část před tečkou a za tečkou a mezi ně vložit čárku. Nestkali jste se už někdo tím?

Děkuji

J. Mantlík




Odpovědi:
Odeslal: Seiner
Datum odeslání: 07.led.2005 v 11:50

Domnívám se, že v lispu přímé řešení neexistuje. Já používám (pro "inverzní" funkci) toto:

(defun inter(string / ii,ll,str)
 (if (/= string "")(progn
   (setq ll (strlen string) ii 1 str string string "")
 (while (<= ii ll)
    (if (= (substr str ii 1) ",")
        (setq string (strcat string "."))
        (setq string (strcat string (substr str ii 1)))
     )
    (setq ii (1+ ii))
)))
(setq string string)
)



Odeslal: Jan Liska
Datum odeslání: 07.led.2005 v 11:59

Dobrý den,

můžete také použít funkci VisualLispu vl-string-subst, např.

(vl-string-subst "," "." "123.456")

s pozdravem



-------------
Jan Liška
Autodesk Consulting


Odeslal: Seiner
Datum odeslání: 07.led.2005 v 12:09

Děkuji panu Liškovi, že mne upozornil tak kulantně :-) ("můžete také" místo "co to navrhujete za zvrhlost"). Je vidět, že mé znalosti LISPu zatuhly před pár lety.



Odeslal: Mantlík
Datum odeslání: 07.led.2005 v 14:16

Děkuji

Ale protože mé znalosti jsou o dost menší, než p. Seinera, musím se ještě zeptat.

Je možno místo posledního řetězce ve výrazu (použil jste "123.456") použít proměnnou, obsahující řetězec?

např. tedy

(vl-string-subst "," "." p)

 

J. Mantlík



Odeslal: Jan Liska
Datum odeslání: 07.led.2005 v 14:26

Samozřejmě. vl-string-subst je funkce jako každá jiná, tzn. pro každý z parametrů lze použít proměnnou. Funkce je definována VisualLispem, proto to předpona vl-.

S pozdravem



-------------
Jan Liška
Autodesk Consulting



Vytisknout stránku | Zavřít okno