// Change an existing directshape to a new geometry without recreating it public void ChangeDS(){ UIDocument uidoc = this.ActiveUIDocument; Document doc = uidoc.Document; List profile = new List(); // first create sphere with 2' radius XYZ center = XYZ.Zero; double radius = 5.0; XYZ profile00 = center; XYZ profilePlus = center + new XYZ(0, radius, 0); XYZ profileMinus = center - new XYZ(0, radius, 0); profile.Add(Autodesk.Revit.DB.Line.CreateBound(profilePlus, profileMinus)); profile.Add(Arc.Create(profileMinus, profilePlus, center + new XYZ(radius, 0, 0))); CurveLoop curveLoop = CurveLoop.Create(profile); SolidOptions options = new SolidOptions(ElementId.InvalidElementId, ElementId.InvalidElementId); options.MaterialId = new ElementId(39301); Frame frame = new Frame(center, XYZ.BasisX, -XYZ.BasisZ, XYZ.BasisY); Solid sphere = GeometryCreationUtilities.CreateRevolvedGeometry(frame, new CurveLoop[] { curveLoop }, 0, 2 * Math.PI, options); IList s = uidoc.Selection.PickObjects(ObjectType.Element,"select"); DirectShape ds = doc.GetElement(s.First()) as DirectShape; using (Transaction t = new Transaction(doc, "isolate view")){ t.Start(); ds.SetShape(new GeometryObject[] { sphere }); t.Commit(); } }