![]() |
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Download einer kostenlosen BricsCad-Demoversion (Vollversion für 30 Tage ab Installation) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
!!! Bitte beachten: Nachfolgende Ausführungen gelten nur für BricsCad bis V7. Seit V8 VBA weitestgehend kompatibel zu AutoCAD!!! |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Microsoft VBA (Visual Basic for Appliations), nachfolgend kurz VBA genannt, ist eine objektorientierte Programmiersprache, die innerhalb von BricsCad 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 BricsCad wird jede Komponente, angefangen bei BricsCad selbst bis hin zu einzelnen BricsCad-Elementen wie Punkt, Polylinie, Kreis, usw. als Objekt aufgefasst. Diese Objekte sind Bestandteile verschiedener Klassen und hierarchisch organisiert. Ganz oben steht BricsCad (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. Sofern sie nicht über das Menü erreichbar ist, finden Sie die Help-Datei im BricsCad-Pfad …\Help\BricsCad-DevRef.chm. Zwei einfache Beispiele sollen Ihnen ein erstes Kennenlernen ermöglichen. In der ersten Übung werden Sie ein Programm entwickeln, das einen Kreis mit festen Werten zeichnet. Das dabei gewonnene Wissen erweitern Sie in der zweiten Übung, indem Sie ein Formular erarbeiten, das Ihnen eine Variante der Interaktion mit BricsCad veranschaulicht. Starten Sie nun BricsCad mit einer leeren Zeichnung. Der Aufruf von VBA beispielsweise über das BricsCad-Menü Werkzeuge --> Visual Basic --> Visual Basic-Editor erfolgen. Einfacher geht es mit Alt+F11. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
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 DiesesDokument 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: |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Bild1: In die VBA-Entwicklungsumgebung gelangen Sie mit Alt+F11 (zum Vergrößern bitte dem Link folgen) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Public Sub AddKreis1() End Sub Übrigens können Sie sich das Tippen dieser Zeilen auch vereinfachen, indem Sie mittels des Werkzeug-Symbols “Prozedur einfügen” den Untermenüpunkt Prozedur wählen. Hier müssen Sie nur noch den Namen eingeben und VBA ergänzt den Rest. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Zwischen die beiden Zeilen kommt nun der eigentliche Programmcode. Sie beginnen es mit der Deklaration der erforderlichen Variablen. Dim Kreis As IntelliCAD.Circle 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. Aus dieser Liste wählen Sie nun das Objekt „ItelliCAD“ und anschließend „.Circle“. Für das Objekt Kreis brauchen Sie noch einen Einfügepunkt (Zentrum). Er setzt sich aus den Koordinaten der X-, Y- und Z-Achse zusammen. Dafür muss ein Punktobjekt erzeugt werden. Bitte beachten Sie, dass BricsCad zwei verschiedene Arten von Punkten kennt. Das Punktobjekt und die Punkt-Entity. Das Punktobjekt kann man sich als eine dreidimensionale Variable vom Typ Double vorstellen. Also genau das, was man braucht, um den Mittelpunkt eines Kreises zu definieren. Das Punktobjekt wird NICHT in der Zeichnung angezeigt. Es wird mittels Library.CreatePoint(x,y,z) erzeugt. In Ihrem Programm wird jetzt erst mal das Punktobjekt mit Dim Zentrum As Point deklariert. Im Unterschied dazu gibt es die PointEntity. Sie repräsentiert das Zeichnungselement eines Punktes, ist somit in der Zeichnung sichtbar. Die Erzeugung geschieht mittels AddPointEntity(PointObjekt). Bitte beachten Sie weiterhin, dass Sie dieser Methode das vorstehend genannte Punktobjekt als Parameter mitgeben müssen. Nicht die eigentlichen Koordinaten!. Fehl noch der Radius des Kreises, eine Gleitkommazahl, die Sie ebenfalls deklarieren sollten: Dim Radius As Double Für unseren Kreis haben wir alles zusammen. Bevor es an den eigentlichen Programmcode geht sollten Sie noch eine Deklaration anfügen: Dim Doku As IntelliCAD.Document Mit Doku wird ein Verweis auf das BricsCad.Document hergestellt, also die Zeichnung. Nun zum eigentlichen Algorithmus. Zunächst setzen wir den Kreismittelpunkt mit Set Zentrum = Library.CreatePoint(10, 10, 0) Das Library-Objekt stellt neben vielen anderen Methoden auch die Funktion zur Erzeugung eines Punktobjektes bereit. Als Parameter werden die X-, Y- und Z-Koordinate mit gegeben. Mit Radius = 5 Legen Sie den Radius fest. Bevor Sie an die Erzeugung des Kreises gehen können, ist der Bezug zur Zeichnung mit folgender Anweisung zu setzen: Set Doku = IntelliCAD.ActiveDocument Nun haben Sie alles zusammen, was für die Kreiserzeugung benötigt wird. Set Kreis = Doku.ModelSpace.AddCircle(Zentrum, Radius) Der Kreis wird unter Angabe des Mittelpunktes und des Radius mit der Funktion AddCircle im Modellbereich der aktiven Zeichnung generiert. Es empfiehlt sich, Ihr erstes Programm mit Doku.ActivePViewport.ZoomAll Abzuschließen. Wenn Sie nach der Abarbeitung zur Zeichnung umschalten, haben Sie sofort den Überblick über Ihr Ergebnis. Die Programmausführung starten Sie jetzt mit F5 und schalten anschließend mit der Tastekombination Alt-F11 zur Zeichnung um. Zur besseren Übersicht hier noch mal das komplette Programm: |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Public Sub AddKreis1() Set Doku = IntelliCAD.ActiveDocument End Sub |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
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_vba_kreis 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: |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
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 IntelliCAD.Circle Set Doku = IntelliCAD.ActiveDocument 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. Weiterhin ist die Schreibweise zu beachten. In der Zeile Radius = Me.txt_radius lesen Sie den Wert des Textfeldes aus. „Me“ verweist dabei auf das aktuelle Formular. Das ist nichts anderes als Faulheit. Denn folgende Programmzeile Radius = frm_vba_kreis.txt_radius würde nichts anderes bewirken. Zumindest in unserem Fall. Falls Sie jedoch mal in die Verlegenheit kommen, gleichzeitig mit mehreren Formularen zu arbeiten, ist die ausführliche Schreibweise erforderlich. Schließlich muß VBA ja erst mal gesagt werden, wo der Wert herkommen soll. Die Funktion GetPoint gehört zur Utility-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 BircsCad gestartet werden. Sie müssen dem BricsCad-Objekt DieserArbeitsbereich noch folgende Aufruffunktion hinzufügen. Dazu doppelcklicken Sie auf ThisDrawing im Projektexplorer und kommen ins Code-Fenster. Public Sub VBA1_kreisform() 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. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
IBB INGENIEURBÜRO BATTEFELD Bochum Nöckerstraße 37c |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Mit Fragen oder Hinweisen wenden Sie sich bitte an |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
IBB INGENIEURBÜRO BATTEFELD Leipzig Brahestraße 17 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
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
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||