| | |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | |  | AutoCAD Schulung mit IHK-Zertifizierung , ein Kurs (bis zu 100% förderbar mit Bildungsgutschein)
|
|
Autor
|
Thema: Polyline Koordinaten in Datei schreiben (727 mal gelesen)
|
gms76 Mitglied Student
 Beiträge: 2 Registriert: 13.08.2003
|
erstellt am: 13. Aug. 2003 16:52 <-- editieren / zitieren --> Unities abgeben:         
Gleich vorweg: Ich habe die Suche benutzt und auch einiges gefunden. Besonders angetan haben es mir die folgenden zwei Beiträge: Koordinaten von mehreren Linien auslesen lassen von Tanja S: http://ww3.cad.de/foren/ubb/Forum54/HTML/003266.shtml hier gibt es ein VBA Programm von autogis. Koordinaten der Kontrollpunkte von 3D-Polylinien von Hubert Ammer http://ww3.cad.de/foren/ubb/Forum54/HTML/002858.shtml hier gibt es ein Lisp-Programm geschickt von Assi. Jetzt sollte man denken, dass alle Fragen zu dem Thema geklärt wären. Aber ich bin ein DAU. Mein Problem ist: ich würde gerne die x,y UND z Koordinaten von den Punkten einer Polylinie in eine Textdatei bekommen (um es später in Excel zu importieren). Die oben genannten Programme funktionieren leider nicht richtig. Bei 3dPolylinien bekomme ich überhaupt keine Koordinaten. Bei 2d Polylinien bekomme ich bei PLINETYPE = 0 nur für den ersten Punkt die z Koordinate und für PLINETYPE = 2 bekomme ich überhaupt keine z Koordinate. Was mache ich falsch? Zusatzfrage: ich möchte aus den Höhenschichtenlinien dann 3d Körper oder Flächen machen. Sollte egal sein ob ich 2d oder 3d Polylinien verwende, oder? danke georg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Karsten HST Mitglied Bauingenieur

 Beiträge: 54 Registriert: 22.04.2003
|
erstellt am: 13. Aug. 2003 17:25 <-- editieren / zitieren --> Unities abgeben:          Nur für gms76
Die Koordinaten einer Polylinie kannst Du in VBA über die Coordinates-Eigenschaft abrufen. Da alle Polylinientypen diese Eigenschaft besitzen, ist es egal welchen Art verwendet wird. Der Unterschied zwischen den Polylinientypen besteht darin, das eine optimierte Polylinie lediglich X und Y speichert, die 3D- und 2D-Polylinie zusätzlich den Z-Wert. Einzelne Stützpunktkoordinaten kannst Du mit der Coordinate-Eigenschaft abrufen. Hier muss dann lediglich diue Nummer des Stützpunktes und eventuell die Koordinate angegeben werden. X = Pl.Coordinate(0)(0) 'X-Wert des ersten Stützpunktes Y = Pl.Coordinate(0)(1) 'Y-Wert des ersten Stützpunktes Bei 3D-Polylinien währe der Z-Wert im dritten Feld des Arrays gespeichert Z = Pl.Coordinate(0)(2) 'X-Wert des ersten Stützpunktes Bei 2D-Polylinien müsstest Du den Wert der Elevation-Eigenschaft als Z-Koordinate verwenden. Nachfolgend ein kleines Beispiel, wie der ganze Fall abgehandelt werden könnte. Public Sub ExportPolylineCoords() Dim AcSSet As AcadSelectionSet On Local Error Resume Next If TypeName(SelectionSets("Auswahl")) = "Nothing" Then SelectionSets.Add "Auswahl" End If Set AcSSet = SelectionSets("Auswahl") AcSSet.Clear AcSSet.SelectOnScreen Open "C:\Coords.txt" For Output As #1 If AcSSet.Count > 0 Then For X = 0 To AcSSet.Count - 1 Set Object = AcSSet.Item(X) Select Case TypeName(Object) Case "IAcadPolyline", "IAcad3DPolyline", "IAcadLWPolyline" For i = 0 To GetVertexCount(Object) - 1 OutStr = Utility.RealToString(Object.Coordinate(i)(0), acDefaultUnits, 3) OutStr = OutStr & " " & Utility.RealToString(Object.Coordinate(i)(1), acDefaultUnits, 3) If TypeName(Object) = "IAcad3DPolyline" Then OutStr = OutStr & " " & Utility.RealToString(Object.Coordinate(i)(2), acDefaultUnits, 3) Else OutStr = OutStr & " " & Utility.RealToString(Object.Elevation, acDefaultUnits, 3) End If Print #1, OutStr Next End Select Next End If Close AcSSet.Delete End Sub Public Function GetVertexCount(Polyline) As Integer On Error Resume Next Select Case TypeName(Polyline) Case "IAcadLWPolyline" VertList = Polyline.Coordinates GetVertexCount = (UBound(VertList) + 1) / 2 Case "IAcadPolyline", "IAcad3DPolyline" VertList = Polyline.Coordinates GetVertexCount = (UBound(VertList) + 1) / 3 End Select End Function
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theodor Schoenwald Ehrenmitglied
    
 Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 13. Aug. 2003 20:59 <-- editieren / zitieren --> Unities abgeben:          Nur für gms76
