04.Revit2016二次开发(基础篇)——生成单个轴网

趁着昨天用Python在Dynamo中实现生成一个轴网;今天我尝试了用C#来实现;
我首先根据书上所说的方法(当然,API已经过期):

using(Transaction transcation = new Transcation(doc))
{
      transaction.Start("Create Grid");
      Grid grid = RevitDoc.Create.NewGrid(
Line.CreateBound(new XYZ(0,0,0), new XYZ(10,10,0)));
      grid.Name = "BB";
      transcation.Commit();
}

查询了API,发现API已经发生了变化:

04.Revit2016二次开发(基础篇)——生成单个轴网_第1张图片
NewGrid方法已经Obsolete

于是我在索引中输入Grid,找到Grid Class的Members:

04.Revit2016二次开发(基础篇)——生成单个轴网_第2张图片
Grid Members

我发现这个类中有方法Create方法,这是一个重载函数,若想生成轴网,就传入两个参数,分别是doc和Line;

那么这就很简单了:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.Attributes;
using System.Windows.Forms;
using Application = Autodesk.Revit.ApplicationServices.Application;

//messeageBox;



namespace Revit
{
    [Transaction(TransactionMode.Automatic)]
    [Regeneration(RegenerationOption.Manual)]
    public class ArgumentUsage : IExternalCommand
    {
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            UIApplication uiApplication = commandData.Application;
            Application application = uiApplication.Application;
            UIDocument uiDocument = uiApplication.ActiveUIDocument;
            Document doc = uiDocument.Document;


            using (Transaction trans = new Transaction(doc))
            {
                trans.Start("Create Grid");
                Line line = Line.CreateBound(new XYZ(0, 0, 0), new XYZ(10, 10, 0));
                Grid grid = Grid.Create(doc, line);
                grid.Name = "A";
                trans.Commit();
            }
            return Result.Succeeded;
        }
    }
}

效果图:

04.Revit2016二次开发(基础篇)——生成单个轴网_第3张图片

总结:

  • 还是那句话,API总在变,可是实现的方法逻辑不会改变,思路永远是最重要的;
  • 我还发现,使用ADD-In Manager的时候,要用Manual Mode方式运行,关于Manual和AutoMatic Mode我还是有点不懂。。。

你可能感兴趣的:(04.Revit2016二次开发(基础篇)——生成单个轴网)