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;
}
}
}