|  |  | 
|  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | 
|  |  | 
|  | PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung 
 | 
| Autor | Thema:  Lisp für Scheitelpunkte bereinigen... (2712 mal gelesen) | 
 | Bunnyguard Mitglied
 
 
   
 
      Beiträge: 367Registriert: 15.12.2009
 Intel i7-8850k 2.60 GHz16 GB RAM
 Win 10 Pro 64Bit
 Nvidia Quadro P2000
 SSD 256 Pro Serie
 Autocad 2023
 Inventor 2023 Pro
 |    erstellt am: 02. Jun. 2014 21:02  <-- editieren / zitieren -->    Unities abgeben:            
  Hallöchen, ich wollte mal fragen ob es ein LISP (Script)gibt womit er alle Scheitelpunkte in der Zeichnung von z.b. 54445.99
 auf 54446 setzt...Sprich die bereinigt auf 0 kommastellen ?
 Ziemlich nervig wenn man alle Objekte durch gehen muss   Danke fü Tipps, Tricks und Hilfen... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | CADmium Moderator
 Maschinenbaukonstrukteur
 
         
 
  
 
      Beiträge: 13533Registriert: 30.11.2003
 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom. |    erstellt am: 02. Jun. 2014 21:19  <-- editieren / zitieren -->    Unities abgeben:           Nur für Bunnyguard   | 
                        | Bunnyguard Mitglied
 
 
   
 
      Beiträge: 367Registriert: 15.12.2009
 Intel i7-8850k 2.60 GHz16 GB RAM
 Win 10 Pro 64Bit
 Nvidia Quadro P2000
 SSD 256 Pro Serie
 Autocad 2023
 Inventor 2023 Pro
 |    erstellt am: 02. Jun. 2014 21:33  <-- editieren / zitieren -->    Unities abgeben:            | 
                        | CADmium Moderator
 Maschinenbaukonstrukteur
 
         
 
  
 
      Beiträge: 13533Registriert: 30.11.2003
 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom. |    erstellt am: 03. Jun. 2014 07:57  <-- editieren / zitieren -->    Unities abgeben:           Nur für Bunnyguard   | 
                        | cadffm Moderator
 良い精神
 
         
 
  
 
      Beiträge: 22689Registriert: 03.06.2002
 System: F1und Google
 |    erstellt am: 03. Jun. 2014 08:43  <-- editieren / zitieren -->    Unities abgeben:           Nur für Bunnyguard   
  Nach CADmiums erster Antwort(Link) ist das Thema doch beantwortet, man sollte lediglich die akzeptierten Objektypen im Programm anpassen. Statt "LINE" zB. "*LINE" - oder keine Beschränkung, oder was auch immer. ------------------CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Bunnyguard Mitglied
 
 
   
 
      Beiträge: 367Registriert: 15.12.2009
 Intel i7-8850k 2.60 GHz16 GB RAM
 Win 10 Pro 64Bit
 Nvidia Quadro P2000
 SSD 256 Pro Serie
 Autocad 2023
 Inventor 2023 Pro
 |    erstellt am: 03. Jun. 2014 10:18  <-- editieren / zitieren -->    Unities abgeben:            
  Also die Lisp seht folgendermaßen aus nun...: 1. Möchte das App nicht jedesmal über appload laden, wie bau ich da ein kurzbefehl ein damit ich das direkt abrufen kann? 2. Das Lisp korigiert mir leider nur 1 Scheitelpunkt...ich möchte aber z.b. bei einem Rechteck alle 4 korrigieren... egal wie viel Scheitelpunkte es gibt soll er alle korigieren... Und das ganze, damit ich ein Auswahlsatz wählen kann und nicht jede Polylinie eigens machen muss...DANKE Danke für die Hilfe (setq aws (entsel "\polyline oder Block wählen: "))(if aws
 (progn
 (setq objekt (car aws)
 elem_liste10 (entget (car aws))
 elem_liste11 (entget (car aws))
 elem_typ (cdr (assoc 0 elem_liste10)))
 (if (or (= elem_typ "LWPOLYLINE")
 (= elem_typ "INSERT"))
 (progn
 ; *********************************
 (setq zehner (cdr (assoc 10 elem_liste10))
 zehn_x (cadr (assoc 10 elem_liste10))
 zehn_y (caddr (assoc 10 elem_liste10)))
 ; wenn die Differenz zur nächsten vollen Zahl kleinergleich 0.1, dann verschiebe auf volle Zahl.
 ; sonst auf gerundetes Zehntel
 (if (<= (abs (- (atof (rtos zehn_x 2 0)) (atof (rtos zehn_x 2 1)))) 0.1)
 (setq zehn_x (atof (rtos zehn_x 2 0)))
 (setq zehn_x (atof (rtos zehn_x 2 1)))
 )
 (if (<= (abs (- (atof (rtos zehn_y 2 0)) (atof (rtos zehn_y 2 1)))) 0.1)
 (setq zehn_y (atof (rtos zehn_y 2 0)))
 (setq zehn_y (atof (rtos zehn_y 2 1)))
 )
 (entmod (setq elem_liste11 (subst (cons 10 (list zehn_x zehn_y 0.0)) (cons 10 zehner) elem_liste10)))
 (entupd objekt)
 (command "_regen")
 (princ (strcat "\n  10er verschoben von \n"
 (rtos (car zehner) 2) " / " (rtos (cadr zehner) 2)
 " nach \n"
 (rtos zehn_x 2) " / " (rtos zehn_y 2))
 )
 ; *********************************
 (if (= elem_typ "LWPOLYLINE")
 (progn
 (setq elfer (cdr (assoc 11 elem_liste11))
 elf_x (cadr (assoc 11 elem_liste11))
 elf_y (caddr (assoc 11 elem_liste11)))
 ; wenn die Differenz zur nächsten vollen Zahl kleinergleich 0.1, dann verschiebe auf volle Zahl.
 ; sonst auf gerundetes elftel
 (if (<= (abs (- (atof (rtos elf_x 2 0)) (atof (rtos elf_x 2 1)))) 0.1)
 (setq elf_x (atof (rtos elf_x 2 0)))
 (setq elf_x (atof (rtos elf_x 2 1)))
 )
 (if (<= (abs (- (atof (rtos elf_y 2 0)) (atof (rtos elf_y 2 1)))) 0.1)
 (setq elf_y (atof (rtos elf_y 2 0)))
 (setq elf_y (atof (rtos elf_y 2 1)))
 )
 (entmod (subst (cons 11 (list elf_x elf_y 0.0)) (cons 11 elfer) elem_liste11))
 (entupd objekt)
 (command "_regen")
 (princ (strcat "\n  11er verschoben von \n"
 (rtos (car elfer) 2) " / " (rtos (cadr elfer) 2)
 " nach \n"
 (rtos elf_x 2) " / " (rtos elf_y 2))
 )
 )
 )
 )
 (progn
 (princ (strcat "\nDas ist ein(e) " elem_typ "."))
 )
 )
 )
 (princ "\nNichts gewählt.")
 )
 
 [Diese Nachricht wurde von Bunnyguard am 03. Jun. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | cadffm Moderator
 良い精神
 
         
 
  
 
      Beiträge: 22689Registriert: 03.06.2002
 System: F1und Google
 |    erstellt am: 03. Jun. 2014 10:33  <-- editieren / zitieren -->    Unities abgeben:           Nur für Bunnyguard   | 
                        | Bunnyguard Mitglied
 
 
   
 
      Beiträge: 367Registriert: 15.12.2009
 Intel i7-8850k 2.60 GHz16 GB RAM
 Win 10 Pro 64Bit
 Nvidia Quadro P2000
 SSD 256 Pro Serie
 Autocad 2023
 Inventor 2023 Pro
 |    erstellt am: 03. Jun. 2014 10:47  <-- editieren / zitieren -->    Unities abgeben:            
  Na ok, wenn ich diese nehme:Lässt sich erfolgreich Laden, aber über koord_rnd kommt unbekannter Befehl...hmmm
 (defun koord_rnd (genauigkeit / n satz)(if (setq satz (ssget '((-4 . "<OR")
 (0 . "*LINE")
 (0 . "INSERT")
 (-4 . "OR>")
 )
 )
 )
 (progn
 (setq n (1- (sslength satz)))
 (repeat (sslength satz)
 (entmod
 (mapcar
 '(lambda (data)
 (if (or (= (car data) 10) (= (car data) 11))
 (cons (car data)
 (mapcar '(lambda (wert)
 (atof (rtos wert 2 genauigkeit))
 )
 (cdr data)
 )
 )
 data
 )
 )
 (entget (ssname satz n))
 )
 )
 (setq n (1- n))
 )
 )
 )
 (princ)
 )
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | cadffm Moderator
 良い精神
 
         
 
  
 
      Beiträge: 22689Registriert: 03.06.2002
 System: F1und Google
 |    erstellt am: 03. Jun. 2014 11:07  <-- editieren / zitieren -->    Unities abgeben:           Nur für Bunnyguard   
  koord_rnd ist nicht als AutoCAD-Befehl definiert, nur als Lispfunktion. Aufruf: (koord_rnd 0) Wobei die 0 die Genauigkeit(Stellen) angibt.
 Du kannst die nun eigene AutoCADbefehle kreieren: (defun c:koord_rnd0 ()(koord_rnd 0))(defun c:koord_rnd3 ()(koord_rnd 3))
 Als Beispiel.. Wegen dem "immer verfügbar", da solltest du dir vom User FAQ hier im Forum die Threads ansehen,darunter gibt es auch welche zu acaddoc.lsp und applod.
 ------------------CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | CADmium Moderator
 Maschinenbaukonstrukteur
 
         
 
  
 
      Beiträge: 13533Registriert: 30.11.2003
 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom. |    erstellt am: 03. Jun. 2014 11:08  <-- editieren / zitieren -->    Unities abgeben:           Nur für Bunnyguard   | 
                        | Bunnyguard Mitglied
 
 
   
 
      Beiträge: 367Registriert: 15.12.2009
 Intel i7-8850k 2.60 GHz16 GB RAM
 Win 10 Pro 64Bit
 Nvidia Quadro P2000
 SSD 256 Pro Serie
 Autocad 2023
 Inventor 2023 Pro
 |    erstellt am: 03. Jun. 2014 11:26  <-- editieren / zitieren -->    Unities abgeben:            
  (defun c:sp_clear (genauigkeit / n satz)   (if (setq satz (ssget '((-4 . "<OR")   (0 . "*LINE")   (0 . "INSERT")   (-4 . "OR>") ) )       )     (progn       (setq n (1- (sslength satz)))       (repeat (sslength satz) (entmod   (mapcar     '(lambda (data)       (if (or (= (car data) 10) (= (car data) 11)) (cons (car data)       (mapcar '(lambda (wert)   (atof (rtos wert 2 genauigkeit)) )       (cdr data)       ) ) data       )     )     (entget (ssname satz n))   ) ) (setq n (1- n))       )     )   )   (princ) ) Befehl:
 Befehl: SP_CLEAR
 ; Fehler: Zu wenig Argumente
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | CADmium Moderator
 Maschinenbaukonstrukteur
 
         
 
  
 
      Beiträge: 13533Registriert: 30.11.2003
 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom. |    erstellt am: 03. Jun. 2014 11:32  <-- editieren / zitieren -->    Unities abgeben:           Nur für Bunnyguard   | 
                        | wronzky Ehrenmitglied V.I.P. h.c.
 CAD-Dienstleistungen für Architekten
 
 
  
 
      Beiträge: 2154Registriert: 02.05.2005
 CAD:AutoCAD 2.6 bis 2014
 ADT 2005 bis ACA 2013
 Arcibem
 System:
 Windows
 Internet-Startseite:
 http://www.archi.de
 |    erstellt am: 03. Jun. 2014 11:42  <-- editieren / zitieren -->    Unities abgeben:           Nur für Bunnyguard   
  Hallo, da Rundungsroutinen entweder nur bestimmte Objekte (z.B. nur Linien) bearbeiten, oder sehr komplex werden können, würde ich es immer noch so machen: Code:(defun c:RoundItAll ( / as file)
 (if (setq as (ssget))
 (progn
 (command "_dxfout" (setq file (vl-filename-mktemp "" "" ".dxf")) "_o" as "" 0)
 (command "_.insert" (strcat "*" file) '(0 0 0) 1 0)
 (vl-file-delete file)
 (command "_erase" as "")
 )
 )
 )
 
 Grüsse, Henning ------------------Henning Jesse
 VoxelManufaktur
 Computer-Dienstleistungen für Architekten und Ingenieure
  http://www.voxelman.de
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Bunnyguard Mitglied
 
 
   
 
      Beiträge: 367Registriert: 15.12.2009
 Intel i7-8850k 2.60 GHz16 GB RAM
 Win 10 Pro 64Bit
 Nvidia Quadro P2000
 SSD 256 Pro Serie
 Autocad 2023
 Inventor 2023 Pro
 |    erstellt am: 03. Jun. 2014 11:59  <-- editieren / zitieren -->    Unities abgeben:            | 
                        | wronzky Ehrenmitglied V.I.P. h.c.
 CAD-Dienstleistungen für Architekten
 
 
  
 
      Beiträge: 2154Registriert: 02.05.2005
 CAD:AutoCAD 2.6 bis 2014
 ADT 2005 bis ACA 2013
 Arcibem
 System:
 Windows
 Internet-Startseite:
 http://www.archi.de
 |    erstellt am: 03. Jun. 2014 12:47  <-- editieren / zitieren -->    Unities abgeben:           Nur für Bunnyguard   
  Falls die Frage an mich gerichtet war: Grundsätzlich sind die Blöcke in der erstellten DXF ja bereits gerundet, werden aber beim Einfügen wieder durch die in der Zeichnung ersetzt. Das läßt sich nicht so einfach per "Schalter" beheben. Eine Möglichkeit wäre, den Block selbst als DXF heraus zu schreiben und beim Wiedereinfügen zu aktualisieren. Hier mal ein Beispielcode dazu: Code:(defun c:RoundTheBlock ( / as block file)
 (vl-load-com)
 (if (setq as (ssget "_:S" '((0 . "INSERT"))))
 (progn
 (setq block (vla-get-effectivename (vlax-ename->vla-object (ssname as 0))))
 (command "_wblock" (setq file (vl-filename-mktemp "" "" ".dxf")) 0 block)
 (command "_.insert" (strcat block "=" file)) (command)
 (vl-file-delete file)
 )
 )
 )
 
  Grüsse, Henning ------------------Henning Jesse
 VoxelManufaktur
 Computer-Dienstleistungen für Architekten und Ingenieure
  http://www.voxelman.de
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Bunnyguard Mitglied
 
 
   
 
      Beiträge: 367Registriert: 15.12.2009
 Intel i7-8850k 2.60 GHz16 GB RAM
 Win 10 Pro 64Bit
 Nvidia Quadro P2000
 SSD 256 Pro Serie
 Autocad 2023
 Inventor 2023 Pro
 |    erstellt am: 03. Jun. 2014 13:04  <-- editieren / zitieren -->    Unities abgeben:            | 
                        | CADmium Moderator
 Maschinenbaukonstrukteur
 
         
 
  
 
      Beiträge: 13533Registriert: 30.11.2003
 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom. |    erstellt am: 03. Jun. 2014 13:39  <-- editieren / zitieren -->    Unities abgeben:           Nur für Bunnyguard   | 
                        | Bunnyguard Mitglied
 
 
   
 
      Beiträge: 367Registriert: 15.12.2009
 Intel i7-8850k 2.60 GHz16 GB RAM
 Win 10 Pro 64Bit
 Nvidia Quadro P2000
 SSD 256 Pro Serie
 Autocad 2023
 Inventor 2023 Pro
 |    erstellt am: 03. Jun. 2014 14:30  <-- editieren / zitieren -->    Unities abgeben:            | 
                        | CADmium Moderator
 Maschinenbaukonstrukteur
 
         
 
  
 
      Beiträge: 13533Registriert: 30.11.2003
 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom. |    erstellt am: 03. Jun. 2014 14:35  <-- editieren / zitieren -->    Unities abgeben:           Nur für Bunnyguard   | 
                        | Bunnyguard Mitglied
 
 
   
 
      Beiträge: 367Registriert: 15.12.2009
 Intel i7-8850k 2.60 GHz16 GB RAM
 Win 10 Pro 64Bit
 Nvidia Quadro P2000
 SSD 256 Pro Serie
 Autocad 2023
 Inventor 2023 Pro
 |    erstellt am: 03. Jun. 2014 16:02  <-- editieren / zitieren -->    Unities abgeben:            | 
                        | Bunnyguard Mitglied
 
 
   
 
      Beiträge: 367Registriert: 15.12.2009
 Intel i7-8850k 2.60 GHz16 GB RAM
 Win 10 Pro 64Bit
 Nvidia Quadro P2000
 SSD 256 Pro Serie
 Autocad 2023
 Inventor 2023 Pro
 |    erstellt am: 04. Jun. 2014 08:15  <-- editieren / zitieren -->    Unities abgeben:            
  Guten Morgen, ich möchte jetzt denn Code verwenden da ich diesen auch in einer Blockreferenz verwenden kann, denk ich   Kann mir bitte jemand das so umstricken das ich per Befehl "rd"dieses abrufen kann.
 Ich will das in unsere Standard Lisp mit rein nehmen.
 Und Wichtig das er mir jede Linie nimmt...
 "*Line" funktioniert irgendwie nicht...
 Das wär sehr nett von euch. Danke schon mal. (setq aws (entsel "\nLinie oder Block wählen: "))(if aws
 (progn
 (setq objekt (car aws)
 elem_liste10 (entget (car aws))
 elem_liste11 (entget (car aws))
 elem_typ (cdr (assoc 0 elem_liste10)))
 (if (or (= elem_typ "*LINE")
 (= elem_typ "INSERT"))
 (progn
 ; *********************************
 (setq zehner (cdr (assoc 10 elem_liste10))
 zehn_x (cadr (assoc 10 elem_liste10))
 zehn_y (caddr (assoc 10 elem_liste10)))
 ; wenn die Differenz zur nächsten vollen Zahl kleinergleich 0.1, dann verschiebe auf volle Zahl.
 ; sonst auf gerundetes Zehntel
 (if (<= (abs (- (atof (rtos zehn_x 2 0)) (atof (rtos zehn_x 2 1)))) 0.1)
 (setq zehn_x (atof (rtos zehn_x 2 0)))
 (setq zehn_x (atof (rtos zehn_x 2 1)))
 )
 (if (<= (abs (- (atof (rtos zehn_y 2 0)) (atof (rtos zehn_y 2 1)))) 0.1)
 (setq zehn_y (atof (rtos zehn_y 2 0)))
 (setq zehn_y (atof (rtos zehn_y 2 1)))
 )
 (entmod (setq elem_liste11 (subst (cons 10 (list zehn_x zehn_y 0.0)) (cons 10 zehner) elem_liste10)))
 (entupd objekt)
 (command "_regen")
 (princ (strcat "\n  10er verschoben von \n"
 (rtos (car zehner) 2) " / " (rtos (cadr zehner) 2)
 " nach \n"
 (rtos zehn_x 2) " / " (rtos zehn_y 2))
 )
 ; *********************************
 (if (= elem_typ "*LINE")
 (progn
 (setq elfer (cdr (assoc 11 elem_liste11))
 elf_x (cadr (assoc 11 elem_liste11))
 elf_y (caddr (assoc 11 elem_liste11)))
 ; wenn die Differenz zur nächsten vollen Zahl kleinergleich 0.1, dann verschiebe auf volle Zahl.
 ; sonst auf gerundetes elftel
 (if (<= (abs (- (atof (rtos elf_x 2 0)) (atof (rtos elf_x 2 1)))) 0.1)
 (setq elf_x (atof (rtos elf_x 2 0)))
 (setq elf_x (atof (rtos elf_x 2 1)))
 )
 (if (<= (abs (- (atof (rtos elf_y 2 0)) (atof (rtos elf_y 2 1)))) 0.1)
 (setq elf_y (atof (rtos elf_y 2 0)))
 (setq elf_y (atof (rtos elf_y 2 1)))
 )
 (entmod (subst (cons 11 (list elf_x elf_y 0.0)) (cons 11 elfer) elem_liste11))
 (entupd objekt)
 (command "_regen")
 (princ (strcat "\n  11er verschoben von \n"
 (rtos (car elfer) 2) " / " (rtos (cadr elfer) 2)
 " nach \n"
 (rtos elf_x 2) " / " (rtos elf_y 2))
 )
 )
 )
 )
 (progn
 (princ (strcat "\nDas ist ein(e) " elem_typ "."))
 )
 )
 )
 (princ "\nNichts gewählt.")
 [Diese Nachricht wurde von Bunnyguard am 04. Jun. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | CADmium Moderator
 Maschinenbaukonstrukteur
 
         
 
  
 
      Beiträge: 13533Registriert: 30.11.2003
 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom. |    erstellt am: 04. Jun. 2014 08:48  <-- editieren / zitieren -->    Unities abgeben:           Nur für Bunnyguard   | 
                        | Bunnyguard Mitglied
 
 
   
 
      Beiträge: 367Registriert: 15.12.2009
 Intel i7-8850k 2.60 GHz16 GB RAM
 Win 10 Pro 64Bit
 Nvidia Quadro P2000
 SSD 256 Pro Serie
 Autocad 2023
 Inventor 2023 Pro
 |    erstellt am: 04. Jun. 2014 08:58  <-- editieren / zitieren -->    Unities abgeben:            | 
                        | Balrok Mitglied
 Technischer Zeichner
 
   
 
      Beiträge: 439Registriert: 02.06.2005
 Win10, 64BitAutoCad Architcture 2024
 LiNear 2024
 EPLAN P8
 |    erstellt am: 15. Feb. 2018 13:05  <-- editieren / zitieren -->    Unities abgeben:           Nur für Bunnyguard   
  ACHTUNG! Sie antworten auf einen Beitrag der älter als 1 Jahr ist! Ich muss nochmal auf diesen Beitrag zurückgreifen.
 Leider sagt er mir immer, das ich 0 Objekte ausgewählt habe, obwohl ich die
 geschlossene PL angewählt habe.
  
 Was mache ich falsch?      Habe den Code versucht: Natürlich mit der Änderung von Cadffm (defun c:koord_rnd0 ()(koord_rnd 0))
 (if (setq satz (ssget '((-4 . "<OR")
 (0 . "*LINE")
 (0 . "INSERT")
 (-4 . "OR>")
 )
 )
 )
 (progn
 (setq n (1- (sslength satz)))
 (repeat (sslength satz)
 (entmod
 (mapcar
 '(lambda (data)
 (if (or (= (car data) 10) (= (car data) 11))
 (cons (car data)
 (mapcar '(lambda (wert)
 (atof (rtos wert 2 genauigkeit))
 )
 (cdr data)
 )
 )
 data
 )
 )
 (entget (ssname satz n))
 )
 )
 (setq n (1- n))
 )
 )
 )
 (princ)
 )
 GrüßeBalrok
 [Diese Nachricht wurde von Balrok am 15. Feb. 2018 editiert.] [Diese Nachricht wurde von Balrok am 15. Feb. 2018 editiert.] [Diese Nachricht wurde von Balrok am 15. Feb. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | CADwiesel Moderator
 CAD4FM UG
 
      
 
  
 
      Beiträge: 1999Registriert: 05.09.2000
 AutoCAD, BricscadWir machen das Mögliche unmöglich
 |    erstellt am: 16. Feb. 2018 08:57  <-- editieren / zitieren -->    Unities abgeben:           Nur für Bunnyguard   
  So wäre es richtig [CODE][/(defun c:koord_rnd (genauigkeit /)   (if (setq satz (ssget '((-4 . "<OR")                           (0 . "*LINE")                           (0 . "INSERT")                           (-4 . "OR>")                           )                         )              )     (progn       (setq n (1- (sslength satz)))       (repeat (sslength satz)         (entmod           (mapcar             '(lambda (data)                (if (or (= (car data) 10) (= (car data) 11))                  (cons (car data)                        (mapcar '(lambda (wert)                                   (atof (rtos wert 2 genauigkeit))                                   )                                 (cdr data)                                )                         )                  data                  )                )              (entget (ssname satz n))             )            )          (setq n (1- n))         )        )      )    (princ)   )  (koord_rnd 0)CODE]
 Wobei eben der Aufruf durch (koord_rnd mit einem Wert erfolgt)
 (koord_rnd 0) oder (koord_rnd 2)...
 
 ------------------Gruß
 
  CADwiesel Besucht uns im CHAT
 
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Balrok Mitglied
 Technischer Zeichner
 
   
 
      Beiträge: 439Registriert: 02.06.2005
 Win10, 64BitAutoCad Architcture 2024
 LiNear 2024
 EPLAN P8
 |    erstellt am: 16. Feb. 2018 08:59  <-- editieren / zitieren -->    Unities abgeben:           Nur für Bunnyguard   
  Was für ein Wert muss denn dann da eingefügt werden?  Wie viel Scheitelpunkte die PL haben darf, oder welcher Wert muss eingesetzt werden? ...und bei mir kommt die Meldung, "Aufrufen von (command) aus *Fehler* nicht möglich, ohne vorheriges Aufrufen von (*push-error-using-command*).Konvertieren von (command)-Aufrufen in (command-s) wird empfohlen."
 Danke schon mal!Balrok
 [Diese Nachricht wurde von Balrok am 16. Feb. 2018 editiert.]
 [Diese Nachricht wurde von Balrok am 16. Feb. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | runkelruebe Moderator
 Straßen- / Tiefbau
 
         
 
  
 
      Beiträge: 8086Registriert: 09.03.2006
 Kinder, kauft Kämme! Es kommen lausige Zeiten.
 |    erstellt am: 16. Feb. 2018 09:27  <-- editieren / zitieren -->    Unities abgeben:           Nur für Bunnyguard   
  ACHTUNG! Sie antworten auf einen Beitrag der älter als 1 Jahr ist! >> Was für ein Wert muss denn dann da eingefügt werden?Wie viel Scheitelpunkte die PL haben darf, oder welcher Wert muss eingesetzt werden?
 Hast Du den thread gelesen oder nur die Überschrift?
 Die Funktion heißt koord_rnd und erwartet einen Übergabeparameter, der genauigkeit heißt, die ganze Zeit wird von Nachkommastellen geschrieben... Wie kommst Du auf die Zahl der Scheitelpunkte
  
 Die Ausgangsfrage lautete: "womit er alle Scheitelpunkte in der Zeichnung von z.b. 54445.99 auf 54446 setzt...Sprich die bereinigt auf 0 kommastellen?" Das mit dem command-s ist ein alter Hut, aber ich glaube, Du suchst eh eine andere Funktion...
 Zum Testen kannst Du dennoch den code aus https://ww3.cad.de/foren/ubb/Forum54/HTML/031229.shtml#000007 verwenden, Aufruf wie von cadffm eine AW drunter beschrieben.
 ------------------
 Gruß,
 runkelruebe          Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Balrok Mitglied
 Technischer Zeichner
 
   
 
      Beiträge: 439Registriert: 02.06.2005
 Win10, 64BitAutoCad Architcture 2024
 LiNear 2024
 EPLAN P8
 |    erstellt am: 16. Feb. 2018 09:41  <-- editieren / zitieren -->    Unities abgeben:           Nur für Bunnyguard   
  Oh, da war ich wohl auf dem Holzweg!    In der Tat, ich suche eine Funktion, in der ich die vielen  Scheitelpunkte auf einer geraden PL automatisch entfernen kann.  Da kam mir die lsp sp-clear entgegen gehüpft.     ...aber die funktioniert auch nicht.
 Fehlermeldeung:
 Fehler: Zu wenig Argumente    Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | runkelruebe Moderator
 Straßen- / Tiefbau
 
         
 
  
 
      Beiträge: 8086Registriert: 09.03.2006
 Kinder, kauft Kämme! Es kommen lausige Zeiten.
 |    erstellt am: 16. Feb. 2018 09:44  <-- editieren / zitieren -->    Unities abgeben:           Nur für Bunnyguard   
  ACHTUNG! Sie antworten auf einen Beitrag der älter als 1 Jahr ist! >> Da kam mir die lsp sp-clear entgegen gehüpft.   Das ist toll. >> ...aber die funktioniert auch nicht. Das ist doof. >> Fehlermeldeung: Fehler: Zu wenig Argumente  Das ist dann wohl so.     ------------------Gruß,
 runkelruebe          Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Balrok Mitglied
 Technischer Zeichner
 
   
 
      Beiträge: 439Registriert: 02.06.2005
 Win10, 64BitAutoCad Architcture 2024
 LiNear 2024
 EPLAN P8
 |    erstellt am: 16. Feb. 2018 09:52  <-- editieren / zitieren -->    Unities abgeben:           Nur für Bunnyguard   
  Ein letztes Mal möchte ich noch nerven,     Der Fehler lautet doch einwenig anders, Aufrufen von (command) aus *Fehler* nicht möglich, ohne vorheriges Aufrufen von (*push-error-using-command*).Konvertieren von (command)-Aufrufen in (command-s) wird empfohlen.
 Ich kann aber bei der lisp kein command finden?  Na ja, vielleicht bin ich aber einfach WE reif!    Trotzdem Danke für eure Gedult!
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | runkelruebe Moderator
 Straßen- / Tiefbau
 
         
 
  
 
      Beiträge: 8086Registriert: 09.03.2006
 Kinder, kauft Kämme! Es kommen lausige Zeiten.
 |    erstellt am: 16. Feb. 2018 10:17  <-- editieren / zitieren -->    Unities abgeben:           Nur für Bunnyguard   >> Der Fehler lautet doch einwenig anders,
 Aufrufen von (command) aus *Fehler* nicht möglich, ohne vorheriges Aufrufen von (*push-error-using-command*).Konvertieren von (command)-Aufrufen in (command-s) wird empfohlen
 JA,  Zitat:Das mit dem command-s ist ein alter Hut
 
 >> Ich kann aber bei der lisp kein command finden?  Von welchem code sprichst Du denn mittlerweile?Wenn es der aus diesem thread ist, gilt weiterhin
 
 Zitat:Zum Testen kannst Du dennoch den code aus https://ww3.cad.de/foren/ubb/Forum54/HTML/031229.shtml#000007 verwenden, Aufruf wie von cadffm eine AW drunter beschrieben.
 
 >> Ein letztes Mal möchte ich noch nerven [...]>> Trotzdem Danke für eure Gedult!
 Aber nur, weil Freitag is    ------------------Gruß,
 runkelruebe          Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Balrok Mitglied
 Technischer Zeichner
 
   
 
      Beiträge: 439Registriert: 02.06.2005
 Win10, 64BitAutoCad Architcture 2024
 LiNear 2024
 EPLAN P8
 |    erstellt am: 16. Feb. 2018 10:26  <-- editieren / zitieren -->    Unities abgeben:           Nur für Bunnyguard   
  Von diesem Code-Schnipsel, (defun c:sp_clear (genauigkeit / n satz)(if (setq satz (ssget '((-4 . "<OR")
 (0 . "*LINE")
 (0 . "INSERT")
 (-4 . "OR>")
 )
 )
 )
 (progn
 (setq n (1- (sslength satz)))
 (repeat (sslength satz)
 (entmod
 (mapcar
 '(lambda (data)
 (if (or (= (car data) 10) (= (car data) 11))
 (cons (car data)
 (mapcar '(lambda (wert)
 (atof (rtos wert 2 genauigkeit))
 )
 (cdr data)
 )
 )
 data
 )
 )
 (entget (ssname satz n))
 )
 )
 (setq n (1- n))
 )
 )
 )
 (princ)
 )
 ...und da kommt nun die Fehlermeldung.
    
 Die lisp auf der du verweist funktionert leider auch nicht. Habe in dem Theard schon alle ausprobiert.    Bin einfach WE reif. Werde jetzt erstmal zum Termin gehen und abschalten...
   Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                       
 | runkelruebe Moderator
 Straßen- / Tiefbau
 
         
 
  
 
      Beiträge: 8086Registriert: 09.03.2006
 Kinder, kauft Kämme! Es kommen lausige Zeiten.
 |    erstellt am: 16. Feb. 2018 12:00  <-- editieren / zitieren -->    Unities abgeben:           Nur für Bunnyguard   
  Du hast den code von Bunnyguard verwendet, der gepostet wurde, weil er einen Fehler wirft, da die Umsetzung vom C: nicht korrekt erfolgte. CADmium gab 6 Minuten später die dazu passende AW, den Verweis auf cadffm weiter oben. Du liest diesen thread wirklich nicht, oder?    Der codeschnippsle, auf den ich verwiesen habe, funktionierte bei mir, habe ihn extra vorher getestet. Code:(defun koord_rnd (genauigkeit / n satz)
 (if (setq satz (ssget '((-4 . "<OR")
 (0 . "*LINE")
 (0 . "INSERT")
 (-4 . "OR>")
 )
 )
 )
 (progn
 (setq n (1- (sslength satz)))
 (repeat (sslength satz)
 (entmod
 (mapcar
 '(lambda (data)
 (if (or (= (car data) 10) (= (car data) 11))
 (cons (car data)
 (mapcar '(lambda (wert)
 (atof (rtos wert 2 genauigkeit))
 )
 (cdr data)
 )
 )
 data
 )
 )
 (entget (ssname satz n))
 )
 )
 (setq n (1- n))
 )
 )
 )
 (princ)
 )
 
 AUFRUF mit:  Code:(koord_rnd 2)
 
 Ergebnis: Die Stützpunkte der PL haben nur noch 2 Nachkommastellen. Code:
 Befehlsfensterauszug von Civil 3D 2018
 Befehl: AOAPPLOAD TEST2.lsp erfolgreich geladen.
 Befehl:
 Befehl:
 Befehl: (koord_rnd 2)
 Objekte wählen: Regeneriert Modell.Regeneriert Modell.
 Regeneriert Modell.
 Regeneriert Modell.
 1 gefunden
 Objekte wählen: Befehl: 
 Versuch es evtl. Montag nochmal    ------------------Gruß,
 runkelruebe          Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |