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()); }