private void Addin_SelectionChangedEvent( AddIn sender, AddIn.SelectionChangedEventArgs eventArgs) { try { if (eventArgs.Action == lastSelectionAction_ && eventArgs.FilePosition == lastFilePos_) { return; } switch (eventArgs.Action) { case AddIn.SelectionChangedEventArgs.ActionKind.SetEmpty: unselectAll_(); break; case AddIn.SelectionChangedEventArgs.ActionKind.Remove: { Element element = ElementHelper.getElement(eventArgs); unselectElement_(element); break; } case AddIn.SelectionChangedEventArgs.ActionKind.New: { Element element = ElementHelper.getElement(eventArgs); selectElement_(element); break; } } //TaskSelection.ResetBindings(); OnPropertyChanged(NP.TaskSelection); } catch (Exception ex) { ex.AddToMessageCenter(); } finally { lastSelectionAction_ = eventArgs.Action; lastFilePos_ = eventArgs.FilePosition; } }
private void Addin_SelectionChangedEvent( AddIn sender, AddIn.SelectionChangedEventArgs eventArgs) { //if (eventArgs.Action == lastSelectionAction_ && // eventArgs.FilePosition == lastFilePos_) //{ // return; //} try { switch ((int)eventArgs.Action) { case (int)AddIn.SelectionChangedEventArgs.ActionKind.SetEmpty: unselectAll_(); break; case (int)AddIn.SelectionChangedEventArgs.ActionKind.SetChanged: case 7: // ActionKind.Remove case 5: // ActionKind.New: case (int)AddIn.SelectionChangedEventArgs.ActionKind.DragNew: { refreshSelection_(); break; } } OnPropertyChanged(NP.TaskSelection); } catch (Exception ex) { // todo обработать ex.AddToMessageCenter(); } finally { lastSelectionAction_ = eventArgs.Action; lastFilePos_ = eventArgs.FilePosition; } }
private void Addin_SelectionChangedEvent( AddIn sender, AddIn.SelectionChangedEventArgs eventArgs) { if (eventArgs.Action == lastSelectionAction_ && eventArgs.FilePosition == lastFilePos_) { return; } Dictionary <IntPtr, Element> selectionSet = new Dictionary <IntPtr, Element>(); uint nums = SelectionSetManager.NumSelected(); for (uint i = 0; i < nums; ++i) { Element element = null; DgnModelRef modelRef = null; if (StatusInt.Success == SelectionSetManager.GetElement(i, ref element, ref modelRef) && element.ElementType == MSElementType.CellHeader && !selectionSet.ContainsKey(element.GetNativeElementRef())) { selectionSet.Add(element.GetNativeElementRef(), element); } } try { switch ((int)eventArgs.Action) { case (int)AddIn.SelectionChangedEventArgs.ActionKind.SetEmpty: tasks_.Clear(); TaskSelection.Clear(); previewTranCon_.Reset(); break; case (int)AddIn.SelectionChangedEventArgs.ActionKind.SetChanged: { // remove unselected foreach (IntPtr ptr in tasks_.Keys) { if (!selectionSet.ContainsKey(ptr)) { tasks_.Remove(ptr); } } // add new TaskSelection.RaiseListChangedEvents = false; foreach (Element element in selectionSet.Values) { #if DEBUG //BCOM.Element comEl = ElementHelper.getElementCOM(element); //if (comEl.IsCompundCell()) //{ // var cell = comEl.AsCellElement(); // var cross = ElementHelper.createCrossRound(10, cell.Origin); // var pointEl = ElementHelper.createCircle(10, cell.Origin); // previewTranCon_.AppendCopyOfElement(pointEl); // previewTranCon_.AppendCopyOfElement(cross); //} #endif IntPtr elementRef = element.GetNativeElementRef(); PenetrVueTask task; if (PenetrVueTask.getFromElement(element, out task) && !tasks_.ContainsKey(elementRef)) { Logger.Log.Info($"Выбор объекта заадния {task.ToString()}"); tasks_.Add(elementRef, task); TaskSelection.Add(task); } } TaskSelection.RaiseListChangedEvents = true; break; } case 7: // ActionKind.Remove { foreach (IntPtr ptr in tasks_.Keys) { if (tasks_.ContainsKey(ptr)) { TaskSelection.Remove(tasks_[ptr]); tasks_.Remove(ptr); } } break; } case 5: // ActionKind.New: { TaskSelection.RaiseListChangedEvents = false; foreach (Element element in selectionSet.Values) { PenetrVueTask task; if (PenetrVueTask.getFromElement(element, out task)) { tasks_.Add(element.GetNativeElementRef(), task); TaskSelection.Add(task); } } TaskSelection.RaiseListChangedEvents = true; break; } } TaskSelection.ResetBindings(); OnPropertyChanged(NP.TaskSelection); } catch (Exception ex) { ex.AddToMessageCenter(); } finally { lastSelectionAction_ = eventArgs.Action; lastFilePos_ = eventArgs.FilePosition; } }
private void Addin_SelectionChangedEvent( AddIn sender, AddIn.SelectionChangedEventArgs eventArgs) { try { if (eventArgs.Action == lastSelectionAction_ && eventArgs.FilePosition == lastFilePos_) { return; } switch (eventArgs.Action) { case AddIn.SelectionChangedEventArgs.ActionKind.SetEmpty: previewTranCon_.Reset(); TaskTable.Clear(); taskElemsToRows_.Clear(); rowsToTasks_.Clear(); break; case AddIn.SelectionChangedEventArgs.ActionKind.Remove: { Element element = ElementHelper.getElement(eventArgs); if (taskElemsToRows_.ContainsKey(element)) { DataRow row = taskElemsToRows_[element]; rowsToTasks_.Remove(row); TaskTable.Rows.Remove(row); taskElemsToRows_.Remove(element); } break; } case AddIn.SelectionChangedEventArgs.ActionKind.New: { Element element = ElementHelper.getElement(eventArgs); OpeningTask task; if (OpeningHelper.getFromElement(element, AttrsXDoc, out task) && !taskElemsToRows_.ContainsKey(element)) { DataRow row = TaskTable.Rows.Add(); row.SetField(FieldName.HEIGHT, task.Height); row.SetField(FieldName.WIDTH, task.Width); row.SetField(FieldName.DEPTH, task.Depth); foreach (var pair in task.DataGroupPropsValues) { Sp3dToDataGroupMapProperty dgProp = pair.Key; if (dgProp.Key == FieldName.CODE) { row.SetField(FieldName.CODE, pair.Value); } else if (TaskTable.Columns.Contains(dgProp.TargetName)) { row.SetField(dgProp.TargetName, pair.Value); } } taskElemsToRows_.Add(element, row); rowsToTasks_.Add(row, task); } break; } case AddIn.SelectionChangedEventArgs.ActionKind.SetChanged: { if (lastSelectionAction_ != AddIn.SelectionChangedEventArgs.ActionKind.New) { break; } //TaskSelection.RaiseListChangedEvents = false; //foreach (PenetrVueTask task in tasksBuf_.Values) //{ // //Logger.Log.Info($"Выбор объекта заадния {task.ToString()}"); // TaskSelection.Add(task); //} //tasksBuf_.Clear(); //TaskSelection.RaiseListChangedEvents = true; break; } } //TaskSelection.ResetBindings(); OnPropertyChanged(NP.TaskSelection); } catch (Exception ex) { // todo обработать ex.AddToMessageCenter(); } finally { lastSelectionAction_ = eventArgs.Action; lastFilePos_ = eventArgs.FilePosition; } }