Zaokrouhlení
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=12039
Datum vytištění: 04.lis.2026 v 09:43
Téma: Zaokrouhlení
Odeslal: PepaR
Předmět: Zaokrouhlení
Datum odeslání: 04.led.2011 v 09:23
|
Dobrý den,
opět prosba a dotaz na zdatné to jedince v oboru programování. Lze docílit aby funkce kotvysk.lsp (viz archiv) vkládala hodnotu souřadnice Y zaokrouhlenou v místě X ... 0,00X?
http://www.cadforum.cz/forum/uploads/20110104_092257_kotvysk.zip - uploads/20110104_092257_kotvysk.zip
Předem děkuji za pomoc
------------- PepaR https://www.jremes.cz" rel="nofollow - jremes.cz | https://www.stavlab.cz" rel="nofollow - stavlab.cz
|
Odpovědi:
Odeslal: Vladimír Michl
Datum odeslání: 04.led.2011 v 13:04
Nezkoumal jsem to do detailů, ale pokud vypusíte tu "3" ve funkci (rtos), měl by být počet desetinných míst závislý na standardním nastavení proměnné [VAR]LUPREC[/VAR].
------------- Vladimír Michl https://CADs.cz - CADs.cz , https://www.linkedin.com/in/vmichl/ - LinkedIn Autodesk Expert Elite
|
Odeslal: PepaR
Datum odeslání: 04.led.2011 v 16:30
|
Na to jsem taky myslel, ale to není řešením, protože potřebuji zobrazit číslo na tisíciny (tři desetnná místa), ale zaokrouhlení potřebuju na setiny.
Příklad:
- 1,232 = 1,230
- 1,235 = 1,240
------------- PepaR https://www.jremes.cz" rel="nofollow - jremes.cz | https://www.stavlab.cz" rel="nofollow - stavlab.cz
|
Odeslal: Vladimír Michl
Datum odeslání: 04.led.2011 v 17:46
|
Tak to zaokrouhlete na setiny a připište "0":
(strcat (rtos 1.232 2 2) "0") |
------------- Vladimír Michl https://CADs.cz - CADs.cz , https://www.linkedin.com/in/vmichl/ - LinkedIn Autodesk Expert Elite
|
Odeslal: Radim Cech
Datum odeslání: 04.led.2011 v 17:55
|
Zdravím, nedá mi to se nezeptat, co to je zase "úlet".
Proč se to má zaokrouhlovat na setiny, když to potřebujete zobrazit na tisíciny? To je "logika" jak u poslanců.
------------- R.C.
OSTRAVA
|
Odeslal: PepaR
Datum odeslání: 04.led.2011 v 18:13
Poždavek jednoho kolegy, který asi neumí kreslit přesně ;(.
------------- PepaR https://www.jremes.cz" rel="nofollow - jremes.cz | https://www.stavlab.cz" rel="nofollow - stavlab.cz
|
Odeslal: PepaR
Datum odeslání: 04.led.2011 v 18:19
Vladimír Michl napsal(a):
Tak to zaokrouhlete na setiny a připište "0":
(strcat (rtos 1.232 2 2) "0") |
|
Tak jsem to zkoušel ale něco je špatně, funkce hlásí chybu.
(cond ((> y 0) (setq text (strcat "+" (rtos y 2 2) "0"))) ((= y 0) (setq text "0,000")) ((< y 0) (setq text (strcat (rtos y 2 2) "0")) ) ; cond
|
http://www.cadforum.cz/forum/uploads/20110104_181738_kotvysk.lsp - uploads/20110104_181738_kotvysk.lsp
------------- PepaR https://www.jremes.cz" rel="nofollow - jremes.cz | https://www.stavlab.cz" rel="nofollow - stavlab.cz
|
Odeslal: Vladimír Michl
Datum odeslání: 04.led.2011 v 18:31
U toho řádku "< y" jste nějak na štíru se závorkami - jedna ukončovací chybí.
------------- Vladimír Michl https://CADs.cz - CADs.cz , https://www.linkedin.com/in/vmichl/ - LinkedIn Autodesk Expert Elite
|
Odeslal: PepaR
Datum odeslání: 04.led.2011 v 18:37
No jo, to bude ono. Školácká chyba. Moc děkuju.
------------- PepaR https://www.jremes.cz" rel="nofollow - jremes.cz | https://www.stavlab.cz" rel="nofollow - stavlab.cz
|
Odeslal: iand
Datum odeslání: 05.led.2011 v 09:23
PepaR: Zaokrouhlení:
Zkuste tohle, je to perfektní
[code]
(defun ROUND (num frac / half over)
;;; (ROUND NUM FRAC) returns NUM rounded to the nearest FRAC.
;;; Examples: (ROUND 15.2 0.25) returns 15.25
;;; (ROUND 15.1 0.25) returns 15.00
;;; By Duff Kurland - Autodesk, Inc. August 22, 1986
(if (minusp num)
(- (round1 (- num) frac))
(round1 num frac)
) ;_ end of if
) ;_ end of defun
(defun round1 (num frac / half over)
(setq half (/ frac 2.0))
(setq over (rem num frac)) ; Get remainder
(if (>= over half)
(+ num frac (- over)) ; Round up
(- num over) ; Round down
) ;_ end of if
) ;_ end of defun
[code]
|
Odeslal: PepaR
Datum odeslání: 05.led.2011 v 19:14
Děkuji za tip.
------------- PepaR https://www.jremes.cz" rel="nofollow - jremes.cz | https://www.stavlab.cz" rel="nofollow - stavlab.cz
|
Odeslal: alfred
Datum odeslání: 06.led.2011 v 07:15
Vim, ze je jiz problem vyresen, ale jen nabizim jeste jednu jednoduchou moznost.
Pokud je promenna x s real cislem:
(rtos (atof (rtos x 2 2)) 2 3)
"vnitrni" rtos zaokrouhli na potrebny pocet cisel a pritom zaokrouhli atof prevede string zpet na cislo "vnejsi" rtos doplni nuly a prevede na string
Pozor na nastaveni promenne [VAR]DIMZIN[/VAR]
|
|