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 ...
随机推荐
- navicat premium 连接出现的问题
1.listener does not currently know of service requested in connect descriptor 2.问题截图: 3.问题原因:服务名或者SI ...
- golang切片类型
切片slice 其本身并不是数组,它指向底层的数组 作为变长数组的替代方案,可以关联底层数组的局部或全部 为引用类型 可以直接创建或从底层数组获取生成 使用len()获取元素个数,cap()获取容量 ...
- ajax异步上传图片(TP5)
直接上代码 PHP代码如下 /** * 上传 */ public function upload_photo(){ $file = $this->request->file('file') ...
- iOS原生和React-Native之间的交互1
今天,记录一下iOS原生和React-Native之间的交互.如果第一次接触最好先移步至 http://www.cnblogs.com/shaoting/p/6388502.html 先看一下怎么在i ...
- this -- apply或call调用
apply 和 call 这两个方法可以切换函数执行的上下文环境,也就是改变this绑定的对象.apply和call比较类似,区别在于传入参数时一个要求是数组,一个要求是分开传入.所以我们以apply ...
- [转][译] Closures in Lua - Lua中的闭包
http://www.cnblogs.com/plodsoft/p/5900270.html?utm_source=tuicool&utm_medium=referral 原文:(PDF) . ...
- [转]lua元表代码分析
http://lin-style.iteye.com/blog/1012138 版本整理日期:2011/4/21 元表其实就是可以让你HOOK掉一些操作的一张表. 表的定义在ltm.h/c的文件里.对 ...
- Python学习笔记第十四周
目录: 一.HTML 1.概述 2.HTML 二.CSS 一.HTML 1.概述 HTML是英文Hyper Text Mark-up Lang(超文本标记语言)的缩写,他是一种制作万维网页面的标准语言 ...
- JavaScript ES6格式化字符串方法
js想要动态更新文本内容,在ES5中没有格式化字符串的方法,在ES6中是有字符串格式化的方法的. 使用左上角数字1旁边的符号定义字符串.先定义好需要拼接的字符串,在字符串内部使用 ${变量名} 进行拼 ...
- linux 禁ping和开启ping方法
Linux 禁ping和开启ping操作# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all如果要恢复,只要:# echo 0 > /pro ...