public void ChangeColumnLocation(){ UIDocument uidoc = this.ActiveUIDocument; Document doc = uidoc.Document; DTPickFilter filterLines = new DTPickFilter(); Reference selLine = uidoc.Selection.PickObject(ObjectType.Element,filterLines, "Select Line"); Reference selColumn = uidoc.Selection.PickObject(ObjectType.Element, "Select Element"); Element eleCrv = doc.GetElement(selLine.ElementId); Element eleColumn = doc.GetElement(selColumn.ElementId); //line location curve LocationCurve locCrv = eleCrv.Location as LocationCurve; Curve crv = locCrv.Curve; XYZ lineStart = crv.GetEndPoint(0); XYZ lineEnd = crv.GetEndPoint(1); //column Location curve LocationCurve colLocCrv = eleColumn.Location as LocationCurve; Curve colCrv = colLocCrv.Curve; double dist1 = colCrv.GetEndPoint(0).DistanceTo(lineStart); double dist2 = colCrv.GetEndPoint(0).DistanceTo(lineEnd); using (Transaction t = new Transaction(doc)){ t.Start("Move column"); if (lineStart.Z <lineEnd.Z){ Line newColumnLine = Line.CreateBound(lineStart, lineEnd); colLocCrv.Curve = newColumnLine; } else { Line reverseLine = Line.CreateBound(lineEnd,lineStart); colLocCrv.Curve = reverseLine; } t.Commit(); }//close using }