protected override void OnEnvironmentClose() { Application.UserInterfaceManager.UserInteractionDisabled = true; var loadingBar = new LoadingBar("Closing Export Environment..."); loadingBar.SetProgress(new ProgressUpdate("Saving Robot Data...", 3, 5)); loadingBar.Show(); RobotDataManager.SaveRobotData(OpenAssemblyDocument); loadingBar.Close(); Application.UserInterfaceManager.UserInteractionDisabled = false; if (!RobotDataManager.wasForceQuit) { var exportResult = MessageBox.Show(new Form { TopMost = true }, "The robot configuration has been saved to your assembly document.\nWould you like to export your robot to Synthesis?", "Robot Configuration Complete", MessageBoxButtons.YesNo); if (exportResult == DialogResult.Yes) { UnsupportedComponentsForm.CheckUnsupportedComponents(RobotDataManager.RobotBaseNode.ListAllNodes()); if (ExportForm.PromptExportSettings(RobotDataManager)) { if (RobotDataManager.ExportRobot()) { AnalyticsUtils.LogEvent("Export", "Succeeded"); if (Instance.AddInSettingsManager.OpenSynthesis) { SynthesisUtils.OpenSynthesis(RobotDataManager.RobotName); } } else { AnalyticsUtils.LogEvent("Export", "Cancelled"); } } } } // Re-enable disabled components if (disabledAssemblyOccurrences != null) { InventorUtils.EnableComponents(disabledAssemblyOccurrences); } disabledAssemblyOccurrences = null; advancedJointEditor.DestroyDockableWindow(); guideManager.DestroyDockableWindow(); jointViewKey.DestroyDockableWindow(); AnalyticsUtils.EndSession(); }
private void InitEnvironmentPanels(RibbonTab exporterTab, string clientId, ControlDefinitions controlDefs) { // DRIVETRAIN PANEL driveTrainPanel = exporterTab.RibbonPanels.Add("Drive Train Setup", "BxD:RobotExporter:DriveTrainPanel", clientId); driveTrainTypeButton = controlDefs.AddButtonDefinition("Drive Train\nLayout", "BxD:RobotExporter:SetDriveTrainType", CommandTypesEnum.kNonShapeEditCmdType, clientId, null, "Select the drivetrain type (tank, H-drive, or mecanum).", ToIPictureDisp(new Bitmap(Resources.DrivetrainType32)), ToIPictureDisp(new Bitmap(Resources.DrivetrainType32))); driveTrainTypeButton.OnExecute += context => { AnalyticsUtils.LogPage("Drivetrain Type Editor"); new DrivetrainLayoutForm(RobotDataManager).ShowDialog(); }; driveTrainPanel.CommandControls.AddButton(driveTrainTypeButton, true); drivetrainWeightButton = controlDefs.AddButtonDefinition("Drive Train\nWeight", "BxD:RobotExporter:SetDriveTrainWeight", CommandTypesEnum.kNonShapeEditCmdType, clientId, null, "Assign the weight of the drivetrain.", ToIPictureDisp(new Bitmap(Resources.RobotWeight32)), ToIPictureDisp(new Bitmap(Resources.RobotWeight32))); drivetrainWeightButton.OnExecute += context => { AnalyticsUtils.LogPage("Drivetrain Weight Editor"); RobotDataManager.PromptRobotWeight(); }; driveTrainPanel.CommandControls.AddButton(drivetrainWeightButton, true); // JOINT PANEL jointPanel = exporterTab.RibbonPanels.Add("Joint Setup", "BxD:RobotExporter:JointPanel", clientId); advancedEditJointButton = controlDefs.AddButtonDefinition("Advanced Editor", "BxD:RobotExporter:AdvancedEditJoint", CommandTypesEnum.kNonShapeEditCmdType, clientId, null, "Joint editor for advanced users.", ToIPictureDisp(new Bitmap(Resources.JointEditor32)), ToIPictureDisp(new Bitmap(Resources.JointEditor32))); advancedEditJointButton.OnExecute += context => { if (advancedJointEditor.Visible) { return; } AnalyticsUtils.LogPage("Advanced Joint Editor"); advancedJointEditor.Visible = true; jointEditorForm.Visible = false; }; jointPanel.SlideoutControls.AddButton(advancedEditJointButton); editJointButton = controlDefs.AddButtonDefinition("Edit Joints", "BxD:RobotExporter:EditJoint", CommandTypesEnum.kNonShapeEditCmdType, clientId, null, "Edit existing joints.", ToIPictureDisp(new Bitmap(Resources.JointEditor32)), ToIPictureDisp(new Bitmap(Resources.JointEditor32))); editJointButton.OnExecute += context => { if (!jointEditorForm.HasJoints()) { var result = MessageBox.Show("No rotational or slider joints detected in the assembly! Add joints to your robot by using the \"Joint\" button under \"Assemble\" and restart the robot export environment to edit joints.\n\n" + "Would you like to view a video tutorial on adding joints to your assembly?", "No Joints Found", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation); if (result.Equals(DialogResult.Yes)) { System.Diagnostics.Process.Start("https://youtu.be/fY3Vdkh8L0Y"); } return; } if (jointEditorForm.Visible) { jointEditorForm.Activate(); } else { AnalyticsUtils.LogPage("Joint Editor"); UnsupportedComponentsForm.CheckUnsupportedComponents(RobotDataManager.RobotBaseNode.ListAllNodes()); jointEditorForm.PreShow(); jointEditorForm.Show(); advancedJointEditor.Visible = false; } }; jointPanel.CommandControls.AddButton(editJointButton, true); // PRECHECK PANEL precheckPanel = exporterTab.RibbonPanels.Add("Export Precheck", "BxD:RobotExporter:ChecklistPanel", clientId); dofButton = controlDefs.AddButtonDefinition("Toggle Joint\nViewer", "BxD:RobotExporter:JointViewer", CommandTypesEnum.kNonShapeEditCmdType, clientId, null, "View status of all joints.", ToIPictureDisp(new Bitmap(Resources.Guide32)), ToIPictureDisp(new Bitmap(Resources.Guide32))); dofButton.OnExecute += context => { jointViewKey.Visible = !jointViewKey.Visible; HighlightManager.DisplayJointHighlight = jointViewKey.Visible; if (jointViewKey.Visible) { AnalyticsUtils.LogPage("Joint View"); } }; precheckPanel.CommandControls.AddButton(dofButton, true); // ADD-IN SETTINGS PANEL addInSettingsPanel = exporterTab.RibbonPanels.Add("Add-In", "BxD:RobotExporter:AddInSettings", clientId); settingsButton = controlDefs.AddButtonDefinition("Add-In Settings", "BxD:RobotExporter:Settings", CommandTypesEnum.kNonShapeEditCmdType, clientId, null, "Configure add-in settings.", ToIPictureDisp(new Bitmap(Resources.Gears16)), ToIPictureDisp(new Bitmap(Resources.Gears32))); settingsButton.OnExecute += context => { AnalyticsUtils.LogPage("Exporter Settings"); new ExporterSettingsForm().ShowDialog(); }; addInSettingsPanel.CommandControls.AddButton(settingsButton, true); }