/// <summary> /// Called when the <see cref="StandardAddInServer"/> is being loaded /// </summary> /// <param name="AddInSiteObject"></param> /// <param name="FirstTime"></param> public void Activate(ApplicationAddInSite AddInSiteObject, bool FirstTime) { MainApplication = AddInSiteObject.Application; //Gets the application object, which is used in many different ways throughout this whole process string ClientID = "{0c9a07ad-2768-4a62-950a-b5e33b88e4a3}"; Utilities.LoadSettings(); #region Add Parallel Environment #region Load Images stdole.IPictureDisp ExportRobotIconSmall = PictureDispConverter.ToIPictureDisp(new Bitmap(Resource.SynthesisLogo16)); stdole.IPictureDisp ExportRobotIconLarge = PictureDispConverter.ToIPictureDisp(new Bitmap(Resource.SynthesisLogo32)); stdole.IPictureDisp SaveRobotIconSmall = PictureDispConverter.ToIPictureDisp(new Bitmap(Resource.Save16)); stdole.IPictureDisp SaveRobotIconLarge = PictureDispConverter.ToIPictureDisp(new Bitmap(Resource.Save32)); stdole.IPictureDisp ExportSetupRobotIconSmall = PictureDispConverter.ToIPictureDisp(new Bitmap(Resource.Gears16)); stdole.IPictureDisp ExportSetupRobotIconLarge = PictureDispConverter.ToIPictureDisp(new Bitmap(Resource.Gears32)); stdole.IPictureDisp YeetRobotIconSmall = PictureDispConverter.ToIPictureDisp(new Bitmap(Resource.Wand16));//these are still here at request of QA stdole.IPictureDisp YeetRobotIconLarge = PictureDispConverter.ToIPictureDisp(new Bitmap(Resource.Wand32)); stdole.IPictureDisp WeightRobotIconSmall = PictureDispConverter.ToIPictureDisp(new Bitmap(Resource.Weight16)); stdole.IPictureDisp WeightRobotIconLarge = PictureDispConverter.ToIPictureDisp(new Bitmap(Resource.Weight32)); stdole.IPictureDisp SynthesisLogoSmall = PictureDispConverter.ToIPictureDisp(new Bitmap(Resource.SynthesisLogo16)); stdole.IPictureDisp SynthesisLogoLarge = PictureDispConverter.ToIPictureDisp(new Bitmap(Resource.SynthesisLogo32)); #region DEBUG #if DEBUG stdole.IPictureDisp DebugButtonSmall = PictureDispConverter.ToIPictureDisp(new Bitmap(Resource.Wand16)); stdole.IPictureDisp DebugButtonLarge = PictureDispConverter.ToIPictureDisp(new Bitmap(Resource.Wand32)); #endif #endregion #endregion #region UI Creation #region Setup New Environment and Ribbon Environments environments = MainApplication.UserInterfaceManager.Environments; ExporterEnv = environments.Add("Robot Exporter", "BxD:RobotExporter:Environment", null, SynthesisLogoSmall, SynthesisLogoLarge); Ribbon assemblyRibbon = MainApplication.UserInterfaceManager.Ribbons["Assembly"]; RibbonTab ExporterTab = assemblyRibbon.RibbonTabs.Add("Robot Exporter", "BxD:RobotExporter:RobotExporterTab", ClientID, "", false, true); ControlDefinitions ControlDefs = MainApplication.CommandManager.ControlDefinitions; SetupPanel = ExporterTab.RibbonPanels.Add("Start Over", "BxD:RobotExporter:SetupPanel", ClientID); SettingsPanel = ExporterTab.RibbonPanels.Add("Settings", "BxD:RobotExporter:SettingsPanel", ClientID); FilePanel = ExporterTab.RibbonPanels.Add("File", "BxD:RobotExporter:FilePanel", ClientID); // Reset positioning of panels SettingsPanel.Reposition("BxD:RobotExporter:SetupPanel", false); FilePanel.Reposition("BxD:RobotExporter:SettingsPanel", false); #endregion #region Setup Buttons //Begin Wizard Export WizardExportButton = ControlDefs.AddButtonDefinition("Exporter Setup", "BxD:RobotExporter:BeginWizardExport", CommandTypesEnum.kNonShapeEditCmdType, ClientID, null, "Quickly configure wheel and joint information.", ExportSetupRobotIconSmall, ExportSetupRobotIconLarge); WizardExportButton.OnExecute += BeginWizardExport_OnExecute; WizardExportButton.OnHelp += _OnHelp; SetupPanel.CommandControls.AddButton(WizardExportButton, true); //Set Weight SetWeightButton = ControlDefs.AddButtonDefinition("Robot Weight", "BxD:RobotExporter:SetWeight", CommandTypesEnum.kNonShapeEditCmdType, ClientID, null, "Change the weight of the robot.", WeightRobotIconSmall, WeightRobotIconLarge); SetWeightButton.OnExecute += SetWeight_OnExecute; SetWeightButton.OnHelp += _OnHelp; SettingsPanel.CommandControls.AddButton(SetWeightButton, true); //Save Button SaveButton = ControlDefs.AddButtonDefinition("Save Configuration", "BxD:RobotExporter:SaveRobot", CommandTypesEnum.kNonShapeEditCmdType, ClientID, null, "Save robot configuration to your assembly file for future exporting.", SaveRobotIconSmall, SaveRobotIconLarge); SaveButton.OnExecute += SaveButton_OnExecute; SaveButton.OnHelp += _OnHelp; FilePanel.CommandControls.AddButton(SaveButton, true); //Export Button ExportButton = ControlDefs.AddButtonDefinition("Export to Synthesis", "BxD:RobotExporter:ExportRobot", CommandTypesEnum.kNonShapeEditCmdType, ClientID, null, "Export your robot's model to Synthesis.", ExportRobotIconSmall, ExportRobotIconLarge); ExportButton.OnExecute += ExportButton_OnExecute; ExportButton.OnHelp += _OnHelp; FilePanel.CommandControls.AddButton(ExportButton, true); #endregion #region DEBUG #if DEBUG DebugPanel = ExporterTab.RibbonPanels.Add("Debug", "BxD:RobotExporter:DebugPanel", ClientID); //Selection Test DedectionTestButton = ControlDefs.AddButtonDefinition("Detection Test", "BxD:RobotExporter:DetectionTestButton", CommandTypesEnum.kNonShapeEditCmdType, ClientID, null, null, DebugButtonSmall, DebugButtonLarge); DedectionTestButton.OnExecute += delegate(NameValueMap context) { if (Wizard.WizardUtilities.DetectWheels(Utilities.GUI.SkeletonBase, out List <RigidNode_Base> leftWheels, out List <RigidNode_Base> rightWheels)) { List <RigidNode_Base> allWheels = new List <RigidNode_Base>(); allWheels.AddRange(leftWheels); allWheels.AddRange(rightWheels); SelectNodes(allWheels); } }; DebugPanel.CommandControls.AddButton(DedectionTestButton, true); //UI Test UITestButton = ControlDefs.AddButtonDefinition("UI Test", "BxD:RobotExporter:UITestButton", CommandTypesEnum.kNonShapeEditCmdType, ClientID, null, null, DebugButtonSmall, DebugButtonLarge); UITestButton.OnExecute += delegate(NameValueMap context) { Wizard.WizardForm wizard = new Wizard.WizardForm(); wizard.ShowDialog(); if (Properties.Settings.Default.ShowExportOrAdvancedForm) { Form finishDialog = new Wizard.ExportOrAdvancedForm(); finishDialog.ShowDialog(); } }; DebugPanel.CommandControls.AddButton(UITestButton, true); #endif #endregion #endregion #region Final Environment Setup ExporterEnv.DefaultRibbonTab = "BxD:RobotExporter:RobotExporterTab"; MainApplication.UserInterfaceManager.ParallelEnvironments.Add(ExporterEnv); ExporterEnv.DisabledCommandList.Add(MainApplication.CommandManager.ControlDefinitions["BxD:RobotExporter:Environment"]); #endregion #region Event Handler Assignment MainApplication.UserInterfaceManager.UserInterfaceEvents.OnEnvironmentChange += UIEvents_OnEnvironmentChange; MainApplication.ApplicationEvents.OnActivateDocument += ApplicationEvents_OnActivateDocument; MainApplication.ApplicationEvents.OnDeactivateDocument += ApplicationEvents_OnDeactivateDocument; MainApplication.ApplicationEvents.OnCloseDocument += ApplicationEvents_OnCloseDocument; LegacyInterchange.LegacyEvents.RobotModified += new Action(() => { PendingChanges = true; }); #endregion #endregion Instance = this; }