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.
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
Hier 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
Nach dieser möglichkeit habe ich schon lange gesucht!
AntwortenLöschenHabe 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?