| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Lisp für Scheitelpunkte bereinigen... (2339 mal gelesen)
|
Bunnyguard Mitglied
Beiträge: 365 Registriert: 15.12.2009 Intel i7-8850k 2.60 GHz 16 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: 13508 Registriert: 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: 365 Registriert: 15.12.2009 Intel i7-8850k 2.60 GHz 16 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: 13508 Registriert: 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: 21533 Registriert: 03.06.2002 System: F1 und 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: 365 Registriert: 15.12.2009 Intel i7-8850k 2.60 GHz 16 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: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 03. Jun. 2014 10:33 <-- editieren / zitieren --> Unities abgeben: Nur für Bunnyguard
|
Bunnyguard Mitglied
Beiträge: 365 Registriert: 15.12.2009 Intel i7-8850k 2.60 GHz 16 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: 21533 Registriert: 03.06.2002 System: F1 und 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: 13508 Registriert: 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: 365 Registriert: 15.12.2009 Intel i7-8850k 2.60 GHz 16 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: 13508 Registriert: 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: 2154 Registriert: 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: 365 Registriert: 15.12.2009 Intel i7-8850k 2.60 GHz 16 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: 2154 Registriert: 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: 365 Registriert: 15.12.2009 Intel i7-8850k 2.60 GHz 16 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: 13508 Registriert: 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: 365 Registriert: 15.12.2009 Intel i7-8850k 2.60 GHz 16 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: 13508 Registriert: 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: 365 Registriert: 15.12.2009 Intel i7-8850k 2.60 GHz 16 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: 365 Registriert: 15.12.2009 Intel i7-8850k 2.60 GHz 16 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: 13508 Registriert: 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: 365 Registriert: 15.12.2009 Intel i7-8850k 2.60 GHz 16 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: 428 Registriert: 02.06.2005 Win10, 64Bit AutoCad Architcture 2021 LiNear 2021 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üße Balrok [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: 1968 Registriert: 05.09.2000 AutoCAD, Bricscad Wir 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: 428 Registriert: 02.06.2005 Win10, 64Bit AutoCad Architcture 2021 LiNear 2021 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: 8075 Registriert: 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: 428 Registriert: 02.06.2005 Win10, 64Bit AutoCad Architcture 2021 LiNear 2021 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: 8075 Registriert: 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: 428 Registriert: 02.06.2005 Win10, 64Bit AutoCad Architcture 2021 LiNear 2021 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: 8075 Registriert: 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: 428 Registriert: 02.06.2005 Win10, 64Bit AutoCad Architcture 2021 LiNear 2021 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: 8075 Registriert: 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 2018Befehl: AO APPLOAD 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 |