public LiteExporterForm() { InitializeComponent(); LoadingAnimation.Image = JointResolver.Properties.Resources.LoadAnimationNewLogo; Instance = this; LoadingAnimation.WaitOnLoad = true; ExporterWorker.WorkerReportsProgress = true; ExporterWorker.WorkerSupportsCancellation = true; ExporterWorker.DoWork += ExporterWorker_DoWork; ExporterWorker.RunWorkerCompleted += ExporterWorker_RunWorkerCompleted; Shown += delegate(object sender, EventArgs e) { if (InventorManager.Instance == null) { MessageBox.Show("Couldn't detect a running instance of Inventor."); return; } InventorManager.Instance.UserInterfaceManager.UserInteractionDisabled = true; Exporting = true; OnStartExport(); ExporterWorker.RunWorkerAsync(); }; FormClosing += delegate(object sender, FormClosingEventArgs e) { InventorManager.Instance.UserInterfaceManager.UserInteractionDisabled = false; }; }
/// <summary> /// Export a robot from Inventor /// </summary> public bool ExportMeshes(bool warnUnsaved = false) { if (SkeletonBase != null && warnUnsaved && !WarnUnsaved()) { return(false); } try { var exporterThread = new Thread(() => { #if LITEMODE liteExporter = new LiteExporterForm(); liteExporter.ShowDialog(); #else exporter = new ExporterForm(PluginSettings); exporter.ShowDialog(); #endif }); exporterThread.SetApartmentState(ApartmentState.STA); exporterThread.Start(); exporterThread.Join(); GC.Collect(); } catch (InvalidComObjectException) { } catch (TaskCanceledException) { return(true); } catch (Exception e) { MessageBox.Show(e.Message); return(false); } List <RigidNode_Base> nodes = SkeletonBase.ListAllNodes(); for (int i = 0; i < Meshes.Count; i++) { ((OGL_RigidNode)nodes[i]).loadMeshes(Meshes[i]); } RobotSaveAs(NameRobotForm.NameMode.Initial); ReloadPanels(); return(true); }