using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnTime
{
//必备写法
[Transaction(TransactionMode.Manual)]
[Journaling(JournalingMode.NoCommandData)]
[Regeneration(RegenerationOption.Manual)]
class _17_CreateModelCurve : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIDocument uiDoc = commandData.Application.ActiveUIDocument;
Document doc = commandData.Application.ActiveUIDocument.Document;
// 在族文档中找到名字为"参照标高"的标高
FilteredElementCollector collector = new FilteredElementCollector(doc);
collector = collector.OfCategory(BuiltInCategory.OST_Levels);
var levelElements = from element in collector where element.Name == "参照标高" select element;
List<Autodesk.Revit.DB.Element> levels = levelElements.ToList<Autodesk.Revit.DB.Element>();
if (levels.Count <= 0)
return Result.Failed;
Level refLevel = levels[0] as Level;
// 创建一条几何直线,一个基于标高的草图平面,然后在这个草图平面上创建一条模型线.
using (Transaction trans = new Transaction(doc, "Create model line."))
{
trans.Start();
Line line = Line.CreateBound(XYZ.Zero, new XYZ(10, 10, 0));
SketchPlane sketchPlane = SketchPlane.Create(doc, refLevel.Id);
ModelCurve modelLine = doc.FamilyCreate.NewModelCurve(line, sketchPlane);
trans.Commit();
}
return Result.Succeeded;
}
}
}