Programmierkurse gab es schon eine paar auf diesem Blog in den letzten Jahren. Das wird der letzte sein und auch noch den letzten abholen, der sich bisher nicht an das Thema an getraut hat. Eine Sache vorweg: Was wir hier machen hat nichts mit "richtigem" Programmieren zu tun, wie es ausgebildete Programmierer machen. Es ist eher vergleichbar mit einem technisch interessierten Laien, der sich Skizzen für den Bau eines Vogelhäuschen macht. Unser Ziel wird es sein, einfache, sich wiederholende Abläufe, zu automatisieren.
Ein bisschen Theorie
Um im Inventor etwas zu programmieren stehen 3 verschiedene Möglichkeiten zur Verfügung:
- iLogic
- VBA
- Addin / Externes Programm
iLogic ist die Programmiermöglichkeit, die ursprünglich dafür entwickelt wurde, Variantenmodelle zu erstellen, d.h. über Programmierungen Modelle zu ändern. Die Programmierungssprache die dafür genutzt wird, ist Visual Basic. VBA steht für Visual Basic for Applications, der Programmierumgebung zur Automatisierung von Abläufen in Inventor und anderen Programmen wie Word, Excel uvm. Wie der Name schon sagt, ist auch hier die Programmiersprache Visual Basic, d.h. Wer iLogic programmieren kann, der kann auch VBA und anders herum. Es gibt unterschiede, aber die sind rudimentär. Sowohl für iLogic wie auch für VBA wird außer dem Inventor keine weiteren Programme benötigt. Wer ein Addin (Zusatzmodul) programmieren will, benötigt neben dem Inventor eine Programmierumgebung wie Visual Studio von Microsoft. Darin kann in verschiedenen Programmiersprachen gearbeitet werden, wie Visual Basic, C# u.a. Diese Art der Programmierung soll uns nicht interessieren. Wir konzentrieren uns auf VBA.
Das Werkzeug
Beim Programmieren ist es wie beim Konstruieren, man braucht zwei Dinge: Das Werkzeug (Zeichenbrett, CAD-Programm) und das Knowhow und zwar einmal in der Anwendung des Werkzeuges (Bedienung des CAD Programms) und das Wissen um das Konstruieren an sich, was beim Programmieren dem verstehen der Programmiersprache entspricht.
Unser Programmierwerkzeug ist der VBA-Editor im Inventor den man unter Extras > VBA-Editor findet. Wir gewöhnen uns aber gleich mal das Tastaturkürzel ALT+F11 an.
So wie Bauteile als IPT gespeichert werden, werden VBA-Programme in einer eigenen Dateiart gespeichert, einer IVB-Datei. Der Inventor lädt beim Start automatisch eine Standard-IVB-Datei, die sich im VBA-Editor links in der Struktur befindet.
Wir wollen zu diesem Zeitpunkt dieses Standard-VBA-Projekt nicht verändern und legen uns deswegen ein neues VBA.Projekt für unsere Übungen an. Dazu im Menü File > Neues Projekt aufrufen. Es wird in der Struktur ein neuer Eintrag Benutzerprojekt1 angelegt. Als nächstes speichern wir dieses Projekt ab mittels File > Save Benutzerprojekt1 (Alternativ Tastaturkürzel Strg+S). Inventor fragt einen Speicherort und Dateinamen für die IVB Datei ab (also nichts anderes als bei einer Inventordatei auch). Ich speichere die Datei auf dem Desktop unter dem Namen Benuzerprojekt1.ivb. Wichtig ist, dass wir diese Datei später wieder finden, also auf den Speicherort achten!
Unser erstes Programm
Wird Zeit, das erste Programm zu schreiben. Dazu klappen wir die Struktur des Benutzerprojekt1 auf und (+ vorne dran, wie bei einer Baugruppe auch) und dann klappen wir den Ordner Modules auf und sehen darin den Eintrag Module
Die eigentliche Programme schreibt man in die Module. Die IVB-Datei kann beliebig viele Module enthalten und diese Module wiederum enthalten den Programmcode. Für uns genügt es im Moment vollkommen, das bestehende Modul zu nutzen. Wir gehen über einen Doppelklick auf Module1 in das Modul hinein, um es zu bearbeiten.
Getippt wird nun in dem großen, weißen Feld rechts. Dort schreiben wir den Programmcode. Jedes Programm hat ein Anfangs- und ein Endtext. Der Anfang bildet ein Sub Eintrag, das Ende wird über ein End Sub abgeschlossen. Die Programmierumgebung ist einigermaßen intelligent und nimmt uns ein bisschen Tipparbeit ab. Wir schreiben sub Hallo und drücken Return und schon ist die Start- und Endangabe fertig. Die Programmierumgebung hat Klammern und das End Sub von selbst ergänzt.
Der eigentliche Programmcode seht nun zwischen dem Sub ... und dem End Sub. Wir wollen das beim Start des Programms ein Dialogbox kommt die uns mit einem flotten Text begrüßt. Wie der Name schon sagt, handelt es sich bei VBA um eine Programmiersprache und wie jede Sprache gibt es Vokabeln und Grammatik, die es zu beherrschen gibt. Wenn also eine Dialogbox mit einem Text kommen soll, könnte die Anweisung lauten: Mach Dialogbox auf mit dem Text Hallo Chefprogrammierer. In VBA heißt das msgbox ("Hallo Chefprogrammierer").
Wir tippen also msgbox und drücken die Leertaste und es erscheint eine Hilfe, was man nun noch alles angeben muss / darf.
Wir sehen, das wir eine ( schreiben sollen und da angeben sollen, was als Text erscheinen soll (Prompt). Wir geben also ein:
msgbox ("Hallo Chefprogrammierer")
Der Meldungstext Hallo Chefprogrammierer muss in Anführungszeichen, weil es ein feststehender Text ist und keine Variable (Platzhalter).
Unser Programm sieht nun so aus:
Nun wollen wir unser Programm starten und schauen, ob es funktioniert. Das macht wir über den grünen Pfeil ob oder indem wir F5 drücken.
Wenn alles korrekt funktioniert dann kommt das Inventorfenster in den Vordergrund und es erscheint eine Meldungsbox mit unserem Text. Mit einem Klick auf OK schließen wir die Box und unser Programm ist damit auch schon fertig und wir kehren zurück in die Programmierumgebung.
Jetzt wollen wir keinen fixen Text anzeigen sondern die aktuelle Versionsnummer des Inventors. Diesen Wert lesen wir aus der Inventorapplikation aus schreiben Sie in eine Variable. Eine Variable ist ein Platzhalter der verschiedene Werte enthalten kann wie Text, Zahlen uvm.
Um eine Variable zu benutzen muss man sie erstmal definieren. Das geht über die Anweisung dim und dem Namen der Variable. Die Variable soll Version heißen. Der Befehl lautet also Dim Version.
Die Variable Version ist definiert, aber noch leer, enthält also keinen Text oder sonst eine Angabe. Nun weisen wir der Variable Version eine Information aus dem Inventor zu. Auf das gesamte Objekt Inventor greifen wir in VBA mit der Anweisung ThisApplication zu. der Begriff ThisApplication "enthält" den gesamten Inventor. Das ist erstmal etwas schwer zu verstehen für uns Neuprogrammierer. Stellen wir uns vor, wir reden anstellen von ThisApplication von IhrAuto. IhrAutio steht für - richtig - ihr Auto. Dieses Auto hat unzählige Eigenschaften und kann duzende von verschiedenen Befehle entgegen nehmen. Nehmen wir an, wir wollten wissen, wieviel PS ihr Auto hat dann könnte der VBA Ausdruck lauten: IhrAuto.Leistung.PS was soviel heißt wie von dem Objekt Auto will ich aus dem Bereich Leistung wissen, wieviel PS die Karre hat. Und ähnlich verhält es sich mit ThisApplication. Wir wollen der Variable Version eine Eigenschaft aus dem Objekt ThisApplication zuweisen.
Einer Variable weißt man einen Wert zu, indem man die Variable gleich dem Wert setzt, also schreiben wie
Version = This UND NUN ACHTUNG! Drücke, nachdem This geschrieben wurde STRG+LEERTASTE und die automatische Begriffsvervollständigung aufzurufen. Es erscheint eine Liste mit Begriffen. Um den obersten, eben ThisApplication, zu wählen, nochmals die Leerstaste drücken. Nun wollen wir aber nicht das ganze Auto äähhh den ganzen Inventor zuweisen sondern nur eine bestimmte Eigenschaft aus dem ganzen Inventorhaufen. Das geht folgendermaßen UND JETZT WIEDER ACHTUNG: den Eingabecursor direkt hinter ThisApplication setzen und einen Punkt schreiben, also ThisApplication. Es erscheint wieder eine Liste mit allen "Funktionen" die wir aufrufen können.
In der Liste SoftwareVersion suchen und einen PUNKT tippen. Es kommt eine weitere Liste mit allein Eigenschaften die sich unter SoftwareVersion verstecken. Wir wählen DisplayName
So muss die Zeile jetzt aussehen: Version = ThisApplication.SoftwareVersion.DisplayName
Nun ersetzen wir den Text in der Msgbox noch durch den Variablennamen Version OHNE ANFÜHRUNGSZEICHEN!! denn wir wollen ja nicht den fixen Text "Version" anzeigen sondern den Inhalt der Variable Version. Wie es aussehen soll, sieht man im Screenshot ob.
Das ganze Programm:
Jetzt starten wir das Programm mit dem grünen Pfeil oben oder - einfacher - durch drücken von F5. Das sollte dabei raus kommen.
Weiter zu Teil 2: Inventor automatisieren: Programmieren für Konstrukteure (Teil 2)
Da hab auch ich immer Interesse ;-)
AntwortenLöschenHabe auch starkes Interesse.
AntwortenLöschenHoffe, das genug Interessierte Dich motivieren den Kurs zu publizieren...
Gruss
Habe grosses Interesse an diesem Artikel, wie auch an allen anderen auf dieser Seite.
AntwortenLöschenHerzlichen Dank an dieser Stelle für deine super Arbeit.
Beste Grüsse
Raphael
Das interessiert mich auch. Aber vielleicht kann man das auch noch über C# erweitern ? Wäre super :)
AntwortenLöschenGruß
Miro
Ne, weil das nichts mit programmieren für Konstrukteure zu tun hat. Wer das wissen will, der kann schon vba :)
LöschenHallo Jürgen,
AntwortenLöschender Aufforderung zum Kommentar komme ich sehr gern nach und den Hinweis das wird der letzte Programmierkurs den ignorier ich einfach. Nach so vielen Jahren Inventor FAQ haben wir schließlich Gewohnheitsrecht ;~}. Mach weiter so! Wir bleiben der Seite treu! Und 2017 knacken wir den Besucherrekord auf dieser Seite.
Gruß Uwe
Hallo Jürgen
AntwortenLöschenEndlich kommt wieder leben ins Haus.
Freu mich das es dir besser geht.
Genau wegen solchen Post im FAQ hab ich den Newsletter aboniert, und das schon einige Jahre.
Ich hoffe schwere das noch einige Teile betreffend vba gepostet werden.
Gibt es eine Literatur die Speziel für Autodesk Produkte ausgelegt ist?
MFG
In der Tat, die gibt es...
LöschenUnd das beste daran ist, dass Inventor die von Haus aus mitliefert :)
Wenn man den Inventor geöffnet hat und ganz oben neben dem minimieren-Knopf schaut,
dann sieht man einen kleinen Drop-Down-Pfeil. Bei einem Klick auf diesen öffnet sich
ein kleines Kontextmenü, dessen erster Eintrag lautet "Hilfe". Dort gibt es einen
Unterpunkt der "Programmierung/API Hilfe" heißt.
Dort ist die gesamte Literatur für die Programmierung mit dem Inventor.
Ist natürlich ein sehr komplexes Thema, weswegen so ein Einstieg wie er hier geboten wird
eine super Sache ist, um überhaupt mal mit dem Thema in Kontakt zu kommen.
Denn die grundlegenden Basics werden in der Hilfe nicht mehr behandelt.
Wenn man sich jedoch ein wenig Basiswissen angeeignet hat ist die Hilfe eine gute
Unterstützung, um sein Wissen auszubauen.
Mit besten Grüßen
Marcel
Hab auch großes Interesse, hast mich abgeholt und neugierig gemacht. Danke für deine Beiträge.
AntwortenLöschenGruß
Michael
Interesse +1
AntwortenLöschenBin auch an solchen Programmierungen interessiert.
AntwortenLöschenGute Besserung.
Hallo,
AntwortenLöschenich lese Deinen Blog auch schon lange und gerade VBA bzw. iLogic interessiert mich sehr. Deshalb bitte weitermachen.
Vielen Dank für Deine bisherige großartige Arbeit.
Alles Gute.
Attila
Hallo Jürgen,
AntwortenLöschenich finde es klasse und freue mich schon jetzt auf deine weitere Ausarbeitung.
Vielen Dank und viele Grüße aus Hessen
Martin