예제 #1
0
        /// <summary>
        /// Get the DiagramObject for the given Element
        /// </summary>
        /// <param name="diagram">The diagram to search for the DiagramObject</param>
        /// <param name="element">The element.</param>
        /// <returns>The diagram object or null if not found.</returns>
        public static EAAPI.DiagramObject GetDiagramObjectForElement(this EAAPI.Diagram diagram, EAAPI.Element element)
        {
            EAAPI.DiagramObject result = null;

            for (short counter = 0; counter < diagram.DiagramObjects.Count; counter++)
            {
                EAAPI.DiagramObject diagramObject = diagram.DiagramObjects.GetAt(counter) as EAAPI.DiagramObject;

                if (diagramObject.ElementID == element.ElementID)
                {
                    result = diagramObject;
                    break;
                }
            }

            return(result);
        }
예제 #2
0
        /// <summary>
        /// Add a model element to a diagram.
        /// </summary>
        /// <param name="diagram">The diagram.</param>
        /// <param name="element">The element to add.</param>
        public static void AddElement(this EAAPI.Diagram diagram, EAAPI.Element element)
        {
            for (short i = 0; i < diagram.DiagramObjects.Count; i++)
            {
                EAAPI.DiagramObject existingDiagramObject = diagram.DiagramObjects.GetAt(i) as EAAPI.DiagramObject;
                if (existingDiagramObject.ElementID == element.ElementID)
                {
                    // Element still on diagram, return
                    return;
                }
            }

            EAAPI.DiagramObject diagramObject = (EAAPI.DiagramObject)diagram.DiagramObjects.AddNew("", "");

            diagramObject.ElementID = element.ElementID;

            if (!diagramObject.Update())
            {
                Debug.WriteLine(diagramObject.GetLastError());
            }
            diagram.Update();
        }
        public static Point GetLabelOffset(this EAAPI.DiagramObject portDiagramObject)
        {
            Point result = new Point();

            string style = portDiagramObject.Style.ToString();

            char[] semicolonSperator = { ';' };

            string[] styleTokens = style.Split(semicolonSperator);

            string labelToken = styleTokens.FirstOrDefault(token => token.StartsWith("LBL="));

            if (!string.IsNullOrEmpty(labelToken))
            {
                labelToken = labelToken.Replace("LBL=", "");

                char[] colonSeparator = { ':' };

                string[] labelPropertyTokens = labelToken.Split(colonSeparator);

                string cx = labelPropertyTokens.FirstOrDefault(cxToken => cxToken.StartsWith("OX="))?.Replace("OX=", "");

                string cy = labelPropertyTokens.FirstOrDefault(cxToken => cxToken.StartsWith("OY="))?.Replace("OY=", "");

                int resultX = 0;

                int.TryParse(cx, out resultX);

                int resultY = 0;

                int.TryParse(cy, out resultY);

                result.X = resultX;
                result.Y = resultY;
            }

            return(result);
        }