Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Ilogic in Vba Problem bei Übergabe zu VBA

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
  
PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
Autor Thema:  Ilogic in Vba Problem bei Übergabe zu VBA (439 / mal gelesen)
BernoAn
Mitglied



Sehen Sie sich das Profil von BernoAn an!   Senden Sie eine Private Message an BernoAn  Schreiben Sie einen Gästebucheintrag für BernoAn

Beiträge: 172
Registriert: 16.01.2014

erstellt am: 27. Feb. 2024 15:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen.

Ich möchte in Inventor eine Ilogic Regel ausführen, was auch funktioniert, gibt es eine Möglichkeit die AusgabenVarable nach Vba zu übertragen?


Code:

'ILOGIC REGEL: TEST_Regel
oInput = InputRadioBox("Wähle", "Arbeitsachsen AN ", "Arbeitsachsen Aus", True, "")

nun bräuchte ich "oInput" Ausgabe in VBA

Code:

Sub Ilogictest()
'VBA Code
RunIlogic ("TEST_Regel")
' wie komme ich an die Variable "oInput" = true ot false aus Ilogic in VBA ?
   
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)
    Set oaddIns = 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


Gruß
Berno

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KraBBy
Mitglied
Maschinenbau-Ingenieur


Sehen Sie sich das Profil von KraBBy an!   Senden Sie eine Private Message an KraBBy  Schreiben Sie einen Gästebucheintrag für KraBBy

Beiträge: 721
Registriert: 19.09.2007

Inventor Professional 2020
WinX

erstellt am: 28. Feb. 2024 10:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für BernoAn 10 Unities + Antwort hilfreich

evtl. hilft dieser Beitrag
Pass parameters to an iLogic Rule
Auf die Schnelle habe ich jetzt nicht gelesen, ob die Argumente in der Regel geändert werden können (und diese zum aufrufenden Code zurückkommen). Könnte man ausprobieren.

Ansonsten sollte es ja immer gehen ein iProperty anzulegen (in der iLogic-Regel) und später in VBA zu lesen (ggf. auch wieder zu löschen).

------------------
Gruß KraBBy

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




Sehen Sie sich das Profil von rkauskh an!   Senden Sie eine Private Message an rkauskh  Schreiben Sie einen Gästebucheintrag für rkauskh

Beiträge: 2630
Registriert: 15.11.2006

Windows 10 x64, AIP 2020-2025

erstellt am: 28. Feb. 2024 15:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für BernoAn 10 Unities + Antwort hilfreich

Moin

Die iLogicAuto.RunExternalRule-Methode selbst liefert nur einen Integerwert zurück (0 = Erfolg). Mehr ist nicht vorgesehen. Ich rate auch davon ab, zwischen VBA und iLogic hin und her zu springen. Da auf Dauer den Überblick zu wahren ist fast aussichtlos. Entweder du migrierst deinen VBA-Code nach iLogic (empfohlen) oder du bleibst im VBA. Forms mit Radiobuttons gibt es auch in VBA.
/Oberlehrernörgelmodus aus
Die RunRuleWithArguments Methode kann eine NameValueMap von VBA an die iLogic Regel übergeben. Diese kann man sich in der iLogicregel nehmen und drin herum schreiben. Am Ende der iLogicregel wird die Kontrolle an VBA zurückgegeben und die NameValueMap kann mit den modifizierten Werten weiter genutzt werden. Der Datentyp der Einträge einer NVMap ist Variant, daher sollte man prüfen ob VBA da ein Boolean oder einen String ausgibt.

Die erweiterte iLogicregel:

Code:

Sub main
'ILOGIC REGEL: TEST_Regel
Dim oInput As Boolean = InputRadioBox("Wähle", "Arbeitsachsen AN ", "Arbeitsachsen Aus", True, "")

Dim oNVMap As NameValueMap = RuleArguments.Arguments
oNVMap.Value("oInput") = oInput

End Sub



Der erweiterte VBA-Code:

Code:

Sub Ilogictest()
'VBA Code
RunIlogic ("TEST_Regel")
' wie komme ich an die Variable "oInput" = true ot false aus Ilogic in VBA ?
 
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
   
' Erstellen der NameValueMap und füllen mit einem Platzhalterwert
' Eventuell kann man die NVMap auch leer übergeben und den Wert erst in iLogic einfügen
    Dim NVMap As NameValueMap
    Set NVMap = ThisApplication.TransientObjects.CreateNameValueMap
   
    Call NVMap.Add("oInput", True)

' Aufrufen der Regel mit Übergabe der NVMap
    iLogicAuto.RunExternalRulewitharguments oDoc, RuleName, NVMap
   
' Hier kommt die Kontrolle von iLogic zurück zu VBA und
' man kann den geänderten Wert auslesen und weiter verarbeiten

End Sub

Function GetiLogicAddin(oApplication)
    Set oAddins = 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



------------------
MfG
Ralf

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

BernoAn
Mitglied



Sehen Sie sich das Profil von BernoAn an!   Senden Sie eine Private Message an BernoAn  Schreiben Sie einen Gästebucheintrag für BernoAn

Beiträge: 172
Registriert: 16.01.2014

erstellt am: 29. Feb. 2024 07:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

Vielen Dank !

Funktioniert!

Ach wie bin ich froh das es diese Forum gibt!

Gruß
Berno

[Diese Nachricht wurde von BernoAn am 29. Feb. 2024 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz