Пример #1
0
        /// <summary>
        /// Фунция возвращает DA, в который непосредственно вставлен указанный DA
        /// Вставленные это:
        /// - С границами внутри указанного
        /// - С Z-Order "выше" указанного
        /// - Которые не могут быть названными вставленными другими da с Z-Order "выше" указанного
        ///
        /// </summary>
        /// <param name="da"></param>
        /// <returns></returns>
        public static EA.DiagramObject GetContainerOfDA(EA.DiagramObject da)
        {
            EA.DiagramObject result = null;

            // Сначала проходимся по элементам диаграммы и смотрим кто укладывается в рамки и Z-order

            foreach (EA.DiagramObject curDA in Context.Designer.CurrentDiagram.DiagramObjects)
            {
                if (curDA.ElementID == da.ElementID)
                {
                    continue;
                }

                if (ElementDesignerHelper.DAFitInside(da, curDA) && da.Sequence < curDA.Sequence)
                {
                    if (result == null)
                    {
                        result = curDA;
                    }
                    else
                    {
                        if (result.Sequence < curDA.Sequence) // если уже кого то отобрали, то новый становится "папой" только если у него больше Zorder
                        {
                            result = curDA;
                        }
                    }
                }
            }


            return(result);
        }
Пример #2
0
        /// <summary>
        /// Фунция возвращает список непосредственных вставленных DA для указанного
        /// Вставленные это:
        /// - С границами внутри указанного
        /// - С Z-Order "выше" указанного
        /// - Которые не могут быть названными вставленными другими da с Z-Order "выше" указанного
        ///
        /// </summary>
        /// <param name="da"></param>
        /// <returns></returns>
        public static List <EA.DiagramObject> GetContainedForDA(EA.DiagramObject da)
        {
            List <EA.DiagramObject> result = new List <EA.DiagramObject>();

            // Сначала проходимся по элементам диаграммы и смотрим кто укладывается в рамки и Z-order
            foreach (EA.DiagramObject curDA in Context.Designer.CurrentDiagram.DiagramObjects)
            {
                if (curDA.ElementID == da.ElementID)
                {
                    continue;
                }
                // если такой элемент есть, проходимся по элементам даграммы ещё раз и смотрим,
                // не может ли он принадлежать ещё кому-то с меньшим Z-order
                if (ElementDesignerHelper.DAFitInside(curDA, da) && da.Sequence > curDA.Sequence)
                {
                    bool hasAnotherParent = false;

                    foreach (EA.DiagramObject curDA1 in Context.Designer.CurrentDiagram.DiagramObjects)
                    {
                        if (curDA1.ElementID == da.ElementID)
                        {
                            continue;
                        }
                        if (ElementDesignerHelper.DAFitInside(curDA, curDA1) && curDA1.Sequence < da.Sequence)
                        {
                            hasAnotherParent = true;
                            break;
                        }
                    }
                    if (!hasAnotherParent)
                    {
                        result.Add(curDA);
                    }
                }
                else
                {
                    //EAHelper.Out("Не Укладывается в рамки и Zorder: ", new EA.DiagramObject[] { curDA });
                }
            }


            return(result);
        }