查看 Revit API。发现有Element::IsHidden这个方法。通过UI创建一个element,注意要使得这个element在某些视图可见,但是在另一些视图不可见。运行下面的方法,你会发现几乎所有的视图都会返回true,这个结果并不是我们想要的。

 public void ishide()
{
Element elem = Document.GetElement(new ElementId());
FilteredElementCollector fec = new FilteredElementCollector(Document).OfClass(typeof(View));
string res = "";
foreach(View view in fec.ToElements())
{
if(elem.IsHidden(view))
continue;
res += view.Name + view.Id.ToString() + "\n";
}
TaskDialog.Show("Visible", res);
}

既然从element这里无法找到适合的方法,那么转到和view相关的方法。这里我想到了在过滤构件的时候,即使用FilteredElementCollector的时候可以给它传递一个额外的参数。通过这种方式,FilteredElementCollector仅仅会在特定的视图中可见的那些element上做过滤。运行下面的代码,可以得到期望的结果。

 public void ishide()
{
ElementId elemId = new ElementId();
FilteredElementCollector fec = new FilteredElementCollector(Document).OfClass(typeof(View));
string res = "";
foreach(View view in fec.ToElements())
{
if(!isVisble(view.Id, elemId))
continue;
res += view.Name + view.Id.ToString() + "\n";
}
TaskDialog.Show("Visible View", res);
} public bool isVisble(ElementId viewId, ElementId instId)
{
try
{
FilteredElementCollector fec = new FilteredElementCollector(Document, viewId).OfClass(typeof(FamilyInstance));
foreach(FamilyInstance fi in fec.ToElements())
{
if(fi.Id == instId)
return true;
}
}
catch(Exception)
{
// 某类视图不能使用 FilteredElementCollector
}
return false;
}

Revit API 判断一个构件在某个视图中的可见性的更多相关文章

  1. js判断一个元素是否在数组中

    js判断一个元素是否在数组中 var arr = ['a','s','d','f']; console.info(isInArray(arr,'a'));//循环的方式 function isInAr ...

  2. 【JS】【6】判断一个元素是否在数组中

    摘要: 有三种方式: 1,jquery的inArray方法 2,数组的indexOf方法 3,普通的for循环方法 正文: 1,jquery的inArray方法 /** * @param {Objec ...

  3. 判断一个点是否在RotatedRect中

    openCV函数pointPolygonTest(): C++: double pointPolygonTest(InputArray contour, Point2f pt, bool measur ...

  4. 【Revit API】梁构件支座检查算法

    一.前言         应该是第二次写关于Revit API的博文了.虽然在BIM企业中工作,从事桌面BIM软件开发,但是我是不怎么喜欢写Revit API相关的代码.平时更多的是在写界面展示,架构 ...

  5. python中如何不区分大小写的判断一个元素是否在一个列表中

    python中判断某一个元素是否在一个列表中,可以使用关键字in 和 not in. 示例如下: 如果需要输出相应的信息,可以搭配使用if语句,这里不赘述. --------------------- ...

  6. jquery 判断一个元素是否在数组中 $.inarry()使用

    需要判断一个元素是否在一个数组里: js indexOf()方法  如果存在 则返回该元素的下标值 如果不存在则返回-1 学习源头: http://www.w3school.com.cn/jsref/ ...

  7. indexOf() 如何判断一个元素在指定数组中是否存在? 找出指定元素出现的所有位置? indexOf()方法 是正序查找,lastIndexOf()是倒叙查找

    indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1. let a = [2, 9, 7, 8, 9]; a.indexOf(2); // 0 a.indexOf ...

  8. Revit API判断是不是柱族模板

    OwnerFamily即族模板.获取类别的方法:Document.Settings.Categories.get_Item(BuiltInCategory.OST_Columns); //判断是不是柱 ...

  9. Revit API判断直线相交关系移动风管

    start )             );         )) )) );         XYZ xyz12 = lCurve1.Curve.get_EndPoint();         XY ...

随机推荐

  1. linux Bash 常用

    linux 帮助文档 man + [命令] eg: man ls[命令] + --help eg:ls --helphelp +[命令] eg:help ceinfo + [命令] eg:info l ...

  2. system的共享内存实例

    system的共享内存指的是内核指定一块内存区域映射到虚拟地址空间供进程通信使用的机制 1\创建或打开共享内存块函数原型int shmget(key_t key, size_t size, int s ...

  3. SharePoint REST API - 文件夹和文件

    博客地址:http://blog.csdn.net/FoxDave 本篇讲述如何通过REST操作文件夹和文件. 使用REST操作文件夹 在你知道某个文档库中的文件夹的URL时,可以使用如下的代码获 ...

  4. L322

    As a nutritionist helping people shed pounds, I often recommend incorporating portion-controlled des ...

  5. 2019.3.5 L261 Are All Our Organs Vital?

    Medicine has not always shown a lot of respect for the human body. Just think about the ghoulish dis ...

  6. 终止TTask.Run启动的线程

    unit Unit15; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, Syste ...

  7. ChinaCock界面控件介绍-TCCImageViewerForm

    有多个图片,左右滑动可以切换,通过手势还可以放大.缩小查看,象常见的相册,就是这样子实现效果. 现在,我们有了TCCImageViewerForm组件,也可以轻松实现这样的场景应用. 现在看看TCCI ...

  8. 解决vi编辑器不能使用方向键和退格键

    1.使用vi命令时,不能正常编辑文件,使用方向键时老是出现很多字母 这个问题主要是新系统直装了vi,没有装vim.因为vi是不能直接按退格键删除字符的,所以当你使用退格键删除字符,只有在按下esc时, ...

  9. 读懂TCP状态转移

    读懂TCP状态转移过程,对理解网络编程颇有帮助,本文将对TCP状态转移过程进行介绍,但各状态(总共11个)含义不在本文介绍的范围,请参考文末的书目列表. TCP状态转换图(state transiti ...

  10. pytorch基础教程2

    1. 四部曲 1)forward; 2) 计算误差 :3)backward; 4) 更新 eg: 1)outputs = net(inputs) 2)loss = criterion(outputs, ...