| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Autolispprogramm (380 mal gelesen)
|
Predi Mitglied CAD-Konstr.
Beiträge: 4 Registriert: 12.06.2023
|
erstellt am: 12. Jun. 2023 13:08 <-- editieren / zitieren --> Unities abgeben:
Hallo alle zusammen, habe über das Forum ein hilfreiches Programm für eigene zwecke modifiziert. ----------------------------------------------------------------------------- (defun c:THW ( / AWS SUBSTLIST) (setvar "LUPREC" 8) (setq SUBSTLIST '((1.38157890 1.25)(0.94736850 0.7)(0.39473680 0.25)(0.63157900 0.7))) (if(setq AWS (ssget "X" '((0 . "*TEXT")))) (mapcar '(lambda(X / OBJ OBJDATA TH NEWTH) (if(and(setq OBJ(cadr X)) (setq OBJDATA(entget OBJ)) (setq TH(cdr(assoc 40 OBJDATA))) (setq NEWTH(cadr(assoc TH SUBSTLIST))) ) (entmod (subst(cons 40 NEWTH)(assoc 40 OBJDATA)OBJDATA)) ) ) (ssnamex AWS) ) ) );end --------------------------------------------------------------- Der Zwischenschritt in der dritten Zeile ist aber folgender: ((1.38158 1.25) (0.947368 0.7) (0.394737 0.25) (0.631579 0.7)) ...weiß jemand, wieso die Zahlenwerte gekürzt übernommen werden??? Vielen Dank schon mal, für konstruktive Unterstützungen.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21688 Registriert: 03.06.2002 Alles
|
erstellt am: 12. Jun. 2023 13:26 <-- editieren / zitieren --> Unities abgeben: Nur für Predi
Hi, das ist nur eine gerunde Anzeige, da ändert sich nichts (wie du beim prüfen des Programmes mit entsprechenden Objekten festgestellt hättest) Ein Objekt mit gc40 = 1.38157890 dürfte demnach nicht bearbeitet werden, wird es aber. Teste es mal so, nach der dritten Zeile: (mapcar '(lambda(x)(rtos (car x) 2 14)) SUBSTLIST) in Abhängigkeit von DIMZIN spuckt dir RTOS dann die Zahl mit bis zu 14 Nachkommastellen als String aus. [F1] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Predi Mitglied CAD-Konstr.
Beiträge: 4 Registriert: 12.06.2023
|
erstellt am: 12. Jun. 2023 13:38 <-- editieren / zitieren --> Unities abgeben:
Hallo cadffm, habe mal deinen Vorschlag wie folgt ergänzt. -------------------------------------------- (defun c:THW ( / AWS SUBSTLIST) (setvar "LUPREC" 8) (setq SUBSTLIST '((1.38157890 1.25)(0.94736850 0.7)(0.39473680 0.25)(0.63157900 0.7))) (mapcar '(lambda(x)(rtos (car x) 2 14)) SUBSTLIST) (if(setq AWS (ssget "X" '((0 . "*TEXT")))) (mapcar '(lambda(X / OBJ OBJDATA TH NEWTH) (if(and(setq OBJ(cadr X)) (setq OBJDATA(entget OBJ)) (setq TH(cdr(assoc 40 OBJDATA))) (setq NEWTH(cadr(assoc TH SUBSTLIST))) ) (entmod (subst(cons 40 NEWTH)(assoc 40 OBJDATA)OBJDATA)) ) ) (ssnamex AWS) ) ) );end --------------------------------------------- ...leider habe ich das Problem immer noch, sprich er ändert die Texthöhe 1.38157890 nich in 1.25 - die anderen schon!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21688 Registriert: 03.06.2002 Alles
|
erstellt am: 12. Jun. 2023 14:40 <-- editieren / zitieren --> Unities abgeben: Nur für Predi
Das war nicht mein Vorschlag, ich wollte dir nur zeigen das deine Aussage nicht stimmt, die Zeile ist aber technisch ebenso unsinnig wie das einstellen von Luprec. Die Zahlen deiner ALT-NEU Liste werden ganz normal und unverfälscht übernommen, meine Zeile war dafür da es dir zu zeigen. Befehl: (setq SUBSTLIST '((1.38157890 1.25)(0.94736850 0.7)(0.39473680 0.25)(0.63157900 0.7))) und zur Prüfung: Befehl: (mapcar '(lambda(x)(rtos (car x) 2 14)) SUBSTLIST) >>"...leider habe ich das Problem immer noch, sprich er ändert die Texthöhe 1.38157890 nich in 1.25 - die anderen schon!!" Dann liegt das an den Objekt-Daten, dein Objekt hat also nicht den gc40=1.3815789 Prüfe den gc40 deines Objektes: Befehl: (alert (rtos (cdr (assoc 40 (entget (car (entsel))))) 2 15)) Sollte ich damit richtig liegen (aber auch wenn nicht), schau dir mal EQUAL statt = an. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1741 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 12. Jun. 2023 19:15 <-- editieren / zitieren --> Unities abgeben: Nur für Predi
Hallo Predi, ich habe mal die beiden Gedanken von cadffm aufgenommen: 1. Prüfung ob GC 40 vorhanden ist, wenn nicht gibt es eine ALERT-Meldung. 2. Über EQUAL wird in jedem Schleifendurchgang die SUBSTLIST auf den Eintrag dezimiert, deren erste Werte nicht der Texthöhe entsprechen, im Rahmen der EQUAL-Genauigkeit 0.00001 (5 Nachkommastellen). Code:
(defun c:THW ( / AWS SUBSTLIST) (setvar "LUPREC" 8) (setq SUBSTLIST '((1.38157890 1.25)(0.94736850 0.7)(0.39473680 0.25)(0.63157900 0.7))) (mapcar '(lambda(x)(rtos (car x) 2 14)) SUBSTLIST) (if(setq AWS (ssget "X" '((0 . "*TEXT")))) (mapcar '(lambda(X / OBJ OBJDATA TH NEWTH) (if(and(setq OBJ(cadr X)) (setq OBJDATA(entget OBJ)) (or(cdr(assoc 40 OBJDATA)) (alert "Kein GC 40 vorhanden.")) (setq NEWTH(cadr(car (vl-remove-if (function (lambda(Y) (not(equal(car Y) (cdr(assoc 40 OBJDATA)) 0.00001);;;Nachkommagenauigkeit für EQUAL ) ) )SUBSTLIST)))) ) (entmod (subst(cons 40 NEWTH)(assoc 40 OBJDATA)OBJDATA)) ) ) (ssnamex AWS) ) ) );end
Irgendwie bin ich mir gar nicht mehr sicher, ob dass jetzt Dein Problem war, aber naja, ist eine Variante, vielleicht hilfts?!? ------------------ viele Grüße Jörn http://www.bosse-engineering.com das Flächenstempel_Tool Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Predi Mitglied CAD-Konstr.
Beiträge: 4 Registriert: 12.06.2023
|
erstellt am: 13. Jun. 2023 06:47 <-- editieren / zitieren --> Unities abgeben:
|
Predi Mitglied CAD-Konstr.
Beiträge: 4 Registriert: 12.06.2023
|
erstellt am: 13. Jun. 2023 06:52 <-- editieren / zitieren --> Unities abgeben:
Hallo joern bosse, habe deine Umsetzung ausprobiert und zu meiner Freude - es hat jetzt fehlerfrei geklappt. Vielen Dank hierfür. Werde mir mal in Ruhe deine Modifikation ansehen um (als Beginner) auch zu verstehen wieso es vorher nicht geklappt hat. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21688 Registriert: 03.06.2002 Alles
|
erstellt am: 13. Jun. 2023 15:31 <-- editieren / zitieren --> Unities abgeben: Nur für Predi
|