Transcription of Programmieren mit vba Teil 3 - inventor.cad.de
1 Autodesk Inventor Programmierung mit VBA in Autodesk Inventor - Teil 3 Dateien downloaden Aktualisierung der Marker Position Testen und Debuggen Haltepunkt und Objektverfolgung Sichtbarkeit der Referenzgeometrie Der Abschlu test Zusammenfassung Im zweiten Teil des dreiteiligen Tutorials hatten wir den Code zum Plazieren einer Komponente des Marker Bauteils im Massenschwerpunkt der Baugruppe eingef gt. In diesem Abschnitt des Tutorials f gen wir zus tzliche Prozeduren hinzu. Eine Prozedur ist f r das Aktualisieren der Position des Marker Bauteils in Abh ngigkeit vom Massenschwerpunkt der Baugruppe zust ndig.
2 Diese Aktion wird ausgef hrt, nachdem der Anwender den Aktualisieren Button dr ckt. Eine weitere Prozedur skaliert das Marker Bauteil. Abschlie end wird noch der Programmcode zur Sichtbarkeitssteuerung der Urspungsgeometrie (Arbeitsebenen,-achsen und Mittelpunkt) des Marker Bauteils erstellt. Parallel dazu werden wir uns mit Methoden zum Finden und Fixen von Programmierfehlern (debuggen) zu befassen. Die Hierarchie der Objekte des Programms sind in Bild 1 dargestellt. Dateien downloaden Sie k nnen entweder mit Ihrem bisher erstellten Code weiterarbeiten, oder aber den Code der bisherigen Tutorials runterladen ( (259 KB)).
3 Die gezippte Datei enth lt die folgenden Dateien: Hinweis: Sollten Sie Autodesk Inventor installiert haben, so k nnen Sie direkt mit dem weiterarbeiten. Haben Sie noch eine ltere Version von Autodesk Inventor 5 auf Ihrem Rechner, so l schen Sie bitte die Datei und benennen die Datei in um. Kopieren Sie das Bauteil in ein Verzeichnis in Ihrem aktuellen Projekt. Die Projektdatei enth lt den kompletten Code der bisherigen Tutorials. Benennen Sie diese Datei in um und laden das Projekt mittels der Autodesk Inventor VBA IDE: 1.
4 W hlen Sie Werkzeuge > Makro > Visual Basic Editor aus dem Autodesk Inventor Men 2. W hlen Sie dann Datei > Projekt laden aus dem VBA Men . Browsen Sie zu der Datei und laden Sie diese. Bild 1: Objekt Hierarchie des Massenschwerpunktes der Baugruppe Zur ck zum Seitenanfang Aktualisierung der Marker Position Obwohl es m glich ist die Position des Marker Bauteils in Abh ngigkeit von Autodesk Inventor Events automatisch zu aktualisieren, halten wir die Situation einfach. Der Anwender startet das Update manuell durch Dr cken des Buttons Aktualisieren.
5 Der f r das Update ben tigte Code ist fast mit dem Code der InsertMarker Unterroutine identisch. Es wird eine tempor re Matrix mit der Position des Massenschwerpunktes der Baugruppe erzeugt, und im Anschlu werden diese Daten genutzt, um das Marker Bauteil auf den aktuellen Massenschwerpunkt der Baugruppe zu schieben. Obwohl das Marker Bauteil nach dem Einf gen fixiert ist, gibt es keinen Schutz, da der Anwender das Bauteil l st, verschiebt oder rotiert, oder sogar das Marker Bauteil mit anderen Komponenten verbindet. Die zur Transformierung des Marker Bauteils verwendete Matrix speichert die Orientierung (Rotation)des Bauteils um es an das Koordinaten-system der Baugruppe anzupassen (Ausrichtung in den Hauptachsrichtungen).
6 Die Update Prozedur k mmert sich nicht um Zusammenbauabh ngigkeiten, man k nnte dies aber pr fen, und dann alle notwendigen Zusammenbauabh ngigkeiten bei Bedarf (Abh ngig vom Bewegen des Bauteils) l schen. 1. Erzeugen Sie eine neue Private Subroutine mit dem Namen UpdateMarker. 2. Schneiden Sie die ersten sechs Programmcodezeilen (keine Kommentare) aus der InsertMarker Prozedur, und f gen diese dann in die UpdateMarker Prozedur. 3. L schen sie die Zeile mit der Genauigkeitsdefinition der Baugruppen Masseneigenschaft. Der Code sollte wie in Bild 2 gezeigt aussehen.
7 Bild 2: UpdateMarker Prozedur 4. F gen Sie die folgende Zeile Code oberhalb der End Sub Zeile ein. Call (oMatrix) Die Methode SetTransformWithoutContraints verschiebt die Komponente ( ) unabh ngig von Zusammenbauabh ngigkeiten auf der Auspr gung. Jedoch w rde das n chste Update der Baugruppe die Zusammenbauabh ngigkeiten wieder aktivieren. Als Bonusaufgabe k nnen Sie versuchen die dem Bauteil zugeordneten Zusammenbauabh ngigkeiten zu l schen. Hinweis: Die Variable Assembly ComponentOccurence hat eine Eigenschaft Abh ngigkeiten. 5. Kopieren Sie den Code von der InsertMarker Prozedur, der die Marker Bauteil Eigenschaft zum Fixieren des Bauteils und als Referenzkomponente definiert.
8 F gen Sie den Code unterhalb des Codes aus Punkt 4 ein. 6. Kopieren Sie den Code von der InsertMarker Prozedur, der die UpdateXYZ Unterroutine aufruft. F gen Sie den Code unterhalb des Codes aus Punkt 5 ein. 7. F gen Sie eine Codezeile zum Updaten der Baugruppe ein (siehe InsertMarker). Obwohl eine innerhalb einer Prozedur definierte Objektvariable am Ende einer Prozedur (au erhalb des Geltungsbereichs) unabh ngig von allen Objekten ist, zeugt das Einf gen einer Codezeile zum Setzen der Variable auf Nothing am Ende der Prozedur von einem guten Programmierstil.
9 8. F gen Sie vor der End Sub Zeile folgenden Code ein: Set oMatrix = Nothing Die UpdateMarker Unterroutine sollte nun wie in Bild 3 dargestellt aussehen. Bild 3: UpdateMarker Prozedur 9. Es mu jetzt noch eine Verbindung zum Aktualisieren Button des Dialogs hergestellt werden. Erzeugen Sie eine Private Unterroutine cmdUpdate mit der Prozedur Click. Von dort aus rufen Sie die UpdateMarker Routine auf. Der Code sollte wie folgt aussehen: Private Sub cmdUpdate_Click() Call UpdateMarker End Sub Testen und Debuggen Testen wir jetzt die Prozedur. ffnen Sie eine Baugruppe , die eine Komponente des Marker Bauteils beinhaltet.
10 In unserem Fall verwenden wir eine einfache Baugruppe mit 2 W rfeln gleicher Gr sse. 1. W hlen Sie Extras > Makros aus dem VBA Men . 2. Klicken Sie Ausf hren des CogTool Makros. Der blaue W rfel ist an dem Baugruppenursprung in Bild 4 fixiert. Der graue W rfel ist mit der Abh ngigkeit Abstand des Mittelpunkts zur X,Y,Z-Achse der Baugruppe von 11/-17/8 mm versehen. Bild 4: Baugruppe mit Marker Bauteil 3. Bewegen Sie die unterbestimmte Komponente oder ndern Sie den Offset Wert der Baugruppenabh ngigkeit um eine nderung der Baugruppe zu erwirken (in unserem Beispiel X um zus tzliche 30 mm und Y um zus tzliche 20 mm).