Die Inventor FAQ wird unterstützt von:

Inventor FAQ Logo

03.04.2017

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

Teil 12 verpasst? Dann hier weiter!

Alle Beiträge der Serie

Im 12. Teil gab es etwas Theorie über die IVB-Datei, den Aufruf anderer Prozeduren und Verweise.

Heute schauen wir uns zum ersten Mal Dialoge an. Wir bauen uns ein Fenster ;) Los geht's wir immer mit dem Laden der IVB-Datei (falls die nicht schon automatisch geladen wird) und dem Wechsel in den VBA-Editor.

Jetzt legen wir ein neues Formular an mittels RMT auf unser VBA-Projekt > Einfügen > UserForm

image

Diese Aktion erstellt ein leeres Fenster und zeigt passend dazu das Fenster "Werkzeugsammlung" an. Solltet ihr dieses Fenster aus versehen schließen (über das X) dann könnt ihr es über Ansicht > Werkzeugsammlung wieder einblenden.

image

Wenn ihr oben im Ordner "Formulare" den Eintrag UserForm1 auswählt, bekommt ihr unten im Eigenschaftenfenster die verschiedenen Eigenschaften dieses gewählten Objekts angezeigt. Zuerst ändern wir den Namen des Forms auf frmUebung1. Warum der Präfix frm? aus dem gleichen Grund, mit dem man vor Objekte ein o macht (oder eben auch nicht). Über die Eigenschaft Name sprechen wir das Fenster an (rufen es z.B. auf).

Den Text in der Titelzeile des Forms ändern wir mittels der Eigenschaft Caption. Ändere die auf Übung 1.

image

Wir wollen unserem Fenster einen Button hinzufügen. Dazu einfach aus der Werkzeugsammlung die Befehlszeilenschaltfläche in die gewünschte Position im Form ziehen.

image

Den Namen ändern wir auf btnEnde (btn steht für Button und wird als Vorsilbe für alle Schaltflächen verwendet.) Als Text auf dem Knopf (=Caption) soll Beenden stehen.

image

Jetzt haben wir eine Schaltfläche, nur weiß unser Form nicht, was er machen soll, wenn wir den Knopf drücken. Wir müssen also einen Programmcode hinterlegen, der ausgeführt wird, wenn der Knopf gedrückt wird. Das machen wir über einen Doppelklick oder alternativ durch markieren des Element > RMT > Code anzeigen.

image

Das VBA-Codefenster öffnet sich und legt eine Private Sub mit Namen <Elementname>_<Aktion> an. den Elementname findet ihr auch oben im Browser und rechts davon die Aktionen (Events), die mit diesem Element möglich sind, z.B. kann man auch eine Aktion ausführen, wenn jemand den Button doppelklickt.

image

In dieser private Sub fügen wir den Code ein, der beim Klick auf den Button ausgeführt werden soll. In diesem Fall soll das Form geschlossen werden. Das geht mittels Unload Me. Hinter Unload kommt der Name des Objekts, das Entladen werden soll. Da das Formular sich selbst entladen soll einfach Me.

image

Wir gehen zurück zum Form indem wir es im Browser links doppelklicken und machen einen Testlauf indem wir im VBA-Editor das Form-Fenster markieren und F5 (oder den grünen Pfeil oben) drücken.

image

Das Form erscheint im Inventor und wird durch einen Klick auf Beenden wieder geschlossen. Hammer, oder? ;)

Wir fügen nun ein Textfeld hinzu…

image

Dann ein Label darunter…

image

Den Name des Textfeldes oben ändern wir in txtText1 den Namen des Labels auf lblAusgabe1.

image

Die Caption des Labels löschen wir, das dort nicht vorgabemäßig "Label1" steht.

Wir ergänzen einen weiteren Button unten neben dem Beenden-Knopf mit Name btnLos und Caption Los!. Sollte der Dialog "Werkzeugsammlung" weg sein, klickt zuerst mal in das Formular, dann kommt er wieder. Falls nicht: Ansicht > Werkzeugsammlung.

Dann ziehen wir die Textbox und das Label über die Griffe breiter und der Entwurf unseres Dialogs ist fertig.

image ==> image

Was nun passieren soll:

  1. Beim Klick auf Los soll der Text aus dem Textfeld in das Label geschrieben werden.
  2. Ist das Textfeld leer, soll eine Meldung kommen.

Wir bearbeiten den Code des btnLos durch Doppelklick. Zuerst kommt die Abfrage, ob den überhaupt Text in der Textbox steht. Wenn nicht soll eine Messagebox kommen und die Sub soll verlassen werden. Den daran, das ihr mittels ALT+Leertaste eine Eingabe vervollständigen könnt. Ihr schreibt also If txt und drückt dann ALT+Leertaste und ihr bekommt alle Textboxen angezeigt (wenn es mehrere gibt) oder es wir direkt der Name vervollständigt. Jetzt ist auch klar warum alle Textboxen mit txt anfagen, oder? So habt ihr schnell Zugriff auf alle Textfelder (oder andere Elemente wie lbl für Label usw.).

Wie im Eigenschaftenfenster kann auch im Code auf alle Eigenschaften eines Form-Elements zugegriffen werden. Wir können also zu Laufzeit des Programms den Text im Textfeld auslesen und ändern oder die Caption eines Buttons usw. So sieht der Code aus:

Private Sub btnLos_Click()
    If txtText1.Text = "" Then
        MsgBox ("Wert leer")
        Exit Sub
    End If
End Sub

Damit prüfen wir, ob der Text im Textfeld leer ist und wenn ja, dann kommt eine Meldung und die Sub wird verlassen. Start das Programm und klicke auf los. Das sollte das Ergebnis sein.

image

Wenn etwas im Textfeld steht soll der Text in das Label geschrieben werden. Schließe die Meldung und das Form und gehen wieder zum Code von btnLos. Wir müssen nur noch eine Zeile Code ergänzen, und schon steht unsere Form-Funktionalität.

Private Sub btnLos_Click()
'Wenn Textfeld leer Meldung und Ende
    If txtText1.Text = "" Then
        MsgBox ("Wert leer")
        Exit Sub
    End If
    
    'Text in Label schreiben
    lblAusgabe1.Caption = txtText1.Text
End Sub

Wir starten wieder unser Programm, schreiben was in das Textfeld und drücken auf den Button los.

image

Super Programm, oder?

Jetzt machen wir uns ein Programm (einen Makro), der das Form lädt. Diesen Makro könnten wir wie in Teil 12 beschrieben in die Inventoroberfläche einbinden und so den Dialog öffnen. Legen also in deinem Module1 eine Public Sub Namens frmUebung1_anzeigen anlegen (der Name ist eigentlich egal, aber so sieht man gleich, wozu dieses Programm gehört) und dort frm schreiben und ALT+Leertaste drücken und frmUebung1 aus der Liste wählen.

image

Hinter frmUebung1 machen wir einen Punkt und bekommen wieder alle Eigenschaften und Methoden des Objekts angezeigt u.a. Show um dieses Form anzuzeigen.

Public Sub frmUebung1_anzeigen()
 frmUebung1.Show
End Sub

So ein Dialog kann Modal sein, oder Modeless. Standardmäßig ist ein Form modal, d.h. solange das Fenster auf ist, kannst du in der Anwendung, die das Fenster aufgerufen hat (also dem Inventor) nichts anklicken. Schreibst du hinter Show ein False (Modal = Nein) dann kannst du bei geöffneten Dialog normal im Inventorfenster klicken.

Public Sub frmUebung1_anzeigen()
 frmUebung1.Show False
End Sub

Starte das Programm und das Form öffnet sich und stellst uns seine Funktion zur Verfügung.

Das war's für heute. Da ich wissen will, wer denn überhaupt noch diese Anleitungen liest (und ob es sich lohnt, weitere zu machen) möchte ich dich bitte, auf diesen Link zu klicken, sozusagen als Feedback "Ich bin noch dabei!" – Danke!

Beim nächsten Mal machen wir mittels Dialog ein Form, das du im Alltag brauchen kannst!

Weiter zu Teil 14!

Kommentare:

  1. Perfekt, es tun sich immer mehr Türen auf. Danke fürs verständliche erklären.

    AntwortenLöschen
  2. Ich freue mich jede Woche wieder auf einen neuen Teil dieser Serie.
    Vielen Dank

    AntwortenLöschen
  3. Auch ich bin jede Woche mit von der Partie.
    Danke Jürgen

    AntwortenLöschen
  4. Sebastian Nentwig4. April 2017 um 07:10

    Von mir auch ein riesiges Dankeschön für die tollen Infos. Seitdem ich die Serie lese, kommen mir immer wieder neue Ideen, wie ich mir und meinen Kollegen den Alltag mit Inventor vereinfachen und effektiver nutzen kann. Folgende kleine Tools hab ich mittlerweile schon erfolgreich im Einsatz: Drucken von kompletten Baugruppenzeichnung inklusive Einzelteilzeichnungen aus einer geöffneten Baugruppe auf dem für das Blattformat vordefinierten Drucker; Drucken aller Blätter einer Zeichnung auf dem für das Blattformat vordefinierten Drucker; Blattformate in einer Zeichnung mit benutzerdefinierten Rahmen und Schriftfeldern ändern, so dass man nicht erst mühselig den Rahmen und das Schriftfeld löschen und wieder einfügen muss und eine automatische Umbenennung der Blattnamen einer Zeichnung nach der Bauteilnummer des Modells in der Erstansicht. Vielleicht haben andere Leser auch noch gute Ideen.

    MfG Sebastian Nentwig

    AntwortenLöschen
  5. Danke für euer Feedback. Bisher haben 27 (genauer 25 wegen meinen 2 Probeklicks :) ) den Link angeklickt. D.h. es geht weiter. Wenn diese 25 etwas davon haben (danke auch Sebastian für dein Feedback) dann hat sich die Arbeit schon gelohnt!

    AntwortenLöschen
  6. Danke, ich bleib hier auch am Ball!!!

    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!

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