예제 #1
0
        /// <summary>
        /// Функция возвращает размер элемента, соответствующий размеру элемента на библиотечной диаграмме
        /// </summary>
        /// <returns></returns>
        public static ExecResult <Size> GetElementSizeOnLibDiagram(EA.Element element)
        {
            ExecResult <Size> result = new ExecResult <Size>()
            {
                code = -1
            };

            try
            {
                // лезем от элемента вверх по дереву пакетов, пока не достигнем верха либо не достигнем пакета без тэга DP_Library после нахождения такого тэга
                EA.Package curPackage = EARepository.GetPackageByID(element.PackageID);
                bool       foundPackageAfterDPLibrary = false;
                bool       foundDPLibraryPackage      = false;

                while (curPackage != null & !(foundPackageAfterDPLibrary))
                {
                    // Проходимся по диаграммам пакета
                    foreach (EA.Diagram curDiagram in curPackage.Diagrams)
                    {
                        // ... В в диаграмме - по объектам
                        foreach (EA.DiagramObject diagramObject in curDiagram.DiagramObjects)
                        {
                            // если объект на диаграмме - наш объект, то срисовываем его размеры как дефолтные
                            if (diagramObject.ElementID == element.ElementID)
                            {
                                Size curSize = ElementDesignerHelper.GetSize(diagramObject);
                                result.value = curSize;
                                result.code  = 0;
                                return(result);
                            }
                        }

                        if (curPackage.ParentID != 0)
                        {
                            curPackage = EARepository.GetPackageByID(curPackage.ParentID);
                        }
                        else
                        {
                            curPackage = null;
                        }
                        if (LibraryHelper.IsLibrary(curPackage.Element))
                        {
                            foundDPLibraryPackage = true;
                        }
                        if (!LibraryHelper.IsLibrary(curPackage.Element) && foundDPLibraryPackage)
                        {
                            foundPackageAfterDPLibrary = true;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                result.setException(ex);
            }

            return(result);
        }
예제 #2
0
        /// <summary>
        /// Функция передвигает DA по указанному вектору (т.е. смещает на размеры точки)
        /// </summary>
        /// <param name="diagramObject"></param>
        /// <param name="newStart"></param>
        /// <param name="doUpdate"></param>
        public static void ApplyVectorToDA(EA.DiagramObject diagramObject, Point vector, bool doUpdate = true)
        {
            Size diagramObjectSize = ElementDesignerHelper.GetSize(diagramObject);

            diagramObject.left   += vector.X;
            diagramObject.right  += vector.X;
            diagramObject.top    += vector.Y;
            diagramObject.bottom += vector.Y;
            if (doUpdate)
            {
                diagramObject.Update();
            }
        }
예제 #3
0
        /// <summary>
        /// Функция передвигает DA в указанную точку
        /// </summary>
        /// <param name="diagramObject"></param>
        /// <param name="newStart"></param>
        /// <param name="doUpdate"></param>
        public static void ApplyPointToDA(EA.DiagramObject diagramObject, Point newStart, bool doUpdate = true)
        {
            Size diagramObjectSize = ElementDesignerHelper.GetSize(diagramObject);

            diagramObject.left   = newStart.X;
            diagramObject.right  = diagramObject.left + diagramObjectSize.Width;
            diagramObject.top    = newStart.Y;
            diagramObject.bottom = diagramObject.top - diagramObjectSize.Height;
            if (doUpdate)
            {
                diagramObject.Update();
            }
        }