Teil 17 verpasst? dann hier weiter!
Im letzten Teil wir uns die Baugruppen-Komponenten (Occurrences) angeschaut. Heute soll es um Arbeitselemente und deren Auswahl in Bauteilen gehen.
Im ersten Beispiel machen wir uns ein Programm, das alle Arbeitsebenen einblendet und den Anwender dann eine AE wählen lässt, die dann als einzige sichtbar bleibt. Das ist nützlich, wenn man vor lauter Ebenen die Orientierung verloren hat, aber weiß, welche Ebene man gerade braucht.
Was in diesem Quelltext neu ist, ist der CommandManager, der es uns erlaubt, über die API Inventorbefehle auszuführen. Dieser CommandManager wird genutzt um die Funktion Pick auszuführen, die wiederum Optionen hat z.B. bzgl. der Objekttypen die gewählt werden sollen. Mehr zur Ausführung von Befehlen über den CommandManger findet ihr hier.
Public Sub Arbeitsebene_Sichtbarkeit() 'Errorhandling und prüfen auf korrekte Dateityp (in dem Fall IPT) schenke ich mir hier 'siehe dazu http://inventorfaq.blogspot.de/2017/02/inventor-automatisieren-programmieren_20.html 'Dokumentobjekt Dim oDoc As PartDocument Set oDoc = ThisApplication.ActiveDocument 'Alle Arbeitsebenen (AE) sichtbar machen Dim oWorkPlane As WorkPlane 'Durch alle AE in der IPT gehen und diese sichtbar machen 'damit der Anwender anschließend eine wählen kann For Each oWorkPlane In oDoc.ComponentDefinition.WorkPlanes oWorkPlane.Visible = True Next 'Ein Objekt definieren, das die gewählte Arbeitsebene enthält Dim auswahl As WorkPlane 'Auswahlfunktion aufrufen: Anwender soll von allen jetzt sichtbaren AE eine wählen 'Die Auswahl wird mittels kWorkPlaneFilter auf AE eingeschränkt Set auswahl = ThisApplication.CommandManager.Pick(kWorkPlaneFilter, "Arbeitsebene wählen") 'Alle AE unsichtbar machen, weil ja nur die gewählte AE sichtbar sein soll. For Each oWorkPlane In oDoc.ComponentDefinition.WorkPlanes oWorkPlane.Visible = False Next 'Die gewählte AE sichtbar machen, wenn die Auswahl nicht "Nichts" ist. If Not auswahl Is Nothing Then auswahl.Visible = True End Sub
Arbeitselemente Sichtbarkeit über Form steuern
Dieses ersten Beispiel soll die Grundfunktion von Beispiel 2 verdeutlichen. In diesem Beispiel gibt es ein Form, in dem gewählt werden kann, welche Arbeitselemente (Arbeitsebene, Arbeitsachse, Arbeitspunkt) "behandelt" werden soll. Zudem kann gewählt werden, ob die Elemente sichtbar oder unsichtbar gemacht werden sollen. Zudem gibt es eine Option mittels der wir nur ein bestimmtes Arbeitselemente sichtbar gemacht werden soll und alle anderen unsichtbar.
Weil der Quelltext nur funktioniert, wenn ihr die Elemente des Forms exakt so benennt wie ich, und mir das zu erklären echt zu viel Arbeit ist, hier der Download für das Form inkl. Quelltext. Dann haben wir mal den gleichen Stand ;)
ZIP herunterladen und die 2 Dateien in ein Verzeichnis entpacken, im VBA-Editor RMT auf Forms > Datei importieren und die frm-Datei wählen.
Forms haben wir bereits mehrfach besprochen in Teil 13 und 14. Was in diesem Form neu ist, sind die Rahmen/Frames, die um die Checkboxen oben (Arbeitslementtyp) und die Optionsbuttons (Sichtbarkeit Arbeitselemente) gezeichnet wurden. Zudem ist als neues Objekt die Optionsbuttons (sichtbar / Unsichtbar) enthalten.
Rahmen helfen zusammengehörige Elemente in einem Form zu strukturieren. Im Fall der Optionsfelder hat er aber noch eine Funktion: Es soll ja nur entweder die Option sichtbar oder unsichtbar gewählt werden können (und nicht beide gleichzeigt). Befinden sich Optionsfelder in einem Rahmen, dann kann immer nur eine Option gewählt werden.
Sonst sind ein paar Checkboxen und 2 Buttons enthalten. Wie immer bei Formelemente habe alle Elemente gleichen Typs einen Präfix. chk für Checkboxen, op für die Optionsfelder und cmb für ComandButtons.
Mehr will ich gar nicht erklären. Der Rest steht im Quelltext:
'Wird beim Klick auf OK ausgeführt Public Sub AE_Sichtbarkeit() 'Variable wfBoolean auf Falsch setzen wfBoolean = False 'Ist das Optionsfeld Sichtbar angehackt, dann auf True setzen '(Anderenfalls bleibt sie eben false) If opSichtbar.Value = True Then wfBoolean = True 'Wie immer, kennen wir schon Dim oDoc As Inventor.Document Set oDoc = ThisApplication.ActiveDocument 'Durch alle Arbeitsebenen der IPT gehen 'Wenn der Haken bei Checkbox Arbeitsbene gesetzt ist 'die Sichrbarkeit auf True/False setzen, je nach dem 'Welchen Wert die Variable wfBoolean hat For Each oWorkPlane In oDoc.ComponentDefinition.WorkPlanes If chkAE.Value = True Then oWorkPlane.Visible = wfBoolean Next 'Das gleiche für Arbeitsachen For Each oWorkAxis In oDoc.ComponentDefinition.WorkAxes If chkAA.Value = True Then oWorkAxis.Visible = wfBoolean Next 'Das gleiche für Arbeitspunkte For Each oWorkPoint In oDoc.ComponentDefinition.WorkPoints If chkAP.Value = True Then oWorkPoint.Visible = wfBoolean Next 'Wenn der Haken bei der Checkbox "Arbeitselement wählen und Rest unsichtbar" 'gesetzt ist und der Haken bei Checkbox Arbeitsebene gesetzt ist 'dann kommt ein Auswahlfilter bei dem die AE gewählt werden kann 'die Sichtbar bleiben soll. Der Rest wird unsichtbar gesetzt If chkWaehlen.Value = True And chkAE.Value = True Then 'ss steht für SelectionSet, das wir uns da klar verstehen! (Alerta, Alerta, Antifascista) Dim ss As WorkPlane Set ss = ThisApplication.CommandManager.Pick(kWorkPlaneFilter, "Arbeitsebene wählen") For Each oWorkPlane In oDoc.ComponentDefinition.WorkPlanes If chkAE.Value = True Then oWorkPlane.Visible = False Next If Not ss Is Nothing Then ss.Visible = True End If 'Das Gleiche für Arbeitsachsen If chkWaehlen.Value = True And chkAA.Value = True Then Dim ss1 As WorkAxis Set ss1 = ThisApplication.CommandManager.Pick(kWorkAxisFilter, "Arbeitsachse wählen") For Each oWorkAxis In oDoc.ComponentDefinition.WorkAxes If chkAA.Value = True Then oWorkAxis.Visible = False Next If Not ss1 Is Nothing Then ss1.Visible = True End If 'Das Gleiche für Arbeitspunkte If chkWaehlen.Value = True And chkAP.Value = True Then Dim ss2 As WorkPoint Set ss2 = ThisApplication.CommandManager.Pick(kWorkPointFilter, "Arbeitspunkt wählen") For Each oWorkPoint In oDoc.ComponentDefinition.WorkPoints If chkAP.Value = True Then oWorkPoint.Visible = False Next If Not ss2 Is Nothing Then ss2.Visible = True End If 'Formular schließen Unload Me End Sub 'Wird ausgeführt, wenn der Haken unten bei 'der Checkbox "Arbeitselement wählen und Rest unsichtbar" 'geklickt wird. Private Sub chkWaehlen_Click() 'da die Funktion "Arbeitselement wählen und Rest unsichtbar" nur Sinn 'ergibt, wenn nicht gleich alle Arbeitselement UNsichtbar sind, 'Wird das Optionsfeld Sichtbar aktiviert! If chkWaehlen.Value = True Then opSichtbar.Value = True End If End Sub Private Sub cmbAbbrechen_Click() 'Form schließen Unload Me End Sub Private Sub cmbOK_Click() 'Button OK geklickt. Also los geht's! Call AE_Sichtbarkeit End Sub
Das war's für heute. Ich hoffe, ihr könnt mit dem Beispiel was anfangen!
Keine Kommentare:
Kommentar veröffentlichen
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.