Revit API 判断一个构件在某个视图中的可见性
查看 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 判断一个构件在某个视图中的可见性的更多相关文章
- js判断一个元素是否在数组中
js判断一个元素是否在数组中 var arr = ['a','s','d','f']; console.info(isInArray(arr,'a'));//循环的方式 function isInAr ...
- 【JS】【6】判断一个元素是否在数组中
摘要: 有三种方式: 1,jquery的inArray方法 2,数组的indexOf方法 3,普通的for循环方法 正文: 1,jquery的inArray方法 /** * @param {Objec ...
- 判断一个点是否在RotatedRect中
openCV函数pointPolygonTest(): C++: double pointPolygonTest(InputArray contour, Point2f pt, bool measur ...
- 【Revit API】梁构件支座检查算法
一.前言 应该是第二次写关于Revit API的博文了.虽然在BIM企业中工作,从事桌面BIM软件开发,但是我是不怎么喜欢写Revit API相关的代码.平时更多的是在写界面展示,架构 ...
- python中如何不区分大小写的判断一个元素是否在一个列表中
python中判断某一个元素是否在一个列表中,可以使用关键字in 和 not in. 示例如下: 如果需要输出相应的信息,可以搭配使用if语句,这里不赘述. --------------------- ...
- jquery 判断一个元素是否在数组中 $.inarry()使用
需要判断一个元素是否在一个数组里: js indexOf()方法 如果存在 则返回该元素的下标值 如果不存在则返回-1 学习源头: http://www.w3school.com.cn/jsref/ ...
- indexOf() 如何判断一个元素在指定数组中是否存在? 找出指定元素出现的所有位置? indexOf()方法 是正序查找,lastIndexOf()是倒叙查找
indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1. let a = [2, 9, 7, 8, 9]; a.indexOf(2); // 0 a.indexOf ...
- Revit API判断是不是柱族模板
OwnerFamily即族模板.获取类别的方法:Document.Settings.Categories.get_Item(BuiltInCategory.OST_Columns); //判断是不是柱 ...
- Revit API判断直线相交关系移动风管
start ) ); )) )) ); XYZ xyz12 = lCurve1.Curve.get_EndPoint(); XY ...
随机推荐
- MySql笔记之数据备份与还原
MySQL数据备份.还原与迁移 一.数据备份------mysqldump 1.语法: mysqldump -u user(用户名)-h host(登录用户的主机名称)-p password(登录密码 ...
- Codex Delphi Expert
https://www.delphiworlds.com/codex/?tdsourcetag=s_pcqq_aiomsg Codex是什么? 是一个可以安装到Delphi IDE中的专家 有助于提高 ...
- django面试六
Redis缓存击穿.缓存雪崩.缓存重建 回答参考: 缓存击穿: 当一个连接访问缓存数据库中不存在的数据时,会直接通过缓存数据库到后端数据库中查找数据,但如果有大量连接在查询一个不存在的数据,就会有大量 ...
- 《统计学习方法》笔记(3):k近邻
k近邻(KNN)是相对基本的机器学习方法,特点是不需要建立模型,而是直接根据训练样本的数据对测试样本进行分类. 1.k近邻的算法? 算法对测试样本进行分类的一般过程如下: 1)根据给定的k值,搜索与测 ...
- python day03--字符串
一.字符串 1.索引 s1 = "python最牛B" S1[0]第0个,从零开始算 s1[8]“B” 2.切片 语法: str[start: end]规则: 顾头不顾腚, 从st ...
- mysqli扩展库的预处理
预处理的特点:1.效率高,执行速度快 2.安全性高,可以防止sql注入 $mysqli 中的函数 $stmt=$mysqli->prepare($sql); 预备一条s ...
- HDU 6095 17多校5 Rikka with Competition(思维简单题)
Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, so he ...
- cxf动态调用外部web service 报告异常java.lang.NoSuchFieldErr
原因:cxf 依赖的xmlschema-core 与axis2-kernel依赖的xmlschema冲突. 解决方法:因为在项目中只用cxf即可,所以删除axis2的依赖.
- pip install GitHub package
/********************************************************************************* * pip install Git ...
- HDU - 5130 :Signal Interference (多边形与圆的交)
pro:A的监视区域是一个多边形. 如果A的监视区的内满足到A的距离到不超过到B的距离的K倍的面积大小.K<1 sol:高中几何体经验告诉我们满足题意的区域是个圆,那么就是求圆与多边形的交. # ...