public Result OnStartup(UIControlledApplication a) { ParentSupportMethods myParentSupportMethods = new ParentSupportMethods(); myParentSupportMethods.myTA = this; string stringCommand01Button = "Set Development Path Root"; Properties.Settings.Default.AssemblyNeedLoading = true; Properties.Settings.Default.Save(); String exeConfigPath = Path.GetDirectoryName(path) + "\\" + dllName + ".dll"; a.CreateRibbonTab(TabName); RibbonPanelCurrent = a.CreateRibbonPanel(TabName, PanelName); PushButtonData myPushButtonData01 = new PushButtonData(stringCommand01Button, stringCommand01Button, exeConfigPath, dllName + ".InvokeSetDevelopmentPath"); ComboBoxData cbData = new ComboBoxData("DeveloperSwitch") { ToolTip = "Select an Option", LongDescription = "Select a number or letter" }; ComboBox ComboBox01 = RibbonPanelCurrent.AddStackedItems(cbData, myPushButtonData01)[0] as ComboBox; string stringProductVersion = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\\Default Company Name\\CSharp PLAYPEN II Google 'Josh API Revit'").GetValue("ProductVersion").ToString(); //Bug fix here by Max Sun (01/05/19) ComboBox01.AddItem(new ComboBoxMemberData("Release", "Release: " + stringProductVersion)); ComboBox01.AddItem(new ComboBoxMemberData("Development", "C# Developer Mode")); ComboBox01.CurrentChanged += new EventHandler <Autodesk.Revit.UI.Events.ComboBoxCurrentChangedEventArgs>(SwitchBetweenDeveloperAndRelease); RibbonPanelCurrent.AddItem(myParentSupportMethods.myPushButton_01(Button_01, path)); RibbonPanelCurrent.AddItem(myParentSupportMethods.myPushButton_02(Button_02, path)); RibbonPanel PRLChecklistsPanel2 = a.CreateRibbonPanel(TabName, PanelTransferring); //PRLChecklistsPanel2.Visible = false; myParentSupportMethods.PlaceButtonOnModifyRibbon(); return(Result.Succeeded); }
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { try { if (Properties.Settings.Default.AssemblyNeedLoading) { //2 August 2019: Start, The the following lines were added in Take 10 in order prevent double loading of packages. Microsoft.Win32.RegistryKey rkbase = null; rkbase = Microsoft.Win32.RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, Microsoft.Win32.RegistryView.Registry64); string stringTargetOokiiVersion = rkbase.OpenSubKey("SOFTWARE\\Wow6432Node\\Default Company Name\\CSharp PLAYPEN II Google 'Josh API Revit'").GetValue("OokiiVersion").ToString(); string stringTargetXceedVersion = rkbase.OpenSubKey("SOFTWARE\\Wow6432Node\\Default Company Name\\CSharp PLAYPEN II Google 'Josh API Revit'").GetValue("XceedVersion").ToString(); if (AppDomain.CurrentDomain.GetAssemblies().Where(x => x.FullName == stringTargetOokiiVersion).Count() == 0) { string stringTargetDirectory = rkbase.OpenSubKey("SOFTWARE\\Default Company Name\\CSharp PLAYPEN II Google 'Josh API Revit'").GetValue("TARGETDIR").ToString(); Assembly.Load(File.ReadAllBytes(stringTargetDirectory + "\\Ookii.Dialogs.Wpf.dll")); } if (AppDomain.CurrentDomain.GetAssemblies().Where(x => x.FullName == stringTargetXceedVersion).Count() == 0) { string stringTargetDirectory = rkbase.OpenSubKey("SOFTWARE\\Default Company Name\\CSharp PLAYPEN II Google 'Josh API Revit'").GetValue("TARGETDIR").ToString(); Assembly.Load(File.ReadAllBytes(stringTargetDirectory + "\\Xceed.Wpf.Toolkit.dll")); } //2 August 2019: End. } string path = Properties.Settings.Default.DevelopmentPathRoot + ""; if (!System.IO.File.Exists(path + "\\" + dllModuleName + "\\AddIn\\" + dllModuleName + ".dll")) { ParentSupportMethods.writeDebug("Can't find this file at path: " + path + "\\" + dllModuleName + "\\AddIn\\" + dllModuleName + ".dll" + Environment.NewLine + Environment.NewLine + "Please try 'Set Development Path' again...which is two levels up from the dll.", true); } else { //File.ReadAllBytes(path + "\\" + dllModuleName + ".dll"); Assembly objAssembly01 = Assembly.Load(File.ReadAllBytes(path + "\\" + dllModuleName + "\\AddIn\\" + dllModuleName + ".dll")); string strCommandName = "ThisApplication"; IEnumerable <Type> myIEnumerableType = GetTypesSafely(objAssembly01); foreach (Type objType in myIEnumerableType) { if (objType.IsClass) { if (objType.Name.ToLower() == strCommandName.ToLower()) { object ibaseObject = Activator.CreateInstance(objType); object[] arguments = new object[] { commandData, "Button02", elements }; object result = null; result = objType.InvokeMember("OpenWindowForm", BindingFlags.Default | BindingFlags.InvokeMethod, null, ibaseObject, arguments); break; } } } } } #region catch and finally catch (Exception ex) { TaskDialog.Show("Catch", "Failed due to: " + ex.Message); string pathHeader = "Please check this file (and directory) exist: " + Environment.NewLine; string path = Properties.Settings.Default.DevelopmentPathRoot + ""; ParentSupportMethods.writeDebug(pathHeader + path + "\\" + dllModuleName + "\\AddIn\\" + dllModuleName + ".dll", true); } finally { } #endregion return(Result.Succeeded); }