[Transaction(TransactionMode.Manual)]
[Regeneration(RegenerationOption.Manual)]
public class Document_Selection : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string messages, ElementSet elements)
{
try
{
UIDocument uidoc = commandData.Application.ActiveUIDocument;
// 得到选择的对象
Selection selection = uidoc.Selection;
ElementSet collection = selection.Elements;
if ( 0 == collection.Size)
{
TaskDialog.Show( " Revit " , " You haven't selected any elements " );
}
else
{
string info = " Ids of selected elements in the document are: " ;
foreach (Element elem in collection)
{
info += " \n\t " + elem.Id.IntegerValue;
}
TaskDialog.Show( " Revit " , info);
}
// 得到当前文档中门的ID
ElementClassFilter familyInstanceFilter = new ElementClassFilter( typeof (FamilyInstance));
ElementCategoryFilter doorsCategoryfilter = new ElementCategoryFilter(BuiltInCategory.OST_Doors);
LogicalAndFilter doorsInstancefilter = new LogicalAndFilter(familyInstanceFilter, doorsCategoryfilter);
FilteredElementCollector collector = new FilteredElementCollector(uidoc.Document);
ICollection < ElementId > doors = collector.WherePasses(doorsInstancefilter).ToElementIds();
string prompt = " the ids of the doors in the current document are: " ;
foreach (ElementId id in doors)
{
prompt += " \n\t " + id.IntegerValue;
}
TaskDialog.Show( " Revit " , prompt);
}
catch (Exception e)
{
messages = e.Message;
return Result.Failed;
}
return Result.Succeeded;
}
}
[Regeneration(RegenerationOption.Manual)]
public class Document_Selection : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string messages, ElementSet elements)
{
try
{
UIDocument uidoc = commandData.Application.ActiveUIDocument;
// 得到选择的对象
Selection selection = uidoc.Selection;
ElementSet collection = selection.Elements;
if ( 0 == collection.Size)
{
TaskDialog.Show( " Revit " , " You haven't selected any elements " );
}
else
{
string info = " Ids of selected elements in the document are: " ;
foreach (Element elem in collection)
{
info += " \n\t " + elem.Id.IntegerValue;
}
TaskDialog.Show( " Revit " , info);
}
// 得到当前文档中门的ID
ElementClassFilter familyInstanceFilter = new ElementClassFilter( typeof (FamilyInstance));
ElementCategoryFilter doorsCategoryfilter = new ElementCategoryFilter(BuiltInCategory.OST_Doors);
LogicalAndFilter doorsInstancefilter = new LogicalAndFilter(familyInstanceFilter, doorsCategoryfilter);
FilteredElementCollector collector = new FilteredElementCollector(uidoc.Document);
ICollection < ElementId > doors = collector.WherePasses(doorsInstancefilter).ToElementIds();
string prompt = " the ids of the doors in the current document are: " ;
foreach (ElementId id in doors)
{
prompt += " \n\t " + id.IntegerValue;
}
TaskDialog.Show( " Revit " , prompt);
}
catch (Exception e)
{
messages = e.Message;
return Result.Failed;
}
return Result.Succeeded;
}
}