Select the original element as explained here: create Instances of Selected object Revit Api
Retrieve the element's location as follows:
Location location = originalElement.Location;
LocationPoint locationPoint = location as LocationPoint;
if (locationPoint != null)
{
XYZ originalPoint = location.Point;
}
Select a location for the new element as follows:
UIDocument uidoc = this.ActiveUIDocument;
XYZ newPoint = uidoc.Selection.PickPoint("Select a location for the element");
Create the translation vector:
XYZ translationVector = newPoint - originalPoint;
Copy the element:
Document doc = uidoc.Document;
ICollection<ElementId> copiedElementIds = ElementTransformUtils.CopyElement(doc, originalElement.Id, translationVector);
According to the API docs, the reason an ICollection is returned as opposed to a single ElementId is: "More than one element may be created due to dependencies."