Die Inventor FAQ wird unterstützt von:

Inventor FAQ Logo
1957 Tipps, Tricks und Artikel für Inventoranwender

30.01.2017

Inventor automatisieren: Programmieren für Konstrukteure (Teil 4)

Du hast Teil 3 noch nicht gelesen? Dann hier lang!

Alle Beiträge der Serie

Im dritten Teil haben wir ein Document-Objekt angelegt und mit dem aktuellen Dokument in Inventor "befüllt". Dann haben wir geschaut, ob es eine IPT, IAM oder IDW ist und entsprecht mit einer If Abfrage darauf reagiert. Wir starten wieder damit den VBA-Editor (ALT+F11) und laden unser VBA-Projekt. So sah unser Programm aus, als wir aufgehört haben:

image

Wir rufen jetzt mal die API-Hilfe des Inventor auf. Dazu in das Inventorfenster wechseln und dort unter Hilfe den entsprechenden Bereich aufrufen.

image

Dort rechts auf den Bereich Sample Programs die Struktur wie im Bild unten aufklappen. Dort seht ihr einen ähnliche Programmcode wie wir in erstellt haben (zumindest der Anfang) nur das unsere Variable Dok hieß und in dem Beispiel heißt sie oDrgDoc. Drg für Drawing und Doc für Document ist klar, aber waas soll das o? In den Beispielen von Autodesk und vielen anderen Programmierern wird der Variabelntyp mit einem vorangestellten Buchstaben beschrieben, z.B. o für Object. Das sollen helfen später einfacher Variablen über die Autovervollständigung zu erreichen und man weiß immer, was in einer Variable drin steckt. Wunder euch also nicht, wenn ihr Beispiele anschaut, warum da ein o vorne steht. Das ist einfach guter Stil an den wir uns aber nicht halten müssen :) Genauso könnte man obj für Object schreiben oder wie wir das o auch ganz weg lassen. Siehe auch https://de.wikibooks.org/wiki/VBA_in_Excel/_Namenskonventionen

image

Heute brauchen wir eine Zeichnung. Also im Inventor eine neue, leere Zeichnung erstellen. In dieser Zeichnung löschen wir den Rahmen raus indem wir in im Baum rechtsklicken.

image

Jetzt erstellen wir in unserem Module ein neues Programm aber dieses mal beginnen wir nicht mit Sub sondern mit Public Sub, wir Tippen also Public Sub Rahmen und drücken Enter. Public definiert die Prozedur als Öffentlich und sie ist somit aus anderern Modulen aufrufbar. Falls alle Beispiele beginnen mit Public...

Jetzt definieren wir wieder eine Variable aber dieses mal sind wir etwas spezifischer indem wir es als DrawingDocument definieren, weil Document kann jede Art von Dokument sein, während DrawingDocument eben spezifisch für Zeichnungen ist und spezielle Funktionen zur Verfügung stellt, die es nur in Zeichnungen gibt. Dann weißen wir dem Objekt das aktive Inventordokument zu (wie gehabt).

Dim Zeichnung As DrawingDocument
Set Zeichnung = ThisApplication.ActiveDocument

Jetzt setzen wir auf das End Sub einen Haltepunkt (F9) um das Objekt Zeichnung näher zu untersuchen. Wir haben dazu bisher eine Watch auf die Variable definiert. Jetzt machen wir das anders. Wir nutzen dazu das Locals Window (View > Locals Window) und schließen ggf. das Watchfenster. Jetzt starten wir das Programm und sollten das sehen:

image

Wir sehen das Zeichnungsobjekt und wenn wir nach unten blättern finden wir u.a. den Eintrag Sheets, was für die Blätter in der Zeichnung steht.

image

Wir wollen etwas mit dem Objekt Sheet machen. Dazu definieren wir eine Variable vom Typ Sheet um direkt darauf zugreifen zu können.

Dim Blatt As Sheet
Set Blatt = Zeichnung.ActiveSheet

