1.view和direction

屏幕右向为view.rightdirection其单位基矢量坐标表达为view.cropbox.transform.basisx

屏幕上向为view.updirection其单位基矢量坐标表达为view.cropbox.transform.basisy

屏幕指向"你"为view.viewdirection其单位基矢量坐标表达为view.cropbox.transform.basisZ

按照 right,up,view的右手系

观察者的眼睛位置的世界或者模型坐标为view.origin

2.view和transform

View.cropbox.transform.basis代表了这个view的视图坐标空间的三个正交单位基向量,而origin则对应其原点(0,0,0)

根据线性代数知识,

将这三个基向量按列放置组成变换方阵A,那么视图坐标空间里任意点p的坐标列向量左乘这个A再加上origin的世界坐标即可得到p的世界坐标表达

为了书写方便形式上,revit把transform改成了一个3x4的矩阵,前三列为三个基向量,第四列为origin的世界坐标,p点这一三维向量则添加一维"1"

于是我们可以从view.cropbox.transform.ofpoint(XYZ point)来返回视图坐标空间某点的世界坐标

问:如果我们要对view空间的物体进行ElementTransformUtil操作呢?

由于实际上是对location操作,而location是世界坐标的,所以要变回世界坐标,记view空间变换为A,我们要进行的变换为T

则view坐标的p经T变换后的view坐标为p'=A-1TAp

3.view和cropbox和outline

cropbox返回boundingboxXYZ

outline返回boundingboxUV

广大的世界坐标被cropbox裁剪,cropbox如何定义的呢?原来根据viewdirection的方向有前后两个与之正交的clipplane,而这两个裁剪面中间有一个投影面projectionplane,平行光线穿过前后两个clipplane形成的线路与其围成cropbox.cropbox投影到projectionplane上形成outline,这也正是isometric正交投影;如果不是平行光线而是从观测者(origin)眼睛出发,成pyramid状的perspective透视投影,则以前clipplane的前截面为基准,投影到后clipplane形成cropbox . 总之cropbox是一个平行六面体,outline为其在投影面上的投影.它们的max和min都是遵从视图坐标系,可以通过view.cropbox.transform转化到世界坐标系.值得注意的是转到outline时,有一个scale进行缩放,在自建视图比如view section时如果发现大小不符正是因为这一点.

顺带一提Identity指单位阵,api中经常可以看到Transform transform = Transform.Identity来初始化一个transform这其实可以类比string.Empty

4.创建viewSection类时对视图坐标系的理解

api创建viewSection类时都需要给一个boundingbox,我们为这个boundingbox添加tansform,依次赋予origin(世界坐标)和basis(i).我们根据添加的origin(世界坐标)和basis决定的一个坐标空间来添加这个box.max和box.min(注意origin在该空间是XYZ.Zero).

然后重点来了,ViewSection.CreateXXX()方法是如何使用boundingbox这个参数的呢?它将box的basisZ的反向inverse作为viewdirection,将box的basisY作为updirection,然后根据右手系定出rightdirection,将origin移动到boundingbox的lowerleftfront左下前点,所以你会发现建好后的viewsection的cropbox返回的boundingbox与你赋给它的boundingbox的transform和origin可能都不一样,不过他们的空间位置和大小却是一致的.

基于此,我们在考虑如何构建boundingbox的transform时,我们只需考虑viewdirection和updirection(一般为XYZ.basisZ),然后按照right up view的左手系定出rightdirection,然后把right和up赋给boundingbox的basisX和basisY,而basisZ由右手系得到.

如此我们一开始所考虑的viewdirection和updirection就是viewsection建好后的对应方向

Revit中的视图坐标系相关推荐

  1. Revit建模中 构件视图隐藏怎么操作?

    作为BIM结果的最后一种表现,出图对于长期使用Revit的BIMer来说是一大伤脑筋,无论是其"不满意"的标注能力,或者是其极其"反人类"的图层设置,大大增加了 ...

  2. Revit中视图范围的应用及快速批量视图命名

     一.Revit中视图范围的应用 01.视图范围:通俗来讲它是控制视图中的模型可见性和模型显示样式的,如下图: 02.与剖切平面相交的图元: 1) 在平面视图中,Revit 使用以下规则以显示与剖切平 ...

  3. revit中在三维视图下显示房间文字和“房间集成”

    revit中在三维视图下显示房间文字的"房间集成" 相信大家都会遇见在模型浏览的时候不知道自己所处的空间是什么位置问题,Revit中,如果建筑模型已经创建好"房间&quo ...

  4. 3dmax:3dmax的软件中常用工具栏的选择并连接、绑定到空间扭曲、选择过滤器、视图坐标系、捕捉、对齐、层管理器等使用技巧之详细攻略

    3dmax:3dmax的软件中常用工具栏的选择并连接.绑定到空间扭曲.选择过滤器.视图坐标系.捕捉.对齐.层管理器等使用技巧之详细攻略 目录

  5. Revit中创建分段剖面视图

    在Revit中创建剖面线时候,该工具有一个"拆分剖面"的上下文菜单,使用其可以将剖面线分割成与视图方向垂直的多个分段,以剖切模型中不同位置,而不必创建多个剖面,在某些情况下使用非常 ...

  6. Android View体系(一)视图坐标系

    http://blog.csdn.net/itachi85/article/details/50708391 前言 Android View体系是界面编程的核心,他的重要性不亚于Android四大组件 ...

  7. 明细表如何添加重量_关于Revit中明细表标准的导出及导入

    Revit中明细表的作用非常大,项目中的数据归类整理及统计都离不开它,今天给大家分享一下如何在Revit中进行明细表标准的导出及导入,减少在实际项目中的重复性工作. 1. 首先在Revit中新建一个项 ...

  8. Revit中绘图填充与模型填充的区别

    一.Revit中绘图填充与模型填充的区别 在设完楼板的表现填充图案以后,在三潍视图中旋转模型,图案不跟随楼板旋转如图1所示.这种情况怎么解决? 遇到这种情况我们要知道绘图填充与模型填充的区别. (1) ...

  9. bim翻模教程:如何控制revit中的填充图案和构件显示隐藏

    一.如何控制revit中的填充图案 如果当前视图中有很多图元,并且设定了图元的表面和截面填充如图1所示,如何自由控制当前视图的填充,而不会影响其他视图? 在当前视图中打开"可见性/图形替换& ...

最新文章

  1. 《汽车驾驶自动化分级》国家标准发布
  2. javascript——三元操作符
  3. mac环境下的linux光标快捷键
  4. 【Android 内存优化】Android 原生 API 图片压缩原理 ( 哈夫曼编码开关 | 哈夫曼编码原理 | libjpeg-turbo 函数库 )
  5. python3 正则表达式点星问号(.*?)能不能匹配换行符?不能的话应该怎么写
  6. linux强制格式化,linux – 如何格式化ifconfig的输出
  7. zabbix3.2.4监控MySQL5.7.16状态
  8. python 删除文件、目录_python脚本删除文件及删除文件目录的方法
  9. Php 与 Json
  10. unknown error mysql_mysql执行sql文件报错Error: Unknown storage engine‘InnoDB’的解决方法...
  11. Jmeter分布式测试过程中遇到的问题及摘抄前辈问题汇总
  12. mysql死锁抛出异常_如何排查和处理 MySQL 死锁异常?详细分析及解决方法步骤
  13. samba用户密码改变,怎么访问?
  14. python下载贴吧的图片
  15. recvmsg和sendmsg函数
  16. 用于Linux系统/网络管理的nmap命令的实例
  17. 最新投影圣经投影赞美诗歌圣经诗歌2020
  18. cf#94-div1-A. Statues
  19. 什么是网站被黑,如何处理网站被黑?
  20. 【修真院PM小课堂】轮播图有几种表现形式,适合什么场景, 有哪些切换方式?

热门文章

  1. 如何解决安装adobe系列软件提示已损坏无法打开的问题
  2. 国科大学习资料--图像处理(彭思龙、杨戈)--2020年期末考试题解析(学长整理分析)
  3. Google收购免费问答网站Aardvark
  4. 本源量子云平台实现Grover算法
  5. 2019年互联网行业从业前景如何?
  6. Linux系列——VMware虚拟机配置端口转发(端口映射),实现远程访问
  7. idea的git与SVN切换
  8. 线段划分再分辨”的问答
  9. 关于DSP的一些基本知识和用法(资料来源于合众达网页)
  10. 常在哪里生活的人最饥渴