Suchen und Finden

Titel

Autor/Verlag

Inhaltsverzeichnis

Nur eBooks für mein Endgerät anzeigen:

 

Newsletter

AutoCAD programmieren mit VBA

AutoCAD programmieren mit VBA

von: Karsten Dummer, Michael Huth

Addison-Wesley Verlag, 2004

ISBN: 9783827321053, 911 Seiten

Format: PDF, OL

Mac OSX,Windows PC Apple iPad, Android Tablet PC's Online-Lesen für: Linux,Mac OSX,Windows PC

Preis: 29,95 EUR

Ersparnis: 30,00 EUR

Mehr zum Inhalt

AutoCAD programmieren mit VBA


 

8 Die Zeichnungsobjekte von AutoCAD (S. 596-597)

Wenn grafische Zeichnungselemente in AutoCAD mithilfe der VBA-Schnittstelle verarbeitet werden, erstellt AutoCAD einen Verweis auf das entsprechende Element in einer Objektvariablen. Dabei entsprechen diese Objekte einer bestimmten Klasse der AutoCAD-Typenbibliothek. Im folgenden Kapitel erfahren Sie alles über die einzelnen Klassen, die die entsprechenden Zeichnungsobjekte wie Linien, Polylinien, Texte usw. darstellen. Kapitelübersicht

8.1 Allgemeines
8.2 Zugriff auf vorhandene AutoCAD-Objekte
8.3 AutoCAD-Objekte verarbeiten


8.1 Allgemeines

Alle grafischen Elemente werden in einem Container gesammelt. Dies kann der Modell- bzw. Papierbereich oder eine Blockdefinition sein, egal ob in der Zeichnung enthalten oder als externe Referenz eingebunden. Sie können somit Zugriff auf ein Element erhalten, indem Sie es über die Item-Anweisung der jeweiligen Auflistung abrufen.

Dim CrEnt As AcadEntity
Set CrEnt = ModelSpace.Item(n)


Das Element CrEnt muss dabei als Datentyp AcadEntity deklariert werden, da der Modellbzw. Papierbereich oder einzelne Blöcke ja die verschiedensten Objekte enthalten können. Dieser Datentyp bietet zunächst nur die Eigenschaften und Methoden, die alle AutoCAD-Elemente besitzen. Nachdem Sie einen Verweis auf das Objekt an die Objektvariable übergeben haben, können Sie dann allerdings auf alle objektspezifischen Eigenschaften und Methoden zugreifen. Die Eigenschaften werden zwar während der Entwicklung nicht im Drop-down-Listenfeld (Liste der Bezeichner) angezeigt, sie sind aber durchaus vorhanden. Sie können dies ganz einfach kontrollieren, indem Sie die Objektvariable CrEnt in das Überwachungsfenster eintragen. Das Gleiche gilt übrigens auch für den Datentyp Object, der ja gelegentlich zum Einsatz kommt (GetEntity).

Eine zweite Möglichkeit, ein Objekt zu erhalten, ist das Hinzufügen zu einem der oben genannten Bereiche. Benutzen Sie hierzu die entsprechende Add-Methode (siehe Kapitel 6) und lassen Sie sich das Ergebnis als Objektvariable zurückgeben.

Dim CrEnt As AcadPoint
Dim InsPoint(2) As Double
Set CrEnt = ModelSpace.AddPoint(InsPoint)


Da Sie mit der entsprechenden Anweisung (AddPoint, AddLine ...) ein bestimmtes Objekt zu AutoCAD hinzufügen, wird auch immer der entsprechende Datentyp an eine Objektvariable zurückgeliefert (AddPoint gibt AcadPoint zurück).

8.1.1 Arbeiten mit Koordinaten

Jedes grafische AutoCAD-Objekt verfügt über eine oder mehrere Eigenschaften, die dessen Position bestimmen. Bei einigen Objekten reicht die Angabe einzelner Punkte, andere wiederum (z.B. Polylinien) benötigen ganze Koordinatenlisten, die die einzelnen Stützpunkte definieren.

Generell werden zwei- oder dreidimensionale Koordinatenpaare im WKS (Weltkoordinatensystem) verwendet, um einen Punkt festzulegen. Der erste Schritt bei der Festlegung eines Punkts besteht darin, die einzelnen Koordinatenwerte des entsprechenden Punkts zu bestimmen. Bei zweidimensionalen Punkten wären dies die X- und die Y-Koordinate, bei dreidimensionalen Punkten kommt zusätzliche die Höhe (Z-Koordinate) hinzu. Diese Werte werden dann zu einem Array zusammengefasst, wobei das erste Feld den X-, das zweite den Y- und das dritte, wenn erforderlich, den Z-Wert angibt. Für einfache Punkte ergeben sich daraus entweder 2D- oder 3D-Arrays, wobei jedes mit dem Index 0 beginnt.

Deklaration eines Arrays für einen zweidimensionalen Punkt:

Dim InsPoint(0 To 1) As Double

Oder:

Dim InsPoint(1) As Double

Deklaration eines Arrays für einen dreidimensionalen Punkt:

Dim InsPoint(0 To 2) As Double

Oder:

Dim InsPoint(2) As Double

Nachdem Sie die Variable für den Punkt deklariert haben, können Sie den einzelnen Feldern die entsprechenden Werte zuweisen:

InsPoint(0) = 1000.1234 ’X-Koordinate
InsPoint(1) = 300.3231 ’Y-Koordinate
InsPoint(2) = 10.133 ’Z-Koordinate


Das so erzeugte Array könnte nun den Objekteigenschaften zugewiesen werden, die nur einfache Punkte verwalten, wie beispielsweise InsertionPoint einer Blockreferenz, die den Einfügepunkt des Blocks bestimmt, oder StartPoint und EndPoint einer Linie, zur Festlegung der Endpunkte.

Etwas komplizierter wird es, wenn das Objekt seine Stützpunkte über eine Eigenschaft verwaltet, meist Coordinates. Auch hier gilt die grundlegende Punktdefinition. Zuerst werden die einzelnen Koordinaten bestimmt, bei zweidimensionalen X und Y, bei dreidimensionalen zusätzlich Z. Anschließend werden die einzelnen Stützpunkte zu einem einzelnen Array zusammengefasst. Bei der Dimensionierung des Arrays müssen Sie dann nur die Anzahl der Stützpunkte mit der Anzahl der Koordinaten eines einzelnen Stützpunkts multiplizieren. Bei zweidimensionalen Stützpunkten wäre dies 2 für X und Y.