/// <summary> /// 创建一个按钮 /// </summary> /// <param name="plugin"></param> /// <param name="panel"></param> private static void CreateButton(IFangCommand plugin, RibbonPanel panel) { if (plugin.SplitName != null && plugin.SplitName != "") { SplitButton splitbt = FindSplitByName(panel, plugin.SplitName); if (splitbt != null) { PushButtonData data = new PushButtonData(plugin.AlaisName, plugin.AlaisName, plugin.GetType().Assembly.Location, plugin.ModelName); PushButton ps = splitbt.AddPushButton(data); ps.LargeImage = plugin.ImageURI; ps.Image = plugin.ImageURI; ps.SetShortCut(plugin.ShortCutKey); } else { SplitButtonData splidata = new SplitButtonData(plugin.SplitName, plugin.SplitName); SplitButton ps = panel.AddItem(splidata) as SplitButton; ps.LargeImage = plugin.ImageURI; ps.Image = plugin.ImageURI; ps.SetShortCut(plugin.ShortCutKey); ps.IsSynchronizedWithCurrentItem = false; //ps.ItemText = plugin.SplitName; } } else { } }
/// <summary> /// 加载所有的插件信息 /// </summary> /// <param name="revitapp"></param> /// <param name="splash"></param> public static void LoadAllPlugins(UIControlledApplication revitapp, ISplash splash) { /// <summary> /// 所有的插件列表 /// </summary> List <IFangCommand> plugins = new List <IFangCommand>(); //获取当前的应用程序路径 string appPath = Unity.GetAssemblyPath(); if (appPath != null) { //获取当前所有的文件信息 string[] files = Directory.GetFiles(appPath); //获取下面所有的dll foreach (string file in files) { if (file.Contains("Fang.LGK.Plugin.") == false) { continue; } //获取扩展名 string ext = Path.GetExtension(file); //判断是否是扩展名 if (ext.ToLower() != ".dll") { continue; } try { //加载当前的程序集 Assembly tmp = Assembly.LoadFrom(file); //获取当前所有类型信息 Type[] types = tmp.GetTypes(); //显示加载进度 splash.ProcessData = Path.GetFileName(file); //获取当前的成员类型信息 foreach (Type t in types) { if (IsValidPlugin(t)) { try { //创建当前的插件信息 IFangCommand plugin = (IFangCommand)tmp.CreateInstance(t.FullName); plugins.Add(plugin); } catch (Exception ex) { splash.ProcessData = "当前应用程序加载失败" + ex.Message; continue; } } } } catch (Exception ex) { splash.ProcessData = "当前应用程序加载失败" + ex.Message; } //创建当前界面 } CreateUI(revitapp, plugins, splash); } else { } }