Revit二次开发之“显示或隐藏视图中未选中的元素”
来源:互联网 发布:linux mysql修改密码 编辑:程序博客网 时间:2024/06/05 06:42
方法是先隐藏全部元素,再显示选中的。
转自:http://revit.5d6d.com/thread-1094-1-1.html
转自: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;
}
}
[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;
}
}
- Revit二次开发之“显示或隐藏视图中未选中的元素”
- [Revit二次开发]在WPF显示revit的三维视图
- Revit二次开发之移动元素【比目鱼原创】
- Building Coder(Revit 二次开发) - 改变剖视图的视图类型并且隐藏切割线
- Revit二次开发之如何选取Revit元素【比目鱼原创】
- Revit二次开发之使用LINQ查询元素过滤集合里的元素【比目鱼原创】
- Revit开发选中元素
- Revit二次开发--获取视图可见性中过滤器颜色
- Revit二次开发之ISelectionFilter 接口的用法
- Revit 二次开发之安装包的制作
- revit二次开发中combox控件的应用
- Revit二次开发之入门
- revit 二次开发 如何修改元素的表面颜色
- Revit 2011 二次开发之“高亮显示错误提示”
- 显示或隐藏页面元素
- jquery显示或隐藏元素
- 029隐藏或显示元素
- Revit二次开发 RadioButtonGroup设置被选中按钮
- 成为究极程序员的艰难的六步
- ShowDialog
- install svn and Apache
- 解密。最浪漫的事。
- 23种设计模式
- Revit二次开发之“显示或隐藏视图中未选中的元素”
- 计算定期还款额度
- Maven常用命令
- 原谅你,是换来你放肆的资本:伤感日志
- linux 里编译windows下的fastboot和adb
- 线型网络
- ubuntu修改显示路径
- C程序编译过程浅析
- 那些日夜想念你的泪水 是咸的我的心还是会痛