Example #1
0
        public void Execute(object parameter)
        {
            var num = SelectionSetManager.NumSelected();

            var currentSet = new List <Element>();

            for (uint i = 0; i < num; i++)
            {
                Element     elem     = null;
                DgnModelRef dngModel = null;

                SelectionSetManager.GetElement(i, ref elem, ref dngModel);

                if (elem != null)
                {
                    currentSet.Add(elem);
                }
            }

            if (currentSet.Count == 0)
            {
                MessageBox.Show("当前未选择任何元素....");
            }
            else
            {
                MessageBox.Show(string.Format("当前已选择 {0} 个元素...", currentSet.Count));
            }
        }
Example #2
0
        public override List <string> GetSelectedObjects()
        {
            var objs = new List <string>();

            if (Model == null)
            {
                return(objs);
            }

            uint        numSelected = SelectionSetManager.NumSelected();
            DgnModelRef modelRef    = Session.Instance.GetActiveDgnModelRef();

            for (uint i = 0; i < numSelected; i++)
            {
                Bentley.DgnPlatformNET.Elements.Element el = null;
                SelectionSetManager.GetElement(i, ref el, ref modelRef);
                objs.Add(el.ElementId.ToString());
            }

            return(objs);
        }
Example #3
0
        private void refreshSelection_()
        {
            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);
                }
            }

            if (selectionSet.Count == 0)
            {
                unselectAll_();
            }
            else
            {
                foreach (Element element in taskElemsToRows_.Keys)
                {
                    if (!selectionSet.ContainsKey(element.GetNativeElementRef()))
                    {
                        unselectElement_(element);
                    }
                }

                foreach (Element el in selectionSet.Values)
                {
                    selectElement_(el);
                }
            }
        }
        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;
            }
        }