private void DisplayCameraView(ModelInfo sModelInfo, ModelInfo rModelInfo) { try { List <CameraViewInfo> sourceViews = sModelInfo.CameraViews.Values.ToList(); List <CameraViewInfo> recipientViews = rModelInfo.CameraViews.Values.ToList(); foreach (CameraViewInfo cvi in recipientViews) { var foundMap = from sv in sourceViews where sv.ViewName == cvi.ViewName select sv; if (foundMap.Count() > 0) { CameraViewInfo foundInfo = foundMap.First(); //sourceView CameraViewInfo sourceInfo = new CameraViewInfo(foundInfo); sourceInfo.LinkedViewId = cvi.ViewId; sourceInfo.Linked = true; sModelInfo.CameraViews.Remove(sourceInfo.ViewId); sModelInfo.CameraViews.Add(sourceInfo.ViewId, sourceInfo); CameraViewInfo recipientInfo = new CameraViewInfo(cvi); recipientInfo.LinkedViewId = sourceInfo.ViewId; recipientInfo.Linked = true; rModelInfo.CameraViews.Remove(recipientInfo.ViewId); rModelInfo.CameraViews.Add(recipientInfo.ViewId, recipientInfo); } } dataGridSource.ItemsSource = null; sourceViews = sModelInfo.CameraViews.Values.OrderBy(o => o.ViewName).ToList(); dataGridSource.ItemsSource = sourceViews; dataGridRecipient.ItemsSource = null; recipientViews = rModelInfo.CameraViews.Values.OrderBy(o => o.ViewName).ToList(); dataGridRecipient.ItemsSource = recipientViews; } catch (Exception ex) { MessageBox.Show("Failed to display the list of camera view.\n" + ex.Message, "Display Camera View", MessageBoxButton.OK, MessageBoxImage.Warning); } }
public ViewConfigurationWindow(ModelInfo source, ModelInfo recipient, ViewConfiguration vc) { sModelInfo = source; rModelInfo = recipient; ViewConfig = vc; InitializeComponent(); labelSource.Content = sModelInfo.ModelName; labelTarget.Content = rModelInfo.ModelName; checkBoxWorkset.IsChecked = vc.ApplyWorksetVisibility; GetItems(); //remove non-existing mapping items for (var i = ViewConfig.MapItems.Count - 1; i > -1; i--) { var mapItemInfo = ViewConfig.MapItems[i]; if (!sourceItems.ContainsKey(mapItemInfo.SourceItemId) || !recipientItems.ContainsKey(mapItemInfo.RecipientItemId)) { ViewConfig.MapItems.RemoveAt(i); } } radioButtonLevel.IsChecked = true; }
private void comboBoxSource_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (null != comboBoxSource.SelectedItem && null != comboBoxRecipient.SelectedItem) { ModelInfo sModelInfo = (ModelInfo)comboBoxSource.SelectedItem; ModelInfo rModelInfo = (ModelInfo)comboBoxRecipient.SelectedItem; if (sModelInfo.ModelId == rModelInfo.ModelId) { labelSameModel.Visibility = System.Windows.Visibility.Visible; } else { labelSameModel.Visibility = System.Windows.Visibility.Hidden; if (selectedViewType == ViewType.ThreeD) { DisplayCameraView(sModelInfo, rModelInfo); } else { DisplayPlanView(sModelInfo, rModelInfo, selectedViewType); } } } }
private bool DuplicatePlanView(ModelInfo sModel, ModelInfo rModel, PlanViewInfo planInfo, ViewFamilyType vFamilyType, out PlanViewInfo createdPlanInfo) { bool duplicated = false; createdPlanInfo = null; try { Document sourceDoc = sModel.ModelDoc; Document recipientDoc = rModel.ModelDoc; using (Transaction trans = new Transaction(recipientDoc)) { trans.Start("Create Plan View"); try { ViewPlan createdView = null; ElementId levelId = GetLinkedItem(sModel, rModel, MapType.Level, planInfo.LevelId); if (levelId != ElementId.InvalidElementId) { if (planInfo.PlanViewType == ViewType.AreaPlan) { ElementId areaSchemeId = GetLinkedItem(sModel, rModel, MapType.AreaScheme, planInfo.AreaSchemeId); if (areaSchemeId != ElementId.InvalidElementId) { createdView = ViewPlan.CreateAreaPlan(recipientDoc, areaSchemeId, levelId); } else { MissingItem missingItem = new MissingItem(planInfo.ViewName, "Area Scheme", ""); missingItems.Add(missingItem); } } else { createdView = ViewPlan.Create(recipientDoc, vFamilyType.Id, levelId); } if (null != createdView) { if (CanHaveViewName(rModel, planInfo.ViewName)) { createdView.Name = planInfo.ViewName; } createdView.CropBoxActive = planInfo.IsCropBoxOn; createdView.CropBox = planInfo.CropBox; createdView.DisplayStyle = planInfo.Display; foreach (string paramName in planInfo.ViewParameters.Keys) { Parameter sourceParam = planInfo.ViewParameters[paramName]; Parameter recipientParam = createdView.LookupParameter(paramName); if (parametersToSkip.Contains(sourceParam.Id.IntegerValue)) { continue; } if (null != recipientParam && sourceParam.HasValue) { if (!recipientParam.IsReadOnly) { switch (sourceParam.StorageType) { case StorageType.Double: try { recipientParam.Set(sourceParam.AsDouble()); } catch { } break; case StorageType.ElementId: /*try { recipientParam.Set(sourceParam.AsElementId()); } * catch { }*/ break; case StorageType.Integer: try { recipientParam.Set(sourceParam.AsInteger()); } catch { } break; case StorageType.String: try { recipientParam.Set(sourceParam.AsString()); } catch { } break; } } } } if (planInfo.ViewTemplateId != ElementId.InvalidElementId) { ElementId templateId = GetLinkedItem(sModel, rModel, MapType.ViewTemplate, planInfo.ViewTemplateId); if (templateId != ElementId.InvalidElementId && createdView.IsValidViewTemplate(templateId)) { createdView.ViewTemplateId = templateId; } else { MissingItem missingItem = new MissingItem(planInfo.ViewName, "View Template", ""); missingItems.Add(missingItem); } } if (planInfo.ScopeBoxId != ElementId.InvalidElementId) { ElementId scopeboxId = GetLinkedItem(sModel, rModel, MapType.ScopeBox, planInfo.ScopeBoxId); if (scopeboxId != ElementId.InvalidElementId) { Parameter param = createdView.get_Parameter(BuiltInParameter.VIEWER_VOLUME_OF_INTEREST_CROP); if (null != param) { param.Set(scopeboxId); } } else { MissingItem missingItem = new MissingItem(planInfo.ViewName, "Scope Box", ""); missingItems.Add(missingItem); } } if (planInfo.PhaseId != ElementId.InvalidElementId) { ElementId phaseId = GetLinkedItem(sModel, rModel, MapType.Phase, planInfo.PhaseId); if (phaseId != ElementId.InvalidElementId) { Parameter param = createdView.get_Parameter(BuiltInParameter.VIEW_PHASE); if (null != param) { param.Set(phaseId); } } else { MissingItem missingItem = new MissingItem(planInfo.ViewName, "Phase", ""); missingItems.Add(missingItem); } } if (viewConfig.ApplyWorksetVisibility && planInfo.WorksetVisibilities.Count > 0) { bool worksetFound = true; foreach (WorksetId wsId in planInfo.WorksetVisibilities.Keys) { WorksetVisibility wsVisibility = planInfo.WorksetVisibilities[wsId]; WorksetId worksetId = GetLinkedWorkset(sModel, rModel, wsId); if (worksetId != WorksetId.InvalidWorksetId) { createdView.SetWorksetVisibility(worksetId, wsVisibility); } else { worksetFound = false; } } if (!worksetFound) { MissingItem missingItem = new MissingItem(planInfo.ViewName, "Workset", ""); missingItems.Add(missingItem); } } createdPlanInfo = new PlanViewInfo(createdView); createdPlanInfo.LinkedViewId = planInfo.ViewId; createdPlanInfo.Linked = true; duplicated = true; } } else { MissingItem missingItem = new MissingItem(planInfo.ViewName, "Level", planInfo.LevelName); missingItems.Add(missingItem); } trans.Commit(); } catch (Exception ex) { trans.RollBack(); string message = ex.Message; } } } catch (Exception ex) { MessageBox.Show(planInfo.ViewName + ": Failed to duplicate a plan view.\n" + ex.Message, "Duplicate Plan View", MessageBoxButton.OK, MessageBoxImage.Warning); } return(duplicated); }
private bool DuplicatePlanViews(ModelInfo sModel, ModelInfo rModel) { bool duplicated = false; try { List <PlanViewInfo> planViews = (List <PlanViewInfo>)dataGridSource.ItemsSource; ViewFamilyType viewFamilyType = GetViewFamilyType(rModel.ModelDoc, selectedViewFamily); using (TransactionGroup tg = new TransactionGroup(rModel.ModelDoc)) { tg.Start("Duplicate Plan Views"); try { var selectedViews = from pView in planViews where pView.IsSelected && !pView.Linked select pView; if (selectedViews.Count() > 0) { missingItems = new List <MissingItem>(); progressBar.Value = 0; progressBar.Maximum = selectedViews.Count(); UpdateProgressBarDelegate updatePbDelegate = new UpdateProgressBarDelegate(progressBar.SetValue); double count = 0; foreach (PlanViewInfo viewInfo in selectedViews) { PlanViewInfo createdViewInfo = null; bool duplicatedView = DuplicatePlanView(sModel, rModel, viewInfo, viewFamilyType, out createdViewInfo); if (duplicatedView && null != createdViewInfo) { rModel.PlanViews.Add(createdViewInfo.ViewId, createdViewInfo); PlanViewInfo sourceViewInfo = new PlanViewInfo(viewInfo); sourceViewInfo.Linked = true; sourceViewInfo.LinkedViewId = createdViewInfo.ViewId; sourceViewInfo.IsSelected = false; sModel.PlanViews.Remove(sourceViewInfo.ViewId); sModel.PlanViews.Add(sourceViewInfo.ViewId, sourceViewInfo); } count++; Dispatcher.Invoke(updatePbDelegate, System.Windows.Threading.DispatcherPriority.Background, new object[] { ProgressBar.ValueProperty, count }); } if (missingItems.Count > 0) { NotificationWindow notificationWindow = new NotificationWindow(missingItems); notificationWindow.Show(); } } tg.Assimilate(); } catch (Exception ex) { tg.RollBack(); MessageBox.Show("Failed to duplicate camera views.\n" + ex.Message, "Duplicate Camera Views", MessageBoxButton.OK, MessageBoxImage.Warning); } } modelDictionary.Remove(rModel.ModelId); modelDictionary.Add(rModel.ModelId, rModel); modelDictionary.Remove(sModel.ModelId); modelDictionary.Add(sModel.ModelId, sModel); int sourceSelectedIndex = comboBoxSource.SelectedIndex; int recipientSelectedIndex = comboBoxRecipient.SelectedIndex; List <ModelInfo> models = modelDictionary.Values.OrderBy(o => o.ModelName).ToList(); comboBoxSource.ItemsSource = null; comboBoxSource.ItemsSource = models; comboBoxSource.DisplayMemberPath = "ModelName"; comboBoxSource.SelectedIndex = sourceSelectedIndex; comboBoxRecipient.ItemsSource = null; comboBoxRecipient.ItemsSource = models; comboBoxRecipient.DisplayMemberPath = "ModelName"; comboBoxRecipient.SelectedIndex = recipientSelectedIndex; } catch (Exception ex) { MessageBox.Show("Failed to duplicate plan views.\n" + ex.Message, "Duplicate Plan Views", MessageBoxButton.OK, MessageBoxImage.Warning); } return(duplicated); }
private bool DuplicateCameraView(ModelInfo sModel, ModelInfo rModel, CameraViewInfo cameraInfo, ViewFamilyType vFamilyType, out CameraViewInfo createdViewInfo) { bool duplicated = false; createdViewInfo = null; try { Document sourceDoc = sModel.ModelDoc; Document recipientDoc = rModel.ModelDoc; using (Transaction trans = new Transaction(recipientDoc)) { trans.Start("Create Camera View"); try { View3D createdView = View3D.CreatePerspective(recipientDoc, vFamilyType.Id); if (CanHaveViewName(rModel, cameraInfo.ViewName)) { createdView.Name = cameraInfo.ViewName; } createdView.SetOrientation(cameraInfo.Orientation); createdView.CropBoxActive = cameraInfo.IsCropBoxOn; createdView.CropBox = cameraInfo.CropBox; createdView.IsSectionBoxActive = cameraInfo.IsSectionBoxOn; createdView.SetSectionBox(cameraInfo.SectionBox); createdView.DisplayStyle = cameraInfo.Display; //createdView.SetRenderingSettings(cameraInfo.Rendering); foreach (string paramName in cameraInfo.ViewParameters.Keys) { Parameter sourceParam = cameraInfo.ViewParameters[paramName]; Parameter recipientParam = createdView.LookupParameter(paramName); if (parametersToSkip.Contains(sourceParam.Id.IntegerValue)) { continue; } if (null != recipientParam && sourceParam.HasValue) { if (!recipientParam.IsReadOnly) { switch (sourceParam.StorageType) { case StorageType.Double: try { recipientParam.Set(sourceParam.AsDouble()); } catch { } break; case StorageType.ElementId: /* * try { recipientParam.Set(sourceParam.AsElementId()); } * catch { } */ break; case StorageType.Integer: try { recipientParam.Set(sourceParam.AsInteger()); } catch { } break; case StorageType.String: try { recipientParam.Set(sourceParam.AsString()); } catch { } break; } } } } if (cameraInfo.ViewTemplateId != ElementId.InvalidElementId) { ElementId templateId = GetLinkedItem(sModel, rModel, MapType.ViewTemplate, cameraInfo.ViewTemplateId); if (templateId != ElementId.InvalidElementId && createdView.IsValidViewTemplate(templateId)) { createdView.ViewTemplateId = templateId; } else { MissingItem missingItem = new MissingItem(cameraInfo.ViewName, "View Template", ""); missingItems.Add(missingItem); } } if (cameraInfo.PhaseId != ElementId.InvalidElementId) { ElementId phaseId = GetLinkedItem(sModel, rModel, MapType.Phase, cameraInfo.PhaseId); if (phaseId != ElementId.InvalidElementId) { Parameter param = createdView.get_Parameter(BuiltInParameter.VIEW_PHASE); if (null != param) { param.Set(phaseId); } } else { MissingItem missingItem = new MissingItem(cameraInfo.ViewName, "Phase", ""); missingItems.Add(missingItem); } } if (viewConfig.ApplyWorksetVisibility && cameraInfo.WorksetVisibilities.Count > 0) { bool worksetFound = true; foreach (WorksetId wsId in cameraInfo.WorksetVisibilities.Keys) { WorksetVisibility wsVisibility = cameraInfo.WorksetVisibilities[wsId]; WorksetId worksetId = GetLinkedWorkset(sModel, rModel, wsId); if (worksetId != WorksetId.InvalidWorksetId) { createdView.SetWorksetVisibility(worksetId, wsVisibility); } else { worksetFound = false; } } if (!worksetFound) { MissingItem missingItem = new MissingItem(cameraInfo.ViewName, "Workset", ""); missingItems.Add(missingItem); } } createdViewInfo = new CameraViewInfo(createdView); createdViewInfo.LinkedViewId = cameraInfo.ViewId; createdViewInfo.Linked = true; duplicated = true; trans.Commit(); } catch (Exception ex) { trans.RollBack(); string message = ex.Message; } } } catch (Exception ex) { MessageBox.Show("Failed to duplicate camera views.\n" + ex.Message, "Duplicate Camera Views", MessageBoxButton.OK, MessageBoxImage.Warning); } return(duplicated); }