Um Dateien im aktuellen Arbeitsbereich zu finden, kann die Toolbox helfen. Zum einen gibt es im Kontextmenü des Werkzeugkasten ein Suchfeld…
28.04.2017
26.04.2017
Masse einer Unterbaugruppe in der Zeichnung anzeigen
Notizen in Inventormodellen finden und ändern
Im Inventor kann man Notizen zu Modellen anhängen. Dazu die Komponente markieren, zu der eine Notiz erstellt werden soll, dann Rechtsklicken und Notiz erstellen aus dem Kontextmenü wählen.
VBA Code in iLogic Code "umwandeln"
VBA und iLogic sind recht ähnlich und können recht einfach vom einem zum anderen geändert werden.
Aus Public Sub <Name> machen wir Sub Main
Wenn wir einen VBA-Code in den iLogic-Editor kopieren und ausführen, kommt diese Meldung:
Das Hauptprogramm muss Sub Main heißen. Ich muss also in meinem Beispiel Public Sub BOMExport() in Sub Main ändern. Evtl. vorhandene Untersubs und Funktionen kommen danach.
Let / Set muss weg
iLogic benötigt mein Let und Set. Weg bekommen wir das einfach mittels Suchen/Ersetzen. Einfach alle Set durch einen Leerstring ersetzen.
Argumente müssen in Klammern stehen
Im Beispiel unten bedeutet das, das aus Mkdir Path werden muss: mkdir (path)
Das Beispiel 3 (Stückliste exportieren) als VBA-Code hier mal umgewandelt in iLogic-Code. Es geht wirklich relativ schnell, wenn man sich die Fehlermeldungen anschaut und die drei Dinge korrigiert, die ich beschrieben habe.
iLogic-Beispielcode Export Stückliste der IAM
Sub Main 'Var. für den Exportpfad definieren Dim Path As String Path = Environ("TEMP") 'Baugruppeobjekt Dim oDoc As AssemblyDocument oDoc = ThisApplication.ActiveEditDocument 'Displayname abzüglih letzte 4 Stellen (i.d.R. .iam) auslesen Dim AsmName As String AsmName = Left(oDoc.DisplayName, Len(oDoc.DisplayName) - 4) 'Zusammensetzden des Pfades & Dateiname aus den beiden Variablen Dim Filename As String Filename = Path & "\" & AsmName 'Bauerntrick: Bei Fehler mit dem nächsten Schritt weitermachen 'd.h. wenn Mkdir einen Fehler verursacht (weil das Verzeichnis schon existiert) 'geht es einfach weiter. So spart man sich die Prüfung ob das Verz. existiert vor der Erstellung On Error Resume Next MkDir (Path) 'On Error Resume Mext wieder auschalten On Error Goto 0 'Vereis auf das Stücklistenobjekt in der Baugruppe Dim oBOM As BOM oBOM = oDoc.ComponentDefinition.BOM ' In der Stcklilstenansicht Strukturiert auf Alle Ebenen umschalten oBOM.StructuredViewFirstLevelOnly = False ' Strukturierte Ansicht aktivieren sonst kann sie nicht exportiert werden oBOM.StructuredViewEnabled = True 'Stücklistenansichtobjekt erstellen und auf das Item Namens "Struktiriert" setzen Dim oStructuredBOMView As BOMView oStructuredBOMView = oBOM.BOMViews.Item("Strukturiert") 'Export der Stücklistenansicht unter dem Filename plus Zusatz Stückluste Strukturiert oStructuredBOMView.Export (Filename & " Stückliste Strukturiert.xls", kMicrosoftExcelFormat) 'Ansicht nur Bauteile aktivieren oBOM.PartsOnlyViewEnabled = True 'Verweis auf das Objekt BOMView "nur Bauteile" Dim oPartsOnlyBOMView As BOMView oPartsOnlyBOMView = oBOM.BOMViews.Item("nur Bauteile") 'Export der Stücklistenansicht unter dem Filename plus Zusatz Stückluste Strukturiert oPartsOnlyBOMView.Export (Filename & " Stückliste Nur Bauteile.xls", kMicrosoftExcelFormat) End Sub
iLogic kann übrigens (da sehr verwandt zu vb.net) auch Try...Catch. Siehe dazu auch diesen Beitrag.
Systemanforderungen Inventor 2018
Hier gibt es die Systemanforderungen für Inventor 2018. Interessant sind für mich die empfohlenen 20GB Arbeitsspeicher. Das ist schon eine Hausnummer und bei großen Modellen gar 24GB.
24.04.2017
Inventor automatisieren: Programmieren für Konstrukteure (Teil 16)
Teil 15 verpasst? Dann hier weiter!
Im letzten Teil der Serie haben wir uns die Transcriptfunktion im Inventor angeschaut. Heute schauen wir uns eine paar kleiner Codebeispiele an, die verschiedene Aufgaben automatisieren können. Ich habe mich entschieden, die Erklärungen, soweit sie noch notwendig für das Verständnis sind (wir sind ja schon fast Programmierprofis :) ) direkt in den Quelltext zu schreiben.
Alle fehlerhaften Abhängigkeiten löschen
Im ersten Beispiel löschen wir alle fehlerhaften Baugruppen-Abhängigkeiten. Schauen wir uns zuerst mittels unseres Info_Tools eine IAM an. Dort sehen wir die Abhängigkeiten in <IAM-Objekt>.ComponentDefinition.Constraints. Jede Abhängigkeit ist ein Item, durch das wir gehen können wie wir es bereits bei anderen Objekten gemacht haben.
19.04.2017
Autodesk Answer Day: Stellt eure Fragen zu Inventor, Fusion, Vault direkt an Autodesk und die Profis in den Autodesk Foren
Am Mittwoch, den 24. Mai 2017 von 10:00-17:00 Uhr findet wieder der Autodesk Answer Day statt. Gefragt werden kann auf deutsch, englisch und japanisch.
Die Produktpalette des deutschsprachigen Autodesk Answer Day ist diesmal riesig und betrifft AutoCAD, Inventor, Fusion 360, EAGLE, und Vault. Hier könnt ihr am Answer Day selber in den jeweiligen deutschsprachigen Foren teilnehmen. Die Vault Fragen, finden ihren Platz im Forum für Inventor. Wenn hier eine entsprechende Resonanz vorhanden ist, gibt es vielleicht bald ein eigenes Vault Forum. ;)
- Kalendereintrag erstellen (damit ihr den Termin nicht verpasst :) )
- Weitere Infos
18.04.2017
Inventor automatisieren: Programmieren für Konstrukteure (Teil 15)
Teil 14 verpasst? Dann erstmal hier weiter!
In Teil 14 habe wir uns eine Dialogbox gebaut über die man verschiedene Bauteilfeature unterdrücken konnte. Heute schauen wir uns den "Makrorekorder" im Inventor an, die sog. Transcript Funktion. Wobei es nicht direkt ein Makrorekoder wie z.B. in Word ist, der VBA-Code ausgibt, sondern was bei der Transcript-Funktion rauskommt ist, ein Code, der nur ähnlich VBA ist. Zudem wird die Funktion, die wir besprechen, seit Inventor 5 offizielle nicht mehr unterstützt.
12.04.2017
Inventor 2017 Update 4 verfügbar
Gerade eben habe ich von der Autdesk Desktop App die Meldung bekommen, das Inventor 2017.4 verfügbar ist.
Auszug aus der Readme-Datei:
11.04.2017
Alle Blechabwicklungen in einer Baugruppe als DXF exportieren (VBA)
Wer die Toolbox hat, hat diese Möglichkeit bereits standardmäßig.
Für alle anderen hier ein VBA-Beispiel.
Sub IAM_Blechabw() Dim oAsmDoc As Inventor.AssemblyDocument Set oAsmDoc = ThisApplication.ActiveEditDocument ' Get all of the referenced documents from an assembly Dim oRefDocs As DocumentsEnumerator Set oRefDocs = oAsmDoc.AllReferencedDocuments ' Iterate through the list of documents. Dim oRefDoc As Document Dim oSheetMetalCompDef As SheetMetalComponentDefinition Dim oFlatPattern As FlatPattern For Each oRefDoc In oRefDocs If oRefDoc.SubType = "{9C464203-9BAE-11D3-8BAD-0060B0CE6BB4}" Then Set oFlatPattern = oRefDoc.ComponentDefinition.FlatPattern Set oSheetMetalCompDef = oRefDoc.ComponentDefinition If oSheetMetalCompDef.HasFlatPattern = False Then oSheetMetalCompDef.Unfold 'oRefDoc.Save End If 'Pfad ggf. anpassen! pfad = Environ("HOMEPATH") & "\Abwicklungen" On Error Resume Next MkDir Environ("HOMEPATH") MkDir pfad On Error GoTo 0 dxfFileName = pfad + "\" & Left(oRefDoc.DisplayName, Len(oRefDoc.DisplayName) - 4) & " Abwicklung.dxf" Dim oDataIO As DataIO Set oDataIO = oRefDoc.ComponentDefinition.DataIO Dim sOut As String sOut = "FLAT PATTERN DXF?AcadVersion=R12&OuterProfileLayer=CUT&InteriorProfilesLayer=CUT&SplineTolerance Double 0.01 &InvisibleLayers=IV_TANGENT;IV_BEND" oDataIO.WriteDataToFile sOut, dxfFileName oRefDoc.Close (True) End If Next End Sub
10.04.2017
Inventor automatisieren: Programmieren für Konstrukteure (Teil 14)
Teil 13 verpasst? Dann erstmal hier weiter!
Im Teil 13 haben wir unser erstes Form gebaut, dass nicht wirklich sinnvoll war. Heute bauen wir uns eine nützliche Anwendung, die in Bauteilen Feature unterdrücken kann.
Wir bauen uns einen Dialog, in dem der Anwender wählen kann,welche Elemente er im Bauteil unterdrücken will bzw. bei welchen er die Unterdrückung aufheben will. Zuerst wieder das passende VBA-Projekt laden und dann ein neues Form erstellen.
Der Name soll frmUnterdruecken sein. Die Caption = Unterdrücken.
Jetzt fügen wir folgende Elemente hinzu:
3 Checkboxen, 1 Label und 2 Buttons.
Wenn wir die Elemente durch Drag&Drop hinzugefügt und ausgerichtet haben, können wir die Beschriftung (den Text) und den Elementname ändern. WICHTIG: Benennt die Elemente gleich wie ich, sonst musst ihr im Programmcode immer umdenken!
- Der Name der ersten Checkbox soll chbRadien sein (chb steht für CHeckBox), Caption = Radien und der Value = True, also vorgabemäßig soll der Haken gesetzt sein.
- Die Checkbox darunter chbFasen, Caption = Fasen und die letzte Checkbox Name = chbBohrung, Caption = Bohrungen, Value = False.
- Die beiden Buttons heißen btnUnterdruecken bzw. btnNichtUnterdruecken die Caption (Buttontext) seht ihr ja auch oben im Bild.
- Das Label unten Name = lblAnzahl (lbl = Label) und die Caption = Anzahl Objekte:
Die gewünschte Funktion ist, denke ich, klar: Der Anwender kann anhaken, welche Elemente im Bauteil er unterdrücken will (oder die Unterdrückung aufheben) und die eigentliche Funktion wird über den Klick auf eine der Buttons ausgeführt. Im Label unten wird einfach angezeigt, wie viele Elemente unterdrückt wurden.
Wir nutzen neben dem Form auch im Programmcode drei neue Konzepte:
- "globale" Variablen
- den Aufruf von "Unterprogrammen" inkl. Übergabe von Parametern
- Durch alle Elemente einer IPT gehen
"globale" Variablen
Bisher haben wir Variablen immer innerhalb eines Subs definiert. Das bedeutet aber auch, dass diese Variable nur innerhalb dieses Subs gültig ist (man darauf zugreifen kann) und nach dem verlassen des Subs ist die Variable wieder leer. Wenn wir auf Variablen in allen Programmen innerhalb eines Modul (oder in unserem Fall Forms) zugreifen wollen, definieren wir die Variable oberhalb der ersten Sub.
den Aufruf von "Unterprogrammen" inkl. Übergabe von Parametern
Die zweite neue Sache ist eigentlich gar nicht so neu. Wir haben uns Teil 12 bereits angesehen, wie aus einem Sub ein anderes Sub aufruft, nämlich mittels Call <Subname>
Was hier jetzt neu ist, dass wir nicht nur die Sub aufrufen, sondern dazu noch "Werte" an die aufzurufende Sub übergeben. Hier ein Beispielcode zur Verdeutlichung:
In dem Modul gibt es 2 Subs. RuftAuf ruft mittels Call die Sub Rechnen auf, und übergibt der Sub Rechnen 2 Werte nämlich Wert1 und Wert2 im Variablenformat Integer, also Ganzzahl (Übersicht Datentypen VBA).
In der Definition von Rechnen wird jetzt eben nicht nur () dahinter geschrieben wie bisher sondern wir geben an, welche Werte an diese Sub übergeben werden sollen. Dann rechnet die Sub die beiden Werte zusammen und gibt das Ergebnis in einer Msgbox aus.
Stellt sich die Frage, warum man sowas machen soll? Ich könnte dich auch in der Sub RuftAuf direkt rechnen, oder?! Ja, aber stellen wir uns vor, das wir an verschiedenen Stellen im programmcode immer wieder 2 Werte addiere und das Ergebnis als Msgbox ausgeben wollen. Wenn wir das 10 mal machen wollten, müssten wir im Hauptprogramm 10 mal die Berechnung machen. Wenn wir diese Aufgabe in ein Extra-Sub auslagern, müssen wir den Code nur einmal eingeben und können in aufrufen, sooft wir wollen!
Durch alle Elemente einer IPT gehen
Um, je nach angehaken Checkboxen, etwas zu unterdrücken in einem Bauteil müssen wir durch die Baumstruktur gehen und schauen ob ein Element dem Typ des angehakten entspricht und dann entsprechend bei Übereinstimmung unterdrücken bzw. die Unterdrückung aufheben.
Eine erste Maßnahme wäre, mittels unseres Objektuntersuchungsprogramms ein Bauteildokument zu untersuchen. Wir werden feststellen, das sich die Bauteilfeature unter Componentdefinition > Features versteckt. Wir brauchen also wieder eine For Each Schleife mittels der wir uns durch alle Features hangeln.
Hier ein Beispielcode, der die Namen der Feature nacheinander im Ausgabefenster anzeigt.
Private Sub Bauteilbaum() 'Objekt für Dokument anlegen (machen wir schon aus dem FF) Dim Doc As PartDocument Set Doc = ThisApplication.ActiveEditDocument 'Objekt für die ComponentDefinition anlegen (darin sind alle Feature 'des Bauteiles enthalten) Dim odef As ComponentDefinition Set odef = Doc.ComponentDefinition 'Jetzt kommt die For-Each Schleife, mittels derer wir durch alle Feature gehen 'und in dem Beispiel unten im Immediate-Fenster die Browsernamen ausgeben Dim oEachF As PartFeature For Each oEachF In odef.Features Debug.Print oEachF.Name Next End Sub
Jetzt sollten die grundlegenden Neuerungen in unserem Code klar sein und wir können uns daran machen, dem Form mittels Programmcode leben einzuhauchen. Hier ist das Kernstück unseres Form, das für die Elementunterdrückung zuständig ist.
Den Buttons müssen wir jeweils hinterlegen, das sie den Programmcode oben ausführen, falls die Checkbox angehakt ist. In der If-Abfrage steht jeweils der Name des jeweiligen Checkboxelements dann die Eigenschaft, die wir mittels If vergleichen wollen (Value, die entweder True (Haken gesetzt) oder False ist (kein Haken))
Um euch Tipparbeit zu ersparen, geht mittels RMT auf das Form > View Code in das Form-Codefenster und fügt dann den Code unten ein.
Dim Zaehler As Integer Private Sub btnNichtUnterdruecken_Click() Zaehler = 0 If ChbFasen.Value = True Then Call Unterdruecken(kChamferFeatureObject, False) If ChbRadien.Value = True Then Call Unterdruecken(kFilletFeatureObject, False) If chbBohrung.Value = True Then Call Unterdruecken(kHoleFeatureObject, False) End Sub Private Sub btnUnterdruecken_Click() Zaehler = 0 If ChbFasen.Value = True Then Call Unterdruecken(kChamferFeatureObject, True) If ChbRadien.Value = True Then Call Unterdruecken(kFilletFeatureObject, True) If chbBohrung.Value = True Then Call Unterdruecken(kHoleFeatureObject, True) End Sub Private Sub Unterdruecken(Elementart As ObjectTypeEnum, Zustand As Boolean) 'Diese Sub führt die unterdrückung / Unterdrückung aufheben aus 'Übergeben werden, Die Elementart (Radien, Fasen, Bohrungen), mit denen was passieren soll 'Und eine Boolsche Variable (True/false) die angibt, was passieren soll 'mit dem Element. True = unterdrücken, False = Unterdr. aufheben 'Diese Zeile ist klar, oder? 'Richtig, Inventor soll keine Meldungen bringen während der Ausführung ThisApplication.SilentOperation = True 'Auch klar Dim Doc As PartDocument Set Doc = ThisApplication.ActiveEditDocument 'Die Componentdefinition, die alle Feature enthält Dim odef As ComponentDefinition Set odef = Doc.ComponentDefinition 'Schleife, mittels der wir uns durch alle Feature hangeln Dim oEachF As PartFeature 'Tritt während des Durchlafens ein Fehler bei einem 'Element auf, soll er zum Schleifenende gehen und 'damit mit dem nächsten Element weiter machen On Error GoTo naechstes For Each oEachF In odef.Features If oEachF.Type = Elementart Then Zaehler = Zaehler + 1 'Darüber wird je nach übergebener Variable das aktulle Element 'unterdrückt oder akriviert oEachF.Suppressed = Zustand 'Der Text des Labels wir angepasst lblAnzahl.Caption = "Anzahl Objekte: " & Zaehler End If naechstes: Next ThisApplication.SilentOperation = False 'Dokument aktualisieren, damit man die Änderungen an den 'Featuren auch sieht. Doc.Update End Sub
Wenn ihr jetzt mittels F5 den Code ausführt, kommt der Dialog und dann könnt ihr Feature unterdrücken oder aktvieren, Hammer oder?! ;)
Da es kein Abbrechenknopf gibt, wird das Fenster mittels dem X-Knopf rechts oben geschlossen.
Viel programmieren musste ihr ja bisher nicht. Bitte schaut euch den Programmcode genau an und versucht ihn zu verstehen. Wer bisher alle Teile mitgemacht hat, sollte damit kein Problem haben. Eine Sache noch: Dieser Elementtyp (kChamferFeatureObject u.a.), der an die Sub Unterdruecken übergeben wird, wie kommt man da drauf in aller Welt? Denk an unsere untersuchungsprogramm und schaut euch die Dinge im Fenster genau an!
Wer will kann ja neben den 3 Elementen noch ein viertes Element in dem Dialog ergänzen und den Code anpassen. Weitere Feature, die ihr ebenfalls ergänzen könnt findet ihr unter ComponentDefinition > Features mehr als genug. Zudem könnten die Box noch ein Abbrechenknopf vertragen.
Viel Spass!
PS: Wie wir ein Form mittels eines VBA-Programms aufrufen, haben wir ja bereits in Teil 13 besprochen.
07.04.2017
Windows Tool: Zwischenablage im Turbomodus
Eben bin ich auf ein Tool gestoßen, das die Zwischenablage um wichtige Funktionen erweitert, den ClipboardMASTER.
Mit dem kostenlosen Programm Clipboard Master können Sie nicht nur Texte sondern auch Bilder, Dateien und Ordner kopieren, einfügen, sammeln, organisieren und ablegen. Das funktioniert in allen Windows-Programmen.
Anschauen lohnt sich!
Übersicht über die Funktionen | https://www.clipboardmaster.de/
Stückliste mit Vorschaubilder erstellen
Hier gibt es sowohl ein Addin als auch ein VBA-Code, mittels diesem sich Stücklisten aus Teilelisten in Zeichnungen generieren lassen. Das ganze wird über Word realisiert.
06.04.2017
Die beliebtesten Beiträge im März 2017
- Inventor Normteile / Inhaltscenter: Die Basics
- Die wichtigsten Tipps und Tricks für erfahrene Anwender
- Schriftfeld bearbeiten: ein paar grundlegende Tipps
- Baugruppe: Beim Austausch einer Komponente bleibt der Name im Browser unverändert
- Inventor 2018: Kleine Übersicht der Neuerungen auf Deutsch
- Die gesamte alte Inventor FAQ als Ebook
- Erste Inventor 2018 What's New Videos und Infos
- Die 2018 Programmversionen stehen in den Startlöchern: Neu in Vault 2018
- Autodesk Email: Maintenance to Subscription (M2S) - Wechsel vom Wartungsvertrag zum Abo. Was muss ich machen?
Themensammlungen
Update 06.04.2017
Die wichtigsten Beiträge nach Stichwörtern sortiert anzeigen
Liste aller Artikel
Um ein bisschen zu stöbern bietet sich die Übersicht über alle Artikel an. Dort findest du alle Artikel nach Datum sortiert, die ich in den letzten Jahren erstellt habe. Du kannst die Sortierung auch anpassen.
Eine Übersicht über alle Themensammlungen in der Inventor FAQ
Die wichtigsten Tipps und Tricks für Einsteiger
Die Inventor FAQ umfasst über 1000 Beiträge und damit eine Menge Tipps und Tricks für Anfänger, Fortgeschrittene und Profis und über das Suchfeld oben lässt sich auch die meiste Fragen klären. Aber gerade Einsteiger haben das Problem, dass sie oft nicht wissen, nach was sie suchen sollen und was für den Einstieg wichtig ist. Weiterlesen...
Die wichtigsten Tipps und Tricks für erfahrene Anwender
Du kennst dich schon im Inventor aus oder hast die Tipps und Links im Beitrag Die wichtigsten Tipps und Tricks für Einsteiger angeschaut und auch schon etwas trainiert. Jetzt wird es Zeit für die nächste Stufe auf der Inventor Karriereleiter. Hier findest du die wichtigsten Tipps und Tricks für erfahrene Anwender aus verschiedenen Themenbereichen. [...] Weiterlesen...
Problembehebung bei Abstürzen und Fehlern
Der Inventor läuft i.d.R. recht stabil nach meiner Erfahrung. Er kann aber auch mal abstürzen. Wenn das aber häufiger der Fall ist, dann sollte näher geforscht werden, was da los ist. Weiterlesen...
Die wichtigsten Tipps und Tricks zur FEM-Berechnung und der dynamische Simulation
Du kennst dich schon im Inventor aus oder hast die Tipps und Links im Beitrag Die wichtigsten Tipps und Tricks für Einsteiger und die wichtigsten Tipps und Tricks für erfahrene Anwender angeschaut und auch schon etwas trainiert. Jetzt wird es Zeit für die nächste Stufe auf der Inventor Karriereleiter. Hier findest du die wichtigsten Tipps und Tricks zur FEM-Berechnung und der dynamische Simulation. Weiterlesen...
Die wichtigsten Tipps und Anleitungen für iLogic hier und im Internet
Die wichtigsten Tipp und Codes für iLogic von dieser Seite und aus dem Internet
Weiterlesen...
Inventor automatisieren: Programmieranleitungen (VBA & API)
In diesem Beitrag haben ich alle Beiträge zusammengefasst, die sich mit der Programmierung befassen, vor allem mit dem umfangreichen VBA-Programmierkurs für Konstrukteure.
Autodesk Inventor Schulungsvideos
Ich habe während einer Schulung teilweise meinen Bildschirm inkl. Sprache aufgezeichnet. Die “gesammelten Werke” umfassen über 3 Stunden und vermitteln die Grundlagen der Bauteil-, Baugruppen- und Zeichnungserstellung. Die Videos basieren auf Inventor 2009, also noch auf der alten Oberfläche, vermitteln aber trotzdem die grundlegenden Prinzipien in der Anwendung des Inventors.
Das Schweizer Taschenmesser der Inventor Tools, die Inventor FAQ Toolbox
Eine Toolsammlung für den Inventor mit mehreren Duzend Funktionen für den Inventor, z.B. Passungliste, Batchdrucken, Bauteilabmessung als iProperty, uvm.
Die besten Tools und Downloads für Inventor, AutoCAD Mechanical, Vault und Windows [Tools]
Im Laufe der Jahre habe ich einige Tools vorgestellt und sogar das eine oder andere Programm selbst programmiert. Hier eine Übersicht überTools aus der Inventor FAQ und im Rest der Internets. Die Übersicht ist sicherlich unvollständig, aber als Einstieg sicher hilfreich.