Vytisknout stránku | Zavřít okno

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í: 24.dub.2026 v 10:40


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 (moderátor)
ARKANCE CZ - https://arkance.world - arkance.world
(podpora viz helpdesk.arkance-systems.cz)


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 (moderátor)
ARKANCE CZ - https://arkance.world - arkance.world
(podpora viz helpdesk.arkance-systems.cz)


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
Původně odeslal(a) Vladimír Michl 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 (moderátor)
ARKANCE CZ - https://arkance.world - arkance.world
(podpora viz helpdesk.arkance-systems.cz)


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]




Vytisknout stránku | Zavřít okno