CN113470178A - 生成三维建筑模型的方法、电子设备和存储介质 - Google Patents
生成三维建筑模型的方法、电子设备和存储介质 Download PDFInfo
- Publication number
- CN113470178A CN113470178A CN202011483736.0A CN202011483736A CN113470178A CN 113470178 A CN113470178 A CN 113470178A CN 202011483736 A CN202011483736 A CN 202011483736A CN 113470178 A CN113470178 A CN 113470178A
- Authority
- CN
- China
- Prior art keywords
- bimbase
- python
- service
- request
- kernel
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 181
- 238000003860 storage Methods 0.000 title claims description 18
- 230000008569 process Effects 0.000 claims abstract description 140
- 238000013515 script Methods 0.000 claims abstract description 98
- 238000011161 development Methods 0.000 claims abstract description 52
- 238000004891 communication Methods 0.000 claims abstract description 25
- 230000004044 response Effects 0.000 claims abstract description 25
- 238000012545 processing Methods 0.000 claims abstract description 22
- 238000004590 computer program Methods 0.000 claims description 16
- 230000008859 change Effects 0.000 claims description 3
- 239000000126 substance Substances 0.000 claims 1
- 238000005516 engineering process Methods 0.000 abstract description 10
- 238000010586 diagram Methods 0.000 description 27
- 230000006870 function Effects 0.000 description 19
- 238000013461 design Methods 0.000 description 12
- 230000002452 interceptive effect Effects 0.000 description 9
- 230000003993 interaction Effects 0.000 description 7
- 238000010276 construction Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 239000000835 fiber Substances 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/10—Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
Landscapes
- Physics & Mathematics (AREA)
- Geometry (AREA)
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Stored Programmes (AREA)
Abstract
本公开的实施例涉及一种生成三维建筑模型的方法,包括:响应于用户的建模请求,启用BIMBASE内核主进程和服务、Python进程和服务;运行用于生成三维建筑模型的脚本;BIMBASE服务分配资源,向Python服务发送资源的标识符,以建立BIMBASE内核主进程与Python进程之间的通信;基于脚本信息,通过资源经由BIMBASE服务向BIMBASE内核主进程发送建模处理请求,使得三维建筑模型根据建模信息被创建且被显示。在BIMBASE上实现支持Python二次开发,减低开发难度和成本,促进BIM技术在建筑工程领域中的应用。
Description
技术领域
本公开的实施例涉及计算机领域,并且更具体地,涉及生成三维建筑模型的方法、电子设备、计算机可读存储介质以及计算机程序产品。
背景技术
BIM(Building Information Modeling,建筑信息模型)是基于建筑全生命周期的一种信息化管理技术。BIM可将建筑信息进行数字化,得到相应的数字信息模型,并以这个数字信息模型为基础,对建筑物整个生命周期中的各个阶段进行模拟建造。它具有三维仿真、模拟测试、信息集成及共享协作等功能,可有效应用于建设项目全生命周期的项目规划、协同设计、碰撞检查、性能分析、施工模拟、成本及进度控制等方面,能够有效控制设计变更,减少返工浪费和工期损失。另外,对完整留存建筑物的设备材料管线信息、提高项目精细化管理水平以及增强后期物业管理维护的针对性等,都具有重要意义。因此,如何促进BIM技术在我国建筑工程领域中的应用具有重要意义和实用价值。
发明内容
本公开的实施例提供了一种生成三维建筑模型的方案。
在本公开的第一方面中,提供了一种生成三维建筑模型的方法,包括:响应于用户的建模请求,启用建筑信息模型平台BIMBASE中的BIMBASE内核主进程和BIMBASE服务;启用Python进程以触发Python服务的启用以运行Python脚本,Python脚本用于生成三维建筑模型;Python进程向Python服务注册与运行Python脚本相关的脚本信息;Python服务向BIMBASE服务发送资源请求,资源请求用于请求建立BIMBASE内核主进程与Python进程之间的通信;响应于资源请求,BIMBASE服务向BIMBASE内核主进程发送访问请求以通知BIMBASE内核主进程有外部请求访问;响应于BIMBASE内核主进程接受访问请求,BIMBASE服务分配用于建立BIMBASE内核主进程与Python进程之间的通信的资源;BIMBASE服务向Python服务发送资源的标识符,以建立BIMBASE内核主进程与Python进程之间的通信;以及Python服务基于与运行Python脚本相关的脚本信息,通过资源经由BIMBASE服务向BIMBASE内核主进程发送建模处理请求,建模处理请求包括建模所需的建模信息,以使得BIMBASE内核主进程根据建模信息在BIMBASE中创建并且显示三维建筑模型。由此,可以在BIMBASE中使用Python进行简单高效的二次开发,减低了开发难度与开发成本,促进了BIM技术在我国建筑工程领域中的应用。
在本公开的第二方面中,提供了一种电子设备,其特征在于包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行根据本公开的第一方面所述的方法。
在本公开的第三方面中,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于计算机指令用于使计算机执行根据本公开的第一方面所述的方法。
在本公开的第四方面中,提供了一种计算机程序产品,包括计算机程序指令,其特征在于计算机程序指令被处理器执行时,实现根据本公开的第一方面所述的方法。
提供发明内容部分是为了简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本公开的关键特征或主要特征,也无意限制本公开的范围。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。在附图中:
图1示出了根据本公开的实施例的示例性环境的示意图;
图2示出了根据本公开的实施例的BIMBASE的结构的示意图;
图3示出了根据本公开的实施例的基于BIMBASE的Python二次开发架构的示意图;
图4示出了根据本公开的实施例的在BIMBASE与Python进程之间的示例交互过程的示意图;
图5示出了根据本公开的实施例的在BIMBASE中使用Python进行二次开发的过程的示意图;
图6示出了根据本公开的实施例的生成三维建筑模型的方法的流程图;
图7示出了根据本公开的实施例的在BIMBASE中使用Python进行二次开发的过程的示意图;以及
图8示出了可以用来实施本公开的实施例的示例设备的框图。
具体实施方式
下面将参考附图中示出的若干示例实施例来描述本公开的原理。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“一组示例实施例”。术语“另一实施例”表示“一组另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如上述所讨论的,如何促进BIM技术在我国建筑工程领域中的应用具有重要意义和实用价值。然而,BIM技术来源于国外,随着BIM技术逐渐被我国工程界认识与应用,工程界在应用BIM技术的过程中还存在不少问题与困难。例如,虽然目前在市场上已有不少如Revit、ArchiCAD、Tekla等国外BIM软件,但是在功能和使用习惯,以及一些标准上面还不是完全的能够满足国内的设计要求。另外,如何保障我国建筑大数据信息的安全问题同样成为一个难题。因此,期望尽快开发出符合我国设计规范标准和国情的BIM设计系统和平台。
另外,在传统的BIM专业二次开发中,采用和平台一致的开发方式,即基于C++语言。这带来了以下缺点:(1)由于建筑工程业务场景复杂,个性化程度高,导致C++这种复杂的开发方式,个性化成本很高;(2)每次运行编译时间长,平台需要重启,不支持热加载,带来了调试时间消耗;(3)C++开发方式学习门槛高,建筑单位与合作伙伴很难在短时间掌握开发方式。
为了至少部分地解决上述缺点中的一些缺点,本公开的实施例提供了一种生成三维建筑模型的方法。首先,响应于用户的建模请求,启用建筑信息模型平台BIMBASE中的BIMBASE内核主进程和BIMBASE服务。然后,启用Python进程以触发Python服务的启用以运行Python脚本,Python脚本用于生成三维建筑模型。Python进程向Python服务注册与运行Python脚本相关的脚本信息。Python服务向BIMBASE服务发送资源请求,资源请求用于请求建立BIMBASE内核主进程与Python进程之间的通信。响应于资源请求,BIMBASE服务向BIMBASE内核主进程发送访问请求以通知BIMBASE内核主进程有外部请求访问。响应于BIMBASE内核主进程接受访问请求,BIMBASE服务分配用于建立BIMBASE内核主进程与Python进程之间的通信的资源。BIMBASE服务向Python服务发送资源的标识符,以建立BIMBASE内核主进程与Python进程之间的通信。最后,Python服务基于与运行Python脚本相关的脚本信息,通过资源经由BIMBASE服务向BIMBASE内核主进程发送建模处理请求,建模处理请求包括建模所需的建模信息,以使得BIMBASE内核主进程根据建模信息在BIMBASE中创建并且显示三维建筑模型。
基于这样的三维建筑模型生成方案,通过构建BIMBASE基础平台,为BIM设计类软件提供了一个高性能的低层开发平台。同时在BIMBASE上支持同步调试的Python二次开发,由于Python语法简单,运行时解释不需要编译,因此,使得开发人员可以同步调试自己书写的程序,不需要重启平台。
图1示出了根据本公开实施例的示例性环境100的示意图,在该示例环境中,根据本公开实施例的设备和/或方法可以被实施。如图1所示,根据本公开实施例的各种方法在计算设备120处实施。
计算设备120上可以安装有BIMBASE 130。BIMBASE 130,又称为BIM基础平台,其是按照中国BIM标准建立的自主知识产权BIM平台,符合国家计算机系统安全保护条例和网络安全法的要求。BIMBASE 130提供了BIM通用建模功能,同时也是一个BIM设计类软件的高性能二次开发平台。
BIMBASE 130自带一套通用建模工具,通过将几何、属性和关系数据融合在一起,可以创建跨行业跨领域的任意BIM模型。BIMBASE 130还是一个高效的BIM应用二次开发平台,提供了几何造型、图形显示、数据管理、协同管理、开发框架等核心功能。用户可以基于BIMBASE 130研发基于三维、二维的BIM设计和施工类的功能插件。
在本发明的一个实施例中,BIMBASE 130封装了一套跨进程应用程序编程接口(API),以保证用户110可以利用这些API二次开发所需的一切基本工具。
在另外一些实施例中,BIMBASE 130可以提供Python接口以实现支持Python开发环境。BIMBASE 130中可以包括脚本库,脚本库中存储多个Python脚本140-1,这些Python脚本140-1可以重复使用。
用户110可以向计算设备120请求建立三维建筑模型。例如,用户110可以运行Python脚本,以请求直接在BIMBASE 130中建立一个三维模型。用户110也可以运行Python脚本,以请求在BIMBASE130中启动可以通过交互来建立三维模型的Python工具。在一些实施例中,用户110可以在BIMBASE 130中运行Python脚本140-1或者在外部集成开发环境中运行Python脚本140-2以请求在BIMBASE130上生成三维模型。
在一些实施例中,响应于用户的建模请求,计算设备120可以启用建筑信息模型平台BIMBASE中的BIMBASE内核主进程、BIMBASE服务、Python进程和Python服务。计算设备120可以通过BIMBASE服务和Python服务,建立BIMBASE内核主进程与Python进程之间的通信。通过运行Python脚本140,计算设备120可以在BIMBASE 130中建立并显示三维建筑模型。
可以理解的是,计算设备120的示例包括但不限于计算机、平板电脑、智能手机。与用户110的交互包括但不限于包括如下项的用户输入:键盘输入、鼠标输入、触控输入、语音输入、手势输入、眼动追踪输入、数位画图板输入等。本公开对此并不限制。
下文将结合图1的示例环境、参照图2至图7的流程图或示意图详细来描述根据本公开实施例的用于生成三维建筑模型的方法。应当理解,所描述的方法可以包括未示出的附加动作和/或可以省略所示出的动作,本公开的范围在此方面不受限制。
图2示出了根据本公开的实施例的BIMBASE的结构200的示意图。在图2中,BIMBASE202包括P3D图形引擎204、二次开发接口206、BIM通用建模模块208以及一系列功能插件210。
在一些实施例中,P3D图形引擎204和BIM通用建模模块208可以提供一套通用建模工具。整个BIM模型由场景树组织起来的图元、构件、组件及其属性和关联关系组成,其中图元是组成对象的最小可视化单元,构件是图元的组合,而组件是构件的组合,从而可以表达各种复杂三维建筑模型。BIM通用建模模块208可以方便友好地创建图元、构件、组件并通过自定义的场景树进行管理。
在一些实施例中,BIMBASE 130可以提供自定义对象属性集,即功能插件210,以允许用户自定义对象属性集,并且与图元、构件、组件进行绑定。功能插件210可以包括BIMBASE系列插件、市政专业设计插件、电力专业设计插件和工厂工艺管道设计插件等。这些功能插件210可用于建筑、公路、桥梁、隧道、场地、地下空间、工厂管道、设备等BIM模型的创建。可以理解,此处列出的功能插件仅是示例,本领域技术人员可以理解BIMBASE130可以包括任何专业的专业设计插件以实现不同专业的BIM模型的创建。
在一些实施例中,二次开发接口206可以向用户110提供BIM应用的二次开发功能。BIMBASE 130可以支持多层级的二次开发,从图形平台、专业平台到上层软件,均开放API。在一些实施例中,BIMBASE可以支持C++和Python语言。图3示出了根据本公开的实施例的基于BIMBASE的Python二次开发架构300的示意图。在图3中,BIMBASE 130提供了多个层级的二次开发,其中P3D内核310与C++二次开发320提供了BIMBASE 130的基本建模功能,而在其上还支持Python二次开发330。由于Python语法简单,运行时解释不需要编译,因此Python的二次开发比C++开发方式更加简单便捷,可以使开发人员可以同步调试自己书写的程序,写好即调试,全程以热拔插方式组织二次开发与平台间关系。同时,BIMBASE 130还提供了各种专业设计插件340。因此,BIMBASE 130可以实现不同专业的BIM模型的创建。
通过这种方式,可以组建一个BIM开发环境,用户110可以共享自己开发的构件,并且由用户110开发的构件之间可以任意组合,可以方便地由基础模型组合成复杂模型。另外,BIMBASE提供了一套跨进程API,以提供进程无关性,保证用户可以利用API二次开发所需的一切基本工具,以实现用户可以选择Python开发环境与工具,在进行二次开发的过程中,可以随时进行调试,查找程序的缺陷与错误,并且这个过程不需要等待编译与重启平台,提供更多的便利性。因此,借助此机制可以简化用户开发前准备工作。
下文参考图4来描述计算设备120中的各个进程和服务之间的示例交互过程,从而计算设备120可以通过运行Python脚本来建立并且显示三维建筑模型。图4示出了根据本公开的实施例的在BIMBASE与Python进程之间的示例交互过程400的示意图。为了说明的目的,将参考图1来描述示例交互过程400。
如图4所示,用户110可以发起建模请求。例如,用户110可以通过鼠标点击BIMBASE130来发起建模请求。响应于用户的建模请求,启用(410)建筑信息模型平台BIMBASE中的BIMBASE内核主进程408,并且同时启用(412)BIMBASE服务406。然后,BIMBASE服务406可以进行基础函数的注册(414)。基础函数可以包括进行三维建模所必须的函数,例如工具函数、鼠标点击函数等。
当用户运行(416)Python脚本时,BIMBASE内核主进程408可以启用(418)Python进程402,并且随后Python进程402可以启用(420)Python服务404以运行Python脚本,该Python脚本用于生成三维建筑模型。此时,在BIMBASE 130中可以出现用于编辑和运行Python脚本的外部集成开发环境。在一些实施例中,用户可以在BIMBASE 130中运行Python脚本。例如,用户可以在BIMBASE 130中提供的交互界面中直接运行已经编写好的Python脚本。在一些实施例中,用户可以在外部集成开发环境运行Python脚本。例如,用户可以在外部集成开发环境中编写Python脚本,并且在编写完之后运行Python脚本。在一些实施例中,外部集成开发环境还可以提供断点调试功能。
图5示出了根据本公开的实施例的在BIMBASE中使用Python进行二次开发的过程500的示意图。如图5所示,在BIMBASE 130中显示了两部分区域,其中左边的黑色编辑区域为Python外部集成开发环境520,右边的白色区域为BIMBASE交互界面510。用户可以在Python外部集成开发环境520中编写、运行和调试Python脚本。用户也可以在BIMBASE交互界面510中直接运行已经写好的Python脚本。通过这种方式,使得开发人员可以使用Python来进行三维建模,并且开发人员可以同步调试自己书写的程序,写好即调试,而不需要重启平台。
继续参考图4,Python进程402可以向Python服务404注册(422)与运行Python脚本相关的脚本信息。在一些实施例中,根据Python脚本的内容,Python进程402可以向Python服务404注册运行Python脚本所调用的函数和参数。例如,Python脚本可以是用于启动可以通过交互来建立三维模型的Python工具,该Python工具例如可以是一个属性对话框、菜单等。在这种情况下,脚本信息可以包括启动Python工具所调用的函数;Python脚本还可以是用于直接建立一个“三明治”墙体模型,在这种情况下,脚本信息可以包括建立该墙体模型所调用的函数和参数。在一些实施例中,与运行Python脚本相关的脚本信息还可以包括Python子脚本。可以将一些常见的用于通用模型建立的Python脚本存储到BIMBASE 130中的脚本库中,使得这些Python脚本可以被复用。在这种情况下,用户可以通过运行Python执行脚本来自动运行脚本库中的其他可复用Python脚本,从而使得Python执行脚本具有较少的代码,仅起到对脚本库中可复用Python脚本的组织以及给予一些初始数据的作用。脚本库中的Python脚本可以包括大量模型的创建的逻辑,Python执行脚本仅需对其进行组合拼装即可完成用户所需的三维建筑模型。之后,Python服务404可以根据脚本信息来进一步与BIMBASE服务406通信以生成三维建筑模型。
进一步地,Python服务404可以向BIMBASE服务406发送(424)资源请求,该资源请求用于请求建立BIMBASE内核主进程408与Python进程402之间的通信。例如,资源可以包括用于BIMBASE内核主进程408与Python进程402之间的通信的管道名。可以理解,资源还可以包括用于建立BIMBASE内核主进程408与Python进程402之间的通信的任何资源。随后,响应于资源请求,BIMBASE服务406可以向BIMBASE内核主进程408发送(426)访问请求以通知BIMBASE内核主进程408有外部请求访问。响应于BIMBASE内核主进程408接受该访问请求,BIMBASE服务406可以分配用于建立BIMBASE内核主进程408与Python进程402之间的通信的资源。然后,BIMBASE服务406可以向Python服务404发送(428)该资源的标识符(例如,管道名),以建立BIMBASE内核主进程408与Python进程402之间的通信。以此方式,通过Python服务404和BIMBASE服务406建立了Python进程402与BIMBASE内核主进程408之间的通信。
最后,Python服务404可以基于与运行Python脚本相关的脚本信息,通过资源经由BIMBASE服务406向BIMBASE内核主进程408发送(430)建模处理请求,该建模处理请求可以包括建模所需的建模信息,以使得BIMBASE内核主进程可以根据建模信息在BIMBASE中创建并且显示三维建筑模型。
由此可见,根据本公开的实施例,通过Python服务和BIMBASE服务可以建立Python进程与BIMBASE内核主进程之间的通信,从而使得可以在BIMBASE中使用Python进行简单高效的二次开发,减低了开发难度与开发成本,促进了BIM技术在我国建筑工程领域中的应用。现在将详细描述一些示例实施例。
在一些实施例中,建模处理请求可以为创建几何体请求,该创建几何体请求包括创建几何体所需的信息。此时,BIMBASE内核主进程408可以根据创建几何体所需的信息在BIMBASE 130中创建并且显示三维建筑模型。该实施例给出了用户通过运行Python脚本直接生成三维建筑模型的一个示例。用户可以通过运行Python脚本来直接生成复杂的三维建筑模型。在一些实施例中,创建几何体请求可以包括指示以下一项或多项的信息:几何体的类型、几何体的大小、或者几何体的颜色。仍然以建立一个“三明治”墙体模型为例并且参考图5。
以用户在Python外部集成开发环境520中编写一段用于直接建立一个“三明治”墙体模型540的代码530为例,可以理解,用户也可以用户可以在BIMBASE交互界面510中运行用于直接建立一个“三明治”墙体模型540的代码530。如图5所示,代码530中定义了“三明治”墙体模型540所包括的形状、这些形状的长度、宽度、高度、这些形状的位置,以及三明治”墙体模型540在BIMBASE交互界面510中显示的位置坐标等。用户在Python外部集成开发环境520中运行该代码530,Python服务404可以通过资源经由BIMBASE服务406向BIMBASE内核主进程408发送创建几何体请求,该创建几何体请求包括创建一个“三明治”墙体模型540所包括的形状、这些形状的长度、宽度、高度、这些形状的位置,以及“三明治”墙体模型540在BIMBASE交互界面510中显示的位置坐标等。这样,BIMBASE内核主进程408可以根据这些信息而在BIMBASE 130中创建并且显示一个“三明治”墙体模型540。
在一些实施例中,当在BIMBASE 130中运行Python脚本时,用户可以修改所要建立的三维建筑模型的形状、数量、颜色以及位置等。以此方式,用户可以同时创建多个三维建筑模型,并且可以方便地修改三维建筑模型的形状、数量、颜色以及位置等以满足用户的需要。
可以理解,创建几何体请求可以包括指示与几何体相关的任何合适的信息。通过这种方式,用户可以方便地使用Python语言来生成由多个集合体组合而成的复杂三维建筑模型。
在一些实施例中,建模处理请求可以为启用Python工具请求,该启用Python工具请求可以包括启用Python工具所需的信息。此时,BIMBASE内核主进程408可以根据启用Python工具所需的信息启用Python工具,以等待用户执行特定操作。该实施例给出了用户通过启动可以通过交互来建立三维模型的Python工具的一个示例。用户可以通过Python工具,响应于用户的特定操作以交互的方式生成三维建筑模型。
在一些实施例中,特定操作可以包括以下一项或多项:鼠标点击、键盘按下、或者鼠标拖拽。在一些实施例中,当BIMBASE内核主进程408接收到启用Python工具请求之后,BIMBASE内核主进程408可以检测用户的特定操作。与直接建立一个“三明治”墙体模型不同,在启用Python工具之后,BIMBASE内核主进程408需要检测用户的特定操作来进行建模。响应于用户执行特定操作,BIMBASE内核主进程408可以经由BIMBASE服务406向Python服务404发送指示特定操作的操作信息。该操作信息与特定操作相关,例如,可以指示特定操作的操作类型、特定操作发生的位置等。可以理解,这里仅示例性地给出几种特定操作以及与特定操作相关的操作信息,在实际使用中,可以采用任何合适的特定操作及其操作信息。
然后,Python服务404可以根据操作信息运行Python脚本,并且经由BIMBASE服务406向BIMBASE内核主进程408发送创建几何体请求,并且响应于创建几何体请求,BIMBASE内核主进程408可以在BIMBASE 130中创建并且显示三维建筑模型。此处创建几何体请求所包括的信息以及响应于创建几何体请求创建并且显示三维建筑模型的方式与直接建立三维建筑模型的方式相同,在此不再赘述。以两次鼠标点击建立一个“三明治”墙体模型为例并且参考图5。
如图5所示,用户可以在BIMBASE交互界面510中的不同位置点击两次鼠标,从而在两个位置之间建立一个“三明治”墙体模型540。通过这种方式,用户可以以交互的方式使用Python语言便捷快速地生成由多个集合体组合而成的复杂三维建筑模型,进一步简化了用户的操作。
在一些实施例中,当在BIMBASE 130中运行Python脚本时,响应于用户请求对BIMBASE 130中显示的三维建筑模型进行编辑,BIMBASE内核主进程408可以经由BIMBASE服务406向Python服务404发送指示与编辑相关的信息。当在BIMBASE 130中运行Python脚本时,用户可以利用Python工具对所显示的三维建筑模型进行修改或者替换。在一些实施例中,用户请求对BIMBASE 130中显示的三维建筑模型进行编辑可以包括以下一项或多项:用户请求改变所述三维建筑模型的数量、颜色、或者形状。可以理解,用户可以请求对BIMBASE130中显示的三维建筑模型进行任何合适的编辑操作。
然后,Python服务404可以根据与编辑相关的信息修改并运行Python脚本,并且可以经由BIMBASE服务406向BIMBASE内核主进程408发送创建几何体请求。响应于创建几何体请求,BIMBASE内核主进程408可以在BIMBASE 130中创建并且显示三维建筑模型。此处创建几何体请求所包括的信息以及响应于创建几何体请求创建并且显示三维建筑模型的方式与直接建立三维建筑模型的方式相同,在此不再赘述。以此方式,用户可以方便地修改所创建的三维建筑模型。
图6示出了根据本公开的实施例的生成三维建筑模型的方法600的流程图。例如,方法600可以由如图1所示的计算设备120来实现。应理解,方法600还可以由任何合适的其他计算设备来实现,在此仅为示例性说明,而不应对本公开的范围构成任何限制。
在框602中,响应于用户的建模请求,计算设备120可以启用建筑信息模型平台BIMBASE中的BIMBASE内核主进程和BIMBASE服务。在框604中,启用Python进程以触发Python服务的启用以运行Python脚本,Python脚本用于生成三维建筑模型。在框606中,Python进程向Python服务注册与运行Python脚本相关的脚本信息。在框608中,Python服务向BIMBASE服务发送资源请求,资源请求用于请求建立BIMBASE内核主进程与Python进程之间的通信。在框610中,响应于资源请求,BIMBASE服务向BIMBASE内核主进程发送访问请求以通知BIMBASE内核主进程有外部请求访问。在框612中,响应于BIMBASE内核主进程接受访问请求,BIMBASE服务分配用于建立BIMBASE内核主进程与Python进程之间的通信的资源。在框614中,BIMBASE服务向Python服务发送资源的标识符,以建立BIMBASE内核主进程与Python进程之间的通信。在框608中,Python服务基于与运行Python脚本相关的脚本信息,通过资源经由BIMBASE服务向BIMBASE内核主进程发送建模处理请求,建模处理请求包括建模所需的建模信息,以使得BIMBASE内核主进程根据建模信息在BIMBASE中创建并且显示三维建筑模型。
图7示出了根据本公开的实施例的在BIMBASE中使用Python进行二次开发的过程700的示意图。BIMBASE中可以包括脚本库710,脚本库710中包括多个Python脚本720-1……720-N(为了方便描述,以下统称为Python脚本720),这些Python脚本720作为API被给出并且可以被复用。计算设备120可以运行同样作为API给出的Python执行脚本730,在运行过程中,Python执行脚本730可以自动调用脚本库710中的Python脚本720。Python执行脚本仅起到对脚本库710中Python脚本720的组织以及给予一些初始数据的作用,因此具有较少的代码。而脚本库710中Python脚本720可以包括大量模型的创建的逻辑,Python执行脚本730仅需对其进行组合拼装即可完成用户所需的三维建筑模型。另外,BIMBASE中还包括Python工具730,用户可以利用该Python工具730定义所生成的三维建筑模型的形状、数目或者颜色等属性。通过运行Python执行脚本,在BIMBASE中可以显示所生成的三维建筑模型740。其中每个步骤的具体实施参见图2至图6,在此不再赘述。
图8示出了可以用来实现本公开的实施例的示例电子设备800的示意性框图。例如,电子设备800可被用于实现图1中所示的计算设备102。如图所示,设备800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的计算机程序指令或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序指令,来执行各种适当的动作和处理。在RAM 803中,还可存储设备800操作所需的各种程序和数据。CPU 801、ROM 802以及RAM803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理单元801执行上文所描述的各个方法和处理,例如过程500。例如,在一些实施例中,过程500可以被实现为计算机软件程序或计算机程序产品,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序加载到RAM 803并由CPU801执行时,可以执行上文描述的过程500中的一个或多个步骤。备选地,在其他实施例中,CPU 801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行过程300。
本公开可以是方法、装置、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。在一些实施例中,本公开所描述的方法可以在装配式建筑设计中使用。在一些实施例中,本公开所描述的方法可以被实现在BIMBASE中。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、任意的非暂时性存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施方式,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施方式。在不偏离所说明的各实施方式的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施方式的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文披露的各实施方式。
Claims (11)
1.一种生成三维建筑模型的方法,所述方法包括:
响应于用户的建模请求,启用建筑信息模型平台BIMBASE中的BIMBASE内核主进程和BIMBASE服务;
启用Python进程以触发Python服务的启用以运行Python脚本,所述Python脚本用于生成三维建筑模型;
所述Python进程向所述Python服务注册与运行所述Python脚本相关的脚本信息;
所述Python服务向所述BIMBASE服务发送资源请求,所述资源请求用于请求建立所述BIMBASE内核主进程与所述Python进程之间的通信;
响应于所述资源请求,所述BIMBASE服务向所述BIMBASE内核主进程发送访问请求以通知所述BIMBASE内核主进程有外部请求访问;
响应于所述BIMBASE内核主进程接受所述访问请求,所述BIMBASE服务分配用于建立所述BIMBASE内核主进程与所述Python进程之间的通信的资源;
所述BIMBASE服务向所述Python服务发送所述资源的标识符,以建立所述BIMBASE内核主进程与所述Python进程之间的通信;以及
所述Python服务基于与运行所述Python脚本相关的所述脚本信息,通过所述资源经由所述BIMBASE服务向所述BIMBASE内核主进程发送建模处理请求,所述建模处理请求包括建模所需的建模信息,以使得所述BIMBASE内核主进程根据所述建模信息在所述BIMBASE中创建并且显示所述三维建筑模型。
2.根据权利要求1所述的方法,其中启用Python进程以触发Python服务的启用以运行Python脚本包括:
在所述BIMBASE中运行所述Python脚本;或者
在外部集成开发环境运行所述Python脚本。
3.根据权利要求1所述的方法,其中所述建模处理请求为创建几何体请求,所述创建几何体请求包括创建几何体所需的信息,所述BIMBASE内核主进程根据所述建模信息在所述BIMBASE中创建并且显示所述三维建筑模型包括:
所述BIMBASE内核主进程根据创建几何体所需的信息在所述BIMBASE中创建并且显示所述三维建筑模型。
4.根据权利要求3所述的方法,其中创建几何体请求包括指示以下一项或多项的信息:
几何体的类型、几何体的大小、或者几何体的颜色。
5.根据权利要求1所述的方法,其中所述建模处理请求为启用Python工具请求,所述启用Python工具请求包括启用Python工具所需的信息,所述BIMBASE内核主进程根据所述建模信息在所述BIMBASE中创建并且显示所述三维建筑模型包括:
所述BIMBASE内核主进程根据启用Python工具所需的信息启用所述Python工具,以等待用户执行特定操作;
响应于用户执行特定操作,所述BIMBASE内核主进程经由所述BIMBASE服务向所述Python服务发送指示特定操作的操作信息;
所述Python服务根据所述操作信息运行所述Python脚本,并且经由所述BIMBASE服务向所述BIMBASE内核主进程发送创建几何体请求;以及
响应于所述创建几何体请求,所述BIMBASE内核主进程在所述BIMBASE中创建并且显示所述三维建筑模型。
6.根据权利要求4所述的方法,其中所述特定操作包括以下一项或多项:
鼠标点击、键盘按下、或者鼠标拖拽。
7.根据权利要求2所述的方法,其中当在所述BIMBASE中运行所述Python脚本时,所述方法还包括:
响应于用户请求对所述BIMBASE中显示的所述三维建筑模型进行编辑,所述BIMBASE内核主进程经由所述BIMBASE服务向所述Python服务发送指示与编辑相关的信息;
所述Python服务根据所述与编辑相关的信息修改并运行所述Python脚本,并且经由所述BIMBASE服务向所述BIMBASE内核主进程发送创建几何体请求;以及
响应于所述创建几何体请求,所述BIMBASE内核主进程在所述BIMBASE中创建并且显示所述三维建筑模型。
8.根据权利要求7所述的方法,其中用户请求对所述BIMBASE中显示的所述三维建筑模型进行编辑包括以下一项或多项:
所述用户请求改变所述三维建筑模型的数量、颜色、或者形状。
9.一种电子设备,其特征在于包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1至8的任一项所述的方法。
10.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于所述计算机指令用于使所述计算机执行权利要求1至8的任一项所述的方法。
11.一种计算机程序产品,包括计算机程序指令,其特征在于所述计算机程序指令被处理器执行时,实现权利要求1至8的任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011483736.0A CN113470178A (zh) | 2020-12-15 | 2020-12-15 | 生成三维建筑模型的方法、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011483736.0A CN113470178A (zh) | 2020-12-15 | 2020-12-15 | 生成三维建筑模型的方法、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113470178A true CN113470178A (zh) | 2021-10-01 |
Family
ID=77868492
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011483736.0A Pending CN113470178A (zh) | 2020-12-15 | 2020-12-15 | 生成三维建筑模型的方法、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113470178A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106095431A (zh) * | 2016-06-08 | 2016-11-09 | 中国科学院武汉岩土力学研究所 | 基于Python的3DGIS系统及其快速开发的方法 |
CN107589999A (zh) * | 2017-09-04 | 2018-01-16 | 哈尔滨工程大学 | 一种天地一体化工程中进程通信安全通道建立方法 |
US20190005185A1 (en) * | 2017-06-30 | 2019-01-03 | Aerion Corporation | Computing Techniques for Three-Dimensional Modeling and Design Analysis |
CN111724476A (zh) * | 2020-06-29 | 2020-09-29 | 宁波市政工程建设集团股份有限公司 | 一种基于Dynamo与Python的异形桥墩快速建模方法 |
-
2020
- 2020-12-15 CN CN202011483736.0A patent/CN113470178A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106095431A (zh) * | 2016-06-08 | 2016-11-09 | 中国科学院武汉岩土力学研究所 | 基于Python的3DGIS系统及其快速开发的方法 |
US20190005185A1 (en) * | 2017-06-30 | 2019-01-03 | Aerion Corporation | Computing Techniques for Three-Dimensional Modeling and Design Analysis |
CN107589999A (zh) * | 2017-09-04 | 2018-01-16 | 哈尔滨工程大学 | 一种天地一体化工程中进程通信安全通道建立方法 |
CN111724476A (zh) * | 2020-06-29 | 2020-09-29 | 宁波市政工程建设集团股份有限公司 | 一种基于Dynamo与Python的异形桥墩快速建模方法 |
Non-Patent Citations (5)
Title |
---|
BLENDER: "插件教程—Blender Manual", pages 5 - 10, Retrieved from the Internet <URL:https://docs.blender.org/manual/zh-hans/2.82/advanced/scripting/addon_tutorial.html#> * |
FANLONG TANG ET AL.: "Integrating three-dimensional road design and pavement structure analysis based on BIM", AUTOMATION IN CONSTRUCTION, vol. 113, 4 May 2020 (2020-05-04), pages 1 - 17 * |
一粒马豆: "Blender Python API 编程让3D建模插上双翼腾飞", pages 1 - 3, Retrieved from the Internet <URL:https://blog.csdn.net/maillibin/article/details/79334954> * |
梁娟;彭麦福;李莹莹;贾雪倩;朱权洁;: "基于Blender的矿山虚拟现实快速构建与实现", 中国安全生产科学技术, no. 11, 30 November 2015 (2015-11-30), pages 144 - 150 * |
演奇: ""【Blender】【0_基础篇】如何用Python脚本编写自己的插件"", pages 5 - 13, Retrieved from the Internet <URL:https://zhuanlan.zhihu.com/p/138455778> * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10061573B2 (en) | User interfaces of application porting software platform | |
JP5679989B2 (ja) | デバッグパイプライン | |
EP3304286B1 (en) | Data binding dependency analysis | |
CN112513820A (zh) | 开发工具扩展程序的透明远程执行 | |
Thayer et al. | A theory of robust API knowledge | |
CN110855482A (zh) | 三维动态通信网络模拟仿真方法、系统及存储介质 | |
CN110968305A (zh) | 小程序可视化生成方法、装置、设备及存储介质 | |
CN108536964A (zh) | 存储介质、卫星星座覆盖性能仿真分析方法及其系统 | |
KR20130017337A (ko) | 하이브리드 앱 개발 플랫폼 구조 및 그 테스트 방법, 그리고 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체. | |
US20030106042A1 (en) | System and method for animating state diagram through debug connection | |
CN113094776B (zh) | 可视化组件模型数据构建的方法、系统及电子设备 | |
US20160321033A1 (en) | Projection of build and design-time inputs and outputs between different build environments | |
US9542165B2 (en) | Model to Petri-Net transformation | |
CN113470178A (zh) | 生成三维建筑模型的方法、电子设备和存储介质 | |
US11573787B1 (en) | Hot reloading a running application with an unsaved source code change | |
CN113590221B (zh) | 着色器变体数量的检测方法、装置、电子设备及存储介质 | |
CN110465093B (zh) | 一种基于Unity的包体冗余资源分析方法及其装置 | |
CN114741294A (zh) | 一种页面的调试方法、装置、设备及存储介质 | |
CN114781029A (zh) | 一种三维信息模型转换为二维图的方法、系统、存储介质 | |
EP3834080B1 (en) | Static reconcilliation of application view hierarchies | |
CN114692055A (zh) | 表单处理方法、装置、存储介质与电子设备 | |
CN107918958B (zh) | 一种可视化和可定制的三维渲染系统及方法 | |
EP3528126B1 (en) | Representing a test execution of a software application using extended reality | |
JP5657183B2 (ja) | 第1のコンピュータ・プログラムが第2のコンピュータ・プログラムのアプリケーション・ロジックを実行することを可能にするための方法および装置、第1のコンピュータ・プログラムと第2のコンピュータ・プログラムとのインターフェースをとるためのコンピュータ・プログラム・コードを生成するための方法および装置、コンピュータ・プログラム、ならびに第1のコンピュータ・プログラムが第2のコンピュータ・プログラムのアプリケーション・ロジックを実行することを可能にするためのソフトウェア・インターフェースを提供するための方法(コンピュータ・プログラム・インターフェース) | |
CN111782196A (zh) | 基于mvp架构的开发方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |