Die Inventor FAQ wird unterstützt von:

Inventor FAQ Logo

28.03.2013

iLogic Regel über VBA ausführen

Update 28.3.2013: Der original VBA-Code unten startet bei mir keine externe iLogicregel. Auf der Suche nach einer Lösung bin ich auf diesen Code gestoßen.

Public Sub Export()
  RuniLogic "Export_PDF_STP"
End Sub
 
Public Sub LaunchMyRule2()
  RuniLogic "MyRule2"
End Sub
 
Public Sub RuniLogic(ByVal RuleName As String)
  Dim iLogicAuto As Object
  Dim oDoc As Document
  Set oDoc = ThisApplication.ActiveDocument
  If oDoc Is Nothing Then
    MsgBox "Missing Inventor Document"
    Exit Sub
  End If
  Set iLogicAuto = GetiLogicAddin(ThisApplication)
  If (iLogicAuto Is Nothing) Then Exit Sub
  iLogicAuto.RunExternalRule oDoc, RuleName
End Sub
 
Function GetiLogicAddin(oApplication As Inventor.Application) As Object
Set addIns = oApplication.ApplicationAddIns
'Find the add-in you are looking for
Dim addIn As ApplicationAddIn
On Error GoTo NotFound
Set addIn = oApplication.ApplicationAddIns.ItemById("{3bdd8d79-2179-4b11-8a5a-257b1c0263ac}")
If (addIn Is Nothing) Then Exit Function
addIn.Activate
Set GetiLogicAddin = addIn.Automation
Exit Function
NotFound:
End Function


Ihr müsst den Code in die Default.ivb einfügen und in diesen Zeilen den Makroname und den Namen der externen Regel eintragen:

Public Sub Export()
RuniLogic "Export_PDF_STP"
End Sub

Dann fügt ihr das Makro (bei mir als Export benannt) in die Ribbons und darüber ggf. auch die Schnellstartleiste ein.


image


Hier eine Beispiel iLogicregel, die wir in einer Schulung gemeinsam erstellt haben, die eine IDW als PDF und DXF und ein Modell als STEP exportiert.



'EXPORTOOL 2D oder 3D zu STP, PDF, DXF
'Dateiendung ermitteln zur Auswahl STP oder DXF/PDF erstellen
Dateiendung=Right(ThisDoc.FileName(True),3) 
 
'MessageBox.Show(Dateiendung, "Title")
'Pfad und Dateiname ohne Endung
Dateiname=ThisDoc.PathAndFileName(False)
 
'Dateiname leer: Funktion beenden
If Dateiname = "" Then
                MessageBox.Show("Datei nicht gespeichert!", "FEHLER")
Else
                If Dateiendung = "ipt" Or Dateiendung = "iam" Then
                               'Speichern als STP mit aktuellen Dateinamen und Pfad
                               ThisDoc.Document.SaveAs(Dateiname & ".stp", True)
                Else
                               'Speichern als PDF und DXF mit aktuellen Dateinamen und Pfad
                               ThisDoc.Document.SaveAs(Dateiname & ".pdf", True)
                               ThisDoc.Document.SaveAs(Dateiname & ".dxf", True)
                End If
End If






imageHier gibt es einen VBA-Code, der eine iLogic-Regel ausführen können soll, es aber nicht tut. Hier die von mir angepasste Variante. Ihr müsst in der Zeile ruleName = "TEST1" euren Regelnamen angeben!


Sub RuniLogicRule()
 
Dim iLogicAuto As Object
Set iLogicAuto = GetiLogicAddin(ThisApplication)
If (iLogicAuto Is Nothing) Then Exit Sub
 
Dim doc As Document
Set doc = ThisApplication.ActiveDocument
Dim ruleName As String
ruleName = "TEST1"
Dim rule As Object
Set rule = iLogicAuto.GetRule(doc, ruleName)
If (rule Is Nothing) Then
  Call MsgBox("No rule named " & ruleName & " was found in the document.")
  Exit Sub
End If
 
Dim i As Integer
i = iLogicAuto.RunRuleDirect(rule)
 
End Sub
 
 
Function GetiLogicAddin(oApplication As Inventor.Application) As Object
Set addIns = oApplication.ApplicationAddIns
 
Dim addIn As ApplicationAddIn
On Error GoTo NotFound
Set addIn = oApplication.ApplicationAddIns.ItemById("{3bdd8d79-2179-4b11-8a5a-257b1c0263ac}")
 
If (addIn Is Nothing) Then Exit Function
 
addIn.Activate
Set GetiLogicAddin = addIn.Automation
Exit Function
NotFound:
End Function

1 Kommentar:

  1. Nach dieser möglichkeit habe ich schon lange gesucht!
    Habe den Code kopiert und getestet.
    Nur gibt es bei mir ein Problem und zwar taucht bei mir die Fehlermeldung:
    only comments may appear after end sub end function or end property
    beim starten des Makros auf. Was habe ich falsch gemacht?

    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: