| |
| 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
Beiträge: 172 Registriert: 16.01.2014
|
erstellt am: 27. Feb. 2024 15:35 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 721 Registriert: 19.09.2007 Inventor Professional 2020 WinX
|
erstellt am: 28. Feb. 2024 10:00 <-- editieren / zitieren --> Unities abgeben: Nur für BernoAn
evtl. hilft dieser Beitrag Pass parameters to an iLogic RuleAuf 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
Beiträge: 2630 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 28. Feb. 2024 15:20 <-- editieren / zitieren --> Unities abgeben: Nur für BernoAn
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
Beiträge: 172 Registriert: 16.01.2014
|
erstellt am: 29. Feb. 2024 07:34 <-- editieren / zitieren --> Unities abgeben:
|