Vytisknout stránku | Zavřít okno

Lisp - zaokrouhlování funkce RTOS

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=681
Datum vytištění: 09.čer.2026 v 22:23


Téma: Lisp - zaokrouhlování funkce RTOS
Odeslal: Mantlík
Předmět: Lisp - zaokrouhlování funkce RTOS
Datum odeslání: 12.dub.2005 v 13:16

Dobrý den

U jedné rutiny v lispu jsem potřeboval použít funkci rtos. A teď nevím, jestli tato funkce zároveň na zadaný počet míst zaokrouhluje, nebo jen ořezává. Z kontrolních výpočtů mi připadá, že někdy to zaokrouhluje a jindy ořezává.

Víte nekdo, jaká je tedy správná funkce (nikde jsem to nenašel)

Díky 



-------------
J. Mantlík




Odpovědi:
Odeslal: Vladimír Michl
Datum odeslání: 12.dub.2005 v 13:52
(rtos) zaokrouhluje - jen pozor, v závislosti na DIMZIN též ořezává nevýznamné nuly - viz Help nebo:
http://www.cadforum.cz/cadforum/qaID.asp?tip=1671 - http://www.cadforum.cz/cadforum/qaID.asp?tip=1671

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


Odeslal: Mantlík
Datum odeslání: 11.kvě.2005 v 10:51

Dobrý den

 

Ještě jednou se vrátím k funkci rtos. Idea" ukážu na bod a na patřičná místa se napíšou souřadnice x, y (y 10x zmenšené) . Problémy jsou u souřadnice y

výsek kódu"

(setq pt (getpoint "\nUkaž vrchol polygonu: "))
(setq x (abs(car pt)))
(setq y (abs(cadr pt)))
.

.

(setq y3(/ y 10))

(setq y1 (rtos y3 2 2))

.

.

následuje vložení hodnot

 

Problém spočívá v tom, že pokud např. y= 2400, vloží se hodnota 240.01 místo 240.00 (nebo 240 ). Kontrola proměnných !y3 = 240.005 a !y1 = "240.01"

ale pokud na příkazovém řádku zadám

(setq y3(/ y 10))   -> vyjde správně 240.00
(setq y1 (rtos y3 2 2))  -> vyjde správně "240.00"

Jak je tohle možné ? Přitom nikde jinde se tyhle lokální proměnné v rutině nevyskytují a nepomůže ani jejich přejmenování

 

Děkuji za rady

 



-------------
J. Mantlík



Odeslal: pavlacka
Datum odeslání: 11.kvě.2005 v 16:13

Zkontrolujte promennou !pt.

roman pavlacka



Odeslal: Mantlík
Datum odeslání: 11.kvě.2005 v 16:30
To bylo samozřejmě to první, co jsem zkontroloval

-------------
J. Mantlík



Odeslal: Kubeczka
Datum odeslání: 11.kvě.2005 v 16:47
Zdravím. Vyzkoušel jsem zadat souřadnici y jako celé číslo (např 2402). V tomto případě funkce (setq y3(/ y 10))  vypočítá y3=240. Pokud y bude reálné číslo, pak y3=240.2. Nevím, nač to potřebujete. Pokud chcete zaokrouhlovat, tak si vytvořte jednoduchou rutinku, kterou použijete na každý vstup getpoint.


Odeslal: Kubeczka
Datum odeslání: 11.kvě.2005 v 16:54
Jakou to má plnit funkci a jaký výstup potřebujete? Mohu se o něco pokusit.


Odeslal: pavlacka
Datum odeslání: 11.kvě.2005 v 17:14

Ja bych postupoval vylucovaci metodou (je mozne i trasovat a sledovat chovani promennych).

Zkusil jsem si jen tu cast, kterou jste zverejnil a funguje mi korektne (dokonce jsem vybiral body podobne tomu vasemu).

Muzete zkusit  prerusit program v miste pred prikazem (setq y3 (/ y 10)) a potom ho zapsat na prikazovou radku a zkontrolovat !y.

roman pavlacka



Odeslal: Mantlík
Datum odeslání: 11.kvě.2005 v 18:29

 Heuréka ! záhada je vyřešena !

Chyba samozřejmě není v programu, ale ve mně.

Nejlépe použít moudrou větu pánů Š+G "A jakpak dělá kozička, pane inženýre ?")

Měl jsem totiž na disku dvě verze. Na starou, rozpracovanou, opuštěnou (a zapomenutou na disku) s pokusem o zaokrouhlování přitom vedla cesta v autocadu, zatímco k té novější, z níž byl výsek kódu cesta nevedla.Unhappy

A tak se samozřejmě pořád načítala verze stará. No nic ..

 

Děkuji všem, kteří se ozvali s radou nebo doplňujícími dotazy



-------------
J. Mantlík




Vytisknout stránku | Zavřít okno