public void Execute(IPCBIWindow parent) { IStep step = parent.GetCurrentStep(); if (step == null) { return; } double tolerance = 1; List <IODBObject> selection = step.GetSelectedElements(); foreach (IODBObject selObj in selection) { IODBLayer layer = (IODBLayer)step.GetLayer(selObj.GetParentLayerName()); if (selObj.Type == IObjectType.Line) { ILineSpecificsD line = (ILineSpecificsD)selObj.GetSpecificsD(); List <IObject> startPos = layer.GetAllObjectsOnPosition(line.Start.ToPointF()); bool setColor = true; setColor = CheckConnection(tolerance, selObj, line.Start, startPos, setColor); if (setColor) { List <IObject> endPos = layer.GetAllObjectsOnPosition(line.End.ToPointF()); setColor = CheckConnection(tolerance, selObj, line.End, endPos, setColor); } if (setColor) { selObj.ObjectColorTemporary(Color.Aquamarine); } } else if (selObj.Type == IObjectType.Arc) { IArcSpecificsD arc = (IArcSpecificsD)selObj.GetSpecificsD(); List <IObject> startPos = layer.GetAllObjectsOnPosition(arc.Start.ToPointF()); bool setColor = true; setColor = CheckConnection(tolerance, selObj, arc.Start, startPos, setColor); if (setColor) { List <IObject> endPos = layer.GetAllObjectsOnPosition(arc.End.ToPointF()); setColor = CheckConnection(tolerance, selObj, arc.End, endPos, setColor); } if (setColor) { selObj.ObjectColorTemporary(Color.Aquamarine); } } } step.ClearSelection(); }