Jetzt können wir das Blattobjekt bearbeiten also verschiedene Dinge mit dem ´Blatt anstellen. Was wir machen können, zeigt uns die Autovervollständigung wenn wir Blatt. schreiben. Zum Beispiel könnten wir es löschen :)

image

Es gibt auch eine Funktion AddDefaultBorder, die in das Blatt den Standardrahmen einfügt. wir tippen also Blatt. und wählen aus der Liste AddDefaultBorder.

image

So sieht unser Programm nun aus:

image

Wenn wir es starten sehen wir das der gelöschte Rahmen in der Zeichnung wieder drin ist.

Starten wir das Programm nochmals bekommen wir eine Fehlermeldung, da die Zeichnung bereits einen Rahmen enthält und somit nicht einfach ein anderer Rahmen eingefügt werden kann. Wir müssen also prüfen, ob ein Rahmen drin ist und wenn ja müssen wir diesen löschen bevor wir den Standardrahmen einfügen können.

image

Drücke auf den Knopf Debug und du siehst, welche Zeile den Fehler verursacht.

Wenn wir das Blatt-Objekt anschauen sehen wir, das das Unterobjekt Border einige Einträge hat, die eben diesen Rahmen beschreiben.

image

Bricht das Programm ab, lösche den Rahmen nochmals und erstelle einen Haltepunkt in die Zeile, in der der Rahmen eingefügt wird. Nun starte das Programm nochmals.

Wir sehen, das das Objekt Border = Nothing ist, wenn kein Rahmen in der Zeichnung ist.

image

Wir müssen also eine Abfrage machen in der wir schauen, ob das Borderobjekt = Nothing ist und darauf reagieren. ACHTUNG: Hier wird bei If kein Gleich benutzt, sondern ein Is.

If Not Blatt.Border Is Nothing Then Exit Sub

Was soviel heißt wie: Wenn das Borderobjekt innerhalb des Blattobjekts NICHT nothing ist, dann verlassen die Prozedur, weil dann ein Rahmen in der Zeichnung ist. Die Funktion AddDefaultBorder wird also nur noch ausgeführt, wenn kein Rahmen in der Zeichnung ist.

image

Jetzt machen wir ein neues Bauteil und führen das Programm wieder aus. Wir bekommen wieder eine Fehlermeldung, weil wir einer Variable Das svom Typ DrawingDocument kein Bauteil zuweisen können. Um diesen Fehler abzufangen, müssen wir am Anfang prüfen, ob das ActiveDocument vom Typ Zeichnung ist.

If ThisApplication.ActiveDocument.DocumentType <> kDrawingDocumentObject Then Exit Sub

Ich denke, die Zeile ist klar, oder?

image

Das soll es für heute gewesen sein.

Weiter zu Teil 5

25.01.2017

Wo hat sich der Befehl versteckt? Befehl suchen

Kleiner Tipp am Mittwoch: Wer einen Befehl sucht oder als Anfänger vielleicht nicht mal eine Ahnung hat, ob es die Funktion gibt, der kann das Suchfeld oben in der Titelleiste des Inventors probieren. Sucht man dort nach einem Begriff, wird - falls vorhanden - auch der passenden Befehl angezeigt. Zusätzlich natürlich einige Links zur Inventorhilfe passend zu dem Begriff. Wird auf den gefunden Befehl geklickt, wird dieser sofort ausgeführt. Hinter dem Befehls steht noch eine "Wegbeschreibung" zum Befehl.

image

23.01.2017

Inventor automatisieren: Programmieren für Konstrukteure (Teil 3)

Du hast Teil 2 noch nicht durchgearbeitet? Hier kannst du das nachholen!

Alle Beiträge der Serie

Im letzten Teil haben wir uns das ThisApplication Objekt angeschaut. Bevor wir weiter machen. bitte zuerst mal den VBA-Editor starten (ALT+F11) und unser Benutzerprojekt laden (wenn du nicht mehr weißt, wie das geht, dann schauen in Teil 2 nach!).

Heute erstellen wir eine Dokumentvariable und befüllen diesen um sie dann näher zu untersuchen. Wir erstellen dazu ein neues Programm mit Namen Dokument. Dazu tippen wir unterhalb des letzten Programmes Sub Dokument und dann Enter. Das ergibt:

image

Jetzt definieren wir eine Variable, also einen leeren "Behälter" der Inhalte aufnehmen kann. Wir haben im ersten Teil bereits eine Variable definiert mit Namen "Version" (Dim Version). Wenn wir uns eine Variable als einen Behälter oder Tasche vorstellen, die Inhalte aufnehmen kann, so gibt es verschiedenen Typen von Variablen und auch Taschen. Es gibt Reisetaschen, Sporttaschen, Koffer, Taschen für Fallschirme uvm. Jeder dieser Taschen hat andere Eigenschaften und Funktion. Eine Reisetasche hat vielleicht mehrere Fächer und lässt sich mittels Rollen und Henkel ziehen, während der Fallschirmrucksack einen Fallschirm beinhaltet (Eigenschaft) und wenn man an einer Leine zieht kommt der raus (Funktion). Und eben solche Eigenschaften und Funktionen haben Variablen (meist) auch. Wir haben im ersten Beispiel mittels Dim Version zwar eine Variable erstellt, ihr aber nicht genau gesagt, was für eine Art Variable es ist (ich wollte die Sache einfach halten). Das wollen wir jetzt ändern. Wir definieren eine Variable vom Typ Dokument, d.h. diese Variable kann ein Inventordokument enthalten mittels Dim Dok as Document. Wir haben also eine Variable (Taschen) namens Dok von Typ Document.

image

Bisher ist die Variable leer. Wir wollen sie befüllen und zwar mit den aktuell im Inventor aktiven Dokument. Dazu greifen wir auf das Objekt ThisApplication zurück und darin auf ActiveDocument (du erinnerst dich noch an Teil 2?). Zuweisungen funktionieren mittels Set und = also Variable namens XXX = Inhalt, der zugewiesen werden soll.

Wir tippen also Dok = ThisA - dann wie gehabt STRG+Leertaste und ThisApplication auswählen, Punkt tippen und in der Liste ActiveDocument auswählen.

image

Jetzt erstellen wir eine Überwachung (Watch) für die Variable Dok, indem wir sie markieren, die rechte Maustaste drücken, Add Watch... aus dem Kontextmenü wählen und den folgenden Dialog mit OK bestätigen. In der Watchliste wir die Variable ergänzt. Sollte das Watch-Fenster nicht angezeigt werden, im Menü View oben den Eintrag Watch Window wählen. Dann den Eingabencursor in die Zeile End Sub stellen und F9 drücken. Es wird ein Haltepunkt erstellt, an dem die Programmausführung pausiert wird.

image

Jetzt öffnen wir eine Bauteildatei im Inventor und starten dann das Programm (F5) und klappen im Watchfenster die Variable Dok auf.

image

Dort sehen wir alle Eigenschaften der Variable vom Typ Document, z.B. den Name, der im Baum im Inventor angezeigt wird, den DisplayName. (Info am Rande: In der Spalte "Type" ist der Typ der Eigenschaft zu sehen. Bei DisplayName ist das "String", was für Text steht).

Wir machen nun eine Meldungsbox, in der dieser Displayname angezeigt wird. Dazu schreiben wir msgbox (Dok.DisplayName), wobei auch hier nach dem tippen des Punktes die Liste zur Verfügung steht. Sollte das Programm noch laufen und am End Sub stehen (gelb hinterlegt) dann mittels F5 das Programm vollständig ausführen lassen. Es greifen wir die gleichen Funktionen wie bisher auch, also z.B. nach dem Punkt hinter Dok kommt die Liste mit den Eigenschaften.

image

So sieht es fertig aus:

image

Mit F5 starten und die Meldungsbox bestaunen, die erscheint und mit OK schließen, sonst können wir nachher nichts mehr in Editor tippen.

