Aller au contenu

Menu récalcitrant


Messages recommandés

Bonjour a tous.

 

J'ai un petit problème avec un menu qui refuse de s'afficher au démarrage d'Autocad. :mad:

 

Le menu (partiel) en question est créé et chargé lors du l'initialisation du module que j'ai programmé et s'affiche correctement. Si je ferme et ré ouvre Autocad dans la foulée, seule la barre d'outils reste visible (le cuix partiel est pourtant correctement chargé au démarrage) .

 

La seule façon de le faire apparaitre est d'actualiser l'espace de travail (WSCURRENT) mais toutes les barres d'outils venant de Covadis et autres disparaissent... :(

 

Voila le code de la partie "menu" :

 

using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Customization;
using Autodesk.Windows;
using Autodesk.AutoCAD.Windows;
using Autodesk.AutoCAD.Interop;
using Microsoft.Win32;
using System.Globalization;
using System.Reflection;
using System;
using System.Runtime.InteropServices;
using System.IO;
using System.Collections.Specialized;
using System.Windows.Media.Imaging;
using System.Security.AccessControl; 

//Création du fichier CUI contenant le menu "Fil d'eau"
	[CommandMethod("menufe")]
       public void BuildMenuCUI()
       {

           string myCuiFileToSend ="\"C:/Program Files/Autodesk/AutoCAD Map 3D 2011/Plugins/Etiquette_fil_d_eau/MenuFildeau.cuix\"";
           string myCuiFile = @"C:\Program Files\Autodesk\AutoCAD Map 3D 2011\Plugins\Etiquette_fil_d_eau\MenuFildeau.cuix";
           string myCuiSectionName = "Fildeau";

           Editor ed =Application.DocumentManager.MdiActiveDocument.Editor;

           string mainCui =Application.GetSystemVariable("MENUNAME") + ".cuix";

           //Récupére les élements principaux du fichier cui pricipal
           CustomizationSection cs = new CustomizationSection(mainCui);
           //Récupére la collection des fichiers cui partiels référencés dans le cui principal
           PartialCuiFileCollection pcfc = cs.PartialCuiFiles;
          
           if (pcfc.Contains(myCuiFile))
           {
               ed.WriteMessage("\nLe fichier de personalisation \""+ myCuiFile+ "\" est déja chargé.");
           }
           else{
               if (File.Exists(myCuiFile))
               {
                   ed.WriteMessage("\nLe fichier de personalisation \""+ myCuiFile+ "\" existe - Chargement...");
                   LoadMyCui(myCuiFileToSend);
               }
               else
               {
                   ed.WriteMessage("\nLe fichier de personalisation \""+ myCuiFile+ "\" n'existe pas - Création...");
                   
                   // Créer un nouveau fichier cui partiel
                   CustomizationSection pcs = new CustomizationSection();
                   pcs.MenuGroupName = myCuiSectionName;
                   // Création d'un menu avec nos 3 commandes
                   MacroGroup mg = new MacroGroup(myCuiSectionName, pcs.MenuGroup);
                   //Définition commandes
                   MenuMacro mm1 = new MenuMacro(mg, "Fil d'eau Radier", "^C^Cferad", "ID_feradier");
                   mm1.macro.SmallImage = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\" + "Ico_FeRad.BMP";
                   MenuMacro mm2 =new MenuMacro(mg, "Fil d'eau Chute", "^C^Cfechute", "ID_fechute");
                   mm2.macro.SmallImage = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\" + "Ico_FeChute.BMP";
                   MenuMacro mm3 =new MenuMacro(mg, "GS Chute", "^C^Cgschute", "ID_gschute");
                   mm3.macro.SmallImage = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\" + "Ico_GsChute.BMP";

                   // Ajoute le menu deroulant avec nos 3 commandes
                   StringCollection sc = new StringCollection();
                   sc.Add("FILDEAU, Fildeau");
                   //Création menu déroulant
                   PopMenu pm =new PopMenu(myCuiSectionName,sc,"ID_FilDeau",pcs.MenuGroup);
                   //Ajoute les commandes
                   PopMenuItem pmi1 = new PopMenuItem(mm1, "Fil d'eau radier", pm, -1);
                   PopMenuItem pmi2 = new PopMenuItem(mm2, "Fil d'eau chute", pm, -1);
                   PopMenuItem pmi3 = new PopMenuItem(mm3, "GS chute", pm, -1);
                  
                   //Création de la barre d'outils
                   StringCollection AliasList = new StringCollection();
                   AliasList.Add("FILDEAU, Fildeau");
                   Toolbar tb = new Toolbar(myCuiSectionName, "Barre d'outils fildeau", "ID_Toolbar1", AliasList, true, ToolbarOrient.floating, 200, 200, 1, pcs.MenuGroup);
                   //Définition des commandes
                   ToolbarButton tbbutton1 = new ToolbarButton( "ID_feradier", "FeRadier", tb, 0);
                   ToolbarButton tbbutton2 = new ToolbarButton("ID_fechute", "FeChute", tb, 1);
                   ToolbarButton tbbutton3 = new ToolbarButton("ID_gschute", "GsChute", tb, 2);
                   //Affiche la barre de commande
                   tb.ToolbarVisible = ToolbarVisible.show;

                   //Ajoute le menu pour tout les espaces de travail
                   cs.AddWSPopToAllWorkspaces(pm, pcs);
                   //Reference le fichier cui partiel dans le cui principal
                   cs.AddPartialMenu(myCuiFile);
                  
                   pcs.SaveAs(myCuiFile);

                   LoadMyCui(myCuiFileToSend);
               }
           }
       }


       //Procédure de chargement du fichier cui partiel
       private void LoadMyCui(string cuiFile)
       {
           AcadPreferences prefs = (AcadPreferences)Application.Preferences;
           //Ajoute le chemin du module 'fil d'eau'
           String FichierSupportOrigine = prefs.Files.SupportPath;
           prefs.Files.SupportPath = FichierSupportOrigine + @";C:\Program Files\Autodesk\AutoCAD Map 3D 2011\Plugins";
           //Charge le cuix partiel
           Application.LoadPartialMenu(cuiFile);
       }

//Actualisation des menus
       [CommandMethod("actmenu")]
       public void Actualmenu()
       {
           Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
           Application.ReloadAllMenus();
           ed.WriteMessage("\nActualisation des menus. ");
       }

 

Je peux mettre la solution complète mais je pense que le problème ne vient pas du code.

Allez, j'y retourne...

 

 

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité