using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI.Selection;
using Autodesk.Revit.Attributes;
using System.Linq;
using System.Collections.Generic;
namespace LearnTime
{
//必备写法
[Transaction(TransactionMode.Manual)]
[Journaling(JournalingMode.NoCommandData)]
[Regeneration(RegenerationOption.Manual)]
//[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Automatic)]
public class _06_select : IExternalCommand
{
public Autodesk.Revit.UI.Result Execute(ExternalCommandData revit,
ref string message, ElementSet elements)
{
try
{
//在执行该插件之前,先选择一些元素。本例中选择了四面墙,一条模型线,一条网格线,一个房间,一个房间标签。
//取到当前文档。
UIDocument uidoc = revit.Application.ActiveUIDocument;
Document doc = uidoc.Document;
//取到当前文档的选择集。
Selection selection = uidoc.Selection;
//获取选择项的ID
//List<ElementId> collection = selection.GetElementIds().ToList();
//获取所有选择项(Element),从ElementId转成Element
List<Element> collection = selection.GetElementIds().Select(x => doc.GetElement(x) as Element).ToList();
//Elements collection = selection.Elements;
if (0 == collection.Count)
{
// 如果在执行该例子之前没有选择任何元素,则会弹出提示.
TaskDialog.Show("Revit", "你没有选任何元素.");
}
else
{
String info = "所选元素类型为: ";
foreach (Element elem in collection)
{
info += "\n\t" + elem.GetType().ToString();
}
TaskDialog.Show("Revit", info);
}
}
catch (Exception e)
{
message = e.Message;
return Result.Failed;
}
return Result.Succeeded;
}
}
}