image

Jetzt machen wir was total verrücktes, wir ändern den Displayname :) Dazu müssen wir der Eigenschaft Displayname einen neuen Text zuweisen. Das sieht dann so aus: Dok.DisplayName = "Ich heiße jetzt anders"

image

Den Haltepunkt bei End Sub können wir entfernen in dem wir den Cursor in die Zeile stellen und F9 drücken. Die rote Hinterlegung verschwindet. Jetzt starten wir das Programm wieder, bestätigen die Meldungsbox und schauen mal oben in den Browserbaum im Inventor.

image

Tatsächlich steht da jetzt der Text, den wir der Eigenschaft DisplayName zugewiesen haben. Jetzt ändern wir die Programmzeile auf Dok.DisplayName = "" d.h. wir setzen den Displayname auf "leer" und starten das Programm wieder.

image

Zuerst wird der neu, beim letzten Programmlauf geänderte Displayname anzeigt bevor er wieder geändert wird, dieses mal eben auf "". Wenn wir in den Bau schauen, sehen wir, das der Inventor den Displayname wieder gleich dem Dateinamen gesetzt hat.

wir wollen die beiden Zeilen Msgbox... und Dok.DisplayName nicht mehr ausführen ohne sie aber zu löschen, d.h. wir kommentieren sie aus in dem wir ein ' an den Anfang der Zeile setzen.

image

WICHTIG: Kommentare sind in Programm sehr wichtig, wenn die Programme länger werden, weil man dort Hinweise schreiben kann, warum man was im Programm macht!

Bisher haben wir auf Eigenschaften zugegriffen. Jetzt wollen wir uns Funktionen des Objekts "Document" anschauen. Dazu schreiben in eine neue Zeile Dok. und schon kommt wieder die Liste mit den Eigenschaften. Tippen wir nun sa um zu den Einträgen zu springen, die mit sa beginnen, finden wir einen Eintrag Save, der ein grünes Symbol vorne hat. Die Einträge mit den grünen Symbolen nennt man Methoden, während die mit der kleinen Hand die bereits bekannten Eigenschaften sind. Methoden sind also "Funktionen" die etwas mit dem Objekt machen, es z.B. speichern.

image

Das Programm sieht so aus:

image

Wird es gestartet, wird das aktuelle Inventordokument gespeichert, so wie wenn wir auf den Speichernknopf klicken würden. Schauen wir uns an, welche Eigenschaften und Methoden so ein Dokumentobjekt hat. Dazu stellen wir den Eingabecursor auf das Wort Document oben in der Zeile "Dim Dok as Document" und drücken F1. Sollte diese Box erscheinen, wählen wir den ersten Eintrag und drücken auf den Knopf "Help".

image

Die Programmierhilfe des Inventors wird geöffnet und es werden Informationen zum Objekt Document angezeigt.

image

Wir sehen eine Liste mit "Methods" das sind die "Funktionen" oder wie es richtig heißt Methoden, die ein Objekt hat und weiter unten die Properties (Eigenschaften). Leider gibt es diese Hilfe nicht auf Deutsch, aber Englisch können wir ja alle, oder :)

Hinter jedem Eintrag in der Tabelle ist eine Beschreibung zu finden. Klickt man auf den blauen Begriff wird eine detailierte Hilfeseite dazu geöffnet.

image

Ist jemand aufgefallen, das es die Methoden Save, Save2 und Saveas gibt? Save und Saveas sind denke ich klar (Speichern und Speichern unter) aber save2? Was steht in der Hilfe?

image

Save2 speichern also nicht nur das aktuelle Dokument sondern auch abhängige Dokumente. Bei einer Baugruppe also auch Komponenten in der Baugruppe.

Schauen wir uns Saveas in der Hilfe an:

image

