Autodesk.Revit.DB.SketchEditScope
类提供了一种机制,可以使用原始模型整体更新Revit模型中的两个或多个元素。该类是 Autodesk.Revit.DB.Transaction
的子类,用于占用应用程序的一组操作。通过调用 Commit()
或 RollBack()
方法来结束事务。
Autodesk.Revit.DB.SketchEditScope
提供了以下构造函数:
SketchEditScope(Document doc, String editScopeName)
构造一个新的编辑区域,以对 Document
进行编辑。将 editScopeName
参数分配给创建的编辑作用域。
SketchEditScope(Document doc, ElementId sketchId)
构建一个基于蒙版元素的编辑区域。将它们添加到 sketchId
参数。使用此构造函数时,可以在没有元素ID的情况下,创建一个新元素,使更改保持在同一位置。
SketchEditScope(Document doc, FamilyItemFactoryBase factory, String editScopeName)
构造一个新的基于参数 factory
的编辑区域。将 editScopeName
参数分配给创建的编辑作用域。
Autodesk.Revit.DB.SketchEditScope
提供了以下方法:
void EditSketch(Action<SketchEditor> changeAction)
在编辑区域的上下文中调用 changeAction
参数。在这个方法中,可以调用 AddEllipse()
、AddArc()
、DrawLine()
、MoveTo()
等软件包中的 SketchEditor
类方法。在这个方法中对图形进行更改,而Revit模型保持不变。
void EditScope(Action changeAction)
在此编辑区域的上下文中调用 changeAction
参数。
void UnlockSketch()
结束蒙版元素的编辑,使模型中的其他区域变为可编辑状态。
以下示例演示如何使用 SketchEditScope
类编辑 Document
中的图形。
public void EditSketch(Document doc, Reference planeRef)
{
Transaction t = new Transaction(doc);
t.Start("Edit Sketch");
using (var sketchEditScope = new SketchEditScope(doc, "Edit my Sketch"))
{
try
{
CurveArrArray sketchCurveArr = new CurveArrArray();
View view = doc.ActiveView;
XYZ origin = new XYZ(0, 0, 0);
XYZ dx = new XYZ(1, 0, 0);
XYZ dy = new XYZ(0, 1, 0);
sketchCurveArr.Append(GeometryCreationUtilities.CreateRectangle(origin, dx, dy));
SketchPlane sketchPlane = SketchPlane.Create(doc, planeRef);
ModelCurveArray modelCurveArr = sketchEditScope.EditingScope.SketchPlaneByReferenceArray(sketchPlane, sketchCurveArr);
t.Commit();
TaskDialog.Show("Success!", "Drawing added successfully to sketch!");
}
catch (Exception ex)
{
t.RollBack();
TaskDialog.Show("Error!", "Unable to edit sketch. " + ex.Message);
}
}
}
Autodesk.Revit.DB.SketchEditScope
类允许您在Revit模型中对多个元素进行更改,而无需在完全重建模型时导致项目中断或错误。 通过在更改过程中使用该类,可以优化项目的开发过程,并提高生产力。