项目完整代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
namespace BasicCreation
{
[TransactionAttribute(TransactionMode.Manual)]
[RegenerationAttribute(RegenerationOption.Manual)]
public class Class1 : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIDocument uidoc = commandData.Application.ActiveUIDocument;
Document doc = uidoc.Document;
//创建事务t1
Transaction t1 = new Transaction(doc, "创建");//创建事务
t1.Start();
//创建一道结构墙
Wall wall = Wall.Create(doc, Line.CreateBound(new XYZ(), new XYZ(0, 10, 0)), Level.Create(doc, 0).Id, false);//false表示创建结构墙
t1.Commit();
TaskDialog.Show("Tip", "结构墙已创建完成!");
//创建事务t2
Transaction t2 = new Transaction(doc, "复制");
t2.Start();
ElementTransformUtils.CopyElement(doc, wall.Id, new XYZ(30, 30, 30));//将前面创建的墙复制到XYZ(30, 30, 30)
t2.Commit();
TaskDialog.Show("Tip", "结构墙已复制!");
//移动元素
Transaction t3 = new Transaction(doc, "移动");
t3.Start();
ElementTransformUtils.MoveElement(doc, wall.Id, new XYZ(10, 20, 10)); //将墙移动到XYZ(10, 20, 10)
t3.Commit();
TaskDialog.Show("Tip", "结构墙已移动!");
//元素的镜像
Transaction t4 = new Transaction(doc, "镜像");
t4.Start();
ElementTransformUtils.CanMirrorElement(doc, wall.Id);//判断元素是否可以镜像
//Plane p1 = new Plane(new XYZ(0, -1, 0), XYZ.Zero);//Revit
Plane p1 = Plane.CreateByNormalAndOrigin(new XYZ(0, -1, 0), XYZ.Zero);
ElementTransformUtils.MirrorElement(doc, wall.Id, p1);
t4.Commit();
TaskDialog.Show("Tip", "结构墙已镜像!");
return Result.Succeeded;
}
}
}
效果:
参考文献:
周婧祎《Autodesk Revit 2016二次开发入门教程》