| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: ILogic Formular mittels VBA starten (4623 mal gelesen)
|
Dilpschi Mitglied Ing. Verfahrenstechnik
Beiträge: 18 Registriert: 29.04.2013
|
erstellt am: 29. Apr. 2013 10:21 <-- editieren / zitieren --> Unities abgeben:
Hallo Allerseits, ich verschiebe mittels eines kleinen VBA-Formulars Bauteile entlang der Achsen im Raum. Dies erfolgt über die ActiveDocument / Transformation Methode. Das Bauteil muss hierzu also nur selektiert und das Makro gestartet werden (geht über rechte Maustaste). Jetzt habe ich für dieses Bauteil ein iLogic Formular entworfen, welches ich gern aus dem VBA-Formular heraus starten möchte. Das Object ist ja als solches über SelectSet.Item vorhanden. Mir fehlt nur die Methode, um das iLogic - Formular für das selektierte Object aufzurufen. VG Dilp Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Michael Puschner Ehrenmitglied V.I.P. h.c. Rentner
Beiträge: 12982 Registriert: 29.08.2003 Toshiba Encore mit MS Office<P>Ein Programm sollte nicht nur Hand und Fuß, sondern auch Herz und Hirn haben. (Michael Anton)
|
erstellt am: 29. Apr. 2013 15:57 <-- editieren / zitieren --> Unities abgeben: Nur für Dilpschi
|
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 01. Mai. 2013 13:22 <-- editieren / zitieren --> Unities abgeben: Nur für Dilpschi
Hallo Paßt zwar nicht 100%, aber zumindest kann man damit aus VBA eine iLogic-Regel aufrufen. Code: Public Sub LaunchMyRule1() RuniLogic "Regel0" '<------- Name anpassen End SubPublic 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.RunRule 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
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dilpschi Mitglied Ing. Verfahrenstechnik
Beiträge: 18 Registriert: 29.04.2013
|
erstellt am: 03. Mai. 2013 08:47 <-- editieren / zitieren --> Unities abgeben:
Hallo Ralf vielen Dank für Deine Hilfe und für die Erleuchtung, daß ich das Ganze über das Inhaltscenter-Addin laufen lassen muss . Ich dachte es gibt eine an das Objekt direkt gekoppelte Methode zum Aufruf der Regel/Formular. Jetzt stellt sich das Problem, daß das Addin nur Regeln der gesamten Baugruppe aufruft. Wenn ich das Ganze für ein selektiertes Objekt abändere, bekomme ich einen Argument-Fehler. Beim Addin-Aufruf gibt es wahrscheinlich mit dem Objekttyp (kAssemblyDocumentObject) ein Problem. Hast Du da noch eine Idee? Globale rules fallen aus, weil ich verschiedene Objekte mit unterschiedlichen Formularen habe. VG Tom Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 03. Mai. 2013 09:50 <-- editieren / zitieren --> Unities abgeben: Nur für Dilpschi
Hallo In welchem Dokument er die Regel ausführt legt Code: Set oDoc = ThisApplication.ActiveDocument
fest. Für ein selektiertes Objekt müßte man Code: Set oDoc = ThisApplication.ActiveDocument.SelectSet.Item(1)
nehmen. Ob das direkt so einfach funktioniert mußt du ausprobieren, hab grad keinen Inventor. ------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dilpschi Mitglied Ing. Verfahrenstechnik
Beiträge: 18 Registriert: 29.04.2013
|
erstellt am: 03. Mai. 2013 11:05 <-- editieren / zitieren --> Unities abgeben:
Hallo Ralf, genau das hab ich probiert und den Fehler erhalten, daß die Argumente nicht stimmen. Das Übel liegt schon darin, daß man das SelectItem-Objekt als ComponentOccurrence deklarieren muss. Und damit kommt die RunRule-Methode nicht klar. Dis is'n bissel doof. VG Tom [Diese Nachricht wurde von Dilpschi am 03. Mai. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 03. Mai. 2013 13:29 <-- editieren / zitieren --> Unities abgeben: Nur für Dilpschi
Hallo Das normal. Von der selektierten ComponentOccurrence kommst du über ComponentOccurrence.Definition.Document an das PartDocument. Steckt das Bauteil in einer Unterbaugruppe, ist das selektierte Bauteil glaub ich sogar ein ComponentOccurrenceProxy. Da müßte es aber genauso gehen.
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dilpschi Mitglied Ing. Verfahrenstechnik
Beiträge: 18 Registriert: 29.04.2013
|
erstellt am: 06. Mai. 2013 08:22 <-- editieren / zitieren --> Unities abgeben:
|