/// <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); }
/// <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); }