Hello大家好!我是九哥~

        最近病了一场,说好的注释系列教程,刚写到第二篇就断更了,今天先补上一篇,在三维视图中创建标记,效果见视频:

        其实呢,在三维视图中创建标记并不难,bob综合手机客户 中自带三个创建标记的节点,按需选择即可:

        不过呢,我更推荐使用GeniusLoci节点包中的Create Tag节点(不同版本中可能名称不一样,用法是差不多的):

        用法也非常简单,输入要标记的视图、要标记的点、图元、标记族类型、是否需要引线、对齐方式、是否为链接图元等,如下图:

        但是运行完却发现,效果是这样:

        而我们更希望效果是这样:

        看起来,调整应该不难,简单搜了下,发现Rhythm节点包中,有设置标记文字位置和引线拐点位置的节点,可是,不论怎么设置,这个拐点的位置都不理想。

        设置拐点坐标

        设置文字坐标

 

        好在之前群里有小伙伴趟过这个坑了,这里涉及到一个问题,就是当三维视图锁定以后,这里的坐标系,就不再是原来的坐标系了,而是视图旋转后的坐标系,视图朝向是冲着屏幕的。

        所以这里,如果想将这个折线调整的漂亮一些,就需要对坐标点进行坐标系变换,这里就涉及数学知识了,比较头疼。

        简单搜了下,bob综合手机客户 自带的节点似乎都是基于坐标系调整的节点,并没有针对同一点在两个坐标系之间的矩阵变换的,所以只能自己计算下了。
首先,你需要知道,同一个点在两个坐标系中的变换,本质就是“投影”。我们先来看下向量坐标的由来,如下图:

        如果你能理解这一点,那么,我们在计算下单位向量在坐标系中的投影,其正好为向量P与各个坐标轴夹角的余弦值:

        这个时候,我们假设Revit原来的坐标系是A,旋转后的三维视图坐标系是B,基于坐标系A表示坐标系B的各个坐标轴并且将各个向量单位化,由此我们得到一个旋转矩阵:

        最终,我们可以得到矩阵变换的公式:

        这样,我们就很好理解,同时可以得到两个旋转矩阵:

        从B到A的转换矩阵:

 

        从A到B的转换矩阵:

        基于此,我们首先需要获取视图的XYZ向量,通过查询API手册,可以找到视图属性中有三个向量,分别就是我们需要的XYZ方向向量:

        然后将向量转换为点,求两个坐标系的转换矩阵:

        反之,逻辑一样,用逆矩阵即可。

        最后只需要将求得的两个点,分别设置给tag的文字和引线转折点即可。这里要用的API分别是(都是可get可set的,赋予值即可):

 

 

好了,今天的分享就到这里了,小伙伴们快去尝试吧~

如果你有好的想法和建议,欢迎分享哦~

0

评论0

请先

社交账号快速登录

微信扫一扫关注
扫码关注后会自动登录网站
普人特福的博客cnzz&51la for wordpress,cnzz for wordpress,51la for wordpress
Baidu
map