|
Bernd P Ehrenmitglied V.I.P. h.c. cook-general

 Beiträge: 3424 Registriert: 07.06.2001 W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365
|
erstellt am: 14. Aug. 2003 13:49 <-- editieren / zitieren --> Unities abgeben:          Nur für gms76
Servus Ich möchte aus den Höhenschichtenlinien dann 3d Körper oder Flächen machen. Sollte egal sein ob ich 2d oder 3d Polylinien verwende, oder? Wenn du es ohne Zusatzprogramm schafft´s sag mir wie. Oder wenn es wer anderer kann soll´s bitte sagen ------------------
Wer Rechtschreibfehler findet, darf sie der Analphabetenvereinigung schenken. mfG Bernd P. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gms76 Mitglied Student
 Beiträge: 2 Registriert: 13.08.2003
|
erstellt am: 14. Aug. 2003 17:12 <-- editieren / zitieren --> Unities abgeben:         
Viiielen Dank für Eure Antworten!!!  Vor allem an Karsten HST! Es funktioniert ganz toll mit allen Polylinien. Und die Erklärung vom Backround finde ich auch super. Ich will/sollte sowieso etwas VBA lernen und da helfen mir solche Erklärungen sehr viel weiter. Danke auch an Theodor Schoenwald! Guter Link! Ich muss aber gestehen, ich habe es nicht geschafft das Programm zum laufen zu bringen. Das liegt aber an mir. Ich kann gerade Copy&Paste. Danke noch mal an alle! @Bernd P: Ich habe bis dato mit Regeloberflächen also Ruled Surface versucht. Mit eher mäßigen Erfolg. Solange die Linien halbwegs parallel sind geht es irgendwie. Man muss sich etwas mit den Variablen Surftab1 (legt die Teilung des Netzes entlang der Definitionslinien fest) und Surftab2 spielen. Das ist aber keine Lösung. georg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
Bernd P Ehrenmitglied V.I.P. h.c. cook-general

 Beiträge: 3424 Registriert: 07.06.2001 W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365
|
erstellt am: 19. Aug. 2003 07:54 <-- editieren / zitieren --> Unities abgeben:          Nur für gms76
Servus Mit Surface hab ich´s auch schon Probiert. Nur leider sind es nur "Oberflächen" un keine "Körper". Man müsste wahrscheinlich mit Zusatzprogs arbeiten, die einen Körper aus schcichtenlinien erstellen. ------------------
Wer Rechtschreibfehler findet, darf sie der Analphabetenvereinigung schenken. mfG Bernd P. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |