| |
| 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: Punktkoordinaten aus Datei auslesen (9018 mal gelesen)
|
PsycoDad Mitglied Bauleiter
Beiträge: 54 Registriert: 10.11.2005 AutoDesk AutoCad 2005, Pentium 4 2,8Ghz 1024RAM Asus P4P800 ATI READON 9600 Pro 256MB
|
erstellt am: 10. Jun. 2008 11:17 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich beziehe mich hier auf einen älteren Beitrag. http://ww3.cad.de/foren/ubb/Forum54/HTML/005305.shtml#000003 In Diesem Beitrag war gefragt wie man eine Reihe von Punktkoordinaten aus einer *.txt-Datei nach AutoCAD importiert. Das wurde so gelöst.
Code: (defun c:test (/ file zeile) (setq file (getfiled "Verzeichnisliste" "" "" 2)) (if file (progn (setq file (open file "r")) (while (setq zeile (read-line file)) (command "_.POINT" (cddadr (read(strcat "'(" zeile ")")))) );while (close file) ) (alert "Keine Date gewählt!") ) )
Ich habe mit einer Zeile Probleme.
Code: (command "_.POINT" (cddadr (read(strcat "'(" zeile ")"))))
Mir liegen fünf verschiedene Files vor, in denen die Koordinaten alle anderst gelistet sind. 1. PktNr Ort X Y Z 2. X Y Z 3. X Y Z Wert1 Wert2 Wert3 und ähnliches. Hab schon im Kochbuch gestöbert und auf den im Beitrag angegebenen Seiten. Wie kann ich diese Zeile umbauen das ich immer die Koordinaten raus bekomme. Also im ersten Beispiel wäre das Listen Eintrag 3,4 und 5. Im Zweiten Beispiel wäre es 1, 2 und 3. Und im dritten Beispiel eben nur 1, 2, und 3. Ich komm irgendwie mit den Listen Funktionen nicht klar. Wenn mir einer helfen könnte wäre das super. MfG PsycoDad ------------------ Essen und schlafen, macht niemand zum Grafen! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tunnelbauer Ehrenmitglied V.I.P. h.c. Bauingenieur
Beiträge: 7085 Registriert: 13.01.2004 ich hab eh keine Probleme damit...
|
erstellt am: 10. Jun. 2008 11:20 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 10. Jun. 2008 11:20 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
Ist es so klarer : ...? (setq LISTE (read(strcat "'(" zeile ")"))) (command "_.POINT" (list (nth 0 LISTE) ;_Nr des X Wertes (nth 1 LISTE) ;_Nr des Y Wertes (nth 2 LISTE) ;_Nr des Z Wertes ) ) ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 10. Jun. 2008 11:21 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
|
PsycoDad Mitglied Bauleiter
Beiträge: 54 Registriert: 10.11.2005 AutoDesk AutoCad 2005, Pentium 4 2,8Ghz 1024RAM Asus P4P800 ATI READON 9600 Pro 256MB
|
erstellt am: 10. Jun. 2008 11:34 <-- editieren / zitieren --> Unities abgeben:
Erstmal Danke. Die Geschwindigkeit wie hier Posts beantwortet werden ist unglaublich. @tunnelbauer: Die automatische erkennung des Dateityps, wäre natürlich der Hammer. Ist aber für mich gar nicht nötig. Ich werde das mit ner Abfrage erledigen. @CADmium: Ja das müsste es sein. Werds gleich mal probieren. @wronzky: Hab ich mir angeschaut. Sitz vor Mapcar´s Buch und hab schon alles probiert.. Werd da nicht schlau draus. @Alle: Dank euch! meld mich garantiert nachher wieder. Hab da nochmal was. ------------------ Essen und schlafen, macht niemand zum Grafen! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PsycoDad Mitglied Bauleiter
Beiträge: 54 Registriert: 10.11.2005 AutoDesk AutoCad 2005, Pentium 4 2,8Ghz 1024RAM Asus P4P800 ATI READON 9600 Pro 256MB
|
erstellt am: 10. Jun. 2008 12:00 <-- editieren / zitieren --> Unities abgeben:
Okay. Habs jetzt so versucht. Code: (defun c:versuch (/ file zeile) (setq file (getfiled "Verzeichnisliste" "" "" 2)) (if file (progn (setq file (open file "r")) (while (setq zeile (read-line file)) (setq LISTE (read(strcat "'(" zeile ")"))) (command "_.POINT" (list (nth 0 LISTE) (nth 1 LISTE) (nth 2 LISTE) ) ) );while (close file) ) (alert "Keine Date gewählt!") ) )
Mein txt-File sieht so aus. 99.351 300.472 10.066 100.779 300.843 10.249 101.412 300.470 10.913 101.635 294.375 11.680 Geht nicht! Dachte ich hätte es verstanden. Wohl doch nicht. Hilfe? ------------------ Essen und schlafen, macht niemand zum Grafen! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 10. Jun. 2008 12:19 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
|
PsycoDad Mitglied Bauleiter
Beiträge: 54 Registriert: 10.11.2005 AutoDesk AutoCad 2005, Pentium 4 2,8Ghz 1024RAM Asus P4P800 ATI READON 9600 Pro 256MB
|
erstellt am: 10. Jun. 2008 12:53 <-- editieren / zitieren --> Unities abgeben:
|
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: 12. Jun. 2008 08:22 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
Hallo, nochmal eine Anmerkung zur automatischen Erkennung der Elemente X, Y und Z: in vielen Fällen kann man davon ausgehen, das nur für x, y und z ein Dezimalpunkt verwendet wird: Dann kann man über (if(vl-string-search "." Listenelement) die anderen Elemente herausfiltern. ------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 12. Jun. 2008 09:16 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
Zitat: Original erstellt von joern bosse: Hallo, nochmal eine Anmerkung zur automatischen Erkennung der Elemente X, Y und Z: in vielen Fällen kann man davon ausgehen, das nur für x, y und z ein Dezimalpunkt verwendet wird: Dann kann man über (if(vl-string-search "." Listenelement) die anderen Elemente herausfiltern.
oder einfach (distof VAR) verwenden ... gibt bei nichtnumerischen Wert nil zurück ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." 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: 12. Jun. 2008 09:30 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
|
PsycoDad Mitglied Bauleiter
Beiträge: 54 Registriert: 10.11.2005 AutoDesk AutoCad 2005, Pentium 4 2,8Ghz 1024RAM Asus P4P800 ATI READON 9600 Pro 256MB
|
erstellt am: 12. Jun. 2008 12:17 <-- editieren / zitieren --> Unities abgeben:
Danke das ihr euch immer noch bemüht. Zum Teil ist es so das die anderen Elemente ebenso Dezimalpunkte beinhalten. Das Ausschließen über diese Funktion ist aber Trotzdem Klasse. Thx. ------------------ Essen und schlafen, macht niemand zum Grafen! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fennik Mitglied
Beiträge: 3 Registriert: 25.11.2008
|
erstellt am: 25. Nov. 2008 10:49 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
Hallo zusammen,ich bin super neu hier im Forum (Denk mal, dass ich an der richtigen Stelle bin) und habe Civil 2008 / AutoCAD 2008 bekommen (und einen Schulungstag). Leider reicht das nicht aus um meine neue Aufgabe zu meistern. Und da hab ich bei euch gesehen, dass es LISP-Dateien gibt um seine Arbeit zu erleichtern. Ich habe aber keine Ahnung wie man die schreibt (benutzen kann ich sie schon). Ich hoffe, dass Ihr mir da weiterhelfen könnt. Problem:Ich erzeuge einen Excel-Datei (siehe Anhang) die aus Punktnummer, x-Koor, y-Koor, und Länge besteht, sowie eine DWG-Datei mit einer 2D-Polylinie (und eine Achse bei Bedarf (Civil3d)) derren Punkte aus der Liste auf dieser Linie liegen. Meine Aufgabe soll nun sein: 1) Die Punkte in eine DWG-Datei importieren. 2) Eine WEITERE PUNKTFOLGE erzeugen, die auf der Linie liegt und sich aus der Punktkoordinate (x,y) + (plus) der Länge entlang der Linie ermittelt. D.H. in Jeder Zeile der Excel-Datei hab ich einen Punkt x,y und eine Länge (keine Sehnenlänge) die einen neuen Punkt x,y auf der Linie erzeugt. 3) Die Punkte aus der Liste und die neuen Punkte soll ich nun mit einer Geraden Linie verbinden (IMMER PAARweise) D.H. Erster Punkt aus der Zeile mit dem, aus der Länge erzeugten, neuen Punkt mit einer Linie verbinden. Und das Zeile für Zeile. Leider können das mal locker 500 bis 3000 Punkt-Paare werden und dann würde ich Wochen brauchen die alle zu ermitteln, einzutragen und zu verbinden. Zur Zeit mach ich das mit dem "MESSEN" und "LÄNGE" Befehl. Aber das ist sehr Zeitaufwendig. Ich Hoffe, dass jemand interesse an meinem Problem hat und dies als eine Herausforderung sieht und mir bei der LISP oder anderer Möglichkeiten helfen kann. Vielen Dank im Voraus. Gruß Fennik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 25. Nov. 2008 11:18 <-- editieren / zitieren -->
Hi, Willkommen in CAD-de! Deine Aufgabe erinnert mich an einen vor kurzem eingestellten Thread mit einem Titel ähnlich 'Sichtweiten' ==> kann es sein, dass Du an gleichem/aehnlichem arbeitest? Zusammenfassend zur Verwendung des Forums, punktuelle Hilfe ist hier jederzeit möglich, also wenn Du beim Zeichnen, oder in Deinem Lisp irgendwo hängst und dann für diese Situation Hilfe brauchst ==> GERNE! Bitte aber ein Forum, in dem viele Ihre Zeit (kostenlos) zur Verfügung stellen, um Hilfestellung zu geben nicht mit kostenloser Applikationsentwicklung zu verwechseln. Was Du beschrieben hast (merkst Du ja schon an der Länge der Beschreibung), überschreitet aus meiner Sicht den Rahmen der kostenlosen Hilfestellung. Auch Deine Aussage Zitat: 'Ich habe aber keine Ahnung wie man die schreibt'
(Sie scheint ehrlich, das ehrt Dich) bringt mich zu der Aussage, wende Dich an Deinen AutoCAD-Betreuer oder an Applikationsentwickler, dieses Projekt gleich als erstes als Lernprojekt zu sehen, wird IMHO zu heftig. - alfred - |
Fennik Mitglied
Beiträge: 3 Registriert: 25.11.2008
|
erstellt am: 25. Nov. 2008 12:14 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 25. Nov. 2008 12:18 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
Eine Adresse für sowas wäre www.cad-od.de ... gibt aber auch andere .. einfach mal im Forum umgucken ... und ich denke, einen Aufwand von 2h (bei vorhandenen Funktonsbibliotheken Excel oder TXT-Export ) mußt du schon veranschlagen... ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 25. Nov. 2008 12:22 <-- editieren / zitieren -->
Hi, um neutral zu bleiben, schau mal, von welchen Forumteilnehmern Du im LISP-Forum, im VBA-Forum oder im ObjectARX-Forum Antworten findest, die Deiner Meinung nach gut sind, eventuell mit Deinen Aufgabenbereichen etwas zu tun haben, dann kannst Du vielleicht noch auf deren Homepage schauen, um einen Eindruck zu gewinnen, denen kannst Du last but not least PM senden und nachfragen. Bzgl. einer Aufwandsabschätzung ist mit den Kontakten direkt auszumachen. Ich würde mich aber nicht wundern, wenn Deine Beschreibung noch genauer auszufallen hätte (am besten mit einer Zeichnung und einem dazupassenden XLS, wo Du schon händisch genau das gemacht hast, was Du automatisiert brauchst, incl. Layer, Linientypen, Vorlagezeichnung von der Du ausgehst). - alfred - |
Fennik Mitglied
Beiträge: 3 Registriert: 25.11.2008
|
erstellt am: 25. Nov. 2008 14:18 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
|
PsycoDad Mitglied Bauleiter
Beiträge: 54 Registriert: 10.11.2005 AutoDesk AutoCad 2005, Pentium 4 2,8Ghz 1024RAM Asus P4P800 ATI READON 9600 Pro 256MB
|
erstellt am: 27. Jan. 2009 14:18 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen. Hab mich länger nicht mehr damit beschäftigt, und bei erneuten Versuch bin ich auf ein Problem gestoßen. Mein txt-File sieht jetzt so aus: 000000000010 9.9510 9.0930 0.00000 000000000011 14.5740 9.0410 0.00000 000000000012 14.5740 11.0160 0.00000 000000000013 16.5090 11.0090 0.00000 Wobei sich nur geändert hat das in der ersten Spalte auch noch die Punktnummer eingelesen werden sollte. Das einlesen der X,Y,Z-Koordinaten hab ich früher so gemacht.
Code: (defun c:versuch (/ file zeile) (setq file (getfiled "Verzeichnisliste" "" "" 2)) (if file (progn (setq file (open file "r")) (while (setq zeile (read-line file))(setq LISTE (read(strcat "'(" zeile ")"))) (command "_.POINT" (list (nth 0 LISTE) (nth 1 LISTE) (nth 2 LISTE) ) ) );while (close file) ) (alert "Keine Date gewählt!") ) )
Wie krieg ich jetzt die Punkt Nummer mit rein? Wie kann ich erreichen das aus dem Punkt "0000000000012" in der Darstellung nur noch "12" steht? Wie immer bin ich euch für jede Hilfe dankbar. Gruß PsycoDad ps: Könnte wetten, ich hab das schon mal hinbekommen. Ist echt ärgerlich wenn man sich ein weilchen nicht mit was beschäftigt, wieviel man wieder vergisst.
------------------ Essen und schlafen, macht niemand zum Grafen! 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: 27. Jan. 2009 14:33 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
Hallo, mit der Punktnummer würde ich einlesen wie bisher, aber ein (VL-STRING-LEFT-TRIM "0" mit einbringen, dann werden schon mal alle linksliegende Nullen entfernt. Dann kannst Du über die READ-Funktion weitermachen wie bisher, nur das Du dann 4 anstatt 3 Listenwerte hast. Dann würde ich natürlich lieber einen Block mit einem Attribut (zur Aufnahme der Punktnummer) als einen Punkt verwenden, aber da kannst Du ja noch ein bißchen Feinschliff machen. Code:
(defun c:versuch (/ file zeile) (setq file (getfiled "Verzeichnisliste" "" "" 2)) (if file (progn (setq file (open file "r")) (while (setq zeile (read-line file))(setq LISTE (cadr(read(strcat "'(" (vl-string-left-trim "0"zeile) ")")))) (princ (strcat "\nPunktnummer :" (itoa(nth 0 LISTE)))) (command "_.POINT" (list (nth 1 LISTE) (nth 2 LISTE) (nth 3 LISTE) ) ) );while (close file) ) (alert "Keine Date gewählt!") ) )
------------------ viele Grüße Jörn http://www.bosse-engineering.com 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: 27. Jan. 2009 14:48 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
|
PsycoDad Mitglied Bauleiter
Beiträge: 54 Registriert: 10.11.2005 AutoDesk AutoCad 2005, Pentium 4 2,8Ghz 1024RAM Asus P4P800 ATI READON 9600 Pro 256MB
|
erstellt am: 27. Jan. 2009 15:37 <-- editieren / zitieren --> Unities abgeben:
Danke für die Hilfe. Habs jetzt so getestet.
Code: (defun c:versuch1 (/ file zeile) (setq file (getfiled "Verzeichnisliste" "" "" 2)) (if file (progn (setq file (open file "r")) (while (setq zeile (read-line file))(setq LISTE (read(strcat "(" (vl-string-left-trim "0"zeile) ")"))) (princ (strcat "\nPunktnummer :" (itoa(nth 0 LISTE)))) (command "_.POINT" (list (nth 1 LISTE) (nth 2 LISTE) (nth 3 LISTE) ) ) );while (close file) ) (alert "Keine Date gewählt!") ) )
Krieg dann ne Fehlermeldung Code: Fehler: Fehlerhafter Lesevorgang für Zeichen (Oktal): 0
Kann mir einer helfen? ------------------ Essen und schlafen, macht niemand zum Grafen! 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: 27. Jan. 2009 15:41 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
|
PsycoDad Mitglied Bauleiter
Beiträge: 54 Registriert: 10.11.2005 AutoDesk AutoCad 2005, Pentium 4 2,8Ghz 1024RAM Asus P4P800 ATI READON 9600 Pro 256MB
|
erstellt am: 27. Jan. 2009 16:06 <-- editieren / zitieren --> Unities abgeben:
Ja. Klappt. Problem war, das die die Punkte in ner *.tac Datei vorlagen. Hab ich gar nicht drauf geachtet. Dachte das wäre ne *.txt. Schnell umbenannt, dann klappts auch mit meiner. Komisch das es aber mit der *.tac nicht geht. Muss wohl an (open file "r") liegen. Wie krieg ich hin das die Punktbezeichnung neben dem Punkt Dargestellt wird? Kann ich den Punktstil beim Einfügen beeinflussen, oder wird immer der aktuelle verwendet? Gruß PsycoDad ------------------ Essen und schlafen, macht niemand zum Grafen! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PsycoDad Mitglied Bauleiter
Beiträge: 54 Registriert: 10.11.2005 AutoDesk AutoCad 2005, Pentium 4 2,8Ghz 1024RAM Asus P4P800 ATI READON 9600 Pro 256MB
|
erstellt am: 27. Jan. 2009 16:18 <-- editieren / zitieren --> Unities abgeben:
|
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: 27. Jan. 2009 16:21 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
Hallo PsychoDad, Zitat:
Wie krieg ich hin das die Punktbezeichnung neben dem Punkt Dargestellt wird? Kann ich den Punktstil beim Einfügen beeinflussen, oder wird immer der aktuelle verwendet?
Du verwendest den Befehl (command "_.POINT" und erzeugst AutoCAD-Punkte. Anstelle dessen würde ich einen Block mit einem Attribut definieren. Dann kannst Du den Befehl (command "_.INSERT" verwenden. Das Attribut wird direkt beim ausführen des Befehls abgefragt, wenn die Variable "ATTREQ" auf 1 steht. ------------------ viele Grüße Jörn http://www.bosse-engineering.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 28. Jan. 2009 08:45 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
Hallo PsychoDad, Zitat: Original erstellt von PsycoDad: Geht auch mit der txt nicht. Muss an was anderm liegen.
Wie erzeugst Du Deine Datei? Irgendwie sieht die zwar mit einem Texteditor betrachten auf den ersten Blick ganz OK aus, aber geh mal in die VL-Editor Konsole und führe die folgenden Zeilen aus:
Code:
(setq file (getfiled "Verzeichnisliste" "" "" 2)) (setq file_f (open file "r")) (setq zeile (read-line file_f))
Bei mir erscheint dann sowas: "ÿþ0\0000\0000\0000\0000\0000\0000\0000\0000\0000\0001\0000\000 \000 \000 \000 \000 \000 \000 \0009\000.\0009\0005\0001 ...." Wenn Du das mit der Koord.txt von Jörn machst, sieht das so aus: "000000000010 9.9510 9.0930 0.00000" Das ganze zeigt sich auch so, wenn man mal beide Dateien im Hex-Modus ansieht. Damit liegt also das Problem bei Deiner Datendatei und nicht beim lisp. LG Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 28. Jan. 2009 09:11 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
Auch noch ein kleiner Nachtrag, wenn, wie Jörg 6 Beiträge weiter oben gesagt hat, das QUOTE weggelassen wird, liefert
Code:
setq LISTE (read(strcat "(" zeile ")")))
bei Jörgs Datei (1. Zeile) gleich (10 9.951 9.093 0.0) das vl-string-left-trim sollte damit nicht gebraucht werden. Mit (car liste) kommst Du dann an die Punktnummer und mit (cdr liste) an die Punktkoordinate. Das Konstrukt
Code:
(list (nth 1 LISTE) (nth 2 LISTE) (nth 3 LISTE) )
wird damit auch nicht erforderlich. LG Thomas 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: 28. Jan. 2009 09:46 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
Hallo Thomas, hallo PsychoDad, mit der Erkenntnis von Thomas habe ich jetzt den Code noch mal so zusammengebaut, das anstelle eines Punktes ein Block "Punkt" eingefügt wird (die Definition in anhängender Zeichnung) Code:
(defun c:versuch (/ FILE LISTE ZEILE) (setvar "ATTREQ" 1) (if (setq file (getfiled "Verzeichnisliste" "" "" 2)) (progn (setq file (open file "r")) (while (setq zeile (read-line file)) (setq LISTE (read (strcat "(" zeile ")"))) (command "_.INSERT" "Punkt" (cdr LISTE) "" "" "" (itoa (car Liste))) ) (close file) ) (alert "Keine Datei gewählt!") ) )
Auf die NTH's kann ganz verzichtet werden, da ein CDR bereits die xyz-Koordinaten aus der LISTE holt, mit CAR wird die Punktnummer abgerufen. ------------------ viele Grüße Jörn http://www.bosse-engineering.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PsycoDad Mitglied Bauleiter
Beiträge: 54 Registriert: 10.11.2005 AutoDesk AutoCad 2005, Pentium 4 2,8Ghz 1024RAM Asus P4P800 ATI READON 9600 Pro 256MB
|
erstellt am: 28. Jan. 2009 10:12 <-- editieren / zitieren --> Unities abgeben:
Hallo Jörn, Thomas. Das ist super. Hab es gerade getestet. Genau so ist es Perfekt. Wie hast du den "Punkt"-Block eingerichtet damit er die Nummer übernimmt und darstellt. Damit hab ich mich noch nie beschäftigt. Erstelle ich da nur nen Block und füge ein Attribut hinzu? @Thomas: Die Datei hat tatsächlich nen Schaden. Die Daten kommen nicht von mir. Werde mal bei meinem Kollegen anfragen ob auch ein anderer Export möglich ist.
------------------ Essen und schlafen, macht niemand zum Grafen! 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: 28. Jan. 2009 10:29 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
|
PsycoDad Mitglied Bauleiter
Beiträge: 54 Registriert: 10.11.2005 AutoDesk AutoCad 2005, Pentium 4 2,8Ghz 1024RAM Asus P4P800 ATI READON 9600 Pro 256MB
|
erstellt am: 28. Jan. 2009 10:49 <-- editieren / zitieren --> Unities abgeben:
Das schau ich mir heute abend mal genauer an. Bedanke mich mal wieder bei allen für die schnelle Hilfe. Immer wieder ein vergnügen hier im Forum ne Frage zu stellen. So, jetzt wird weiter studiert. Gruß Peter ------------------ Essen und schlafen, macht niemand zum Grafen! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 30. Aug. 2011 10:20 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 30. Aug. 2011 10:34 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
|
neurosis Mitglied dipl.ing.
Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 30. Aug. 2011 11:21 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
hallo cadplayer, aus stdlib von reini urban: Code:
;;; Converts string with delimiters into string list ;;; Ignore repeated delims such as white space. ;;; The order of chars in delim is not important. ;;; Might be renamed to std-string-tokenize ;;; Also named lex-string in some Common Lisps. ;;; (std-strtok " 2 3 " " ") => ("2" "3") ;;; (std-strtok "f 1,3" ", ") => ("f" "1" "3") ;;; Same as std-string->strlist (defun STD-STRTOK (s delims / len s1 i c lst) (setq delims (std-string->list delims) len (strlen s) s1 "" i (1+ len)) (while (> (setq i (1- i)) 0) (setq c (substr s i 1)) (if (member (ascii c) delims) (if (/= s1 "") ; no null tokens (setq lst (cons s1 lst) s1 "") ) (setq s1 (strcat c s1)) ) ) (if (/= s1 "") (cons s1 lst) ; no ("" "1" "2")! lst ) )
gruss marco ------------------ Marco Heuer www.arc-aachen.de Airport Office Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 30. Aug. 2011 12:13 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
@neurosis: function no definition Bei Axels Seiten wird mir schon ein bissel schwindlig. step by step 1,6395579.272,148352.957,87.760,HP Welchen Gedankengang muss ich überhaupt anstellen um die obige Zeile in eine Zeichkette zu verwandeln "," werden ja nicht akzeptiert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 30. Aug. 2011 12:15 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 30. Aug. 2011 12:58 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
Ich hab mal ein Beispiel meiner Koord-datei angehangen Im Prinzip sind die Zeilen immer so aufgebaut Punktnummer,X-koordinate,Y-koordinate,Z-koordinate,Punktcode Wenn ich jetzt die Funktion drüber laufen lasse, stosse ich auf das erste Problem, das die Punktnummern mal 1- 2- oder 4-stellig sind Damit werden die var nicht korrekt bedient. Ich muss mich wahrscheinlich mit dem ","-zeichen durchhangeln, um an die Werte zu kommen. (setvar "ATTREQ" 1) (if (setq FILE (getfiled "Verzeichnisliste" "" "" 2)) (progn (setq FILE (open FILE "r")) (while (setq ZEILE (read-line FILE)) (setq PNR (read (substr ZEILE 1 4)) ZKO (read (substr ZEILE 26 6))) PCODE (read (substr ZEILE 33 2)) (command "_.INSERT" "meas" ZEILE 1 1 0 "PNR" "ZKO" "PCODE" ) ) (close FILE) ) (alert "Keine Datei gewählt!") ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neurosis Mitglied dipl.ing.
Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 30. Aug. 2011 14:19 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
|
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 30. Aug. 2011 14:22 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
Zitat: Original erstellt von cadplayer: ... Ich muss mich wahrscheinlich mit dem ","-zeichen durchhangeln, um an die Werte zu kommen....
Hallo cadplayer, um an die Position der "," zu kommen und damit an die Werte für die Variablen, sieh dir mal die Funktion vl-string-position an, die kann das. HTH Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 30. Aug. 2011 14:36 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 30. Aug. 2011 15:19 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
Super - eingebaut, läuft ... ich bekomme jetzt folgende Liste (setq data ("1" "6395579.272" "148352.957" "87.760" "HP")) wie bekomme ich in die var PKT nur die 2. 3. 4. Zeichenketten (cdr data) liefert mir ("6395579.272" "148352.957" "87.760" "HP") Man konnte doch zeichketten auch rumdrehen, dass ich das "HP" abschneiden kann
[Diese Nachricht wurde von cadplayer am 30. Aug. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neurosis Mitglied dipl.ing.
Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 30. Aug. 2011 15:29 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 30. Aug. 2011 15:57 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
(setvar "ATTREQ" 1) (if (setq FILE (getfiled "Verzeichnisliste" "" "" 2)) (progn (setq FILE (open FILE "r")) (while (setq ZEILE (read-line FILE) DATA (STD-STRTOK ZEILE ", ") PNR (atoi (car DATA)) ZKO (atof (cadr (cdr (cdr DATA)))) PCODE (cadr (cdr (cdr (cdr DATA))))) (command "_.INSERT" "meas" (cadr DATA); =X (cadr (cdr DATA)); =Y (cadr (cdr (cdr DATA))); =Z 1 1 0 "PNR" "ZKO" "PCODE" ) ) (close FILE) ) (alert "Keine Datei gewählt!") ) Ich finde den Fehler nicht warum die Blockposition nicht richtig gesetzt wird Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 30. Aug. 2011 16:15 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
|
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 30. Aug. 2011 16:22 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 30. Aug. 2011 16:48 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
funktioniert jetzt mit Ausnahme einer Fehlermeldung ; error: bad argument type: stringp nil sieht vielleicht jemand den Hacken? (defun STD-STRTOK (s delims / len s1 i c lst) (setq delims (vl-string->list delims) len (strlen s) s1 "" i (1+ len)) (while (> (setq i (1- i)) 0) (setq c (substr s i 1)) (if (member (ascii c) delims) (if (/= s1 "") ; no null tokens (setq lst (cons s1 lst) s1 "") ) (setq s1 (strcat c s1)) ) ) (if (/= s1 "") (cons s1 lst) ; no ("" "1" "2")! lst ) ) (setvar "ATTREQ" 1) (if (setq FILE (getfiled "Verzeichnisliste" "" "" 2)) (progn (setq FILE (open FILE "r")) (while (setq ZEILE (read-line FILE) DATA (STD-STRTOK ZEILE ", ") PKT (list (atof (cadr DATA)) (atof (caddr DATA)) (atof (cadddr DATA))) PNR (atoi (car DATA)) ZKO (rtos (atof (cadr (cdr (cdr DATA)))) 2 3) PCODE (cadr (cdr (cdr (cdr DATA))))) (command "_.INSERT" "meas" PKT 1 1 0 PNR ZKO PCODE ) ) (close FILE) ) (alert "Keine Datei gewählt!") )
[Diese Nachricht wurde von cadplayer am 30. Aug. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neurosis Mitglied dipl.ing.
Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 30. Aug. 2011 20:00 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
|
neurosis Mitglied dipl.ing.
Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 30. Aug. 2011 20:01 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 31. Aug. 2011 08:18 <-- editieren / zitieren --> Unities abgeben: Nur für PsycoDad
PNR habe ich in eine String gewandelt, bekomme habe selbe Fehlermeldung. Die Blockattribute werden richtig ausgefüllt, da kann also meines Erachtens nicht der Fehler liegen. Generell wäre meine Frage, wie kann man den mit v-lide-editor umgehen, um Fehler aufzudecken. Wenn ich breapoints setze wird alles korrekt gemacht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |