 |
Programmierung mit VBA in
Autodesk Inventor - Teil 2
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. |
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:
- Alle Bauteilfunktionen werden durch eine benutzerdefinierte
Skalierungsvariable gesteuert.
- Das Material des Bauteils hat die Dichte 0. Damit beeinflußt
das Bauteil nicht die Schwerpunktsberechnung.
- 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.
- Starten Sie im Autodesk Inventor Menü
Werkzeuge>Makro>Visual Basic Editor.
- 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 |
|
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 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 |
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
| |
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
|
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 Modul-Ebenen
Objektvariable m_oOccMarker zugewiesen.
|
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. |
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. |
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 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. |
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 |
|