示例#1
0
        public static BCOM.Element getElementCOM(AddIn.SelectionChangedEventArgs eventArgs)
        {
            BCOM.ModelReference activeModel =
                App.MdlGetModelReferenceFromModelRefP(eventArgs.DgnModelRef.GetNative());

            var cache = activeModel.ElementCacheContainingFilePosition(
                (int)eventArgs.FilePosition);

            int index = cache.IndexFromFilePosition((int)eventArgs.FilePosition);

            return(cache.GetElement(index));
        }
示例#2
0
        private void Instance_SelectionChangedEvent(
            AddIn sender, AddIn.SelectionChangedEventArgs eventArgs)
        {
            try
            {
                switch (eventArgs.Action)
                {
                case AddIn.SelectionChangedEventArgs.ActionKind.SetEmpty:
                    penTaskSelection.Clear();
                    bindSource.Clear();
                    previewTranContainer.Reset();
                    break;

                case AddIn.SelectionChangedEventArgs.ActionKind.Remove:
                {
                    Element element = ElementHelper.getElement(eventArgs);

                    if (penTaskSelection.ContainsKey(element.ElementRef))
                    {
                        bindSource.Remove(penTaskSelection[element.ElementRef]);
                        penTaskSelection.Remove(element.ElementRef);
                    }
                    break;
                }

                case AddIn.SelectionChangedEventArgs.ActionKind.New:
                {
                    Element element = ElementHelper.getElement(eventArgs);

                    PenetrTask task;
                    if (PenetrTask.getFromElement(element, out task))
                    {
                        if (penTaskSelection.ContainsKey(element.ElementRef))
                        {
                            penTaskSelection.Remove(element.ElementRef);
                            bindSource.Remove(task);
                        }
                        penTaskSelection.Add(element.ElementRef, task);
                        bindSource.Add(task);
                    }

                    break;
                }
                }
            }
            catch (Exception ex)
            {
                // todo обработать
                MessageBox.Show(ex.Message, "Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
示例#3
0
        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;
            }
        }
示例#4
0
        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;
            }
        }
示例#5
0
 public static Element getElement(AddIn.SelectionChangedEventArgs eventArgs)
 {
     return(getElement(getElementCOM(eventArgs)));
 }
示例#6
0
        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;
            }
        }
示例#7
0
        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;
            }
        }