IfcOpenShell - Python 2022最新安装步骤 兼谈IFC的理解与认识

news2025/1/10 21:10:22

前言

我之前2020年写了一个IfcOpenShell - Python的安装教程,相信不少对IFC感兴趣的朋友已经看过。两年多以后发生了很多事情,我的工作重心也不再是IFC IFCXML。目前我对IFC的理解就是“底层数据库”,以他为数据库我可以做很多尝试,但是单纯让我研究这个数据库,说真的确实有难度。

时至今日,我对Revit等建筑类信息软件导出的IFC的文本,也只是敢保证“我应该能看懂”,很多实体的具体含义以及各种用法还是有些糊涂。这个就好比大家本科学高数的时候,【懂原理】和【会做题】的感觉。我目前大概属于【会做题】,还达不到【懂原理】。但是我觉得比较新人菜鸟而言,我的学习经验以及成长之路还是足够用了的。有想一起学习了解ifc ifcxml的朋友可以私信我,我把你们都整合到一起。

前期准备

Python编译器就随便了,老版安装指南那个时候,我用的是pycharm,现在我用的是VSCODE,反正都一样,我就默认大家已经安装好了。

这个是重点:需要自行安装anaconda并且配置好环境变量。我安装的最新版,对应的是Python3.9.13。地址如下:
https://www.anaconda.com/

安装的时候要注意这里,环境变量这里一定一定要选上,会节省很多不必要的麻烦。另外说一下这个截图是网上找的,版本应该是2020年末,2021年初的版本,因此对应的Python是3.8。如果安装最新版就是3.9了,我只是拿出来做个例子,大家不要恐慌。
在这里插入图片描述
然后就安装好了!接下来就是安装ifcopenshell。

IfcOpenShell 安装

看过老版的都应该有点印象,安装过程非常复杂且繁琐。
大家现在可以喘口气了,新版会非常简单。
打开anaconda prompt,建议管理员身份,如下图所示。
在这里插入图片描述

打开后熟悉的黑漆漆一片,然后输入语句:

conda install -c ifcopenshell -c conda-forge ifcopenshell

语句的作用是安装最新版ifcopenshell,目前是0.7.0版本。来源在这里:
https://blenderbim.org/docs-python/ifcopenshell-python/installation.html

两年之后,ifcopenshell已经有了专属于他的documentation,创作者我没猜错的话,应该是BlenderBIM Add-on的开发者,也是OSArch社区的创始人(之一)Dion Moult 小哥。他也是我目前认为BIM IFC 领域做插件 做二次开发最顶尖的几个人之一。当时在2020年年初写ifc系列文章的时候,Moult小哥也给了我一些指导和鼓励,让我(至少在2020年)坚持下来做内容输出分享。

哈哈有点陷入回忆了,我们继续。
在黑乎乎的页面输入语句后系统自动检查并匹配环境,一段时间后(我是半个小时多点)会列出需要安装的软件列表,需要我们手动点击y。然后就是安装过程。我在境外,安装网速也比较给力,安装过程3~5分钟就解决了。
截图中最上面的两行是指ifcopenshell安装完毕。剩下的就是TensorFlow的安装(机器学习深度学习的东西,和建筑信息化基本无关)。由于版本比较高,我没有安装成功TensorFlow,但是pytorch我安装好了,所以不耽误干活。又扯远了哈哈,关注ifcopenshell即可。

在这里插入图片描述
安装步骤就结束了,一次成功。

检验是否成功

最后检验一下是否成功。
我有一个用VSCODE运行顺利的Gamma函数图像程序,上文提到了我还安装了pytorch,于是乎我一起检验一下,不报错就说明都成功了。如下图所示。

在这里插入图片描述
一次成功!这次一共用了(加上我写这篇文章)一个小时,比两年前那篇文章好太多了。

结尾1-漫谈IFC的价值和缺陷

最后随便说说ifc吧。
对我的研究生涯 学习生涯而言,ifc起到了非常重大的作用。我靠着研究ifcxml的数据结构发了top 期刊(JCR Q1; 中科院Q2但是今年有希望升级),没有他我肯定毕不了业更不可能找到目前到手的工作。
但是ifc对于建筑行业呢?真的有很大意义吗?我始终觉得ifc有点过于面面俱到。对于general的内容,ifc(实际上是背后的母公司buildsmart)恨不得把所有的内容全解释清楚,全都想到。于是乎IFC搞出了那么多个实体,单单是IFC的documentation就足以让小白 初学者望而却步。实际上如果是专注于工民建的同学,真的耐着性子“啃”几个ifc建筑模型,说真的doc中给出的实体,能用上20%就不错了,搞不好只有5%到10%。而且IFC对于特定领域还没啥用,对于A领域要做拓展,B领域要做拓展。。。简单说IFC基本盘“太满”,特定林谷又“不足”,初学者上手困难,文本语句不好理解,documentation也是一知半解。

结尾2-漫谈IFC的学习方法

