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.