| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: Datenrückgabe Funktion (1124 mal gelesen)
|
Gerd_Ecke Mitglied Bergbauingenieur
Beiträge: 146 Registriert: 28.08.2002 Civil 3D 2024, GeoCAD BricsCAD 23
|
erstellt am: 17. Okt. 2005 10:56 <-- editieren / zitieren --> Unities abgeben:
Hallo Mitstreiter, beginne mich ein wenig mit LISP zu beschäftigen. Erstelle eine Routine die Blöcke und Attribute in eine Textdatei schreibt. Mit folgenden Zeilen schreibe ich die XYZ werte in besagte Datei, ohne Probleme : (Princ (rtos (car (cdr (assoc 10 (entget aa)))) 2 3) Datei ) (Princ "; " Datei) (Princ (rtos (cadr (cdr (assoc 10 (entget aa)))) 2 3) Datei ) (Princ "; " Datei) (Princ (rtos (caddr (cdr (assoc 10 (entget aa)))) 2 3) Datei ) Da aber mein Excel als dezitrenner das Komma haben will habe ich folgende Funktion die aus . , macht
(defun PUinKO (s1 / s2 Z1) (setq s2 "") (setq z1 1) (While (< z1 (strlen s1)) (If (= (substr s1 z1 1) ".") (setq s2 (strcat s2 ",") (setq s2 (strcat s2 (substr s1 z1 1))) ) ; ende if (setq z1 (+ z1 1 )) );ende while (setq PUinKO s2) ); end rPuinKo und diese habe ich wie folgt eingebunden (Princ (PUinKO (rtos (car (cdr (assoc 10 (entget aa)))) 2 3)) Datei ) (Princ "; " Datei) (Princ (PUinKO (rtos (cadr (cdr (assoc 10 (entget aa)))) 2 3)) Datei ) (Princ "; " Datei) (Princ (PUinKO (rtos (caddr (cdr (assoc 10 (entget aa)))) 2 3)) Datei ) Aber vor dem 2. Aufruf der Funktion meldet das CAD : Fehlerhafte Funktion "45122,322" "45122,322" ist der umgewandelte X wert Was mache ich falsch ? MfG Gerd ------------------ ACAD 2000, Map 2006, GeoCAD wenig LTplus pur (ICAD) alles unter w2k Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 17. Okt. 2005 11:14 <-- editieren / zitieren --> Unities abgeben: Nur für Gerd_Ecke
Zitat: Original erstellt von Gerd_Ecke: Hallo Mitstreiter,beginne mich ein wenig mit LISP zu beschäftigen. Erstelle eine Routine die Blöcke und Attribute in eine Textdatei schreibt. Mit folgenden Zeilen schreibe ich die XYZ werte in besagte Datei, ohne Probleme : (Princ (rtos (car (cdr (assoc 10 (entget aa)))) 2 3) Datei ) (Princ "; " Datei) (Princ (rtos (cadr (cdr (assoc 10 (entget aa)))) 2 3) Datei ) (Princ "; " Datei) (Princ (rtos (caddr (cdr (assoc 10 (entget aa)))) 2 3) Datei ) Da aber mein Excel als dezitrenner das Komma haben will habe ich folgende Funktion die aus . , macht
(defun PUinKO (s1 / s2 Z1) (setq s2 "") (setq z1 1) (While (< z1 (strlen s1)) (If (= (substr s1 z1 1) ".") (setq s2 (strcat s2 ",") (setq s2 (strcat s2 (substr s1 z1 1))) ) ; ende if (setq z1 (+ z1 1 )) );ende while (setq PUinKO s2) ); end rPuinKo und diese habe ich wie folgt eingebunden (Princ (PUinKO (rtos (car (cdr (assoc 10 (entget aa)))) 2 3)) Datei ) (Princ "; " Datei) (Princ (PUinKO (rtos (cadr (cdr (assoc 10 (entget aa)))) 2 3)) Datei ) (Princ "; " Datei) (Princ (PUinKO (rtos (caddr (cdr (assoc 10 (entget aa)))) 2 3)) Datei ) Aber vor dem 2. Aufruf der Funktion meldet das CAD : Fehlerhafte Funktion "45122,322" "45122,322" ist der umgewandelte X wert Was mache ich falsch ? MfG Gerd
Hallo Gerd, du kommst wohl aus der VB(A)-Ecke? Die letzte Zeile in der Funktion PUinKO überschreibt dir die Funktionsdefinition, so dass an die Variable PUinKO nun der Wert und nicht mehr die Funktion gebunden ist. Schreibe einfach anstelle der Zeile (setq PUinKO s2) nur s2, dann sollte es funktionieren. Grüße Holger ------------------ Holger Brischke CAD on demand GmbH Autodesk User Group Central Europe Individuelle Lösungen von Heute auf Morgen. AUGCE Manager Deutschland Jackpot on demand - Wir eröffnen den Spätsommer mit einer Verlosung!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 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: 17. Okt. 2005 11:16 <-- editieren / zitieren --> Unities abgeben: Nur für Gerd_Ecke
|
Gerd_Ecke Mitglied Bergbauingenieur
Beiträge: 146 Registriert: 28.08.2002 Civil 3D 2024, GeoCAD BricsCAD 23
|
erstellt am: 17. Okt. 2005 11:35 <-- editieren / zitieren --> Unities abgeben:
Hallo Brischke! Zehn Punkte mein Werdegang war TurboPascal->Delphi->VBA. Danke Funktion funktioniert jetzt tadellos. Hallo Joern Bosse! Danke würde auch gehen, aber ich schreibe die Routinen für Kollegen in meiner Abteilung die kein AutoCAD sondern IntelliCAD haben, so daß ich nur die Grundfunktionen von Lisp nutzen kann. Mit freundlichen grüßen Gerd Ecke ------------------ ACAD 2000, Map 2006, GeoCAD wenig LTplus pur (ICAD) alles unter w2k Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 17. Okt. 2005 13:07 <-- editieren / zitieren --> Unities abgeben: Nur für Gerd_Ecke
|
s.wickel Mitglied Bauingenieur Wasserwirtschaft
Beiträge: 422 Registriert: 17.12.2001 Bricscad V7 - V11
|
erstellt am: 18. Okt. 2005 13:18 <-- editieren / zitieren --> Unities abgeben: Nur für Gerd_Ecke
Hallo Gerd! Mapcar hat viele schöne Text-Funktionen in seinem AutoLISP Tutorial vorgestellt. Ich habe mir die Funktionen einfach in eine Lispdatei eingebaut. Dabei habe ich die Erklärungen drin gelassen. Im Kopf der Datei habe ich eine Zusammenfassung der Funktionen mit einer Kurzbeschreibung untergebracht. Dann braucht man nicht alles selber schreiben. Guck mal rein, vielleicht kannst du's gebrauchen (PUinKO entspricht etwa str-subst). ------------------ Nodda, Stefan [Diese Nachricht wurde von s.wickel am 18. Okt. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Gerd_Ecke Mitglied Bergbauingenieur
Beiträge: 146 Registriert: 28.08.2002 Civil 3D 2024, GeoCAD BricsCAD 23
|
erstellt am: 20. Okt. 2005 09:27 <-- editieren / zitieren --> Unities abgeben:
Hallo Stefan, danke ist sehr gut zu gebrauchen, habe 10 U's vergeben. ABER eigentlich müßte ich ja aus noch 20 U's an MapCar vergeben, wie geht das eigentlich ? MfG Gerd ------------------ ACAD 2000, Map 2006, GeoCAD wenig LTplus pur (ICAD) alles unter w2k Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |