Die Inventor FAQ wird unterstützt von:

Inventor FAQ Logo

26.04.2017

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:

image

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

image

iLogic benötigt mein Let und Set. Weg bekommen wir das einfach mittels Suchen/Ersetzen. Einfach alle Set durch einen Leerstring ersetzen.

image

Argumente müssen in Klammern stehen

Im Beispiel unten bedeutet das, das aus Mkdir Path werden muss: mkdir (path)

image

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.

2 Kommentare:

  1. Wenn du Befehle nutzt, die VBA kennt, dann machst du das Gegenteil von dem, was oben steht.
    ilogic- und vb.net spezifische Befehle kannst du nicht ohne weiteres einfach in VBA überführen.

    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: