| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Von 2D-Shape nach 3D-Shape (1620 mal gelesen)
|
Wala Mitglied
Beiträge: 18 Registriert: 27.06.2002 Dell Optiplex 760 WinXP SP3 AutoCAD Map 2010 ArcGIS 9.1
|
erstellt am: 09. Aug. 2010 14:00 <-- editieren / zitieren --> Unities abgeben:
Ich muss für eine weiterführende Anwendung aus einem 2D-Shape ein 3-dimensionales Shape machen. Es handelt sich um viele Linien, die im Moment als Z-Koordinate "0" haben. Die Höhen habe ich als Attribute vorliegen. Anfangs- und Endpunkte dieser Linien haben unterschiedliche Höhen. Wenn ich die Shapes mit Map 2010 verbinde, habe ich keine Möglichkeit (gefunden), um den Linien Z-Koordinaten zu geben. Bei einem Import in Map 2010 kann ich den Linien wohl eine generelle Höhe mitgeben, aber leider keine unterschiedliche Höhe für Anfangs- und Endpunkt. Jetzt wollte ich mittels eines Scripts 3D-Polylinien generieren lassen, X-Y-Z-Koordinaten von Anfangs- bzw. Endpunkt sind alle vorhanden. Jetzt müsste ich aber jeder 3D-Polylinie einen Wert (Objekt-ID des originalen Shapes) für ein Objektdatenfeld mitgeben, um später über diese ID die restlichen Daten des Original-Shapes verknüpfen zu können. Ist wohl über ein simples Script nicht mehr möglich. Hat jemand eine Idee für eine ganz einfache Lösung? PS.: Bin leider des LISPs nicht mächtig.... ------------------ Schöne Grüße, Walter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 09. Aug. 2010 14:23 <-- editieren / zitieren -->
Hi, mit Boardmitteln leider nein, das hast Du schon richtig durchschaut. Wenn Du weiterhin die Verbindung zu den attributiven Daten des Shape(DBF) brauchst, dann kannst Du nicht sinnvoll über Script arbeiten, dann wäre der Ansatz, mit MapImport das SHP zu importieren, aus den attributiven Daten AutoCAD-Map-Objektdaten machen lassen und in einem Programm dann die Z-Werte für Start- und Endpunkthöhe aus den Objektdaten auslesen und die Geometrie daran anpassen. Braucht aber ein klein wenig Programmierung. Ohne der Datenverbindung hast Du ev. noch die Chance, über MAP-Abfragen eine Textdatei machen zu lassen, dann diese Textdatei mit XLS zu einem Script umbauen. Ist auch tricky, aber eben kein Zusammenhang mehr zu Shape-Attributs-Infos. Sorry, - alfred - PS: kannst Du mal einen kleinen Auszug aus dem SHP hier uploaden, vielleicht gibt's ja noch die eine oder andere Idee, wenn man die Daten vor Augen hat. ------------------ www.hollaus.at |
Wala Mitglied
Beiträge: 18 Registriert: 27.06.2002
|
erstellt am: 09. Aug. 2010 15:29 <-- editieren / zitieren --> Unities abgeben:
Hallo Alfred, danke für die schnelle Antwort! Wäre es möglich, mittels LISP ein Feld der Objektdaten zu füllen? Dann könnte ich z.B. doch in einem Script mit folgender Zeile 3DPoly x,y,z X,Y,Z (load "ObjDaten füllen") MeineID meine 3D-Polylinie erstellen, mit dem Lisp-Progr. "ObjDaten füllen" den Wert "MeineID" in ein definiertes Feld der Objektdaten der eben erstellten Polylinie schreiben. Aber da ich mich mit LISP nicht wirklich auskenne, weiß ich leider auch nicht, ob man mittels LISP Objektdaten befüllen könnte. Bin dankbar für jegliche Hilfe! ------------------ Schöne Grüße, Walter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 09. Aug. 2010 15:45 <-- editieren / zitieren -->
Hi, ja, Objektdaten können auch mit LISP geschrieben werden (siehe z.B. >>>Beitrag von marc.scherer<<<). Ohne sich in LISP auszukennen (und das tu ich auch nicht), ist's nichts für 'in 10min fertig'. Es reicht übrigens, Linien zu erzeugen, müssen keine 3DPoly's sein. - alfred - ------------------ www.hollaus.at |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9732 Registriert: 01.12.2003 AutoCAD 2021, Civil 3D, MAP 3D, MDT, RD, Infraworks Inventor 2021, Win10Pro
|
erstellt am: 10. Aug. 2010 10:17 <-- editieren / zitieren --> Unities abgeben: Nur für Wala
Hier wäre mal ein Beispiellisp (ohne Fehlerbehandlung), um importierte LINIEN aus einem 2D Shape auf die Z-Höhen aus der ATTRIBUT-Tabelle (Objektdaten) zu setzen. Code: ; Diese Routine setzt bei LINIEN die einen zugeordneten Eintrag in der ; Objektdatentabelle namens "ATTRTAB" besitzen, die Z-Werte auf Höhe wie im Feld Z1 bzw. Z2 angegeben. ; 10.08.2010 - Udo Hübner ; Setzt einen AutoCAD MAP basierten Aufsatz voraus. ; kein Errorhandling- Objektedatentabelle mit den benutzen Attributen muss vorhanden sein ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (DEFUN C:LINIENAUFHOEHESETZEN( / elname cnt ss eliste pa pe hoehe1 hoehe2) (Prompt "Linienhöhen nach Z-Werten aus Objektdatentabelle ändern - Udo Hübner 10.08.10") (Prompt "\nObjektdatentabellenname ATTRTAB, Attributsbezeichnungen Z1 und Z2") (Prompt "\nLinien zur Änderung auswählen") (IF (SETQ ss (SSGET '((0 . "LINE")))) (PROGN (SETQ cnt (SSLENGTH ss)) (WHILE (>= (SETQ cnt (1- cnt)) 0) (SETQ elname (SSNAME ss cnt)) (IF (AND (SETQ hoehe1 (ade_odgetfield elname "ATTRTAB" "Z1" 0)) (SETQ hoehe2 (ade_odgetfield elname "ATTRTAB" "Z2" 0)) ) (PROGN (SETQ eliste (ENTGET elname (LIST "*")) pa (CDR (ASSOC 10 eliste)) pe (CDR (ASSOC 11 eliste)) eliste (SUBST (LIST 10 (CAR pa) (CADR pa) hoehe1) (ASSOC 10 eliste) eliste) eliste (SUBST (LIST 11 (CAR pe) (CADR pe) hoehe2) (ASSOC 11 eliste) eliste) ) (ENTMOD eliste) ) ) ) ) ) (PRIN1) )
------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Wala Mitglied
Beiträge: 18 Registriert: 27.06.2002
|
erstellt am: 12. Aug. 2010 08:37 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für eure Hilfe! Das LISP würde ja perfekt funktionieren, nur habe ich nach meinem Shape-Import keine Linien sondern Polylinien mit Objektdaten, und da ist nichts mehr mit Anfangs- und Endpunkt auf Höhe setzen. Wenn ich die Polylinien auflöse, habe ich keine Verbindung mehr zu den Objektdaten. Werde mit meinen bescheidenen Fähigkeiten mal versuchen, zusätzlich zu den Höhen auch X und Y auszulesen, neue Linien zu generieren und meine Objektdaten wieder an die Linie zu schreiben. Danke! ------------------ Schöne Grüße, Walter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|