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...