RVTDocs.com
Namespace: Autodesk.Revit.DB

SketchEditScope

Class
Description:
A SketchEditScope allows an application to create and maintain an editing session for a Sketch.
Remarks:
Start/end of a SketchEditScope will start/end a transaction group. After a SketchEditScope is started, an application can start transactions and edit the sketch. Individual transactions the application creates inside SketchEditScope will not appear in the undo menu. All transactions committed during the edit mode will be merged into a single one which will bear the given name passed into SketchEditScope constructor.
Inheritance Hierarchy:
System.Object
  Autodesk.Revit.DB.EditScope
    Autodesk.Revit.DB.SketchEditScope
Syntax
public class SketchEditScope : EditScope
Examples
public void ReplaceBoundaryLine(Document document)
{
   FilteredElementCollector floorCollector = new FilteredElementCollector(document)
      .WhereElementIsNotElementType()
      .OfCategory(BuiltInCategory.OST_Floors).OfClass(typeof(Floor));

   Floor floor = floorCollector.FirstOrDefault() as Floor;
   if (floor == null)
   {
      TaskDialog.Show("Error", "Document does not contain a floor.");
      return;
   }

   Sketch sketch = document.GetElement(floor.SketchId) as Sketch;

   Line line = null;
   foreach (CurveArray curveArray in sketch.Profile)
   {
      foreach (Curve curve in curveArray)
      {
         line = curve as Line;
         if (line != null)
         {
            break;
         }
      }
      if (line != null)
      {
         break;
      }
   }

   if (line == null)
   {
      TaskDialog.Show("Error", "Sketch does not contain a straight line.");
      return;
   }

   // Start a sketch edit scope
   SketchEditScope sketchEditScope = new SketchEditScope(document, "Replace line with an arc");
   sketchEditScope.Start(sketch.Id);

   using (Transaction transaction = new Transaction(document, "Modify sketch"))
   {
      transaction.Start();

      // Create arc
      XYZ normal = line.Direction.CrossProduct(XYZ.BasisZ).Normalize().Negate();
      XYZ middle = line.GetEndPoint(0).Add(line.Direction.Multiply(line.Length / 2));
      Curve arc = Arc.Create(line.GetEndPoint(0), line.GetEndPoint(1), middle.Add(normal.Multiply(20)));

      // Remove element referenced by the found line. 
      document.Delete(line.Reference.ElementId);

      // Model curve creation automatically puts the curve into the sketch, if sketch edit scope is running.
      document.Create.NewModelCurve(arc, sketch.SketchPlane);

      transaction.Commit();
   }

   sketchEditScope.Commit(new FailuresPreprocessor());
}
SketchEditScope Class Members:
Name Description Inherited From
SketchEditScope Instantiates a SketchEditScope object.
Name Description Inherited From
IsActive Tells if the EditScope is active. In other words, the EditScope has started but not committed/canceled yet. (Inherited from EditScope ) EditScope
IsPermitted Tells if the edit scope is permitted to start. (Inherited from EditScope ) EditScope
IsValidObject Specifies whether the .NET object represents a valid Revit entity. (Inherited from EditScope ) EditScope
Name Description Inherited From
Cancel Cancels the edit scope. (Inherited from EditScope ) EditScope
Commit Finishes the edit scope. (Inherited from EditScope ) EditScope
Dispose (Inherited from EditScope ) EditScope
Equals Determines whether the specified object is equal to the current object. (Inherited from Object ) Object
GetHashCode Serves as the default hash function. (Inherited from Object ) Object
GetType Gets the Type of the current instance. (Inherited from Object ) Object
IsElementWithoutSketch Validates if an element can have a sketch but currently does not.
IsSketchEditingSupported Checks whether sketch can be edited.
IsSketchEditingSupportedForSketchBasedElement Checks whether the element supports sketch editing.
Start Starts a sketch edit mode.
StartWithNewSketch Starts a sketch edit mode for an element which, at this moment, doesn't have a sketch.
ToString Returns a string that represents the current object. (Inherited from Object ) Object