初学者往往会陷入“先泛读后精读”的思维定式,因此很多初学者一开始接触ifc,看了我的或者其他博主的一些文章,知道了ifc的那个online doc,就直接跑去看doc了。说实在话那玩意“狗都不看”。初学者几乎完全看不懂,一腔热情喂了狗,要不是为了毕业/挣钱,早他妈换方向了。。。

我的理解是,documentation实际上相当于字典。而初学者小白们相当于三岁小孩学写字。我印象中好像没有哪个教育学家或者补习机构,是让小孩看着字典一页一页翻,来学习写字的。一般而言,教学都是依据教材来进行的,这个工序是越低年级越依赖教材,越高年级越不依赖教材。比如高中语文除了文言文默写,其他的课文基本上对高考没什么意义,阅读理解题 作文 这些反而更依赖学生的课外阅读量和逻辑思维能力等等。而小学一年级语文必须跟着教材走,从拼音到简单独体字到偏旁部首。所欲对于ifc而言,初学者小白也一样,你们需要教材,而不是字典。而且还不止ifc一本教材,编程什么的也得现学(如果之前没基础,是纯土建的话)。

偏偏buildingsmart不是什么教育家,他们以极其富有程序员思维的面向对象方式编辑出了一套文本格式ifc以及对应的documentation。再加上ifc比编程语言小众的多得多,导致市面上也没什么教材。因此初学者确确实实很难上手,更别提感兴趣了。

我的观点是,没有教材,要自己创造教材。我们可以通过目前现有的主流信息化软件如Revit,Civil3D,Blender BIM,自己设计一些建筑构件,比如一个一层框架,四根梁 四根柱子 四面墙 两个楼板。然后输出ifc ifcxml格式。从头到尾仔仔细细阅读一下这两份文件。ifc文件看着不适应可以从ifcxml入手,用xml的标签化文本加深对实体 属性 属性集等语法概念的理解(如下2图,对比一下)。之后逐渐加深难度,一个平房,一栋大楼,一个真实建筑模型等等。当一个同学能把简单框架,平房,大楼,真实模型这四个建筑模型对应的ifc ifcxml通读下来且能达到一半以上的理解,基本上就算“识字量3000”,不再是“文盲”了。

在这里插入图片描述
在这里插入图片描述

至于之后是想要做某一领域拓展,还是格式转换,数据轻量化,做其他研究的数据库等等,只要基本理解了ifc的语句含义,再做一些其他工作也好办一些。

总之,希望各位能够在ifc的世界中尽快上手,初学过程实在是太过于痛苦了。我现在回想一下2019下半年和2020上半年,还是心有余悸。。。过来了,就好了很多。想一起学习的别忘了私信我哦,我来做整合,大家一起加油吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/20078.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

P1113 杂务

分析:可以把每个任务看成都一个节点,如果有2个任务a,b,如果a是b的准备工作,那么就在a,b之间连一条有向边。由于互相没有关系的杂务可以同时工作,所以发现所有杂务都被完成的最短时间取决与最晚被完成的那个任务,于是需要找到最晚被完成任务的时间。 因为题目中有一…

万字详解C++避坑指南总结

前言 C是一门古老的语言,但仍然在不间断更新中,不断引用新特性。但与此同时C又甩不掉巨大的历史包袱,并且C的设计初衷和理念造成了C异常复杂,还出现了很多不合理的“缺陷”。 本文主要有3个目的: 1. 总结一些C晦涩难懂…

[计算机毕业设计]聚类分析算法

前言 📅大四是整个大学期间最忙碌的时光,一边要忙着准备考研,考公,考教资或者实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过…

this 的五种绑定方式(默认 / 隐式 / 显式 / new 构造函数 / 箭头函数)

目录 1. this 的五种绑定方式 1.1 默认绑定 1.1.1 基本概念 1.1.2 严格模式下的默认绑定 1.1.3 let、const、var 变量的默认绑定 1.1.4 函数作用域中的 this 指向 1.2 隐式绑定 1.2.1 关于 this 指向最后调用函数的那个对象,该怎么理解? 1.2.2 …

Hive三种模式安装部署

文章目录1. 内嵌模式安装2. 本地模式安装2.1 Mysql安装2.2 Hive安装配置3. 远程模式安装1. 内嵌模式安装 安装准备 下载hive:pass将文件复制到安装目录下: 解压安装包:tar zxvf apache-hive-3.1.2-bin.tar.gz修改名字:mv apache-h…

【序列召回推荐】(task3)GNN召回之SR-GNN

note 关于图深度学习算法的简单回顾: 一开始是经典的word2vec(以skip-gram为例,先取周围词随机初始化的embedding,进行平均池化后与中心词embedding进行点积)通过周围词预测中心词(多分类任务)…

(4)paddle---PCB检测的例子

