Sketch |
The SketchEditScope type exposes the following members.
| Name | Description | |
|---|---|---|
| SketchEditScope | Instantiates a SketchEditScope object. |
| Name | Description | |
|---|---|---|
| IsActive |
Tells if the EditScope is active. In other words, the EditScope has started but not committed/canceled yet.
(Inherited from EditScope) | |
| IsPermitted |
Tells if the edit scope is permitted to start.
(Inherited from EditScope) | |
| IsValidObject |
Specifies whether the .NET object represents a valid Revit entity.
(Inherited from EditScope) |
| Name | Description | |
|---|---|---|
| Cancel |
Cancels the edit scope.
(Inherited from EditScope) | |
| Commit |
Finishes the edit scope.
(Inherited from EditScope) | |
| Dispose | (Inherited from EditScope) | |
| Equals | Determines whether the specified object is equal to the current object. (Inherited from Object) | |
| GetHashCode | Serves as the default hash function. (Inherited from Object) | |
| GetType | Gets the Type of the current instance. (Inherited from 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) |
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()); }
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()); }