| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Toolbar will nur einmal sauber starten (483 mal gelesen)
|
Frank_Schalla Ehrenmitglied CAD_SYSTEMBETREUER
Beiträge: 1731 Registriert: 06.04.2002 DELL M6800 Cad Admin Methodikentwickler 3D
|
erstellt am: 16. Mai. 2006 14:03 <-- editieren / zitieren --> Unities abgeben:
Also nun ganz doll durchgeatmet. Bin 2 3 Stunden an einer simplen Toolbar am werkeln. Beim ersten Kompilieren (auch beim Registern auf fremden Maschinen) ist die Tollbar da. Beim nächsten Start ist sie da aber leer. Wenn ich nun im VS2003 die Versionskennung um 1 erhöhe geht das Spiel von vorne los. Weiss jemand einen rat. Anbei der Activate Teil weil da meiner Meinung nach der Hund begraben liegt. ********************************************************************* Public Sub Activate(ByVal AddInSiteObject As Inventor.ApplicationAddInSite, ByVal FirstTime As Boolean) Implements Inventor.ApplicationAddInServer.Activate 'the Activate method is called by Inventor when it loads the addin 'the AddInSiteObject provides access to the Inventor Application object 'the FirstTime flag indicates if the addin is loaded for the first time 'initialize AddIn members moApplication = AddInSiteObject.Application moAppEvents = moApplication.ApplicationEvents AddHandler moAppEvents.OnActivateDocument, AddressOf ApplicationEvents_OnActivateDocument ' TODO: Add ApplicationAddInServer.Activate implementation 'e.g. event initialization, command creation etc. ' Create the GUI. Dim oCommandBar As Inventor.CommandBar Dim oControlDefinitions As ControlDefinitions Dim oControlDefinitions2 As ControlDefinitions Dim oControlDefinitions4 As ControlDefinitions Dim oControlDefinitions3 As ControlDefinitions 'If FirstTime = True Then Try '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ oControlDefinitions = moApplication.CommandManager.ControlDefinitions oButtonDefinition = oControlDefinitions.AddButtonDefinition( _ "Stempel Erstellen", "make_stamp", CommandTypesEnum.kShapeEditCmdType _ , "163A5DEA-7F55-446E-8AEB-74283ECCDB69", _ "Erstellt manuell den Stempel", "Erstellt manuell den Stempel", _ , , ButtonDisplayEnum.kDisplayTextInLearningMode) '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ oControlDefinitions2 = moApplication.CommandManager.ControlDefinitions oButtonDefinition2 = oControlDefinitions.AddButtonDefinition( _ "Stempel ausblenden", "hide_stamp", CommandTypesEnum.kShapeEditCmdType _ , "163A5DEA-7F55-446E-8AEB-74283ECCDB69", _ "Schaltet den Stempel unsichtbar", "Schaltet den Stempel unsichtbar", _ , , ButtonDisplayEnum.kDisplayTextInLearningMode) '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ oControlDefinitions4 = moApplication.CommandManager.ControlDefinitions oButtonDefinition4 = oControlDefinitions.AddButtonDefinition( _ "Stempel einblenden", "show_stamp", CommandTypesEnum.kShapeEditCmdType _ , "163A5DEA-7F55-446E-8AEB-74283ECCDB69", _ "Blendet einen bestehenden Stempel ein", "Blendet einen bestehenden Stempel ein", _ , , ButtonDisplayEnum.kDisplayTextInLearningMode) '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ oControlDefinitions3 = moApplication.CommandManager.ControlDefinitions oButtonDefinition3 = oControlDefinitions.AddButtonDefinition( _ "Info ERP_STAMP", "about_stamp", CommandTypesEnum.kShapeEditCmdType _ , "163A5DEA-7F55-446E-8AEB-74283ECCDB69", _ "Shows Release Notes", "Shows Release Notes", _ , , ButtonDisplayEnum.kDisplayTextInLearningMode) '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Catch ex As Exception MsgBox(ex.Message) End Try '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 'Make the Command Bar oCommandBar = _ moApplication.UserInterfaceManager.CommandBars.Add("IV_ERP_STAMP", "IV_ERP_STAMP_tlb", _ Inventor.CommandBarTypeEnum.kRegularCommandBar, _ "{163A5DEA-7F55-446E-8AEB-74283ECCDB69}") '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 'Make the Butonsto the Bar oCommandBar.Controls.AddButton(oButtonDefinition) oCommandBar.Controls.AddButton(oButtonDefinition2) oCommandBar.Controls.AddButton(oButtonDefinition4) oCommandBar.Controls.AddButton(oButtonDefinition3) '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ' End If 'Display the Toolbar oCommandBar.Visible = True '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ End Sub ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012
|
erstellt am: 16. Mai. 2006 14:16 <-- editieren / zitieren --> Unities abgeben: Nur für Frank_Schalla
Hallo Frank, du musst die FirstTime Variable benutzen. CommandBar „adden“ kannst du nur einmal. Bei nächsten Versuch kracht es ab, und die Buttons werden nicht hinzugefügt. Würde das AddIn hier: Code:
Make the Command Bar oCommandBar = _ moApplication.UserInterfaceManager.CommandBars.Add("IV_ERP_STAMP", "IV_ERP_STAMP_tlb", _ Inventor.CommandBarTypeEnum.kRegularCommandBar, _ "{163A5DEA-7F55-446E-8AEB-74283ECCDB69}")
nicht abkrachen, hättest du immer den ganzen Satz von Buttons dazu… (weil die Buttons "adden" sollte auch nur ein mal statt finden). Also, den hier: Code:
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 'Make the Command Bar oCommandBar = _ moApplication.UserInterfaceManager.CommandBars.Add("IV_ERP_STAMP", "IV_ERP_STAMP_tlb", _ Inventor.CommandBarTypeEnum.kRegularCommandBar, _ "{163A5DEA-7F55-446E-8AEB-74283ECCDB69}") '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 'Make the Butonsto the Bar oCommandBar.Controls.AddButton(oButtonDefinition) oCommandBar.Controls.AddButton(oButtonDefinition2) oCommandBar.Controls.AddButton(oButtonDefinition4) oCommandBar.Controls.AddButton(oButtonDefinition3) '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ' End If 'Display the Toolbar oCommandBar.Visible = True '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
sollte von einer If (FirstTime) eingeklammert werden. Ist aber nur eine Ferndiagnose. PS: Und bei weitern Versuchen (während der Entwicklung) immer brav den Schlüssel 163A5DEA-7F55-446E-8AEB-74283ECCDB69 aus OwnerId löschen, sonst ist die FirstTime auf false. ------------------ Grüße daywa1k3r
FX64 Software Solutions Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Frank_Schalla Ehrenmitglied CAD_SYSTEMBETREUER
Beiträge: 1731 Registriert: 06.04.2002 DELL M6800 Cad Admin Methodikentwickler 3D
|
erstellt am: 16. Mai. 2006 16:38 <-- editieren / zitieren --> Unities abgeben:
Das mit dem löschen während der Entwicklung habe ich so gelöst Dim regKey As RegistryKey Try regKey = Registry.CurrentUser.OpenSubKey("Software\Autodesk\Inventor\RegistryVersion10.0\UI Customization V3\Command Owner IDs", True) regKey.DeleteSubKeyTree("{163A5DEA-7F55-446E-8AEB-74283ECCDB69}") regKey.Close() Catch ex As Exception 'MsgBox(ex.ToString) End Try Try 'HKEY_CURRENT_USER\Software\Autodesk\Inventor\RegistryVersion10.0\UI Customization V3\ToolBars\IV_ERP_STAMP_tlb regKey = Registry.CurrentUser.OpenSubKey("\Software\Autodesk\Inventor\RegistryVersion10.0\UI Customization V3\ToolBars", True) regKey.DeleteSubKeyTree("IV_ERP_STAMP_tlb") regKey.Close() Catch ex As Exception 'MsgBox(ex.ToString) End Try Wenn man dies in ACTIVATE packt ist nicht so mühsam. Vor dem Kompilieren nimm ich's dann raus ******************************************************************* Aber die eigentliche Sache macht mich fertig. First Time ist nun gesetzt und beim Debuggen kommt die Tollbar immer. Wenn ich aber die DLL einbinde kommt sie genau einmal beim nächsten Start sind die ButtonDef's noch da, aber die Toolbar ist leer Langsam wird GRAUSIG
------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012
|
erstellt am: 16. Mai. 2006 17:02 <-- editieren / zitieren --> Unities abgeben: Nur für Frank_Schalla
Zitat: Original erstellt von Frank_Schalla: First Time ist nun gesetzt und beim Debuggen kommt die Tollbar immer.
Erst jetzt nach der Benutzung von FirstTime oder hat es in DebugModus auch zuvor funktioniert? Zitat:
Das mit dem löschen während der Entwicklung habe ich so gelöst
Schon Ok, aber nur manuell ausführen, weil wenn das immer ausgeführt wird hat die FirstTime keinen Sinn. Dann ist die FirstTime immer auf true und der Zustand ist der gleiche wie du es zuvor gehabt hast. ------------------ Grüße daywa1k3r FX64 Software Solutions Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Frank_Schalla Ehrenmitglied CAD_SYSTEMBETREUER
Beiträge: 1731 Registriert: 06.04.2002 DELL M6800 Cad Admin Methodikentwickler 3D
|
erstellt am: 16. Mai. 2006 18:24 <-- editieren / zitieren --> Unities abgeben:
Hi Igor erst nach der Benutzung von FirstTime
Hier die aktuelle Version *********************************** Public Sub Activate(ByVal AddInSiteObject As Inventor.ApplicationAddInSite, ByVal FirstTime As Boolean) Implements Inventor.ApplicationAddInServer.Activate 'the Activate method is called by Inventor when it loads the addin 'the AddInSiteObject provides access to the Inventor Application object 'the FirstTime flag indicates if the addin is loaded for the first time 'initialize AddIn members
moApplication = AddInSiteObject.Application moAppEvents = moApplication.ApplicationEvents AddHandler moAppEvents.OnActivateDocument, AddressOf ApplicationEvents_OnActivateDocument ' TODO: Add ApplicationAddInServer.Activate implementation 'e.g. event initialization, command creation etc. ' Create the GUI. Dim oCommandBar As Inventor.CommandBar Dim oControlDefinitions As ControlDefinitions Dim oControlDefinitions2 As ControlDefinitions Dim oControlDefinitions4 As ControlDefinitions Dim oControlDefinitions3 As ControlDefinitions ' Try '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ oControlDefinitions = moApplication.CommandManager.ControlDefinitions oButtonDefinition = oControlDefinitions.AddButtonDefinition( _ "Stempel Erstellen", "make_stamp", CommandTypesEnum.kShapeEditCmdType _ , "163A5DEA-7F55-446E-8AEB-74283ECCDB69", _ "Erstellt manuell den Stempel", "Erstellt manuell den Stempel", _ , , ButtonDisplayEnum.kDisplayTextInLearningMode) '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ oControlDefinitions2 = moApplication.CommandManager.ControlDefinitions oButtonDefinition2 = oControlDefinitions.AddButtonDefinition( _ "Stempel ausblenden", "hide_stamp", CommandTypesEnum.kShapeEditCmdType _ , "163A5DEA-7F55-446E-8AEB-74283ECCDB69", _ "Schaltet den Stempel unsichtbar", "Schaltet den Stempel unsichtbar", _ , , ButtonDisplayEnum.kDisplayTextInLearningMode) '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ oControlDefinitions4 = moApplication.CommandManager.ControlDefinitions oButtonDefinition4 = oControlDefinitions.AddButtonDefinition( _ "Stempel einblenden", "show_stamp", CommandTypesEnum.kShapeEditCmdType _ , "163A5DEA-7F55-446E-8AEB-74283ECCDB69", _ "Blendet einen bestehenden Stempel ein", "Blendet einen bestehenden Stempel ein", _ , , ButtonDisplayEnum.kDisplayTextInLearningMode) '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ oControlDefinitions3 = moApplication.CommandManager.ControlDefinitions oButtonDefinition3 = oControlDefinitions.AddButtonDefinition( _ "Info ERP_STAMP", "about_stamp", CommandTypesEnum.kShapeEditCmdType _ , "163A5DEA-7F55-446E-8AEB-74283ECCDB69", _ "Shows Release Notes", "Shows Release Notes", _ , , ButtonDisplayEnum.kDisplayTextInLearningMode) '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Catch ex As Exception MsgBox(ex.Message) End Try '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ If FirstTime = True Then 'Make the Command Bar oCommandBar = _ moApplication.UserInterfaceManager.CommandBars.Add("IV_ERP_STAMP", "IV_ERP_STAMP_tlb", _ Inventor.CommandBarTypeEnum.kRegularCommandBar, _ "{163A5DEA-7F55-446E-8AEB-74283ECCDB69}") '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 'Make the Butonsto the Bar oCommandBar.Controls.AddButton(oButtonDefinition) oCommandBar.Controls.AddButton(oButtonDefinition2) oCommandBar.Controls.AddButton(oButtonDefinition4) oCommandBar.Controls.AddButton(oButtonDefinition3) '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 'Display the Toolbar oCommandBar.Visible = True End If '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Dim splash As New splash splash.Show() splash.TB_Splash.AppendText(("Modul: IV_ERP_STAMP.Net is loading" & vbNewLine)) splash.Show() splash.Refresh() 'Try splash.TB_Splash.AppendText("Modul: IV_ERP_STAMP.Net Enviroment is loading" & vbNewLine) splash.Refresh() splash.TB_Splash.AppendText("Modul: IV_ERP_STAMP.Net is activated") splash.TB_Splash.AppendText("!!!! BETAVERSION !!!!") splash.Timer_splash.Start() End Sub
------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Elektrotechniker (m/w/d) Automatisierungstechnik Chemieanlagenbau | Menschen und Technologien zu verbinden, den Perfect Match für unsere Kunden zu gestalten, immer die richtigen Expert:innen für die jeweilige Herausforderung zu finden - das ist unser Anspruch bei FERCHAU und dafür suchen wir dich: Wir realisieren spannende Projekte für namhafte Kunden im Anlagenbau und arbeiten mit an anspruchsvollen Lösungen für die Industrie.
Elektrotechniker (m/w/d) Automatisierungstechnik ... | Anzeige ansehen | Elektrotechnik, Elektronik |
|
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012
|
erstellt am: 16. Mai. 2006 19:08 <-- editieren / zitieren --> Unities abgeben: Nur für Frank_Schalla
Hallo Frank, ehrlich gesagt, glaube ich nicht, dass es an der Funktion liegt. Schließlich funktioniert die jetzt auch in DebugModus. Folgende Möglichkeiten gibt es noch IMHO... 1. Die DLL, die du benutzt, ist nicht die neu kompilierte Datei. 2. Der Regeintrag OvnerId ist noch vorhanden, oder wird immer wieder gelöscht (dein Funktionen) <- Mein Favorit 3. Die neue Datei ist bei OS nicht registriert (regasm). 4. Debug und Release Ordner verwechselt 5. Erstellen / Projektmappe neu erstellen oder Erstellen / (Projekt) neu erstellen mal probieren. Seit .NET erstelle ich auch für jede Kleinigkeit ein INNO Setup. Dann bin ich sicher, dass alle Einträge weg sind, bevor es installiert wird. Wenn die alten Dateien nicht überschrieben werden können, kommt auch eine Meldung, und letztendlich wird alles auf jeden Fall bei OS registriert.
------------------ Grüße daywa1k3r FX64 Software Solutions Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|