Wenn wir unter Syntax schauen, sehen wir, das Savas noch weitere Angaben braucht. Zum einen ist das der Dateiname (Klar, speichern unter in Inventor aufgerufen fragt ja auch einen neuen Dateinamen ab). Zudem muss die Frage beantwortet werden, ob es sich um Speichern unter oder Kopie Speichern unter handelt, das sind (wie hoffentlich bekannt) in Inventor 2 unterschiedliche Funktionen.

image

Will man aus einer IPT eine STEP Datei machen, nutzt man Kopie speichern unter. Zudem bleibt bei Kopie speichern unter das aktuelle Dokument geöffnet.

Wir wollen nun unser Bauteil als DWF-Datei abspeichern. Dazu müssen wir vorher einen Ordner suchen, in den wir Schreibrechte haben. Dafür müssen wir einen gemeinsamen Nennern finden, der bei euch allen, egal welche Rechte ihr unter Windows habt, funktioniert. Wir nehmen c:\users\public was c > Benutzer > Öffentlich entspricht.

image

Um eine DWF zu speichern brauchen wir die Funktion Kopie speichern unter!

Wir schreiben also: Dok.save2 ( und wieder bekommen wir einen Hilfe, welche Argumente wir zusätzlich angeben müssen.

image

Nach der Klammer muss also der Dateiname inkl. Pfad kommen (das ist ein Text als hat die Angabe den Typ "String") dann ein Komma und dann die Angabe ob Speichern unter oder Kopie speichern unter und zwar als boolsche Angabe, d.h. es gibt wahr oder falsch (True oder False).

Als kleines Schmankerl soll bei der Pfadangabe der Pfad zwar fix sein (c:\users\public) der Dateiname soll aber dem Displayname entsprechen zzgl. der Endung dwfx. Wir müssen den Pfad also aus einem fixen Text und einer Eigenschaft des Dokuments zusammensetzen, bzw. aus 2 Strings (auch DisplayName ist vom Typ String siehe oben!). Das macht man mit dem &. Der String sieht also wie folgt aus:

"c:\users\public\" & Dok.DisplayName & ".dwfx"

Nach dieser Eingabe tippen wir ein Komma und schon fragt der Inventor ab, ob die zweite Angabe True oder False ist. Wir wollen KOPIE speichern unter (nur da kann man DWFX erstellen!) also TRUE. So sieht die Zeile aus.

image

Sieht richtig aus, ist aber trotzdem rot. Wenn man Methoden aufrufen will, muss man vorne ein Call stellen. So ist es also richtig:

image

Wenn wir jetzt unser Programm ausführen, wird die in das angegeben Verzeichnis eine DWF-Datei des aktuelle Modells gespeichert.

image

Jetzt haben wir ein Programm, das beim Ausführen vom aktuellen Dokument eine DWFX-Datei erstellt. Wir wollen das etwas verändern. Ist die Datei eine IPT oder IAM wollen wir eine DWF-Datei bei einer IDW aber eine PDF. Dazu brauchen wir was in der Form: Wenn Dateityp IPT oder IAM ist, dann Speichern unter als DWF sonst speichern als PDF.

Rufen wir nochmals die Hilfe zum Objekt Document auf und schauen in die Eigenschaften. Dort gibt es eine Eigenschaft DocumentType, welch Glück :)

image

Der Typ dieser Eigenschaft ist nicht etwa String (Text) sondern DocumentTypeEnum. Klicken wir darauf sehen wir welche Typen es gibt. Wir müssen also abhängig vom Typ unterschiedliche Befehle ausführen, also was mit Wenn > Dann > Sonst oder in der Programmsprache IF ... THEN ... ELSE ... END IF

Wieder erscheint nach dem = eine Auswahl gleich was DocumentType alles sein kann.

image

Der gesamte Programmblock sieht so aus:

image

Ich habe die Befehle (Call ...) innerhalb der Wenn - Dann - Sonst Struktur eingerückt. Das verbessert die Lesbarkeit des Programmcodes ungemein! Einfach Erst die TAB-Taste drücken und dann lostippen! Nochmals der Block in unserer Sprache:

WENN Dokumenttyp = IAM ODER Dokumenttyp = IPT DANN
     RUFE AUF Methode ....
SONST
     RUFE AUF Methode ....
ENDE WENN

Das soll es bis hier gewesen sein! Hausaufgabe bis zum nächsten mal: Schreibe ein Programm das bei einer IPT eine STP erstellt, bei einer IAM eine DWFX und bei einer IDW eine PDF. (Kleiner Tipp: Es geht auch IF ..... THEN ...... in einer Zeile ohne Else und End if) Rufe dazu auch mal die Hilfe zum Befehl if auf!

Weiter zu Teil 4

21.01.2017

Windows 10 Update: 99% Hänger

Auf meinem Geschäftsnotebook lief bis jetzt immer noch Windows 8. Leider gab es ein Problem mit dem Windows Update Dienst. Die Prozessorauslastung war immer 25%, d.h. ein CPU Kern war immer voll ausgelastet was auch dazu führte, das der Akku nur noch 2 Stunden hielt anstatt 4-5 Stunden. Alle Reparaturmassnahmen des Dienstes schlugen fehl (z.B. das Reparaturtool von Microsoft).

Irgendwann nach Stunden der Reparaturversuche habe ich beschlossen, das Update auf windows 10 auszuführen in der Hoffnung, das das Problem dann weg ist. Da das Update offiziell nicht mehr zur Verfügung steht, musste ich zu einem Trick greifen.

Der zweite Weg ist eine Upgrade-Installation, also das Umwandeln einer bestehenden Windows-Installation in Windows 10. Dabei hilft ein kleines Programm, welches Microsoft selbst zum Download bereitstellt.

Nun war es aber leider so, das das Updateprogramm bei 99% hängen blieb. Auch nach Stunden des Wartens passierte nichts. Also wieder googeln nach “Windows 10 Update 99 procent”. Erst habe ich nach dem deutschen “Prozent” gesucht, aber das ha alles nichts gebracht. Letztendlich half dieser Tip bei Superuser.

The problem is caused by the Windows 7 updates.

Before using the Windows 10 Upgrade Assistant, perform these steps:

  • set Windows 7 updates to "Never install updates".
  • Stop the update service by right clicking on the command prompt, and choose "Run as administrator".
  • Type

    NET STOP WUAUSERV
    

    It should say: "Windows update service is stopping....windows update service is stopped." Windows update service is stopping

After completing the above steps, start the Windows 10 Upgrade assistant, and it should complete.

Dieser Tipp half und nun ist zumindest Windows 10 installiert. Danke Internet :)

20.01.2017

Zeichnung: Symbole, die bei der Bemaßung zur Verfügung stehen, auswählen

Beim Bemaßen in der Zeichnung gibt es eine Menge Symbole, die ausgewählt werden können.

image

Welche Symbole dort zur Auswahl stehen, wird im Stileditor unterhalb des Eintrags Form- und Lagetoleranz angegeben. Dort gibt es eine Auswahlliste zu den entsprechenden Untereinträgen und eine Liste mit den anzuzeigenden Symbolen.

19.01.2017

Problemanalyse: Programm beobachten mit dem Process Monitor

Von Microsoft gibt es ein Tool, um das “Treiben” der Programme unter Windows zu beobachten, den Process Monitor. Sofort nach dem Start beginnt das Programm alle möglichen Vorgänge, die gerade unter Windows passieren, anzuzeigen. Das wird innerhalb von Sekunden extrem unübersichtlich. Deswegen sollten man das Programm, das man beobachten will, in den Filter aufnehmen und somit nur noch verfolgen, was dieses Programm macht. Dazu oben auf den Filter klicken und den gewünschten Prozessnamen angeben.

image

Nun wird nur noch angezeigt was die Inventor.exe (oder eben den Prozess, den ihr verfolgen wollt) so treibt. Ob euch die Infos was bringen, steht auf einem anderen Blatt, aber vielleicht hilft es ja bei einem Problem, auf die Ursache zu kommen. Dazu die Liste leeren und dann das Problem provozieren und schauen, was alles passiert.

image

18.01.2017

Vault 2017: Lizenz FAQ

Mit Vault 2017 wurde neben der Netzwerklizenz eine Einzelplatzlizenz eingeführt. Dazu hat Autodesk eine FAQ erstellt, die hier zu finden ist.

image

http://help.autodesk.com/view/VAULT/2017/DEU/?guid=GUID-B0A2327A-91DB-4019-9BE5-F6F1DC14654F

17.01.2017

PC Software: Programme auf den neuesten Stand halten

PC Software auf dem neuesten Stand zu halten ist nicht unbedingt immer einfach. Ich habe gestern ein Tool gefunden, das einen dabei unterstützen kann, Patch my PC Updater. Das Tool prüft die unterstützten Programme auf Aktualität und aktualisiert sich bei Bedarf. Damit die Programme aktualisiert werden können, müssen sie geschlossen sein. Der Updater bringt eine Meldung, wenn das Programm läuft, was bei Chrome und dem Teamviewer bei mir der Fall war. Vielleicht ist das für den einen oder anderen nützlich.

Wer bei einer Neuinstallation seine Standardprogramme automatisch installieren will, sollte sich mal Ninite anschauen.

image

https://patchmypc.net/download

15.01.2017

Inventor automatisieren: Programmieren für Konstrukteure (Teil 2)

Vorheriger Beitrag: Inventor automatisieren: Programmieren für Konstrukteure (Teil 1)

Alle Beiträge der Serie

Hier der zweite Teil unseres kleinen Programmierkurses. Heute schauen wir uns das ThisApplicatin-Objekt an. Davor müssen wir natürlich den Inventor starten, den VBA-Editor öffnen (ALT+F11) und dann über File > Projekt laden unser in Teil 1 angelegtes Projekt (die IVB-Datei) laden.

image

So sollte es dann im Browser links aussehen:

image

Im Module1 ist unser erstes Programm aus dem Teil 1 enthalten, das die aktuelle Versionsnummer aus dem Inventorobjekt ausgelesen hat.

Wir machen jetzt ein zweites Programm, dass in die Titelleiste des Inventors einen lustigen Text schreibt. Wir brauchen wieder unser Standardgerüst, wie im Beispiel 1 und tippen dazu an das Ende des ersten Programms eine Leerzeile und dann Sub Titelleiste und dann ENTER. Der VBA-Editor vervollständigt die Struktur durch die 2 Klammern und das End Sub. Es sollte jetzt so aussehen.

image

Das Module1 enthält also jetzt 2 Programme. Einmal das Programm Hallo und einmal unser neues Programm Titelleiste.

Wir wollen etwas am Inventor verändern. Der gesamte Inventor ist in VBA das Objekt ThisApplication, das wir ja bereits in Teil 1 verwendet hatten. Wir tippen also This und dann STRG+Leertaste und wählen aus der Liste die erscheint ThisApplication und tippen dann einen Punkt und wählen dann aus der Liste Caption und drücken die Leertaste. Was wir bisher geschrieben haben bedeutet: aus dem gesamten Objekt ThisApplication wollen wir etwas mit der Eigenschaft Caption machen. Wenn wir beim Beispiel Auto bleiben wäre vergleichbar MeinAuto.Typenbezeichnung als Angabe.

Nun tippen wir dahinter = "Hallo CAD-Programmierer"

So schaut es jetzt aus:

image

Starten wir das Programm durch drücken von F5 scheint erstmal nichts zu passieren. Wenn wir aber zum Inventorfenster wechseln, und in die Titelleiste schauen, steht dort unser Text. Das ermöglicht ganz neue Späße in der Firma an den Rechnern der Kollegen :)

image

Keine Angst, nach einem Neustart des Inventors ist wieder alles beim alten.

