Programmieren mit vba Teil 3

Transcription

Programmieren mit vba Teil 3
Autodesk Inventor
Programmierung mit VBA in Autodesk Inventor - Teil 2
Daten herunterladen
Autodesk Inventor Objekte
Variablen und deren Geltungsbereich
Deklaration von Form-Ebenen Variablen
Dokumentation der Prüfung und Form Initialisierung
Suche nach dem Bauteil Marker
Vervollständigung des Form Setups
Einfügen des Bauteils Marker
Update der XYZ Label
Testen des Makros
Zusammenfassung
Im vorherigen Tutorial haben wir die Benutzeroberfläche zum Auffinden des Schwerpunktes für Autodesk
Inventor· Baugruppen aufgebaut. Jetzt erweitern wir das Programm, um das spezielle Schwerpunkt Bauteil
Marker einzufügen und positionieren zu können, und die Koordinaten des Schwerpunktes in den aktuellen
Maßeinheiten darzustellen.
Daten herunterladen
Laden Sie als erstes die Datei COG_A.zip (251 KB) herunter. Entpacken und speichern Sie die Dateien in
einem Ordner in Ihrem aktuellen Projektverzeichnis. Es ist wichtig, daß die Marker.ipt Datei in einem
Verzeichnis innerhalb des aktiven Projektes gespeichert wird.
Die gezippte Datei enthält die folgenden Dateien:
Marker.ipt
Marker.ipt50
COG_A.ivb
Hinweis: Sollten Sie Autodesk Inventor 5.3 installiert haben, so können Sie direkt mit dem Marker.ipt
weiterarbeiten. Haben Sie noch eine ältere Version von Autodesk Inventor 5 auf Ihrem Rechner, so löschen
Sie bitte die Datei Marker.ipt und benennen die Datei Marker.ipt50 in Marker.ipt um.
Das Bauteil Marker.ipt wurde speziell für die Benutzung zur Kennzeichnung des Baugruppenschwerpunktes
erzeugt. Das Teil hat die folgenden Eigenschaften:
1. Alle Bauteilfunktionen werden durch eine benutzerdefinierte Skalierungsvariable gesteuert.
2. Das Material des Bauteils hat die Dichte 0. Damit beeinflußt das Bauteil nicht die
Schwerpunktsberechnung.
3. Das Bauteil ist symmetrisch um die Ursprungsgeometrie aufgebaut. Die Ursprungsebenen, -achsen
und -mittelpunkt können als Schwerpunkts-koordinatensystem in der Baugruppe benutzt werden.
Die Datei COG_A.ivb enthält das Ergebnis des vorherigen Tutorials. Sie können also entweder mit Ihren
eigenen Programmierergebnissen, oder den Daten aus dieser Datei weitermachen (benennen Sie diese zu
COG.ivb um). Die Daten aus COG.ivb können Sie über die Autodesk Inventor VBA IDE laden.
1. Starten Sie im Autodesk Inventor Menü Werkzeuge>Makro>Visual Basic Editor.
2. Starten Sie Datei>Projekt laden aus dem VBA Menü und browsen Sie zu dem Verzeichnis , welches
die COG.ivb Datei enthält und öffnen Sie diese.
Überblick und ein Tipp
Im vorherigen Tutorial hatten wir uns auf den Aufbau der Benutzeroberfläche für das Makro konzentriert. Es
wurden Controls in einer Form plaziert, und anschließend die Eigenschaften der Controls nach unseren
Bedürfnissen angepaßt. Zum Abschluß kam noch der Programmiercode hinzu, der durch den Anwenderklick
auf den Abbrechen oder >> Button gestartet wird..
Die VBA IDE enthält eine Anzahl von Tools zur Größensteuerung und Ausrichtung der Controls auf einem
Form. Per Grundeinstellung rasten die Controls in einem Raster ein. Die Rastergröße kann über den Reiter
Allgemein in den Optionen verändert werden. Eine Auswahl von Ausrichtungs- und Größensteuerungstools
ist in der Symbolleiste UserForm verfügbar (Ansicht>Symbolleisten>UserForm im VBA Menü). Man kann
Controls auf gleicher Ebene ausrichten und in der Grösse verändern. Controls innerhalb eines
Rahmenobjektes befinden sich gegenüber Controls außerhalb eines Rahmenobjektes auf einer anderen
Ebene. Man kann jede beliebige Anzahl von Controls wählen; das zuletzt gewählte Control wird als Basis für
die Formatierung Größe und Ausrichtung benutzt.
In der oberen Abbildung von Bild 1sind die beiden Bezeichnungsfelder (Label) Controls selektiert. Das
oberste Bezeichnungsfeld dient als Basis für die Formatierung Größe und Ausrichtung (weiße Griffpunkte).
In der mittleren Abbildung sind die Controls an dem linken Kanten ausgerichtet (Label2 ist zum Label1
ausgerichtet). In der unteren Abbildung sind zwei Controls in Höhe und Breite angepaßt. Zusätzliche
Abstands- und Gruppierungs-Controls sind in der Symbolleiste und dem Menü Format verfügbar.
Bild 1: Tools zur Größensteuerung und Ausrichtung
Zurück zum Seitenanfang
Autodesk Inventor Objekte
Falls Sie noch nicht den Überblick über die API Funktionalität in der Autodesk Inventor Programmierhilfe
gelesen haben, sollten Sie dies vor dem Weiterlesen machen. Sie müssen nicht alle Details dort verstehen,
aber die Hilfe gibt Ihnen ein Grundverständnis für die in diesem Tutorial beschriebene Funktionalität.
Das Makro benötigt Zugriff auf verschiedene Autodesk Inventor Objekte. Wir werden noch einige spezifische
Objekte bei Bedarf im Detail betrachten. Bild 2 zeigt eine Struktur aller Objekte, die für das Programm
benötigt werden. Sie können hier eine PDF Datei mit der kompletten Autodesk Inventor Objekt Struktur
herunterladen (212 KB). Die Informationen sind ebenfalls als Autodesk Inventor Product Resources unter
Autodesk.com verfügbar
Bild 2: Objekt Struktur der Massenschwerpunkt Baugruppenobjekte
Der Objektbaum sieht nur auf den ersten Blick kompliziert aus. Die Objektnamen sind im Allgemeinen sehr
beschreibend und die Beziehungen sind ähnlich denen im Autodesk Inventor Browser.
Lassen Sie uns kurz einen Überblick über die Objekte in Bild 2 verschaffen. Die zwei Objekte direkt
unterhalb des Applikationsobjekts sind das AssemblyDocument und das TransientGeometry Objekt.
•
TransientGeometry Objekte , wie Punkte und Matrizen, sind Platzhalter für Geometrie Informationen,
die benötigt werden, um echte Geometrie zu plazieren oder zu bewegen. Im Makro benutzen wir ein
Matrix Objekt (beinhaltet Position- und Richtungsinformationen) um Informationen zum Verschieben
des Marker Bauteils zum aktuellen Massenschwerpunkt der Baugruppe zu erhalten.
•
Das AssemblyDocument Objekt stellt eine Baugruppendatei dar. Es gibt zwei Elemente erster
Ebene dieses Objektes, die für das Makro interessant sind: das UnitsOfMeasure Objekt und das
AssemblyComponentDefinition Objekt.
•
Alle Autodesk Inventor Parameter sind für jedes Dokument Einheiten abhängig. Das
UnitsOfMeasure Objekt ermöglicht es Einheitentypen und Genauigkeit zu finden und einzustellen.
Das Programm stellt die Koordinaten des Massenschwerpunktes der Baugruppe in den aktuellen
Längeneinheiten für das Dokument dar.
•
Während das AssemblyDocument Objekt die Baugruppendatei repräsentiert, beinhaltet das Objekt
erster Ebene AssemblyComponentDefinition die Geometrie innerhalb der Datei. Mittels dieses
Objektes ist es möglich die Masseneigenschaften der Baugruppe und die Informationen über die
Baugruppenteile zu erhalten.
•
Das MassProperties Objekt ist das Schlüsselobjekt in unserem Programm. Es beinhaltet die
CenterOfMass Eigenschaft mit den X,Y und Z Koordinaten des Massenschwerpunktes der
Baugruppe. Dadurch sind keine komplexen Berechnungen notwendig. Unser Ziel ist es einfach
diese Informationen zu erhalten und dann das Marker Bauteil dorthin zu bewegen.
•
Eine Baugruppe besteht aus Teilen und Unterbaugruppen, die mit Baugruppenabhängigkeiten
verknüpft sind. Baugruppenkomponenten können über die API angesprochen werden. Wir nutzen
dies um das Marker Bauteil innerhalb verschiedener Autodesk Inventor Sitzungen zu finden. Man
kann dann das Marker Bauteil in Position bringen, und neben dem Skalieren auch die Sichtbarkeit
seiner Ursprungsgeometrie steuern. Diese Objekte werden später noch im Detail betrachtet.
Variablen und deren Geltungsbereich
Variablen sind benannte Speicherplätze, deren Inhalt während des Programmablaufes verändert werden
kann. Es können entweder einzelne Werte oder Reihen von Zahlen, Textstrings oder sogar Objekte
gespeichert werden. Basis für einen guten Programmierungsstil ist die Festlegung aller Variablen auf jeweils
einen speziellen Typ wie Integer, String oder z.B. als CenterOfMass Objekt.
Wenn Sie eine Variable als einen speziellen Objekttyp deklarieren, dann wird die IntelliSense® Funktionalität
in VBA aktiviert. Es werden die mit dem Objekt verknüpften Eigenschaften und Methoden zur Verfügung
gestellt, sobald diese im Programm benutzt werden. Fehler beim Definieren von Variablen enden meist in
Programmfehlern. VBA bietet die Möglichkeit nicht deklarierte Variablen optional zu prüfen. Dazu muß unter
Extras >Optionen im Editor Reiter die Option ·Variablendeklaration erforderlich" aktiviert sein (siehe Bild 3).
Bild 3: Variablendeklaration
Das Programm besteht aus verschiedenen Prozeduren (Unterroutinen und Funktionen), einige davon haben
Variablen, die nur durch Programmiercode in der jeweiligen Prozedur ansprechbar sind. Andere Variablen
sind über verschiedene Prozeduren hinweg verfügbar. Man kann eine Variable außerhalb einer Prozedur
definieren. Dadurch ist sie überall oder in bestimmten Bereichen des Programms verfügbar. Falls Sie mit
dem Programmierkonzept nicht vertraut sind, sollten Sie sich die VBA Hilfe zu Visual Basic-Konzepte >
Gültigkeitsbereich (von Variablen und Prozeduren) ansehen.
Zurück zum Seitenanfang
Deklaration von Form-Ebenen Variablen
Gehen wir darauf detaillierter ein. Es werden einige Objekt Variablen deklariert, die von verschiedenen
Prozeduren im Programm benutzt werden.
1. Klicken Sie mit der rechten Maustaste auf frmCog im Projekt-Explorer und wählen Code anzeigen aus
dem Menü.
2. Gehen Sie an das obere Ende des Codes. Falls hier noch nicht Option Explicit steht, geben Sie bitte jetzt
ein. Falls dies nicht explizit in den Optionen deklariert ist, wird mit der Definition im Code jede Variable
zwangsdeklariert.
Es müssen Variablen deklariert werden, die Objekte im Projekt Objekt Modell beinhalten (Bild 2). Nachdem
Sie diese außerhalb einer spezifischen Prozedur, aber innerhalb der Form deklarieren, sind sie in allen
Prozeduren dieser Form verfügbar.
3. Geben Sie Private m_oDoc as asse unter der Zeile Option Explicit ein (Bild 4).
4. Beachten Sie, daß das IntelliSense Fenster automatisch auf das erste passende Element nach der
Eingabe des Wortes as scrollt. Wählen Sie AssemblyDocument als den passenden Objekttyp für diese
Variable durch Drücken von <return> oder TAB.
Bild 4: IntelliSense Variablentyp Auswahl
Was bedeutet die für diesen Variablennamen benutzte Vorsilbe? Im Allgemeinen werden Variablennamen
mit einem m_ (module) oder g_ (global) zur Kennzeichnung des Geltungsbereichs bezeichnet, wenn die
Variable außerhalb einer Prozedur definiert wird. Der Variable ist das Wort Private vorangestellt, um es allen
Prozeduren innerhalb der Form zur Verfügung zu stellen (dies wird als Modul bzw. Form-Ebenen Variablen
Geltungsbereich bezeichnet).
Prozeduren in anderen Forms oder Modulen können die Variable nicht ansprechen. Eine Deklaration Public
(globale Variable) würde die Variable allen Prozeduren in allen Programm Modulen zur Verfügung stellen.
Allerdings sollte man die Deklaration Public vermeiden, denn hier verbirgt sich die Gefahr den Faden zu
verlieren wo und mit welchem Wert die Variable gerade besetzt ist. Das kleine o vor dem Variablennamen ist
die Kennzeichnung , daß die Variable ein Objekt enthält.
Hinweis: Variablen mit Objekten werden meist als Objekt Variablen bezeichnet.
5. Deklarieren Sie die folgenden Variablen als Private Variablen in der Form (z.b. Private m_oTG as
TransientGeometry)
Variablenname
Variablentyp
m_oTG
TransientGeometry
m_oCompDef
AssemblyComponentDefinition
m_oMassProps
MassProperties
m_oOccMarker
ComponentOccurrence
m_oUOM
UnitsOfMeasure
Dokumentation der Prüfung und Form Initialisierung
Beim ersten Ausführen des Makros in einer Autodesk Inventor Sitzung wird die Form durch das Statement
frmCog.Show in das Makro geladen. Nachdem das Makro nur in einer Baugruppe Sinn macht, soll dies mit
dem nachfolgenden Programmcode abgeprüft werden.
1. Doppelklicken Sie im Projekt-Explorer das Modul1.
2. Geben Sie in der CogTool Unterroutine den noch fehlenden Code ein (Bild 5).
Bild 5: Baugruppenüberprüfung
Der Code überprüft die aktuelle Zeichnung und beendet das Makro falls die aktuelle Zeichnung keine
Baugruppe ist.
3. Aktivieren Sie wieder das Code Fenster für frmCog.
4. Scrollen Sie in den unteren Bereich zur Userform_Initialize Routine. Sie haben im letzten Tutorial dort die
Basishöhe beim Laden der Form angegeben.
Während des Ladens der Form werden den Objektvariablen Werte zugewiesen (diese wurden im Tutorial
bereits deklariert). Um einer Objektvariable einen Wert zuzuweisen, muß das Schlüsselwort Set benutzt
werden. Variablen die nicht als Objekte verwendet werden, werden ohne dem Schlüsselwort Set
zugewiesen.
5. Geben Sie den Code ein wie in Bild 6 gezeigt. ThisApplication wird als Autodesk Inventor Application
Objekt interpretiert, da VBA innerhalb von Autodesk Inventor läuft. In Bild 2 finden Sie den Hinweis auf die
Abhängigkeiten der verschiedenen Objekte.
Bild 6: Baugruppenüberprüfung
Hinweis: Der grüne Text dient als Kommentar. Kommentieren Sie den Code immer. Dies hilft Ihnen den
Code später wieder zu verstehen. Alles nach dem Apostroph (`)wird als Kommentar interpretiert.
Zurück zum Seitenanfang
Suche nach dem Bauteil Marker
Das Bauteil Marker kann in der Baugruppe vorhanden sein oder fehlen während das Makro läuft. Das
Programm muß überprüfen ob das Bauteil Marker vorhanden ist, und dazu verschiedene Controls aktivieren
bzw. deaktivieren. Wie wird dies überprüft? Es gibt dazu verschiedene Möglichkeiten, allerdings sind einige
noch nicht dokumentiert. Man kann innerhalb des Browsers alle Komponenten überprüfen, allerdings könnte
jemand in der Zwischenzeit das Bauteil Marker umbenannt haben.
Die Herausforderung das Bauteil Marker zu finden, bleibt bestehen. In einer Baugruppe mit 5000 Einzelteilen
wird es sicherlich eine kleinere Anzahl von eindeutigen Komponenten erster Ebene geben. Die
AssemblyComponentDefinition hat eine Objekteigenschaft, die eine eindeutige Komponentendefinition
(erster Ebene) in der Baugruppe beinhaltet. Wir durchsuchen diese um das Bauteil Marker zu finden. Die
Frage ob das Bauteil Marker aktuell in der Baugruppe vorhanden ist, läßt sich an verschiedenen Stellen im
Programm stellen. Der Programmiercode dazu wird in einer benutzerdefinierten Prozedur definiert. Dadurch
kann man dies jederzeit innerhalb des Programms an beliebiger Stelle aufrufen.
Hinweis: Die Information aus dieser Routine ist ein einfaches Ja oder Nein. Die benutzerdefinierte Prozedur
wird mehr als Funktion und weniger als Unterroutine definiert. Eine Funktion unterscheidet sich von einer
Unterroutine dadurch, daß das Resultat der Prozedur im Funktionsnamen zurückgegeben wird. Dies
ermöglicht den Aufruf von Funktionen in Formeln. Die Unterroutine aus dem ersten Tutorial wird hier als
Funktion gezeigt.
Public Function AddTwo (Int1 as Integer, Int2 as Integer) as Integer
AddTwo = Int1 + Int2
End Sub
Ein Beispiel wie die Funktion aufgerufen werden kann:
Answer = AddTwo (5, 6)
Erzeugen Sie die IsMarkerLoaded Funktion.
1. Starten Sie Einfügen > Prozedur aus dem VBA Menü.
2. Geben Sie IsMarkerLoaded als Prozedurennamen ein (Bild 7).
3. Wählen Sie Funktion als Typ und Private als Gültigkeitsbereich.
4. Klicken Sie OK.
Bild 7: Erzeugung einer Funktion
5. Geben Sie den Code wie in Bild 8 und anschließend wie in Bild 9 dargestellt ein, um die Funktion zu
vervollständigen. Die Kommentare sind nicht notwendig, allerdings empfehlenswert.
Bild 8: Funktionscode
Bild 9: Vollständiger Funktionscode
Betrachten wir noch einmal den Code aus Bild 8 und 9. Die eindeutigen Komponentendefinitionen in der
Baugruppe werden ausgewertet und durch eine Schleife iterativ bearbeitet. Die Komponentendefinitionen
werden in einer VBA Collection (Gruppe von gemeinsamen Elementen) gespeichert. Die Collection hat eine
Count Eigenschaft (Nummer von Elementen in der Collection) und eine Element Eigenschaft um den Index
basierenden Zugriff auf die individuellen Objekte der Collection zu ermöglichen. Werfen Sie einen Blick auf
das Objekt Modell in Bild 2 und vergleichen Sie es mit dem Programmiercode um die Hierarchie besser zu
verstehen.
Der mit jeder Komponentendefinition verknüpfte Dateiname wird mit dem Marker.ipt verglichen. Falls es
gefunden wird, werden alle weiteren Kopien des Bauteils Marker in der Baugruppe gelöscht. Der Anwender
wird dabei gewarnt. Die ImmediateOccurences Collection speichert alle Vorkommen der Komponente in der
Baugruppe. Sobald ein Element aus der Collection entfernt wird, werden alle Elemente oberhalb des
entfernten Elements um eine Elementnummer nach unten gesetzt. Falls das Bauteils Marker drei mal in der
Baugruppe vorkommt, dann gibt es nach dem Löschen des zweiten Elementes noch ein Element eins und
drei in der Collection.
Dem Funktionsnamen wird dann der Wert True zugewiesen, um zu zeigen, daß das Bauteil Marker
gefunden wurde. Abschließend wird das Vorkommen des Bauteils Marker der vorher deklarierten ModulEbenen Objektvariable m_oOccMarker zugewiesen.
Vervollständigung des Form Setups
Jetzt kann die Unterroutine Userform_Initialize vervollständigt werden.
1. Geben Sie den Code wie in Bild 10 gezeigt, in die Unterroutine Userform_Initialize im Anschluß an den
vorherigen Code (Bild 9) ein.
Bild 10: Form Initialisierung
Abhängig von dem Suchresultat nach dem Bauteil Marker.ipt, wird der Status des Steuerelements in der
Form gesetzt. Nicht verfügbare Kommandobuttons erscheinen ausgegraut und sind nicht aktiv. Die
Unterroutine UpdateXYZ aktualisiert die Darstellung der Baugruppen Massenschwerpunkt Koordinaten im
Form. Diese Routine im weiteren Verlauf des Tutorials noch erzeugt.
Einfügen des Bauteils Marker
Es folgt jetzt der Programmiercode zum Einfügen des Marker Bauteils in die Baugruppe. Aus der
Unterroutine cmdInsert_Click wird eine benutzerdefinierte Unterroutine aufgerufen, um diese Aufgabe zu
übernehmen.
1. Wählen Sie aus der Liste der Controls im Code Fenster cmdInsert aus.
2. Fügen Sie in die Unterroutine cmdInsert_Click den folgenden Code ein:
Call InsertMarker
3. Fügen Sie eine Private Unterroutine mit dem Namen InsertMarker in die Form ein.
4. Fügen Sie den Code wie in Bild 11 beschrieben in die InsertMarker Unterroutine ein.
Bild 11: Setup vor dem Plazieren des Bauteils
Der Code in Bild 11 erzeugt eine temporäre Matrix, die mit den Koordinaten des Massenschwerpunktes der
Baugruppe gefüllt wird. Die Rotationswerte bleiben unverändert auf den voreingestellten Nullwerten für jede
Achse.
Wie erkennt man welche Informationen für die SetTranslation Methode des Matrixobjektes benötigt werden?
Um für ein Objekt, Eigenschaft oder Methode Hilfe zu erhalten, wählen Sie das Wort an und drücken dann
die F1 Taste. Die Hilfe mit dem jeweiligen Befehlssyntax wird aufgerufen. Oftmals werden auch noch
zusätzlich Beispiele zum jeweiligen Hilfethema angeboten.
Diese Beispiele sind oftmals der wichtigste Teil der Hilfe. Viele kleine Beispiele zeigen wie Grundfunktionen
in die Praxis umgesetzt werden können (z.b. das Plazieren einer Komponente in einer Baugruppe).
Alles ist jetzt vorbereitet, um das Marker Bauteil einzufügen. Vorausschauend denkend (wie es gute
Programmierer tun), erkennt man, daß das Marker Bauteil nicht immer in dem Autodesk Inventor Projektpfad
vorhanden sein könnte. Ein Fehler tritt im Programm auf. Um diese Möglichkeit abzufangen, fügen wir
Programmiercode zum Abfangen und Wiederherstellen des Fehlers ein. Es gibt verschiedene Techniken um
Fehler innerhalb von VB/VBA zu behandeln. In diesem Fall verwenden die Funktion für die
Fehlerbehandlung von einzelnen Instruktionen (Einschalten der Fehlerbehandlung, Ausführen des Code
Statements, welches einen Fehler verursachen könnte, und anschließendes Ausschalten der
Fehlerbehandlung).
5. Fügen Sie den Code wie in Bild 12 beschrieben in die InsertMarker Unterroutine unterhalb des vorherigen
Codes ein.
Bild 12: Einfügen des Marker Bauteils
Der größte Teile des Programmiercodes in Bild 12 und 13 ist einfach zu verstehen (verwenden Sie bitte
Kommentare). Die Codezeile zum Plazieren des Marker Bauteils weist das Vorkommen der Modul-Ebenen
m_oOccMarker Variable zu. Man kann das Marker Bauteil jetzt direkt über diese Variable ansteuern.
6. Vervollständigen Sie den Code wie in Bild 13 beschrieben unmittelbar nach der On Error Goto 0 Zeile.
Update der XYZ Label
Die letzte Aufgabe ist nun die Labels zur Darstellung der Massenschwerpunkt Koordinaten der Baugruppe
zu aktualisieren. Die Form bleibt dabei sichtbar, während Sie in Autodesk Inventor arbeiten. Dadurch können
Sie die Koordinaten des Massenschwerpunktes der Baugruppe jederzeit sehen.
1. Scrollen Sie ans Ende des Code Fensters und geben Sie den Code wie in Bild 14 gezeigt ein.
Unterroutinen und Funktionen können auch direkt im Code erzeugt werden.
Bild 13: Code zur Vervollständigung der InsertMarker U-Routin
Bild 14: Aktualisieren der Labels
Die m_oMassProps Objektvariable wird zum Erhalt der Daten des Massenschwerpunkts der Baugruppe
genutzt. Diese Variable wurde während der Forminitialisierung gesetzt. Für jedes Label wird eine Funktion
(der Wert wird im Funktionsnamen zurückgegeben) mit dem Namen ToFourDec aufgerufen. Diese Funktion
erzeugt eine Zeichenkette mit den Koordinaten in den aktuellen Einheiten.
2. Eingabe des Codes für die ToFourDec Funktion wie in Bild 15 gezeigt.
Bild 15: Erzeugung der Koordinaten mit lokalen Einheiten
Hinweis: Die erste Anweisung in der ToFourDec Funktion hat einen Unterstrich am Ende der ersten Zeile.
VBA interpretiert dies als einen Fortsetzungsbuchstaben mit dem Rest der Anweisung in der zweiten Zeile.
Sie können die Anweisung auch in eine Zeile eintippen, hier wurde dies nur wegen der graphischen
Darstellung im Tutorial gemacht.
Die ToFourDec Funktion ist ein Beispiel dafür, wie man mit Werten und Einheiten in Autodesk Inventor
arbeitet. Alle Abstandswerte werden in Autodesk Inventor in Zentimetern und alle Winkel in Rad gespeichert.
Der Anwender erwartet natürlich die Darstellung der Einheiten in den von ihm gesetzten Voreinstellungen.
Das UOM Objekt enthält Methoden um interne Einheiten in die aktuellen Einheiten umzusetzen. Um Hilfe
über die VBA Funktionen (z.b. Format$ oder CStr) zu erhalten, klicken Sie auf das Wort und danach die F1
Taste.
Zurück zum Seitenanfang
Testen des Makros
Testen wir jetzt unsere bisherige Arbeit.
1. Stellen Sie sicher, daß sich das Bauteil Marker.ipt im aktuellen Projektpfad befindet.
2. Öffnen Sie eine Baugruppe mit einigen Bauteilen.
3. Wählen Sie Werkzeuge > Makro > Makros aus dem VBA Menü.
4. Wählen Sie das CogTool Makro aus dem Dialog mit Ausführen.
Die Form wird geladen, und der Einfügen Button ist aktiv.
5. Klicken Sie den Einfüge Button.
Das Marker Bauteil wird in der Baugruppe plaziert und im Dialog werden die Koordinaten des
Massenschwerpunktes der Baugruppe dargestellt.
6. Klicken Sie Abbrechen.
7. Starten Sie das Makro erneut.
Dieses Mal findet das Programm das Marker Bauteil . Der Einfüge Button ist ausgegraut und der
Aktualisieren Button ist ebenfalls inaktiv.
8. Klicken Sie den Abbrechen Button.
9. Fügen Sie das Bauteil Marker.ipt mehrmals zusätzlich in die Baugruppe ein.
10. Lassen Sie das Makro erneut laufen.
Eine Warnung verweist auf die zusätzlichen Marker Bauteile, und die zusätzlichen Darstellungen werden
gelöscht.
11. Klicken Sie auf Abbrechen.
Zusammenfassung
Das Wissen über VBA und Autodesk Inventor Objektmodelle sind Grundvoraussetzung für eine erfolgreiche
Programmierung. Dabei hilft es aus Programmierbeispielen anderer zu lernen. Eine sehr gute Quelle sind
auch die am Markt verfügbaren Bücher über VB/VBA Programmierung.
Im nächsten Tutorial schließen wir das Projekt ab. Es wird eine Updateroutine und der Code zum Skalieren
des Marker Bauteils, sowie die Routine zur Sichtbarkeitssteuerung der Ursprungsgeometrie des Marker
Bauteils hinzugefügt. Weiterhin werfen wir einen Blick auf die neue Autodesk Inventor· Series, die Autodesk
Inventor· 5.3 und Autodesk® Mechanical Desktop® 6 enthält.
Zurück zum Seitenanfang
© Copyright 2002 Autodesk, Inc. Alle Rechte vorbehalten.