VBA-Einstig 
für AutoCAD Teil 1
Startseite
VBA Einführung für
BricsCad und AutoCAD

Microsoft VBA (Visual Basic for Appliations), nachfolgend kurz VBA genannt, ist eine objektorientierte Programmiersprache, die innerhalb von AutoCAD und auch anderen Windowsanwendungen zur Verfügung steht. Sie ist vergleichsweise einfach zu erlernen und benutzerfreundlich in der Handhabung. Dabei sind der grundsätzliche Aufbau der Entwicklungsumgebung, die Nutzeroberfläche, die Programmstrukturen, Werkzeuge zur Gestaltung von Menüs/Formularen weitestgehend gleich. Der wesentliche Unterschied dagegen besteht im Objektmodell der jeweiligen Anwendung. Unter AutoCAD wird jede Komponente, angefangen bei AutoCAD selbst bis hin zu einzelnen AutoCAD-Elementen wie Punkt, Polylinie, Kreis, usw. als Objekt aufgefasst. Diese Objekte sind Bestandteile verschiedener Klassen und hierarchisch organisiert. Ganz oben steht AutoCAD (Application). Untergeordnet sind unter anderem die Zeichnungen (Documents), die ihrerseits wieder einen Modellbereich (ModelSpace) mit den einzelnen Zeichnungselementen enthalten. Jedes VBA-Objekt ist durch spezifische Methoden (Möglichkeiten zur Objektmanipulation), Eigenschaften, Ereignisse und Verfahren zur Erzeugung neuer Instanzen gekennzeichnet. Das komplette Objektmodell, wie auch viele andere Informationen finden Sie in der VBA-Hilfe.

 Zwei einfache Beispiele sollen die vorstehenden Worte erklären. In der ersten Übung werden Sie einen Programm entwickeln, das einen Kreis mit festen Werten zeichnen. Das dabei gewonnene Wissen erweitern Sie in der zweiten Übung, indem Sie ein Formular erarbeiten, das Ihnen die Interaktion mit AutoCAD veranschaulicht.

 Starten Sie nun AutoCAD mit einer leeren Zeichnung. Der Aufruf von VBA beispielsweise über das AutoCAD-Menü Extras --> Makro --> Visual Basic-EditorAlt+F11 erfolgen.

 Die Entwicklungsumgebung von VBA öffnet sich. Bild 1 stellt die wichtigsten Komponenten dar. Oben die Menüleiste und darunter die VBA-Toolboxen. Links sehen Sie den Projektexplorer, darunter das Eigenschaften-Fenster. Rechts das Fenster für den Programmcode. Falls auf Ihrem Bildschirm die Darstellung abweicht, können Sie über das VBA-Menü Ansicht die jeweiligen Fenster verwalten.

 Beim Start von VBA wird automatisch ein Objekt ThisDrawing angelegt. Markieren Sie es im Objektexplorer. Mit der rechten Maustaste können sie über den Kontextmenüpunkt Code anzeigen nun in das Fenster zur Programmierung dieses Objektes wechseln. Hier geben Sie folgende Programmzeilen zur Erzeugung einer Prozedur ein

Public Sub AddKreis1()

End Sub

 Zwischen diese beiden Zeilen kommt nun der eigentliche Programmcode. Sie beginnen es mit der Deklaration der erforderlichen Variablen.

Dim Kreis as AcadCircle

 Haben Sie es bemerkt? Nachdem Sie bis „Dim Kreis as “ gekommen sind, bietet Ihnen VBA automatisch die im Objektkatalog verfügbaren Elemente zur Auswahl an. Neben dem AutoCAD-Objekt Kreis brauchen Sie noch einen Einfügepunkt (Zentrum) und den Radius. Der Einfügepunkt setzt sich aus den Koordinaten der X-, Y- und Z-Achse zusammen. Alles Gleitkommazahlen. Dementsprechend sieht Ihre Variablenzuweisung wie folgt aus:

