EaBIM一直以来积极响应国家“十二五”推进建筑业信息化的号召,对建筑领域的信息技术开展深入技术交流和探讨!致力于打造“BIM-建筑师-生态技术”三位一体综合资源交流共享平台,希望为BIM与可持续设计理念及技术的普及做出微小的贡献!!!

EaBIM

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 417|回复: 1
打印 上一主题 下一主题

编程获取墙的原始几何尺寸

[复制链接]

1514

主题

7465

帖子

1万

积分

admin

Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10

积分
12404

社区QQ达人

跳转到指定楼层
楼主
发表于 2014-1-15 12:44:12 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

在Revit里面,构件之间会有互相相交的关系,彼此会相切。也可以用Revit的命令功能(Join Geometry或Unjoin Geometry)来实现构件几何相切或解除相切。

这样的相切对于构建的几何形状是有影响的。很多时候开发者需要获取原先的未切割状态下的几何体。在Revit 2012中开始为FamilyInstance 类提供了GetOriginalGeometry() 函数来获取族实例的几何体。比如当墙与柱子相交后,柱子被墙给切了。这时候可以调用上面的函数获取柱子没有切割下的几何体。


那么对于墙来说,墙与其他墙连接时,墙的几何体发上变化,如何获取此时墙的原始几何体呢?


一个办法是解除所有的墙与墙的连接。Revit提供了二个函数用于墙连接的操作:

WallUtils.AllowWallJoinAtEnd() , WallUtils.DisallowWallJoinAtEnd().

然后再获取没有连接情况下的墙的几何体。这个操作有两个问题1. 改变了模型; 2. 据客户报告,可能使会发生错误。(因为没有模型和代码,尚未得知具体原因)


这里我想出另个办法.

Revit 2012 提供了几何体创建函数: GeometryCreationUtilities 类下面的几个几何体创建函数。

CreateBlendGeometry
CreateExtrusionGeometry
CreateRevolvedGeometry
CreateSweptBlendGeometry
CreateSweptGeometry

大多数墙是一个横截面相同的拉伸体。所以我们可以获取墙的起始端横截面。(通过HostObjectUtils.GetSideFaces(),然后遍历出起始端的面)

以及墙的基线 Wall.Location. 就可以拉伸出墙实体。

我尚未测试可行性,但是理论上应该是完全可行。

作者:叶雄进


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对
工作时间:工作日的9:00-12:00/13:30-18:00,节假日不在线,请勿留言
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|EaBIM网 ( 苏ICP备2020058923号-1  苏公网安备32011502011255号

GMT+8, 2024-11-25 12:53

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表