1、主要参考 (1)大佬教程 基于PaddleDetection的PCB瑕疵检测_AI Studio的博客-CSDN博客 (2)blibli视频 253-14_PCB电路板缺陷检测_项目配置文件_dec_哔哩哔哩_bilibili (3)coco数据集说明 『深度应用…

(最新+详细+Pycharm远程调试GUI程序)解决qt.qpa.xcb: could not connect to display问题

(最新详细Pycharm远程调试GUI程序)解决qt.qpa.xcb: could not connect to display问题出现原因解决方法步骤下载MobaXTerm连接服务器安装Xorg和打开X11-forwarding附录设置共享目录修改环境出现原因 在ubuntu服务器上运行cv.imshow()方法时就会报以下错…

java计算机毕业设计ssm贫困区教育资源捐赠平台element vue前后端分离

项目介绍 随着时代的发展,互联网和计算机技术,带动了整个社会的发展,方便了我们的生活。贫困区教育资源捐赠管理平台是使用JAVA的SSM技术,MySQL作为数据库开发,用户通过网站了解贫困区情况,在线帮助贫困人群,实现贫困区教育资源捐赠管理。首先对本论文进行分析后,提出平台的相…

Linux 安装 Nginx

阿里巴巴开源镜像站-OPSX镜像站 阿里云开发者社区:Nginx Linux详细安装部署教程(附带使用案例) Nginx 下载 1、切换到root用户 2、安装c编译环境,如已安装可略过 yum install gcc-c 3、安装 Nginx 相关依赖 yum -y install…

java基于ssm的奖学金管理系统-计算机毕业设计

项目介绍 1.注册模块:游客用户可以系统进行账号注册,账号注册需要输入的数据,有用户名、密码、确认密码、邮箱、qq等,提交注册信息后,系统通过js代码判断用户输入的注册数据是否符合规格,如果符合规格后&a…

带临床数据的热图 -- 给样品添加TNM分期、年龄、性别、riskscore等信息

聚类热图是生物医学论文中最常见的一类图。通常,一篇研究癌症预后、突变等类型的文章最终都会聚焦到几个或者十几个基因,然后利用这些基因的表达量绘制热图,并尽可能多地在图中展示样品的临床信息,例如TNM(Tumor Node …

【Linux】信号

//myproc.cc #include<iostream> #include<unistd.h> using namespace std; int main() {while(1){sleep(1);}return 0; } 信号捕捉 signal #include<iostream> #include<unistd.h> #include<signal.h> using namespace std; void handler(int s…

Mybatis generator实战:自动生成POJO类完整解决方案

目录1、背景&#xff1a;Mybatis generator根据数据库表自动生成POJO类完整解决方案2、解决方案&#xff1a;mybatis generator 1.3.6 已经有了这个功能&#xff0c;2.1、增加了一个新的属性&#xff1a;2.2、具体配置&#xff0c;在generatreConfig.xml, 例如:3、一定要开始看…

训练集表达的分类规则整理

(A&#xff0c;B)---3*30*2---(1,0)(0,1) 做一个网络分类A和B&#xff0c;让A和B的训练集都只有一张图片3个点&#xff0c;测试集为 0 0 0 0 1 0 0 1 2 0 1 0 3 0 1 1 4 1 0 0 5 1 0 1 6 1 1 0 7 1 1 1 二进制的0-7.记录网络随着A和B的改变分类…

LeetCode - 300 最长递增子序列

目录 题目来源 题目描述 示例 提示 题目解析 算法源码 题目来源 300. 最长递增子序列 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&…

Windows进程间利用管道通信

实验一 一、实验内容或题目&#xff1a; 在父进程中创建一个子进程&#xff0c;并建立一个管道&#xff0c;子进程向管道中写入一个字符串&#xff0c;父进程从管道中读出字符串。 二、实验目的与要求&#xff1a; 利用CRT相关接口&#xff0c;学习在父子进程间实现管道通信…

酒水商城|基于Springboot实现酒水商城系统

作者主页&#xff1a;编程千纸鹤 作者简介&#xff1a;Java、前端、Pythone开发多年&#xff0c;做过高程&#xff0c;项目经理&#xff0c;架构师 主要内容&#xff1a;Java项目开发、毕业设计开发、面试技术整理、最新技术分享 收藏点赞不迷路 关注作者有好处 项目编号&…

【Java八股文总结】之集合

文章目录Java集合一、集合概述1、List、Set、Queue、Map的区别&#xff1f;2、Collections和Collection的区别&#xff1f;3、集合和数组的区别二、List1、ArrayList和LinkedList的区别&#xff1f;2、ArrayList和Vector的区别3、Vector、ArrayList和LinkedList的区别4、ArrayL…

Echarts:简单词云图实现

Echarts是一个开源的可视化图表库&#xff0c;支持丰富的图表&#xff0c;官网中还有大量示例可以选择使用、参考。 其中比较好玩、有趣的是词云&#xff0c;词云就是用关键词组成的一朵云&#xff0c;更广泛的定义是&#xff0c;由关键词组成的任意一种图案均称为词云。因此&…