Dim Zentrum (0 To 2) as Double

Dim Radius as Double

 Nachdem alle Variablen deklariert wurden, geht es ans eigentliche Programm. Als erstes weisen Sie die Werte für den Kreismittelpunkt zu:

Zentrum(0) = 0 : Zentrum(1) = 0 : Zentrum(2) = 0

 Die Trennung von VBA Befehlen erfolgt entweder durch einen Doppelpunkt oder das Schreiben in einzelne Zeilen. Beides ist gleichwertig und in erster Linie eine Frage der Übersichtlichkeit. Analog zum Kreismittelpunkt definieren Sie den Radius mit

 Radius = 5

 Nun wird der Kreis in die Zeichnung geschrieben.

 Set Kreis = ThisDrawing.ModelSpace.AddCircle (Zentrum, Radius)

 Was ist hierbei wichtig? Sie haben der Objektvariablen „Kreis“ zunächst mitgeteilt, daß ein Objekt im Modellbereich der aktuellen Zeichnung erzeugt werden soll (ThisDrawing.ModelSpace). Dazu wird die Methode AddCircle genutzt. In Klammern stehen die Parameter. Dieses Prinzip lässt sich auf die meisten anderen AutoCAD-Elemente übertragen.

 Nun können Sie die Prozedur starten. Sie wechseln zu AutoCAD und rufen aus dem AutoCAD Menü Extras --> Makro --> Makros...Alt+F8 auf. Das sich öffnende Fenster bietet Ihnen Ihr gerade geschriebenes Programm an. Wählen Sie nun „Ausführen“ und der Kreis wird gezeichnet. Falls er nicht zu sehen sein sollte, zoomen Sie auf die Grenzen.

 Eine der besonderen Stärken von VBA ist die Möglichkeit zur einfachen Gestaltung von Formularen. In der zweiten Übung werden Sie die Kreiserzeugung ein wenig komfortabler gestalten, indem Sie den Anwender über ein Formular den Radius eingeben und die Lage des Kreismittelpunktes interaktiv bestimmen lassen. Dazu wechseln Sie wieder mit Alt+F11 zu VBA. Markieren Sie im Projektexplorer Ihr Projekt mit der Rechten Maustaste. Im Kontextmenü wählen Sie Einfügen --> UserForm.

 Ein leeres Formular wird erzeugt und die Werkzeugsammlung geöffnet. Bevor Sie an die Formulargestaltung gehen, sollten Sie einen Blick auf das Eigenschaften-Fenster werfen. Alles was Sie darin sehen ist manipulierbar. Wir begnügen uns jedoch damit, lediglich den Namen und die Beschriftung des Formulars zu ändern.

Von (Name) UserForm1 auf frm_kreis

Von Caption UserForm1 auf Kreis erzeugen

 Die Änderung des Namens ist sinnvoll, damit man sich im Falle der Arbeit mit mehreren Formularen auch später noch zurecht findet. Über die Caption-Eigenschaft wird die Beschriftung definiert.

 Zur weiteren Menügestaltung benötigen Sie 3 Steuerelemente. Ein Bezeichnungsfeld, ein Textfeld und eine Befehlsschaltfläche. Ordnen Sie die wie in Bild 2 an, indem Sie die Elemente nacheinander in der Werkzeugsammlung markieren und dann mit dem zu einem Kreuz gewordenen Cursor im Formular aufziehen. Nacheinander markieren Sie dann die Elemente und ändern deren Eigenschaften:

 

Steuerelement

Eigenschaft

Von Wert

Auf Wert

Label1

Name

Label1

Lbl_radius

 

Caption

Label1

Radius:

Textbox1

Name

TextBox1

Txt_radius

 

Value

(ist leer)

5

CommandButton1

Name

CommandButton1

cmd_kreis

 

Caption

CommandButton1

