Revit API之BoundingBoxXYZ的用法和剖面框(Section Box)
BoundingBoxXYZ定义了一个三维的长方体盒。它与BoundingBoxUV不同的是,BoundingBoxXYZ继承于APIObject对象。
它的Transform属性可以用来将数据从局部坐标系变换到模型系统的坐标。
如果要得到模型空间的长方体盒边界数据,可以用Transform依次转换各个数据。
1) 定义视图的边界
BoundingBoxXYZ可以通过视图的裁剪盒属性(View.CropBox)来定义视图的边界。
如图所示:
2) 定义三维视图剖面框
BoundingBoxXYZ也可以通过三维视图的GetSectionBox方法来获取三维视图的剖面框(Section Box)。在在Revit UI界面的三维视图属性框里,勾选剖面框属性,即可在视图中显示出来,如图所示:
3) 其他用法
① 定义元素的几何边界盒(Element.BoundingBox属性),这种情况BoundingBoxXYZ是平行于坐标轴的。
② 用于ViewSection类的CreateSection和CreateDetail方法。
以下的表格是ViewSection类的主要属性。
属性名 |
描述 ., |
Max/Min |
最大/最小坐标值。这两个属性确定了平行于坐标的三维边界盒。最大值点是右上前点;最小值点足左下后点 |
Transform |
从盒子坐标空间到投型空间的变换 |
Enable |
表明边界盒是否打开 |
MaxEnabled/ MinEnabled |
表明最大/最小边界在某一维度上是否可用的,使用0参数X轴,1代表Y轴,2代表Z轴。 •如果是一般的视图(ViewScction,ViewPlan 等),BoundingBoxXYZ是从视图的 CropBox属性获取的,那么表明是否可以用视图的裁剪盒来剪辑元素 •如果Enable属性是false,那么这两个属性也会返回false •如果视图的裁剪视图属性是打开的,即API中View.CropBoxActive为true,那么MaxEnalbed和MinEnalbed属性都会返回true •如果视图的裁剪视图属性是关闭的,即API中View.CropBoxActive为false,那么MaxEnalbed和MinEnalbed属性都会返回false •如果BounduigBoxXYZ是从三维视图的GetSectionBox方法获取的,那么返回值取决于三维视图的“剖面框”属性有没有勾选。如果勾选了该属性,即API中BounduigBox Enalbe为true,那么这两个属性都返回true;否则返回false •如果BounduigBoxXYZ是从元素Element.BounduigBoxXYZ属性获取的,那么这两个属性都返回true |
Bounds |
通过索引获取最大或者最小边界值。用0参数代表最小值,1代表最大值 |
BoundEnabled |
通过索引获取边界是否打开。第一个参数为边界值,0代表最小值,1代表最大; 第二个参数是维度,0代表x轴,1代表y轴,2代表z轴。如果要单独打开各个维度边界,必须整个边界盒是打开的 |
以下代码实现了通过旋转BoundingBoxXYZ来修改三维视图的截面盒。
public void ModifySectionBox(Autodesk.Revit.DB.Document doc){using (Transaction transaction = new Transaction(doc, "Modify Section Box")){transaction.Start();View3D view3d = doc.GetElement(new ElementId(186350)) as View3D;BoundingBoxXYZ box = view3d.GetSectionBox();if (false == box.Enabled){TaskDialog.Show("Error", "The section box for View3D isn't Enable.");return;}// 创建旋转变换 XYZ origin = new XYZ(0, 0, 0);XYZ axis = new XYZ(0, 0, 1);Transform rotate = Transform.CreateRotationAtPoint(axis, 2, origin);// 把旋转变换应用于三维视图的剖面框 box.Transform = box.Transform.Multiply(rotate);view3d.SetSectionBox(box);transaction.Commit();}}
=========【更多高级应用请关注公众号】========
==================================
Revit API之BoundingBoxXYZ的用法和剖面框(Section Box)相关推荐
- Revit API:View 视图概述
前言 本文介绍 Revit 视图相关的基本接口. 内容 View 继承结构 所有的视图都是继承自 Autodesk.Revit.DB.View,分别对应各种视图类型. View 的实例 以官方给的文件 ...
- Revit API:找到轮廓族的路径
前言 以封檐板为例,介绍如何找到某个族中使用的轮廓族. 内容 如下图所示,这是在屋顶边缘家的封檐板: 封檐板的类型中有一个轮廓的属性: 如何通过 Revit API 去获取这个轮廓? 从封檐板获取类型 ...
- Revit API、AddInManager、RevitLookup、SDK的用途
关注公众号及时获取文章更新 NET versions are: .NET 4.0 for Revit 2014, .NET 4.5 for Revit 2015/2016/2017, .NET 4.5 ...
- Revit API: Dimension 尺寸标注
前言 本文介绍 Revit API 的尺寸标注. 内容 在 Revit API 中,尺寸标注相关的有三个类:Dimension.AngularDimension 和 SpotDimension. 后两 ...
- 为 Revit API 插件创建 WPF 窗口的基本项目(Revit API+WPF 系列 2/3)
在本系列的第二部分中,我们将讨论在创建 WPF 窗口时应用的基本项目. 为了继续,请确保您的插件项目能够创建 WPF 窗口.如果没有,您最好创建一个具有 WPF 功能的项目模板并创建另一个新项目.然后 ...
- Revit API 开发 (10): ExtensibleStorage 外部存储
前言 很多时候,需要往Revit的文件里面放自己的数据.这里简单介绍一下 Revit API 如何处理数据的保存和读取,并且这些数据是绑定到具体的构件上的.另外,也可以自己创建一个 DataStora ...
- Revit API:Element 继承体系
继 "Revit API 开发周边:得到 Element 的所有子类" 之后,整理了一下所有 Element 的子类,内容源自 Revit SDK 中的 RevitAPI.chm ...
- 如何调用Revit API实现风道末端与风管连接?
将风道末端连接到风管上,在Revit的UI界面上操作步骤如下:选择"风道末端"->"风道末端安装到风管上"->"拾取风管". 那 ...
- Revit API:预制零件 Fabrication Part
前言 预制零件是 Revit 系统的功能,这个系统指的是水暖电系统.预制零件在 Revit 的软件系统中以 FabricationPart 的形式出现,它的数据源头并不在 Revit 里,而是从 Au ...
最新文章
- 重读TCP协议(3)
- MyBatis之传入参数
- linux 查询注册服务,window下注册服务的命令小结
- 信阳哪些技校有学计算机的,2018年信阳十大技校排名 排名前十的学校有哪些
- Elasticsearch索引原理
- 最优化理论与方法(part3)--矩阵的Rayleigh商
- shiro学习(24):Spring的transaction-manager的用法
- unix mysql备份_数据库操作 备份篇 unix
- Netscaler 10.5 VPX与XenApp XenDesktop 集成配置系列之三enable StoreFront Remote Access
- office communications server 2007 标准版部署详细步骤及错误分析
- Senparc.Weixin.MP SDK 微信公众平台开发教程(二):成为开发者
- 政简网:还剩一个月时间怎么科学有效复习公务员考试?
- 超级实用网址合集(必须收藏一波)
- 软件工程---团队作业4
- 360浏览器各历史版本大全和bug汇总(及历史版本官方下载地址)
- 使用PPT保存300dpi或者指定dpi的高质量图片
- ftp服务器连接时间太长(耗时20s或40s)问题解决(超详细图文教程)
- 第四届高教杯计算机绘图教程,第三届“高教杯”机械类计算机绘图试卷(三维).pdf...
- [$injector:unpr] Unknown provider:--angular.module()函数解答
- 对视频声音,音频进行音量标准化和响度均化,归一化的标准,原理以及具体操作