Jetzt wollen wir uns das Objekt ThisApplication mal etwas genauer anschauen, denn woher soll einer wissen, was alles in dem Objekt steckt? Dazu nutzen wir die Halt-Funktion und die Watch-Funktion. Die Halt-Funktion legt einen Stop in der Programmausführung ein und die Watch-Funktion zeigt den Inhalt einer Variablen an. Wir wollen, das das Programm vor er Ausführung von End Sub, und somit dem Ende unseres Programmes eine Pause einlegt. Dazu den Eingabecorsor in diese Zeile stellen und F9 drücken. Ein roter Punkt und die rote Unterlegung kennzeichnet nun die Zeile als Halteposition.

image

Nun richtet wir eine Überwachung des Objektes ThisApplication ein. Dazu den Eingabecursor auf das Wort ThisApplication setzten, die rechte Maustaste drücken und aus dem Kontextmenü Add Watch wählen.

image

Die folgende Dialogbox einfach mit OK schließen. Nun brauchen wir noch das Fenster, das uns die überwachten Werte anzeigt, das Watch-Fenster. Das zeigen wir über das Menü View an.

image

Wenn wir nun das Programm starten, wird die Ausführung bei End Sub angehalten und der Inhalt des Objektes ThisApplication im Watch-Fenster angezeigt. Wir können das Watchfenster etwas größer ziehen um mehr zu sehen.

image

Nun klicken wir auf das + vor ThisApplication und der Inhalt des Objektes wird angezeigt. Dort finden wir u.a. unsere veränderte Caption.

image

Durch drücken von F5 kann die Programmausführung fortgesetzt werden, d.h. die Anweisung End sub wird ausgeführt und das Programm ist somit beendet und das Objekt ThisApplication leer.

Jetzt schauen wir uns das Ganze mal an, wenn wir eine Inventordatei geöffnet haben. Wir öffnen dazu eine Baugruppe. Ich nutze die Arbor Press aus den Sample Files, es kann aber auch jede andere Baugruppe sein, solange sie nicht schreibgeschützt ist.

Sobald die Baugruppe geladen ist, starten wir unser Programm ein weiteres mal und schauen uns das ThisApplication-Objekt nochmals an, d.h. wir klappen ThisApplication mit dem Plus auf und dann den Baumzweig ActiveDocument, d.h. das im Moment im Inventor aktive Dokument. In ActiveDocument sind wiederrum Eigenschaften enthalten, nämlich alle der eben geöffneten Baugruppe, z.B. der DocumentType der eben kAssemblyDocumentObject ist.  

image

Dann gibt es dort den Eintrag ReferencedDocuments der alle in der Baugruppen enthaltenen Komponenten anzeigt. In meiner Baugruppe sind es 15 Stück (Count) und jede Komponente hat einen Item-Eintrag.

image

Jetzt wollen wir uns die Anzahl der Referenzierten Dokumente anzeigen. Dazu merken wir uns den "Weg" dorthin.

ThisApplication > ActiveDocument > ReferencedDocuments > Count

Oder auf Deutsch:

Im Inventor > aktuelle Datei > enthaltene Dateien > Anzahl

Wir brauchen eine Dialogbox (Befehls Msgbox) und dort geben wir die Eigenschaft Count an. So sieht unser Programm dann aus. (Daran denken, das mittels STRG+Leertaste und drücken der Punkt-Taste weitere Vorschläge kommen!).

image

Wird das Programm gestartet, während eine IAM geöffnet ist, wird der Wert der Eigenschaft Count angezeigt,

image

Den Dialog schließen und das VBA-Projekt im VBA-Editor speichern nicht vergessen!

Hausaufgabe bis zum nächsten mal: Schau dir den Inhalt des Objektes ThisApplication einmal genau (das kann ruhig eine halbe Stunde dauern!) an. Welche Eintrage kommen dir bekannt vor? Klappe auch die Untereintrage auf und schau dir an, was alles in ThisApplication und in ActiveDocument drin steckt. Dieses Prinzip zu verstehen ist für den weiteren Verlauf von elementarer Wichtigkeit!

Weiter zu Teil 3

Inventor FAQ Newsletter. Emailadresse: