Revit二次开发之旋转元素

mac2024-05-31  26

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Autodesk.Revit.DB; using Autodesk.Revit.UI; using Autodesk.Revit.Attributes; using Autodesk.Revit.UI.Selection; namespace ClassLibrary1 { [Autodesk.Revit.Attributes.Transaction(TransactionMode.Manual)] [Autodesk.Revit.Attributes.Regeneration(RegenerationOption.Manual)] public class GetElement : IExternalCommand { public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { UIDocument uidoc = commandData.Application.ActiveUIDocument; Document doc = uidoc.Document; Selection selection = uidoc.Selection; #region 元素的旋转 Reference reff = selection.PickObject(ObjectType.Element, " 选择一个墙体!"); Element elem = doc.GetElement(reff); Wall wall = elem as Wall; //创建一个旋转轴,旋转轴最好垂直于元素所在的平面 LocationCurve lc = wall.Location as LocationCurve; XYZ p1 = lc.Curve.GetEndPoint(0); XYZ p2 = lc.Curve.GetEndPoint(1); Line axis = Line.CreateBound(new XYZ(p1.X, p1.Y, p1.Z + 100), p1); using (Transaction ts = new Transaction(doc)) { ts.Start("旋转"); ElementTransformUtils.RotateElement(doc, wall.Id, axis, Math.PI / 4); ts.Commit(); } #endregion return Result.Succeeded; } } }

 

最新回复(0)