Kreis

 Namen und Beschriftung (Caption) der Steuerelemente wurden der besseren Übersicht wegen geändert. Die Eintragung eines Wertes in der Textbox erfolgt zur Vorsicht, um einem etwaigen Fehler durch eine vergessene Eingabe vorzubeugen.

 Doppelklicken Sie jetzt auf die Befehlsschaltfläche „Kreis“ und es öffnet sich das Codefenster. Sie können erkennen, daß VBA bereits eine Prozedur Private Sub cmd_kreis_Click() angelegt hat. Diese wird abgearbeitet, wenn Sie diesen Knopf zur Ausführung betätigen. Bitte tippen Sie nun nachfolgenden Programmcode ein. Mit „’“ oder REM werden Kommentare bezeichnet.

Dim Kreis As AcadCircle

Dim Zentrum As Variant ’Variant, weil später von der GetPoint-Funktion verlangt

Dim Radius As Variant

REM nachfolgende Funktion versteckt das Formular nach Aufruf dieser Prozedur
REM und übergibt AutoCAD die weitere Steuerung

Me.Hide

Radius = Me.txt_radius ’wird unten erklärt

Zentrum = Thisdrawing.Utility.GetPoint(, “Mittelpunkt abtasten“) ’wird unten erklärt

Set Kreis = Thisdrawing.ModelSpace.AddCircle(Zentrum, Radius) ’generiert den Kreis

Me.Show ’Bringt das Formular wieder zur Anzeige

Der Radius wird bei der Programmausführung dem Textfeld entnommen. Wie es der Name sagt, handelt es sich zunächst um einen String. Die Variable aber vom Typ Variant ist, wird der Text von VBA in einen Zahlenwert konvertiert.

 Die Funktion GetPoint gehört zur AcadUtility-Klasse. Diese stellt unter anderem viele wichtige Funktionen zur Kommunikation mit dem Anwender bereit. Hier erwartet sie die Angabe eines Punktes in der Zeichnung.

 Formulare können nicht direkt aus AutoCAD gestartet werden. Dazu müssen Sie dem AutoCAD-Objekt ThisDrawing noch folgende Aufruffunktion hinzufügen. Dazu doppelcklicken Sie auf ThisDrawing im Projektexplorer und kommen ins Code-Fenster.

Public Sub Addkreis2()

frm_kreis.Show

End Sub

Sie können nun in schon gewohnter Weise Ihre neue Funktion ausführen. Abschließend speichern Sie Ihr Projekt. Beispielsweise, indem sie im VBA-Werkzeugkasten auf das dafür vorgesehene Symbol klicken. Dann wird das komplette Projekt als dvb-Datei abgelegt. Um es zu laden, benutzen Sie später Das AutoCAD-Menü Extras --> Makro --> Projekt laden.

Zu Teil2

IBB INGENIEURBÜRO BATTEFELD  Bochum Nöckerstraße 37c
44879 Bochum
Tel: 0234-94172-0

 Mit Fragen oder Hinweisen wenden Sie sich bitte an
  

IBB INGENIEURBÜRO BATTEFELD  Leipzig Brahestraße 17
04347 Leipzig
Tel: 0341-2330465

Hydraulische Berechnungen - GIS -  Vermessung - BricsCad V8 - Kartierung - AutoCAD - Autodesk  MAP3D - DVGW - Vermessung - GPS - INTERGEO - Free Download von BricsCad - IntelliCAD - BricsCad V7 - Programmierung - Energieversorgung - AutoLISP - VB -  VBA - SQL - SYBASE SQL Anywhere - Individualprogrammierung - Gas - Wasser - Strom - Fernwärme - Abwasser - Kanal - Kataster - Indirekteinleiterkataster - relationale Datenbanken - SICAD - Netzberechnung - STANET - AutoSTA - Schnittstellen - SQD - SQS - ALK - ALB - EBDS - ISYBAU - GRADIS - AutoCAD
 ---------------------------------------------------------------------------------------------------------------------------