Die Inventor FAQ wird unterstützt von:

Inventor FAQ Logo

10.01.2017

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

Alle Beiträge der Serie

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:

  1. iLogic
  2. VBA
  3. 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.

image

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.

image

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!

image

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

image

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.

image

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.

image

image

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.

image

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:

image

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.

image

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.

image

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.

image

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.

image

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

image

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:

image

Jetzt starten wir das Programm mit dem grünen Pfeil oben oder - einfacher - durch drücken von F5. Das sollte dabei raus kommen.

image

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

13 Kommentare:

  1. Da hab auch ich immer Interesse ;-)

    AntwortenLöschen
  2. Habe auch starkes Interesse.
    Hoffe, das genug Interessierte Dich motivieren den Kurs zu publizieren...
    Gruss

    AntwortenLöschen
  3. Habe grosses Interesse an diesem Artikel, wie auch an allen anderen auf dieser Seite.
    Herzlichen Dank an dieser Stelle für deine super Arbeit.
    Beste Grüsse
    Raphael

    AntwortenLöschen
  4. Das interessiert mich auch. Aber vielleicht kann man das auch noch über C# erweitern ? Wäre super :)
    Gruß
    Miro

    AntwortenLöschen
    Antworten
    1. Ne, weil das nichts mit programmieren für Konstrukteure zu tun hat. Wer das wissen will, der kann schon vba :)

      Löschen
  5. Hallo Jürgen,

    der 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

    AntwortenLöschen
  6. Hallo Jürgen

    Endlich 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

    AntwortenLöschen
    Antworten
    1. In der Tat, die gibt es...
      Und 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

      Löschen
  7. Hab auch großes Interesse, hast mich abgeholt und neugierig gemacht. Danke für deine Beiträge.
    Gruß
    Michael

    AntwortenLöschen
  8. Bin auch an solchen Programmierungen interessiert.
    Gute Besserung.

    AntwortenLöschen
  9. Hallo,

    ich 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

    AntwortenLöschen
  10. Hallo Jürgen,
    ich finde es klasse und freue mich schon jetzt auf deine weitere Ausarbeitung.
    Vielen Dank und viele Grüße aus Hessen
    Martin

    AntwortenLöschen

War der Beitrag hilfreich oder hast du eine Ergänzung dazu?
Ist noch eine Frage offen?
Ich freue mich auf deine Rückmeldung!

Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.

Related Posts Plugin for WordPress, Blogger...
Inventor FAQ Newsletter. Emailadresse: