Revit二次开发入门——创建外部命令

1、新建一个类库工程
2、引用Revit接口定义文件 RevitAPI.DLL和RevitAPIUI.DLL
将复制本地属性改为 False
3、命名空间引用
4、为命名类加属性
5、新建类从IExternalCommand派生
6、重载Execute()方法
7、在Execute中添加代码来实现命令功能
引入RevitAPI ,RevitAPIUI后,属性中复制本地改为False.
[Transaction(TransactionMode.Manual)]

外部命令中Excute函数的定义

public interface IEternalCommand
{
    public Autodesk.Revit.UI.Result Execute(
    Autodesk.Revit.UI.ExternalCommandData commandData,
    ref string message,
    Autodesk.Revit.DB.ElementSet elements)
}

以下代码可运行

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.Attributes;
using System.Windows.Forms;

namespace HelloWorld
{

    [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
    [Regeneration(RegenerationOption.Manual)]
    public class ArgumentUsage : IExternalCommand
    {

        public Autodesk.Revit.UI.Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            //  TaskDialog.Show("Revit","HelloWorld");

            // return Autodesk.Revit.UI.Result.Succeeded;
            // MessageBox.Show("HelloWorld");
            UIApplication uiApp = commandData.Application;

            Autodesk.Revit.ApplicationServices.Application app = uiApp.Application;
            Document doc = uiApp.ActiveUIDocument.Document;
            string strAppInfo = app.VersionBuild + ";" + app.VersionName + ";" + app.VersionNumber;
            Autodesk.Revit.UI.Selection.Selection sel = uiApp.ActiveUIDocument.Selection;
            foreach (Element elem in sel.Elements)
            {
                elements.Insert(elem);
            }
            message = "当前选择集中包含如下对象";
            return Result.Failed;
        }

    }
}

你可能感兴趣的:(revit)