Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Autolispprogramm

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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.

Sehen Sie sich das Profil von Predi an!   Senden Sie eine Private Message an Predi  Schreiben Sie einen Gästebucheintrag für Predi

Beiträge: 4
Registriert: 12.06.2023

erstellt am: 12. Jun. 2023 13:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21688
Registriert: 03.06.2002

Alles

erstellt am: 12. Jun. 2023 13:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Predi 10 Unities + Antwort hilfreich

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.

Sehen Sie sich das Profil von Predi an!   Senden Sie eine Private Message an Predi  Schreiben Sie einen Gästebucheintrag für Predi

Beiträge: 4
Registriert: 12.06.2023

erstellt am: 12. Jun. 2023 13:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21688
Registriert: 03.06.2002

Alles

erstellt am: 12. Jun. 2023 14:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Predi 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von joern bosse an!   Senden Sie eine Private Message an joern bosse  Schreiben Sie einen Gästebucheintrag für joern bosse

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Predi 10 Unities + Antwort hilfreich

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.

Sehen Sie sich das Profil von Predi an!   Senden Sie eine Private Message an Predi  Schreiben Sie einen Gästebucheintrag für Predi

Beiträge: 4
Registriert: 12.06.2023

erstellt am: 13. Jun. 2023 06:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo cadffm,

sorry hatte ich falsch aufgefaßt. Werde deine Hinweise und Gedanken mal in Ruhe durch den Kopf gehen lassen. Vielen Dank für deine schnelle und hilfreiche Unterstützung.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Predi
Mitglied
CAD-Konstr.

Sehen Sie sich das Profil von Predi an!   Senden Sie eine Private Message an Predi  Schreiben Sie einen Gästebucheintrag für Predi

Beiträge: 4
Registriert: 12.06.2023

erstellt am: 13. Jun. 2023 06:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21688
Registriert: 03.06.2002

Alles

erstellt am: 13. Jun. 2023 15:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Predi 10 Unities + Antwort hilfreich

auch wenn wir raten müssen (ohne die CAD-Daten):

Zitat:
Original erstellt von Predi:
um auch zu verstehen wieso es vorher nicht geklappt hat.


Dann schau dir wie oben vorgeschlagen die Objektdaten an und vergleiche diese mit den Zahlen aus deiner Lister

Wenn du autolisp.info von Anfang an durcharbeitest, dann landest du irgendwann auf dieser Seite zum Thema:
http://www.autolisp.info/schleifen2.html

Das Thema ist eine typische "Falle", das Thema wird noch das eine oder andere Mal auftauchen 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz