| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Ad-in-Kommando im Kontextmenu nach Neustart verschwunden (895 mal gelesen)
|
Bitschubser Mitglied B.Eng., Konstruktionsingenieur
Beiträge: 17 Registriert: 20.02.2013
|
erstellt am: 24. Nov. 2013 22:19 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe ein Ad-in für Inventor geschrieben, welches ich gerne über das Rechtsklick-Menü aufrufen würde. Also habe ich den Befehl über Anpassen-->Markierungsmenü hinzugefügt. Dies funktioniert ich bis zum nächsten Neustart. Dann wird der Knopf nicht mehr angezeigt. Das Ad-in ist definitv geladen, ein erneutes Zuweisen geht problemlos. Aber eben nur bis zum nächsten Neustart. Ich habe irgendwie die Vermutung, dass die Ad-ins erst ganz zum Schluss des Programmstarts geladen werden, und daher der Befehl zum Starten des Ad-ins noch nicht bekannt ist. Kann mir jemand von euch einen Tip zur Lösung des Problems geben? Gruß Julian 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: 25. Nov. 2013 10:01 <-- editieren / zitieren --> Unities abgeben: Nur für Bitschubser
Hallo Dein Befehl ist sicher in der Activate-Sub deiner StandardAddInServer.vb als ButtonDefinition erstellt und wenn du auf das UserInput-Event OnContextMenu reagierst, kannst du nach Lust und Laune deine Buttondefinition einfügen. Weiterer Vorteil, OnContextMenu erlaubt es auch bequem in die Kontextmenüs laufender Befehle zusätzliche Einträge zu platzieren. ------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bitschubser Mitglied B.Eng., Konstruktionsingenieur
Beiträge: 17 Registriert: 20.02.2013
|
erstellt am: 25. Nov. 2013 19:19 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für den Tip! Richtig, die Schaltflächen erzeuge ich in der genannten Activate-Sub, allerdings als InventorButton, welche ich dann in den zuvor erzeugten Ribbon-Tab einfüge. Was ich an dieser Stelle nicht ganz verstehe: Wie bekomme ich den Button aus der Activate-Sub in die Sub des OnContextMenu/OnLinearMenu-Handlers? Übrigens habe ich nach eingehender Beschäftigung mit meinem Code heute einen Workaround ermittelt: Im internen Namen der Buttons hatte ich eine dyn. erzeugte GUID verwendet. Nach Vergabe eines statischen Namens findet Inventor die Befehle logischerweise auch nach einem Neustart wieder. Sprich: es funktioniert nun mit manuellem Zuweisen. ABER: Ist das so zu "dirty" oder ist die Sache mit den dyn. GUIDs sowieso ungeschickt oder schlechter Stil? Wegen mir können die Benutzer ruhig selbst entscheiden, ob sie den Befehl im MarkingMenu haben wollen, gibt so halt einen besseren Workflow... 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: 25. Nov. 2013 20:53 <-- editieren / zitieren --> Unities abgeben: Nur für Bitschubser
Hallo Dyn. GUID? Die GIUD soll ein eindeutiger Identifier sein. Wozu sollte die jedes Mal wechseln? Ich erstell meine Buttons in der Activate jedes Mal und zerstöre sie in der Deactivate. So bleiben auch keine Reste, wenn das AddOn mal deinstalliert wird. Ich empfehle das Paper aus diesem Beitrag zum Erstellen der Button und der dazugehörigen ControlDefinitions. Besonders hilfreich fand ich damals das Kapitel zu "der User setzt die Ribbonleiste zurück", da das scheinbar ein Hobby meiner User ist. Der Anruf bei mir "... Das AddIn ist geladen, aber die Button sind weg." mit eingeschlossen. Wenn du in die Public Class StandardAddInServer
Code:
Private myUserInputEvents As UserInputEvents
und in deine Activate Sub Code:
myUserInputEvents = myInventor.CommandManager.UserInputEvents AddHandler myUserInputEvents.OnContextMenu, AddressOf Me.OnContextMenu
einfügst, solltest du in einer Code: Public Sub OnContextMenu(ByVal SelectionDevice As Inventor.SelectionDeviceEnum, ByVal AdditionalInfo As Inventor.NameValueMap, ByVal CommandBar As Inventor.CommandBar) 'hier deinen Button in die CommandBar einfügen, falls er noch nicht drin ist End Sub
auf das Aufrufen des Kontextmenü reagieren und deinen Button einfügen können. Soweit meine Theorie.
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bitschubser Mitglied B.Eng., Konstruktionsingenieur
Beiträge: 17 Registriert: 20.02.2013
|
erstellt am: 27. Nov. 2013 21:06 <-- editieren / zitieren --> Unities abgeben:
Genau: weil eine GUID ein eindeutiger Identifier ist! Um zufällige Namensüberschneidungen durch Copy&Paste-Fehler zu vermeiden. Die Buttons spreche ich eh immer über den Variablennamen an, brauche den internen daher nicht. Da kam mir die "GetGuid()" gerade recht. Vielen Dank für die Infos - werde mir das alles am Wochenende mal zu Gemüte führen! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |