private void ExecuteImportRhinoCommand() { BusyIndicatorService.Run(dispatcher => { string fileName = FileDialogService.GetOpenRhinoFileName(); if (fileName == null) { return; } BusyIndicatorService.Notify(string.Concat("Importing ", System.IO.Path.GetFileName(fileName), "...")); var opt = this.OptModel.File; bool scale = this.IsImportExportScaleEnabled; try { dispatcher(() => this.OptModel.File = null); var import = OptRhinoConverter.Converter.RhinoToOpt(fileName, scale); foreach (var texture in import.Textures.Values) { opt.Textures[texture.Name] = texture; } foreach (var mesh in import.Meshes) { opt.Meshes.Add(mesh); } } catch (Exception ex) { Messenger.Instance.Notify(new MessageBoxMessage(fileName, ex)); } dispatcher(() => this.OptModel.File = opt); dispatcher(() => this.OptModel.UndoStackPush("import " + System.IO.Path.GetFileName(fileName))); }); }