| |
| 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: Flächen als Ascii-Liste mit Koordinaten und nummeriert (2132 mal gelesen)
|
LoBrian Mitglied Bauingenieur
Beiträge: 23 Registriert: 10.09.2003
|
erstellt am: 21. Mai. 2008 08:31 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe eine Datei mit massenhaft Flächen (geschlossene Polylinien) die ich als Ascii-Liste übergeben muss. Hier sollen die Koordinaten enthalten sein, und logischerweise auch die Eckpunkte entsprechend nummerriert sein. Darüber hinaus müssen die Flächen ja auch einen eindeutigen Index besitzen. Genauere Vorgaben habe ich nicht. Dachte da an folgende Struktur: 00001 3455754.8200 5610930.3100 1 00001 3455799.6200 5610926.8400 2 . . 00002 3455793.0700 5610883.1800 1 Die Höhe ist im Moment nicht so wichtig. Gibt es die Möglichkeit dieses mit einer Lisp-Datei zu realisieren? Ich habe es auch mit MapInfo versucht, aber leider auch erfolglos. Danke für eure Hilfe. Gruß, Jens Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 21. Mai. 2008 08:34 <-- editieren / zitieren --> Unities abgeben: Nur für LoBrian
Zitat: Original erstellt von LoBrian: Gibt es die Möglichkeit dieses mit einer Lisp-Datei zu realisieren?
Mit ner Programmierung geht immer ne ganze Menge, auch das. Aber reicht dir der Befehl Liste nicht schon mal und dann copy&paste aus dem Textfenster? ------------------ - 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 |
LoBrian Mitglied Bauingenieur
Beiträge: 23 Registriert: 10.09.2003
|
erstellt am: 21. Mai. 2008 08:49 <-- editieren / zitieren --> Unities abgeben:
Hallo CADmium, danke für die Antwort. Habe ich auch schon mal ins Auge gefasst, aber das erfordert ne Menge Nacharbeit. Die Daten sollen anschließend in die Barthauer Datenbank übernommen werden (Teilflächen zur hydraulischen Kanalberechnung). Suche halt nach einem einfachen und komfortablen Weg, da es sich um ca 10.000 Flächen handelt. Da ist die Nacharbeit fast nicht möglich... Gruß, Jens Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 21. Mai. 2008 09:00 <-- editieren / zitieren --> Unities abgeben: Nur für LoBrian
.. nee, bei solcher Anzahl sollte man schon auf ein Programm zurückgreifen. Wenn du einen Lisp-Einstieg suchst, würde ich dir die Tutorials von Mapcar empfehlen-> selbige in gedruckter Form... oder , bei Zeitmangel, fehlenden Knowhow : du beauftragst solche Programmierung .. oder du wartest hier auf solche Gefälligkeit. ------------------ - 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 |
LoBrian Mitglied Bauingenieur
Beiträge: 23 Registriert: 10.09.2003
|
erstellt am: 21. Mai. 2008 09:18 <-- editieren / zitieren --> Unities abgeben:
...dann hoffe ich mal darauf! Habe es gerade mal mit dxfkor.exe versucht, was ich in einem anderen Thread gefunden habe. Das ist schon fast perfekt, nur benötige ich hier noch eine fortlaufende Nummerrierung der Einzelflächen. Das Ergebnis schaut im Moment so aus: Polylinie Typ3 3472999,674 5701841,792 159,613 9 Polylinie Typ3 3472997,030 5701839,413 159,613 9 Polylinie Typ3 3472996,612 5701839,877 159,613 9 Polylinie Typ3 3472995,152 5701838,564 159,613 9 Polylinie Typ3 3472999,665 5701833,547 159,613 9 Polylinie Typ3 3473004,165 5701837,568 159,613 9 Polylinie Typ3 3473023,449 5701817,792 159,613 10 Polylinie Typ3 3473025,548 5701819,541 159,613 10 Polylinie Typ3 3473024,831 5701820,401 159,613 10 Polylinie Typ3 3473023,909 5701819,633 159,613 10 Polylinie Typ3 3473018,730 5701825,905 159,613 10 Polylinie Typ3 3473017,647 5701825,692 159,613 10 Polylinie Typ3 3473023,183 5701818,968 159,613 10 Polylinie Typ3 3473022,566 5701818,481 159,613 10 Es sind hier die Flächen 9 und 10. Leider ist kein Anfangs- und Endpunkt der Fläche eingetragen. [Diese Nachricht wurde von LoBrian am 21. Mai. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1455 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 21. Mai. 2008 13:09 <-- editieren / zitieren --> Unities abgeben: Nur für LoBrian
Hallo LoBrian, probier das mal aus. Schreibt alles in eine Textdatei direkt auf C: (defun c l2txt (/ satz n m coords coord_list datei) (if (setq satz (ssget '((0 . "LWPOLYLINE")))) (progn (setq n (1- (sslength satz))) (repeat (sslength satz) (setq coords (gather (vlax-safearray->list (vlax-variant-value (vla-get-coordinates (vlax-ename->vla-object (ssname satz n)))) ) 2 ) ) (setq m 0) (setq coord_list (cons (mapcar '(lambda (p) (setq m (1+ m)) (append (list (1+ n)) p (list m))) coords) coord_list) ) (setq n (1- n)) ) (setq coord_list (apply 'append coord_list)) (setq datei (open "c:/pl2txt.txt" "w")) (foreach zeile coord_list (write-line (vl-string-trim "()" (vl-princ-to-string zeile)) datei) ) (close datei) ) ) coord_list ) Gruß Andreas
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
LoBrian Mitglied Bauingenieur
Beiträge: 23 Registriert: 10.09.2003
|
erstellt am: 23. Mai. 2008 10:27 <-- editieren / zitieren --> Unities abgeben:
Hallo Andreas, vielen Dank für deine Antwort. Leider bekomm ich das nicht so recht zum laufen... Stell mich wohl ein wenig blöd an. Bekomme folgende Meldung: Befehl: pl2txt Objekte wählen: Entgegengesetzte Ecke angeben: 3 gefunden 1 wurde ausgefiltert. Objekte wählen: ; Fehler: no function definition: VLAX-ENAME->VLA-OBJECT Was muss ich denn genau tun? Gruß, Jens [Diese Nachricht wurde von LoBrian am 23. Mai. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 23. Mai. 2008 17:47 <-- editieren / zitieren --> Unities abgeben: Nur für LoBrian
gib mal (vl-load-com) als erste Lispzeile ein. Das ist notwendig, um die ActiveX-Schnittstelle zu initialisieren. ------------------ - 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 |
LoBrian Mitglied Bauingenieur
Beiträge: 23 Registriert: 10.09.2003
|
erstellt am: 27. Mai. 2008 09:14 <-- editieren / zitieren --> Unities abgeben:
Hallo, jetzt bringt ACad folgende Meldung: Befehl: pl2txt Objekte wählen: Entgegengesetzte Ecke angeben: 5 gefunden Objekte wählen: ; Fehler: no function definition: GATHER Befehl: Vielleicht noch einen Tip? Danke schön... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 27. Mai. 2008 09:19 <-- editieren / zitieren --> Unities abgeben: Nur für LoBrian
jo .. da hat dir wohl Andreas noch ne subroutine unterschlagen.. die ungefähr so aussehen könnte :
(defun GATHER (LISTE ANZ / SUBLIST RETURN) (repeat (fix(/(length LISTE)ANZ)) (setq SUBLIST nil) (repeat ANZ (setq SUBLIST (cons (car LISTE) SUBLIST)) (setq LISTE (cdr LISTE)) ) (setq RETURN (cons (reverse SUBLIST)RETURN)) ) (reverse RETURN) ) ------------------ - 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 |
LoBrian Mitglied Bauingenieur
Beiträge: 23 Registriert: 10.09.2003
|
erstellt am: 30. Mai. 2008 14:44 <-- editieren / zitieren --> Unities abgeben:
Hallo, jetzt klappt es, aber so eine Kleinigkeit bleibt da noch als Frage... Bekomme folgendes Format: 1 3.47245e+006 5.60154e+006 1 1 3.47248e+006 5.60154e+006 2 1 3.47248e+006 5.60155e+006 3 1 3.47246e+006 5.60155e+006 4 1 3.47245e+006 5.60154e+006 5 2 3.47317e+006 5.60222e+006 1 2 3.47317e+006 5.60222e+006 2 2 3.47317e+006 5.60222e+006 3 2 3.47318e+006 5.60224e+006 4 2 3.47318e+006 5.60226e+006 5 2 3.47319e+006 5.60229e+006 6 2 3.47319e+006 5.60229e+006 7 Bräuchte die Koordinaten jedoch etwas genauer wie auf 10m (max. Fehler in diesem Format), am besten bis auf 1 cm genau. Kann ich das noch irgendwie einstellen? Bsp.: 2 3473195,78 5602297,08 7 Vielen Dank schon mal und ein schönes Wochenende... Grüße, Jens [Diese Nachricht wurde von LoBrian am 03. Jun. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
LoBrian Mitglied Bauingenieur
Beiträge: 23 Registriert: 10.09.2003
|
erstellt am: 03. Jun. 2008 09:17 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 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. 2008 09:20 <-- editieren / zitieren --> Unities abgeben: Nur für LoBrian
schon, da dürfte man dann nicht mit (vl-princ-to-string ..) arbeiten sondern müßte die Koordinaten werte mit (rtos .. ) konvertieren, mit strcat zusammenpappen usw. Vielleicht hat ja einer Zeit? ------------------ - 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 |
LoBrian Mitglied Bauingenieur
Beiträge: 23 Registriert: 10.09.2003
|
erstellt am: 03. Jun. 2008 11:01 <-- editieren / zitieren --> Unities abgeben:
Habe jetzt mal versucht, die Zeile: (write-line (vl-string-trim "()" (vl-princ-to-string zeile)) datei) durch folgenden Eintrag zu ersetzen: (write-line (strcat (rtos X) ";" (rtos Y)) datei) Leider gibt er mir jetzt wieder gar nichts aus? Grüße, Jens Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
Beiträge: 1989 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 03. Jun. 2008 11:40 <-- editieren / zitieren --> Unities abgeben: Nur für LoBrian
tausch mal die foreach schleife aus: Hier mal was neues
Code: (foreach zeile coord_list (write-line (strcat (vl-princ-to-string (nth 0 zeile)) (rtos (nth 1 zeile) 2 4) (rtos (nth 2 zeile) 2 4) (vl-princ-to-string (nth 3 zeile)) ) datei) )
------------------ Gruß CADwiesel Besucht uns im CHAT
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
LoBrian Mitglied Bauingenieur
Beiträge: 23 Registriert: 10.09.2003
|
erstellt am: 03. Jun. 2008 12:51 <-- editieren / zitieren --> Unities abgeben:
|