🌓
搜索
 找回密码
 立即注册

BIM学习心得22—使用Python获取IFC构件信息

admin 2020-4-10 19:04:18 94951


上一期我们分享到怎样使用外部工具查看IFC文件有哪些信息,这一期我们分享怎样使用Python获取想要的构件信息,以方便接下来做一些简单的应用。我们之前用的是Python3.5及其对应的ifcopenshell外部包,这期使用Python3.7及其对应的ifcopenshell外部包,最新版本(真香)。

准备材料:Python3.7,Pycharm,ifcopenshell,ifc4文件。

步骤一:搭建环境



和前两期一样,启动Pycharm,新建一个py文件,注意这里我们使用python3.7.1和对应的新的ifcopenshell外部包。

步骤二:创建功能



这里我们创建几个功能,代码功能有注释。

1.获取ifc文件中类

def GetIfcClass(ifc_file):    products = ifc_file.by_type('IfcProduct')    classList = []for product in products:        classList.append(product.is_a())return classList

2.获取ifc文件中所有的元素

def GetAllProducts(ifc_file):    products = ifc_file.by_type('IfcProduct')return products

3.获取墙元素

def GetWall(ifc_file):    walls = ifc_file.by_type('IfcWall') #亦可以用IfcWallStandardCase    count = len(walls)    wall_count = '共计%d个墙体'%(count)return (walls,wall_count)

4.获取楼板元素

def GetSlab(ifc_file):    slabs = ifc_file.by_type('IfcSlab')    count = len(slabs)    slabs_count = '共计%d个楼板' % (count)return (slabs, slabs_count)

5.获取门元素

def GetDoor(ifc_file):    doors = ifc_file.by_type('IfcDoor')    count = len(doors)    doors_count = '共计%d个墙体'%(count)return (doors, doors_count)

6.获取标高

def GetStoreyValue(ifc_file):    levels = ifc_file.by_type('IfcBuildingStorey')for level in levels:        print(level)

步骤三:测试代码



调用函数,运行一下,运行成功,控制台输出结果。

# 运行获取墙信息walls = GetWall(ifc_file)for wall in walls:print(wall)

运行结果

# 运行获取门doors = GetDoor(ifc_file)for door in doors:print(door)


运行结果


总    结

本期仅做使用Python获取IFC文件信息的简单案例,无法穷尽,真正的自动审图绝不仅这么简单的哈,目的还是在于推广建筑信息化的概念,在有接触到自动审图的机会下,可大概理解是什么步骤。且在自动审图中,可能不使用IFC文件,也不使用Python作为开发语言,规则也不会像案例中这么简单。在总结了ifcopenshell的基础上,我发现ifcopenshell可能不是一个理想的使用Python开发ifc的途径,有后续了解会继续更新此栏,接下来还是把BIM与传统意义上的数据库进行对接,来展开更多应用。


欢迎加入QQ群:427981585,进群交流。

微信公众号【BIM技术应用交流】回复“22”获取本期资料。

知乎专栏【BIM学习心得】,获取更多脑洞应用。

长按识别二维码关注我





扫一扫

101718.jpg
随机推荐

最新主题

0 回复

高级模式
游客
返回顶部