| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | |  | NVIDIA GTC Paris und ISC High Performance-Konferenz 2025, eine Pressemitteilung
|
Autor
|
Thema: Koordinatenerfassung (1481 mal gelesen)
|
InesP Mitglied

 Beiträge: 66 Registriert: 23.08.2004 Win XP AutoCAD 2004 Office 2000
|
erstellt am: 08. Mrz. 2005 11:58 <-- editieren / zitieren --> Unities abgeben:         
Hallo Leute, ich fange gerade an mich mit VBA zu beschäftigen und habe da eine für Euch sicherlich lächerlich einfache Frage: Ich habe in meiner Zeichnung eine Linie gezeichnet mit der Länge X und möchte nun die Start- und Endkoordinaten dieser Linie auslesen, um diese Koordinaten in einem weiteren Schritt verändern zu können. Danke für Eure Hilfe. Gruß Ines Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BloodyMess Mitglied Applicationingenieur
  
 Beiträge: 604 Registriert: 06.06.2002 AutoCAD Map 3D 2005 Win XP pro
|
erstellt am: 08. Mrz. 2005 12:34 <-- editieren / zitieren --> Unities abgeben:          Nur für InesP
Hallo Ines, für eine Linie kannst Du die Koordinaten mit folgendem Code auslesen. Einfach in ein Modul kopieren und ausführen. Das DebugFenster mit 'Strg+g' öffnen - falls es nicht schon offen ist. Code: Sub test() 'Variablendeklaration Dim AcObject As Object Dim AcPline As AcadLine Dim ArrStartofLine() As Double Dim ArrEndofLine() As Double For Each AcObject In ThisDrawing.ModelSpace 'Ist das Object vom Typ Linie? If TypeName(AcObject) = "IAcadLine" Then 'Weise das Object dem richtigen Typ zu Set AcPline = AcObject 'Übergib die Koordinatenpaare in das Array ArrStartofLine = AcPline.StartPoint() ArrEndofLine = AcPline.EndPoint() 'Ausgabe der Koordinaten im Debug-Fenster Debug.Print "Start X/Y/Z", ArrStartofLine(0), ArrStartofLine(1), ArrStartofLine(2) Debug.Print "Ende X/Y/Z", ArrEndofLine(0), ArrEndofLine(1), ArrEndofLine(2) End If Next AcObject 'lösche die Objecte wieder Set AcObject = Nothing Set AcPline = Nothing End Sub
Wenn es nicht funktionieren sollte, dann ist deine Linie wahrscheinlich von einem anderen Typ, dann musst Du 'Dim AcPline As AcadLine' und 'If TypeName(AcObject) = "IAcadLine" Then' anpassen. Gruss TP ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Huebi Mitglied Vermessungsing.
 
 Beiträge: 107 Registriert: 08.01.2004 Intel Core Duo E6750@2.66GHz NVIDIA GeForce 8600 GT AutoCAD 2004, 2007, 2008 AcadMAP 2004 und 2007 Civil 3D 2008 ADT 2009
|
erstellt am: 08. Mrz. 2005 12:39 <-- editieren / zitieren --> Unities abgeben:          Nur für InesP
Hallo Ines, und willkommen im VBA-Forum. Wenn Du Dich ein bischen mit VBA für AutoCAD beschäftigst, wirst Du sehen, daß in der Hilfe dazu sehr gute Beispiele sind, die sehr gut die Möglichkeiten veranschaulichen. Zu Deiner Frage zu Start- und Endpunkt einer Linie hab ich Dir mal als Demo ein paar Zeilen gebastelt. Geh sie mal in Einzelschritten durch und guck, wie sich die Variablen verändern. Wenn Du eine Linie deklariert hast, kannst Du sehr einfach auf Start- und Endpunkt zugreifen.
Code:
Sub Linienbeispiel() Dim Linie As AcadLine Dim Pickedpoint As Variant Dim Start, Ende As VariantThisDrawing.Utility.GetEntity Linie, Pickedpoint, "Linie wählen:" Start = Linie.StartPoint Ende = Linie.EndPoint End Sub
Viel Spaß mit VBA wünscht Hübi ------------------ Schaun ma mal, dann seng ma scho....  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TomiProg Mitglied Technischer Zeichner

 Beiträge: 51 Registriert: 29.04.2004 WinNT4.0(SP6) + AutoCAD 14.01, P3/400MHz(gääähn),256MB,Graphtec KD4620, ATI 3D Rage Pro(8MB)
|
erstellt am: 08. Mrz. 2005 12:45 <-- editieren / zitieren --> Unities abgeben:          Nur für InesP
Jetzt wollt ich auch mal was schreiben, da waren doch tatsächlich die zwei Jungs wieder mal schneller als irgendjemand sonst Hier nochmal ne kleine Einführung und mein kleines Prog. Öffne durch Eingabe von VBAIDE in der Befehlszeile den VBA-Editor. Dort kannst du in einem Modulfenster den Code eingeben. Nach der Eingabe entweder im Testbetrieb über den VBAIDE oder zurück zur ACAD-Befehlszeile und durch VBARUN das Programm starten: Sub LinienKoord() Dim LineObj As AcadLine, Startpunkt(2) As Double, Endpunkt(2) As Double 'Setzen von Start- und Endkoordinaten Startpunkt(0) = 0: Startpunkt(1) = 0: Startpunkt(2) = 0 Endpunkt(0) = 50: Endpunkt(1) = 50: Endpunkt(2) = 0 'Erzeugen einer Linie und einem Objekt zuweisen (Set LineObj) Set LineObj = ThisDrawing.Modelspace.AddLine(Startpunkt, Endpunkt) LineObj.Update ThisDrawing.ActiveViewport.ZoomAll MsgBox "OK für Weiter!", vbOKOnly, "TestDialog Linie" 'Neue Start- und Endkoordinaten zuweisen Startpunkt(0) = 0: Startpunkt(1) = 50: Startpunkt(2) = 0 Endpunkt(0) = 50: Endpunkt(1) = 0: Endpunkt(2) = 0 'LinienObjekt ändern LineObj.startPoint = Startpunkt LineObj.endPoint = Endpunkt LineObj.Update End Sub Ups. Mein Fehler. Natürlich hast du schon eine Linie gezeichnet, die mit ThisDrawing.Utility.GetEntity LineObj, Startpunkt, "Linie wählen" auszuwählen wäre, so, wie es Huebi geschrieben hat. Sorry nochmal. [Diese Nachricht wurde von TomiProg am 08. Mrz. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
InesP Mitglied

 Beiträge: 66 Registriert: 23.08.2004 Win XP AutoCAD 2004 Office 2000
|
erstellt am: 08. Mrz. 2005 13:28 <-- editieren / zitieren --> Unities abgeben:         
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |