Revit二次开发之“显示或隐藏视图中未选中的元素”
2011-08-22 08:02
483 查看
方法是先隐藏全部元素,再显示选中的。
转自:http://revit.5d6d.com/thread-1094-1-1.html
//显示或隐藏视图中未选中的元素
[Transaction(TransactionMode.Manual)]
[Regeneration(RegenerationOption.Manual)]
//[Journaling(JournalingMode.NoCommandData)]
public class HideUnHideUnSelectInView : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIDocument uiDoc = commandData.Application.ActiveUIDocument;
Selection selection = uiDoc.Selection;
Autodesk.Revit.DB.View view = uiDoc.Document.ActiveView;
Transaction ts = new Transaction(uiDoc.Document, "HideUnHide");
ts.Start();
//先把所有可隐藏的元素隐藏,再把选中的元素显示
ElementSet elementSet = new ElementSet();
//遍历风管
FilteredElementCollector collectorDuct = new FilteredElementCollector(uiDoc.Document);
collectorDuct.OfClass(typeof(Duct)).OfCategory(BuiltInCategory.OST_DuctCurves);//风管,直接用类名
foreach (Element el in collectorDuct)
{
if (el.CanBeHidden(view) == true)
{
elementSet.Insert(el);
}
}
//遍历墙
FilteredElementCollector collectorWall = new FilteredElementCollector(uiDoc.Document);
collectorWall.OfClass(typeof(Wall)).OfCategory(BuiltInCategory.OST_Walls);//墙,直接用类名
foreach (Element el in collectorWall)
{
if (el.CanBeHidden(view) == true)
{
elementSet.Insert(el);
}
}
//遍历窗
FilteredElementCollector collectorWindow = new FilteredElementCollector(uiDoc.Document);
collectorWindow.OfClass(typeof(FamilyInstance)).OfCategory(BuiltInCategory.OST_Windows);//窗,类型是FamilyInstance
foreach (Element el in collectorWindow)
{
if (el.CanBeHidden(view) == true)
{
elementSet.Insert(el);
}
}
//遍历门
FilteredElementCollector collectorDoor = new FilteredElementCollector(uiDoc.Document);
collectorDoor.OfClass(typeof(FamilyInstance)).OfCategory(BuiltInCategory.OST_Doors);//门,类型是FamilyInstance
foreach (Element el in collectorDoor)
{
if (el.CanBeHidden(view) == true)
{
elementSet.Insert(el);
}
}
view.Hide(elementSet);
//判断在此视图下是否可以隐藏
foreach (Element el in selection.Elements)
{
if (el.CanBeHidden(view) == true)
{
elementSet.Clear();
elementSet.Insert(el);
view.Unhide(elementSet);
}
}
ts.Commit();
return Result.Succeeded;
}
}
//显示全部元素
[Transaction(TransactionMode.Manual)]
[Regeneration(RegenerationOption.Manual)]
//[Journaling(JournalingMode.NoCommandData)]
public class ShowAllInView : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIDocument uiDoc = commandData.Application.ActiveUIDocument;
Selection selection = uiDoc.Selection;
Autodesk.Revit.DB.View view = uiDoc.Document.ActiveView;
Transaction ts = new Transaction(uiDoc.Document, "HideUnHide");
ts.Start();
//先把所有可隐藏的元素隐藏,再把选中的元素显示
ElementSet elementSet = new ElementSet();
//遍历风管
FilteredElementCollector collectorDuct = new FilteredElementCollector(uiDoc.Document);
collectorDuct.OfClass(typeof(Duct)).OfCategory(BuiltInCategory.OST_DuctCurves);//风管,直接用类名
foreach (Element el in collectorDuct)
{
if (el.CanBeHidden(view) == true)
{
elementSet.Insert(el);
}
}
//遍历墙
FilteredElementCollector collectorWall = new FilteredElementCollector(uiDoc.Document);
collectorWall.OfClass(typeof(Wall)).OfCategory(BuiltInCategory.OST_Walls);//墙,直接用类名
foreach (Element el in collectorWall)
{
if (el.CanBeHidden(view) == true)
{
elementSet.Insert(el);
}
}
//遍历窗
FilteredElementCollector collectorWindow = new FilteredElementCollector(uiDoc.Document);
collectorWindow.OfClass(typeof(FamilyInstance)).OfCategory(BuiltInCategory.OST_Windows);//窗,类型是FamilyInstance
foreach (Element el in collectorWindow)
{
if (el.CanBeHidden(view) == true)
{
elementSet.Insert(el);
}
}
//遍历门
FilteredElementCollector collectorDoor = new FilteredElementCollector(uiDoc.Document);
collectorDoor.OfClass(typeof(FamilyInstance)).OfCategory(BuiltInCategory.OST_Doors);//门,类型是FamilyInstance
foreach (Element el in collectorDoor)
{
if (el.CanBeHidden(view) == true)
{
elementSet.Insert(el);
}
}
view.Unhide(elementSet);
ts.Commit();
return Result.Succeeded;
}
}end
转自:http://revit.5d6d.com/thread-1094-1-1.html
//显示或隐藏视图中未选中的元素
[Transaction(TransactionMode.Manual)]
[Regeneration(RegenerationOption.Manual)]
//[Journaling(JournalingMode.NoCommandData)]
public class HideUnHideUnSelectInView : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIDocument uiDoc = commandData.Application.ActiveUIDocument;
Selection selection = uiDoc.Selection;
Autodesk.Revit.DB.View view = uiDoc.Document.ActiveView;
Transaction ts = new Transaction(uiDoc.Document, "HideUnHide");
ts.Start();
//先把所有可隐藏的元素隐藏,再把选中的元素显示
ElementSet elementSet = new ElementSet();
//遍历风管
FilteredElementCollector collectorDuct = new FilteredElementCollector(uiDoc.Document);
collectorDuct.OfClass(typeof(Duct)).OfCategory(BuiltInCategory.OST_DuctCurves);//风管,直接用类名
foreach (Element el in collectorDuct)
{
if (el.CanBeHidden(view) == true)
{
elementSet.Insert(el);
}
}
//遍历墙
FilteredElementCollector collectorWall = new FilteredElementCollector(uiDoc.Document);
collectorWall.OfClass(typeof(Wall)).OfCategory(BuiltInCategory.OST_Walls);//墙,直接用类名
foreach (Element el in collectorWall)
{
if (el.CanBeHidden(view) == true)
{
elementSet.Insert(el);
}
}
//遍历窗
FilteredElementCollector collectorWindow = new FilteredElementCollector(uiDoc.Document);
collectorWindow.OfClass(typeof(FamilyInstance)).OfCategory(BuiltInCategory.OST_Windows);//窗,类型是FamilyInstance
foreach (Element el in collectorWindow)
{
if (el.CanBeHidden(view) == true)
{
elementSet.Insert(el);
}
}
//遍历门
FilteredElementCollector collectorDoor = new FilteredElementCollector(uiDoc.Document);
collectorDoor.OfClass(typeof(FamilyInstance)).OfCategory(BuiltInCategory.OST_Doors);//门,类型是FamilyInstance
foreach (Element el in collectorDoor)
{
if (el.CanBeHidden(view) == true)
{
elementSet.Insert(el);
}
}
view.Hide(elementSet);
//判断在此视图下是否可以隐藏
foreach (Element el in selection.Elements)
{
if (el.CanBeHidden(view) == true)
{
elementSet.Clear();
elementSet.Insert(el);
view.Unhide(elementSet);
}
}
ts.Commit();
return Result.Succeeded;
}
}
//显示全部元素
[Transaction(TransactionMode.Manual)]
[Regeneration(RegenerationOption.Manual)]
//[Journaling(JournalingMode.NoCommandData)]
public class ShowAllInView : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIDocument uiDoc = commandData.Application.ActiveUIDocument;
Selection selection = uiDoc.Selection;
Autodesk.Revit.DB.View view = uiDoc.Document.ActiveView;
Transaction ts = new Transaction(uiDoc.Document, "HideUnHide");
ts.Start();
//先把所有可隐藏的元素隐藏,再把选中的元素显示
ElementSet elementSet = new ElementSet();
//遍历风管
FilteredElementCollector collectorDuct = new FilteredElementCollector(uiDoc.Document);
collectorDuct.OfClass(typeof(Duct)).OfCategory(BuiltInCategory.OST_DuctCurves);//风管,直接用类名
foreach (Element el in collectorDuct)
{
if (el.CanBeHidden(view) == true)
{
elementSet.Insert(el);
}
}
//遍历墙
FilteredElementCollector collectorWall = new FilteredElementCollector(uiDoc.Document);
collectorWall.OfClass(typeof(Wall)).OfCategory(BuiltInCategory.OST_Walls);//墙,直接用类名
foreach (Element el in collectorWall)
{
if (el.CanBeHidden(view) == true)
{
elementSet.Insert(el);
}
}
//遍历窗
FilteredElementCollector collectorWindow = new FilteredElementCollector(uiDoc.Document);
collectorWindow.OfClass(typeof(FamilyInstance)).OfCategory(BuiltInCategory.OST_Windows);//窗,类型是FamilyInstance
foreach (Element el in collectorWindow)
{
if (el.CanBeHidden(view) == true)
{
elementSet.Insert(el);
}
}
//遍历门
FilteredElementCollector collectorDoor = new FilteredElementCollector(uiDoc.Document);
collectorDoor.OfClass(typeof(FamilyInstance)).OfCategory(BuiltInCategory.OST_Doors);//门,类型是FamilyInstance
foreach (Element el in collectorDoor)
{
if (el.CanBeHidden(view) == true)
{
elementSet.Insert(el);
}
}
view.Unhide(elementSet);
ts.Commit();
return Result.Succeeded;
}
}end
相关文章推荐
- Revit二次开发之“显示或隐藏视图中选中的元素”
- Revit二次开发之“显示或隐藏视图中未选中的元素”
- Revit二次开发之“显示或隐藏视图中的元素”
- Revit二次开发之“显示或隐藏3D视图中的元素“
- Revit二次开发_快速显示隐藏剖面框
- jQuery控制元素显示、隐藏、切换、滑动的方法
- Revit二次开发之“元素的锁定Pinned”
- JavaScript实现页面元素显示/隐藏的功能
- jQuery判断元素是否显示或隐藏
- 4000 AngualrJS(八)控制视图显示隐藏
- [Phonegap+Sencha Touch] 移动开发48 扩展的NavigationView控件,支持根据不同的View显示不同的顶栏按钮、不同的屏幕方向,增加视图缓存机制
- js控制元素隐藏显示,显示时不用display=block
- Revit二次开发入门——通过过滤器获取元素
- 终结解密XAML开发―vs设计视图为什么显示不出来?
- 记录angular遍历的元素隐藏显示修改
- 【每天一个JQuery特效】自动确定是否淡入淡出地显示或隐藏元素
- jQuery 判断一个元素是显示还是隐藏
- jquery控制css的display(控制元素的显示与隐藏)
- 关于Fragment的显示与隐藏结合RadioGroup的默认选中问题
- Android开发之轻松打造DatePickterDialog可自由选择显示Day或者隐藏