Vytisknout stránku | Zavřít okno

LISP zaokruhlenie

Vytištěno z: CAD Fórum
Kategorie: Autodesk - stavebnictví, strojírenství, CAD/GIS
Název fóra: AutoCAD
Popis fóra: Otázky kolem aplikací AutoCAD a AutoCAD LT, AutoCAD 360, prohlížečů, DWG a DWF, Design Review, Navisworks, nadstavby, 123D, A360 a cloud Autodesk 360
URL: https://www.cadforum.cz/forum/forum_posts.asp?TID=13152
Datum vytištění: 26.dub.2026 v 16:11


Téma: LISP zaokruhlenie
Odeslal: Acid3P
Předmět: LISP zaokruhlenie
Datum odeslání: 04.čvc.2011 v 14:02
Dobry den!

Vie neikto z vas o LISPe, ktory by vedel zaokruhlit text na zadany pocet miest? Pouzivam PK soft tools s prikazom TT, ktora oreze pozadovany pocet znakov zo zaciatku alebo konca textu, ale ja by som potreboval, aj spominane zaokruhlovanie. 

Skusal som hladat aj cez google, ale zatial som pozadovany lisp nenasiel.



Odpovědi:
Odeslal: PepaR
Datum odeslání: 04.čvc.2011 v 14:04
Dobrý den,

nepomohlo by následující http://www.cadforum.cz/forum/forum_posts.asp?TID=12039 - téma ? 


-------------
PepaR
https://www.jremes.cz" rel="nofollow - jremes.cz | https://www.stavlab.cz" rel="nofollow - stavlab.cz


Odeslal: Mantlík
Datum odeslání: 04.čvc.2011 v 14:50
Dřív se při programování zaokrouhlovalo tak, ře se k poslednímu potřebnému řádu přičetla jeho polovina
 
Takže např. při zaokrouhlování na dvě desetinná místa se přičítalo 0,005 a pak se to za 2. desetinným místem odřízlo, např.
 
12,144 + 0,005 = 12,149 -> po odříznutí je 12,14
12,145 + 0,005 = 12,150 -> po odříznutí je 12,15
12,149 + 0,005 = 12,154 -> po odříznutí je 12,15
asi by to šlo implementovat do toho lispu TT, před "ořezávací" řádek dát něco, jako
(setq a (+ 0.005 a))
 
(možná má i lisp něco pro zaokrouhlování, tak zběhlý zase nejsem)


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



Odeslal: Mantlík
Datum odeslání: 04.čvc.2011 v 16:05
A úplně jsem zapomněl, že rovnou zaokrouhluje i funkce pro převod čísla na text

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



Odeslal: DodoSVK
Datum odeslání: 03.srp.2011 v 10:59
Prosim Vas kam treba dany script doplnit do scriptu TRIM TEXT, aby okrem orezavania sa dalo nastavit aj to zaokruhlovanie....
 
dakujem
 

; *** TRIM TEXT v0.8.0 ***
(defun C:TT ( / n ptxt ntxt pref suf mtxt)
; define number of start cut
 (initget 4)
 (setq pref (getint "\nWrite number of start cut <0>: "))
 (if (null pref) (setq pref 0))
; define sufix
 (initget 4)
 (setq suf (getint "\nWrite number of end cut <0>: "))
 (if (null suf) (setq suf 0))
 (if (and (eq pref 0) (eq suf 0))
  (princ "\nNo changes... End command.")
  (progn
   (setq ptxt 0)
   (while (/= ptxt nil)
    (princ "\nSelect (m)text to edit... [press enter for end command]")
    (setq ptxt (ssget '(
      (-4 . "<OR")
       (0 . "TEXT")
       (0 . "MTEXT")
      (-4 . "OR>")
    )))
    (if (/= ptxt nil)
     (progn
      (setq n 0)
      (repeat (sslength ptxt)
       (setq ntxt (cdr (assoc 1 (entget (ssname ptxt n)))))
; test length of trim
       (if (< (strlen ntxt) (+ pref suf))
        (alert "\nLength of start + end cut is longer, as length of the text.")
        (if (eq (strlen ntxt) (+ pref suf))
         (progn
          (if (null del)
           (progn
            (initget "Yes No")
            (setq del (getkword "\nLength of start + end cut is equal as length of the text. Do you want delete text entit? <Yes>/No: "))
            (if (null del) (setq del "Yes"))
           )
          )
          (if (eq del "Yes")
           (entdel (ssname ptxt n))
          )
         )
         (progn
          (setq ntxt (substr ntxt (1+ pref) (- (strlen ntxt) (+ pref suf))))
          (setq mtxt (subst (cons 1 ntxt) (assoc 1 (entget (ssname ptxt n))) (entget (ssname ptxt n))))
          (entmod mtxt)
         )
        )
       )
       (setq n (1+ n))
      )
     )
     (princ "\nEnd command.")
    )
   )
  )
 )
 (princ)
)


Odeslal: Vladimír Michl
Datum odeslání: 03.srp.2011 v 11:39
Ten kód se na zaokrouhlování moc nehodí - zkuste RoundT na stránce Download, narychlo spíchnuto.
 
(Neošetřuje desetinnou čárku)


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


Odeslal: DodoSVK
Datum odeslání: 03.srp.2011 v 12:11

funguje vyborne len tu ciarku by to chcelo este  neako zapracovat, neviem ci je to zlozite..

 
lebo takto hrozi velke riziko ze pride ku chybe, ked by som tymto prikazom  upravoval viacej cisel, a mal by som omylom medzi nimi jedno z ciarkou...
 
2.555 => 2.56
2,555 => 2.00
 
uz len tazko by si potom vsimol ze doslo ku takejto hrubej chybe .To uz by bolo lepsie keby tie s ciarkou odignorovalo a nechalo trojmiestne....Nedoslo by tak ku chybe, v pripade ze omylom dam zaokruhlit cislo s ciarkou.
 
Ak je to otazka par klikov tak by som Vas poprosil este ten script upravit.
 
Dakujem.


Odeslal: Vladimír Michl
Datum odeslání: 03.srp.2011 v 15:34
Aktualizovaná verze RoundT teď zaokrouhluje jen čistá čísla a ošetřuje možné chyby. Řeší (a zachovává) i desetinnou čárku. Zadáním záporného počtu deset.míst jde vynutit zobrazování koncových nul.
 
Viz Download


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


Odeslal: Acid3P
Datum odeslání: 05.srp.2011 v 09:39
funguje to vyborne, plni to presne funkciu, ktoru som hladal. Dakujem!



Vytisknout stránku | Zavřít okno