CN114443158B - 基于Navisworks软件处理BIM文件的方法、装置、设备和存储介质 - Google Patents
基于Navisworks软件处理BIM文件的方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN114443158B CN114443158B CN202111645765.7A CN202111645765A CN114443158B CN 114443158 B CN114443158 B CN 114443158B CN 202111645765 A CN202111645765 A CN 202111645765A CN 114443158 B CN114443158 B CN 114443158B
- Authority
- CN
- China
- Prior art keywords
- setting
- file
- category
- bim
- software
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 35
- 238000012545 processing Methods 0.000 title claims abstract description 22
- 238000003860 storage Methods 0.000 title claims abstract description 13
- 238000006243 chemical reaction Methods 0.000 claims abstract description 25
- 230000006870 function Effects 0.000 claims description 13
- 238000000547 structure data Methods 0.000 claims description 5
- 238000009795 derivation Methods 0.000 claims description 3
- 238000009877 rendering Methods 0.000 description 8
- 239000011159 matrix material Substances 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于Navisworks软件处理BIM文件的方法,包括打开Navisworks软件进行插件初始化,并检查是否有BIM文件对象处于打开状态;通过Navisworks软件中的选择树视图设置打开的BIM文件对象为隐藏或显示状态;对BIM文件对象进行层级与类别设定;对进行状态、层级与类别设定后的BIM文件对象进行转换导出设置,遍历打开的BIM文件对象中模型数据,转换成场景文件并导出。本发明通过解析BIM文件获取三维模型信息,生成GLTF/GLB模型和THINGJS所需场景文件以便可以在B/S架构上通过THINGJS引擎运行。本发明还涉及一种基于Navisworks软件处理BIM文件的装置、设备和存储介质。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及基于Navisworks软件处理BIM 文件的方法、装置、设备和存储介质。
背景技术
随着云技术的发展,越来越多的应用程序开始走向Web端,用户可以方便地通过网页或手机就可以使用应用程序。三维模型轻量化应用一般包括模型数据转换、Web端渲染和模型数据消费三个部分。模型转换从庞大的 BIM原始模型提取轻量级的几何数据和供二次消费的MD数据格式,大大压缩了模型的数据量,为Web端显示和编辑奠定了基础。Web端渲染主要是将点线面等几何数据渲染,呈现给用户。然而将BIM模型转换为MD数据格式后,还存在一些缺陷待解决。比如它的数据加载性能有待提高。场景数据解析以及3D几何数据要转换成图形API要求的格式,3D数据被传入GPU 之后才能调用图形API进行绘制。若数据格式能够参照GPU接口中的数据格式排列,则可大大提高加载速度。而且MD数据格式并非通用的3D模型格式,拓展性不强,用户使用这种格式需要创建导入器、加载器、转换器,因此拓展性有待提高。
目前第三方存在将BIM文件转换成GLTF模型文件的方法,但是不满足生成THINGJS使用的模型规范。
发明内容
本发明所要解决的技术问题是针对现有技术的不足,提供基于 Navisworks软件处理BIM文件的方法、装置、设备和存储介质。
本发明解决上述技术问题的技术方案如下:
一种基于Navisworks软件处理BIM文件的方法,包括如下步骤:
打开Navisworks软件进行插件初始化,并检查是否有BIM文件对象处于打开状态;
通过Navisworks软件中的选择树视图设置打开的BIM文件对象为隐藏或显示状态;
对BIM文件对象进行层级与类别设定;
对进行状态、层级与类别设定后的BIM文件对象进行转换导出设置,遍历打开的BIM文件对象中模型数据,转换成场景文件并导出。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步地,所述打开Navisworks软件进行插件初始化,并检查是否有 BIM文件对象处于打开状态包括:
用于打开Navisworks软件,在打开Navisworks软件时自动加载 AddInplugin插件,继承AddInplugin的类实现CanExecute函数的重写;
在CanExecute函数中通过.Net Api中提供的Application.ActiveDocument 函数获取当前打开活跃的BIM文件对象,判断活跃的BIM文件对象中是否有模型数据;
若活跃的BIM文件对象中不存在模型数据则转换模块处于不可用置灰状态,若存在模型数据的话则转换模块处于可用状态。
进一步地,所述对BIM文件对象进行层级与类别设定包括:
设置指定对象导出层级,所述层级名称与所述Navisworks软件中数据标签相对应;
设置指定对象导出类别,所述导出类别与THINGJS中对象类别相对应。
进一步地,所述设置指定对象导出层级,所述层级名称与所述Navisworks软件中数据标签相对应包括:
通过Navisworks软件中选择树来获取选择的对象节点集合,所述对象节点为Navisworks中的Layer对象;
通过.Net Api中提供的ComApiBridge.ComApiBridge.ToInwOpSelection 函数将所述对象节点集合转换成Com Api操作的对象节点集合;
通过Com Api中提供的ComApi.InwOaProperty函数为选择的所述对象节点集合设置层级数据标签。
进一步地,所述设置指定对象导出类别,所述导出类别与THINGJS中对象类别相对应包括:
通过.Net Api中提供的Application.ActiveDocument.CurrentSelection.SelectedItems函数获取当前在选择树中选择的对象节点集合;
通过.Net Api中提供的ComApiBridge.ComApiBridge.ToInwOpSelection 函数将对象节点集合转换成Com Api操作的对象节点集合;
通过Com Api中提供的ComApi.InwOaProperty函数为选择的对象节点集合设置类别数据标签。
进一步地,所述对进行状态、层级与类别设定后的BIM文件对象进行转换导出设置包括:
设置所述BIM文件对象是否导出THINGJS中对应floor类别结构,通过Navisworks中的Layer对象根据默认字典配置方式和用户设置层级信息进行导出;
设置外立面导出方式;
对与BIM文件对应的配置文件进行解析,通过设置所述配置文件中指定属性路径对应的指定值,导出对应THINGJS中对象指定的属性和属性值。
进一步地,所述遍历打开的BIM文件对象中模型数据,转换成场景文件并导出包括:
遍历打开的BIM文件对象中模型数据;
判断模型数据与THINGJS类别是否相对应;
设置导出配置生成GLTF模型并存放至models_GLTF目录中;
添加scene.json中场景结构数据;
压缩GLTF模型和场景结构json文件生成output.zip场景包并导出。
本方法发明的有益效果是:提出了一种基于Navisworks软件处理BIM 文件的方法,包括打开Navisworks软件进行插件初始化,并检查是否有BIM 文件对象处于打开状态;通过Navisworks软件中的选择树视图设置打开的 BIM文件对象为隐藏或显示状态;对BIM文件对象进行层级与类别设定;对BIM文件对象进行转换导出设置,遍历打开的BIM文件对象中模型数据,转换成场景文件并导出。本发明通过解析BIM文件获取三维模型信息,生成GLTF/GLB模型和THINGJS所需场景文件以便可以在B/S架构上通过 THINGJS引擎运行。
本发明解决上述技术问题的另一技术方案如下:
一种基于Navisworks软件处理BIM文件的装置,包括:
检查模块,用于在用户打开Navisworks软件时进行插件初始化,并检查是否有BIM文件对象处于打开状态;
状态设置模块,用于通过Navisworks软件中的选择树视图设置打开的 BIM文件对象为隐藏或显示状态;
层级类别设置模块,用于对BIM文件对象进行层级与类别设定;
转换导出模块,用于对进行状态、层级与类别设定后的BIM文件对象进行转换导出设置;
导出模块,用于遍历打开的BIM文件对象中模型数据,转换成场景文件并导出。
此外,本发明还提供一种电子设备,包括:一个或多个处理器;
存储装置,用于存储可执行指令,所述可执行指令在被所述处理器执行时,实现根据上述技术方案中任一项所述的方法。
本发明还提供一种计算机可读存储介质,存储有计算机可执行指令,所述可执行指令在被处理器执行时,实现根据上述技术方案中任一项所述的方法。
本发明附加的方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明实践了解到。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为根据本发明实施例一种基于Navisworks软件处理BIM文件的方法的流程示意图;
图2为根据本发明实施例一种基于Navisworks软件处理BIM文件的装置的模块示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
如图1所述,本发明实施例的一种基于Navisworks软件处理BIM文件的方法,包括以下步骤:
110、打开Navisworks软件进行插件初始化,并检查是否有BIM文件对象处于打开状态;
120、通过Navisworks软件中的选择树视图设置打开的BIM文件对象为隐藏或显示状态;
130、对BIM文件对象进行层级与类别设定;
140、对进行状态、层级与类别设定后的BIM文件对象进行转换导出设置;
150、遍历打开的BIM文件对象中模型数据,转换成场景文件并导出。
本发明能通过Autodesk Navisworks插件方式解析BIM相关文件中三维模型信息并生成GLTF文件以及THINGJS使用的模型相关文件,并对模型进行轻量化,降低模型生产成本,降低THINGJS前端3D展示压力。
在本发明的进一步实施例中,步骤110中打开Navisworks软件进行插件初始化,并检查是否有BIM文件对象处于打开状态包括:
111、用于打开Navisworks软件,在打开Navisworks软件时自动加载 AddInplugin插件,继承AddInplugin的类实现CanExecute函数的重写;
112、在CanExecute函数中通过.Net Api中提供的Application. ActiveDocument函数获取当前打开活跃的BIM文件对象,判断活跃的BIM 文件对象中是否有模型数据;
113、若活跃的BIM文件对象中不存在模型数据则转换模块处于不可用置灰状态,若存在模型数据的话则转换模块处于可用状态。
本发明中步骤110用于进行插件初始化,并判断是否BIM文件打开,如果有BIM文件打开则插件可用;如果无BIM文件打开,则插件不可用,为置灰状态。
其中,本发明中的基于Navisworks的插件开发方案可以实现两种类型的插件分别是AddInPlugin和DockPanePluginRecord,AddInplugin类型插件是 Navisworks在打开时自动加载的插件,DockPanePluginRecord类型插件为可以使用C#的Windows Forms框架开发的Windows窗体的插件。
进一步地,步骤130中对BIM文件对象进行层级与类别设定具体可以包括:
131、设置指定对象导出层级,所述层级名称与所述Navisworks软件中数据标签相对应;
132、设置指定对象导出类别,所述导出类别与THINGJS中对象类别相对应。
本发明通过默认字典和用户对BIM文件中模型对象自定义类别进行结构分类,包括广场、园区、室外设备、楼层、房间、门、窗、地板、天花板、屋顶、墙、设备等,以便于THINGJS引擎以层级结构加载场景,并使用 THINGJS层级交互功能在不同层级查看三维模型。
进一步地,上述步骤131中设置指定对象导出层级,所述层级名称与所述Navisworks软件中数据标签相对应具体可以包括:
1311、通过Navisworks软件中选择树来获取选择的对象节点集合,所述对象节点为Navisworks中的Layer对象;
1312、通过.Net Api中提供的ComApiBridge.ComApiBridge. ToInwOpSelection函数将所述对象节点集合转换成Com Api操作的对象节点集合;
1313、通过Com Api中提供的ComApi.InwOaProperty函数为选择的所述对象节点集合设置层级数据标签。
本发明中用户可以进行自定义层级结构,具体可以设置指定对象所导出的层级名称,多个对象可以设置为同一层级,指定对象必须是Navisworks 中的Layer,其实现则是增加了名为“uino”的用户数据标签,并在该用户数据标签中增加了一条特性为“name”的新特性,插件在转换导出时会对该条特性进行处理。其中,用户数据标签为自定义数据标签,可以根据实际需求自定义,其并不固定。如果Navisworks中存在与层级对应的用户标签,则直接选择即可无需自定义添加。
进一步地,上述步骤132中设置指定对象导出类别,所述导出类别与 THINGJS中对象类别相对应具体可以包括:
1321、通过.Net Api中提供的Application.Active Document.CurrentSelection.SelectedItems函数获取当前在选择树中选择的对象节点集合;
1322、通过.Net Api中提供的ComApiBridge.ComApiBridge.ToInwOp Selection函数将对象节点集合转换成Com Api操作的对象节点集合;
1323、通过Com Api中提供的ComApi.InwOaProperty函数为选择的对象节点集合设置类别数据标签。
对于指定对象类别导出设置方式,本发明中可以设置指定对象导出对应 THINGJS中对象类别。例如:墙、地板、天花板、屋顶、设备、园区设备、门、窗、房间、广场、忽略。该设置是层级影响的,即如果父节点对象设置了类别,子节点未设置类别,则子节点会使用父节点设置的类别,当然如果子节点也设置了类别,则会覆盖父节点使用的类别。其实现则是增加了名为“uino”的用户数据标签,并在该用户数据标签中增加了一条特性为“type”的新特性,插件在转换导出时会对该条特性进行处理。
在本发明的进一步实施例中,上述步骤140中对进行状态、层级与类别设定后的BIM文件对象进行转换导出设置具体可以包括:
141、设置所述BIM文件对象是否导出THINGJS中对应floor类别结构,通过Navisworks中的Layer对象根据默认字典配置方式和用户设置层级信息进行导出;
142、设置外立面导出方式;
143、对与BIM文件对应的配置文件进行解析,通过设置所述配置文件中指定属性路径对应的指定值,导出对应THINGJS中对象指定的属性和属性值。
上述步骤141中用于设置导出是否分层,具体设置是否导出THINGJS 中对应Floor类别结构,如果设置为“是”,Navisworks中对应的Layer会根据默认字典配置和上述用户自定义层级导出对应THINGJS中Floor级别的结构信息及模型信息;如果设置为“否”,则Navisworks不导出THINGJS中对应Floor级别信息,所有非设备等不需要管理的模型当作THINGJS中 Facade类别并合并导出。通过设置和配置合并非需要管理的模型(Wall、Floor等)降低webgl渲染压力。
上述步骤142中用于设置是否导出外立面,是否将非设备等不需要管理的模型合并成一个模型文件作为THINGJS中的Facade导出。
上述步骤143中用于解析配置文件,由于不同的BIM文件类型会对应不同的配置文件,为此用户可以自定义修改,通过BIM文件中指定属性路径对应的指定值,导出对应THINGJS中对象/合并指定对象/输出对象指定的属性和属性值。
具体地,关于配置文件的配置规则如下,以“门”进行举例说明:
"doorKeyword":{"or":[{"path":"类别","value":"门"},{"path":"类型 ","value":"门"}],"and":[],"not":[]}
在对象对应属性“类别”值为“门”或者对应属性“类型”值为“门”的对象会对应到THINGJS中的Door导出并生成独立的GLTF模型。
在“or”下的满足数组中一个对应的属性“path”下的值为“value”的满足条件,在“and”下的需要满足数组中对应的所有属性“path”下的值为“value”的满足条件,在“not”下的则不满足数组下的任何对应属性“path”下的值为“value”的满足条件。
可配置内容如下:
facadeNameKeyWord:对应THINGJS类别外立面
wallKeyword:对应THINGJS类别墙
roomKeyword:对应THINGJS类别房间
doorKeyword:对应THINGJS类别门
windowKeyword:对应THINGJS类别窗
ceilingKeyword:对应THINGJS类别天花板
roofKeyword:对应THINGJS类别屋顶
floorKeyword:对应THINGJS类别地板
ignoreObjectKeyWord:忽略对象(不导出)
groundKeyword:对应THINGJS类别广场
campusDeviceKeyword:对应THINGJS类别园区设备(室外设备)
mergeProcess:需要合并的对象。
还有一种配置properites如下:
指定“exportElements”指定导出该对象上哪些属性作为THINGJS中对象的userData;
properites:[{"condition":{"or":[{"path":"类别","value":"机械设备"}],"and":[],"not":[]},"exportElements":[{"path":"类别","name":"类型","value":" 机械设备"},{"path":"族","name":"族"}]}]。
在本发明的进一步实施例中,上述步骤150中遍历打开的BIM文件对象中模型数据,转换成场景文件并导出包括:
151、遍历打开的BIM文件对象中模型数据;
152、判断模型数据与THINGJS类别是否相对应;
153、设置导出配置生成GLTF模型并存放至models_GLTF目录中;
154、添加scene.json中场景结构数据;
155、压缩GLTF模型和场景结构json文件生成output.zip场景包并导出。
本发明中可以通过在Navisworks中设置导出路径,具体是设置转换后文件的输出路径。通过点击页面上显示的导出按钮,转换成功导出后会在上一步设置的输出路径中生成output.zip场景包,该场景包可以支持THINGJS三维渲染引擎加载。
上述步骤150中遍历打开的BIM文件中models,确定对象是否对应 THINGJS类别是Door/Window/Device/CampusDevice,如果是则设置是否在导出配置中指定需要类别合并;如果不是则将对象对应THINGJS类别是 Wall/Floor/Ceiling/Ground/Roof/Room;在对应对象类别后以及收到指定对象类别合并指令后,按照生成的层级合并生成多个GLTF模型放到models目录下;在未收到指定对象需要类别合并指令时,则生成单独GLTF模型存放至models_GLTF目录中;在生成GLTF模型后添加scene.json中场景结构数据,经压缩GLTF模型和场景结构json文件生成output.zip场景包,最终导出 output.zip场景包完成对BIM文件的处理。
本发明中步骤150中遍历打开的BIM文件对象中模型数据,转换成场景文件。具体包括:构造场景描述信息对象数据格式存放在内存;遍历.Net Api的Application.ActiveDocument.Models对象,获取打开文件中的models 模型数据信息,如果遍历对象中的model不是隐藏状态则进行后续步骤处理;从上述步骤中的model中的root开始遍历,处理每个modelItem,如果 modelItem是Layer并且不是隐藏状态则确定该modelItem是建筑中的一层,该modelItem下的孩子则都属于这一层下的结构并上述构造的场景描述信息数据增加Floor信息;判断模型中是否有Geometry并且有Triangle三角面数据;获取模型对应导出结构的类别并更新上述构造的场景描述信息对象数据格式中;转换生成设备GLTF模型文件;合并模型,对于在相同建筑层级的模型类别(类别为墙、天花板、屋顶、门窗等非设备模型)会按类型合并成一个模型,降低前端的渲染压力。
其中,上述判断模型中是否有Geometry并且有Triangle三角面数据具体包括:遍历上述步骤中获取的modelItem树型结构,如果modelItem中第一个子节点的ClassName是LcRevitCollection则继续遍历所有下节点(子节点作为modelItem重复该步骤),否则进入下面步骤;以递归的方式遍历 modelItem的所有子节点,判断子节点的属性是否包含LcOpGeometryProperty属性并且LcOpGeometryProperty中字段 LcOpGeometryPropertyHasTriangles为真,如果是,则判断该模型中有 Geometry/Triangle,进入下面步骤。
上述获取模型对应导出结构的类别并更新上述构造的场景描述信息对象数据格式中具体包括:先获取步骤132是否对该对象设定了类别,如果有使用该类别,否则进入下面步骤;通过.Net Api获取对象的LcRevitData_ Parameter属性集合和LcRevitData_Element属性集合与上述步骤中143中的配置文件对比,看是否有满足条件的对应关系,有的话则使用配置中的类别,否则进入下面步骤;查找该对象的父级是否有匹配到的类别,如果有使用父级的类别,否则进入下面步骤;模型默认使用Wall作为其转换后导出的类别。
上述转换生成设备GLTF模型文件具体包括:通过.Net Api获取对象的BoundingBox(),将boundingbox中的Volume和SurfaceArea作为hashkey判断是否之前有相同的模型已经导出过;通过继承.Net Api提供的Autodesk. Navisworks.Api.Interop.ComApi.InwSimplePrimitivesCB实现Mesh的获取;通过mesh获取Trianles及其索引信息,并将三角面信息乘于模型信息的逆矩阵,使模型的世界坐标在原点;通过对象的LcOaExMaterial属性集合构造 material材质信息;通过上述获取的Trianles和Material信息构造gltf格式中 bufferView及其他信息;将上述生成的hashkey更新在map中用于作为第一步是否有相同模型导出过进行对比;获取对象的matrix,通过matrix获取模型的position、scale、rotation,并将这些信息更新到场景描述文件,减少gltf 文件的大小,相同的模型使用同一gltf文件,matrix相关信息则在场景描述文件中记录。
上述关于合并模型,对于在相同建筑层级的模型类别(类别为墙、天花板、屋顶、门窗等非设备模型)会按类型合并成一个模型,降低前端的渲染压力具体包括:获取同一层级同一类别的所有对象modelItem;遍历所有 modelItem,获取其包围合大小,并记录最大position和最小position,同时确定合并模型后的中心点坐标;获取所有modelItem的mesh,triangles等生成gltf,同步骤“转换生成设备GLTF模型文件”中类似,不同的是合并模型,使用的是世界坐标,所以matrix使用单位矩阵就行;通过获取生成的gltf的size,将该模型的信息也更新到生成的场景描述文件中。
本发明中避免生成多个重复模型,插件在生成设备等单个GLTF模型时会通过Navisworks插件Api获取模型的体积Volume和表面积SurfaceArea 计算外形hash,如果hash相同则不生成新的模型。
本发明中决定BIM文件中对象所对应的THINGJS中对象类别方式分别是:第一、类别设定;第二、插件内置的根据默认字典配置方式和用户自定义设置层级信息;第三、解析配置文件。并且这三种状态的设置顺序为最终设置生效的顺序。如果通过这三种匹配方式都没有使得BIM中对象对应到 THINGJS中类别的情况下,则插件将该对象对应到THINGJS中类别Wall。
本发明通过对需要以相同类别转换的三维场景进行按配置合并模型,降低THINGJS渲染三维场景的压力。并且通过BIM文件直接生成THINGJS 渲染引擎使用的场景文件及GLTF模型文件,降低建模成本。
本发明提出了一种基于Navisworks软件处理BIM文件的方法,包括打开Navisworks软件进行插件初始化,并检查是否有BIM文件对象处于打开状态;通过Navisworks软件中的选择树视图设置打开的BIM文件对象为隐藏或显示状态;对BIM文件对象进行层级与类别设定;对BIM文件对象进行转换导出设置,遍历打开的BIM文件对象中模型数据,转换成场景文件并导出。本发明通过解析BIM文件获取三维模型信息,生成GLTF/GLB模型和THINGJS所需场景文件以便可以在B/S架构上通过THINGJS引擎运行。
如图2所示,一种基于Navisworks软件处理BIM文件的装置,包括:
检查模块,用于在用户打开Navisworks软件时进行插件初始化,并检查是否有BIM文件对象处于打开状态;
状态设置模块,用于通过Navisworks软件中的选择树视图设置打开的 BIM文件对象为隐藏或显示状态;
层级类别设置模块,用于对BIM文件对象进行层级与类别设定;
转换导出模块,用于对进行状态、层级与类别设定后的BIM文件对象进行转换导出设置;
导出模块,用于遍历打开的BIM文件对象中模型数据,转换成场景文件并导出。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
此外,本发明还提供一种电子设备,包括:一个或多个处理器;
存储装置,用于存储可执行指令,所述可执行指令在被所述处理器执行时,实现根据上述技术方案中任一项所述的方法。
本发明还提供一种计算机可读存储介质,存储有计算机可执行指令,所述可执行指令在被处理器执行时,实现根据上述技术方案中任一项所述的方法。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM, RandomAccessMemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (7)
1.一种基于Navisworks软件处理BIM文件的方法,其特征在于,包括如下步骤:
打开Navisworks软件进行插件初始化,并检查是否有BIM文件对象处于打开状态;
通过Navisworks软件中的选择树视图设置打开的BIM文件对象为隐藏或显示状态;
对BIM文件对象进行层级与类别设定;
对进行状态、层级与类别设定后的BIM文件对象进行转换导出设置;
遍历打开的BIM文件对象中模型数据,转换成场景文件并导出;
其中,所述对BIM文件对象进行层级与类别设定包括:
设置指定对象导出层级,所述层级名称与所述Navisworks软件中数据标签相对应;
设置指定对象导出类别,所述导出类别与THINGJS中对象类别相对应;
所述对进行状态、层级与类别设定后的BIM文件对象进行转换导出设置包括:
设置所述BIM文件对象是否导出THINGJS中对应floor类别结构,通过Navisworks中的Layer对象根据默认字典配置方式和用户设置层级信息进行导出;
设置外立面导出方式;
对与BIM文件对应的配置文件进行解析,通过设置所述配置文件中指定属性路径对应的指定值,导出对应THINGJS中对象指定的属性和属性值;
所述遍历打开的BIM文件对象中模型数据,转换成场景文件并导出包括:
遍历打开的BIM文件对象中模型数据;
判断模型数据与THINGJS类别是否相对应;
设置导出配置生成GLTF模型并存放至models_GLTF目录中;
添加scene.json中场景结构数据;
压缩GLTF模型和场景结构json文件生成output.zip场景包并导出。
2.根据权利要求1所述的基于Navisworks软件处理BIM文件的方法,其特征在于,所述打开Navisworks软件进行插件初始化,并检查是否有BIM文件对象处于打开状态包括:
用于打开Navisworks软件,在打开Navisworks软件时自动加载AddInplugin插件,继承AddInplugin的类实现CanExecute函数的重写;
在CanExecute函数中通过.Net Api中提供的Application.ActiveDocument函数获取当前打开活跃的BIM文件对象,判断活跃的BIM文件对象中是否有模型数据;
若活跃的BIM文件对象中不存在模型数据则转换模块处于不可用置灰状态,若存在模型数据的话则转换模块处于可用状态。
3.根据权利要求1所述的基于Navisworks软件处理BIM文件的方法,其特征在于,所述设置指定对象导出层级,所述层级名称与所述Navisworks软件中数据标签相对应包括:
通过Navisworks软件中选择树来获取选择的对象节点集合,所述对象节点为Navisworks中的Layer对象;
通过.Net Api中提供的ComApiBridge.ComApiBridge.ToInwOpSelection函数将所述对象节点集合转换成Com Api操作的对象节点集合;
通过Com Api中提供的ComApi.InwOaProperty函数为选择的所述对象节点集合设置层级数据标签。
4.根据权利要求3所述的基于Navisworks软件处理BIM文件的方法,其特征在于,所述设置指定对象导出类别,所述导出类别与THINGJS中对象类别相对应包括:
通过.Net Api中提供的Application.ActiveDocument.CurrentSelection.SelectedItems函数获取当前在选择树中选择的对象节点集合;
通过.Net Api中提供的ComApiBridge.ComApiBridge.ToInwOpSelection函数将对象节点集合转换成Com Api操作的对象节点集合;
通过Com Api中提供的ComApi.InwOaProperty函数为选择的对象节点集合设置类别数据标签。
5.一种基于Navisworks软件处理BIM文件的装置,其特征在于,包括:
检查模块,用于在用户打开Navisworks软件时进行插件初始化,并检查是否有BIM文件对象处于打开状态;
状态设置模块,用于通过Navisworks软件中的选择树视图设置打开的BIM文件对象为隐藏或显示状态;
层级类别设置模块,用于对BIM文件对象进行层级与类别设定;
转换导出模块,用于对进行状态、层级与类别设定后的BIM文件对象进行转换导出设置;
导出模块,用于遍历打开的BIM文件对象中模型数据,转换成场景文件并导出;
其中,所述层级类别设置模块具体用于:
设置指定对象导出层级,所述层级名称与所述Navisworks软件中数据标签相对应;
设置指定对象导出类别,所述导出类别与THINGJS中对象类别相对应;
所述转换导出模块具体用于:
设置所述BIM文件对象是否导出THINGJS中对应floor类别结构,通过Navisworks中的Layer对象根据默认字典配置方式和用户设置层级信息进行导出;
设置外立面导出方式;
对与BIM文件对应的配置文件进行解析,通过设置所述配置文件中指定属性路径对应的指定值,导出对应THINGJS中对象指定的属性和属性值;
所述导出模块具体用于:
遍历打开的BIM文件对象中模型数据;
判断模型数据与THINGJS类别是否相对应;
设置导出配置生成GLTF模型并存放至models_GLTF目录中;
添加scene.json中场景结构数据;
压缩GLTF模型和场景结构json文件生成output.zip场景包并导出。
6.一种电子设备,其特征在于,包括:一个或多个处理器;
存储装置,用于存储可执行指令,所述可执行指令在被所述处理器执行时,实现根据权利要求1-4中任一项所述的方法。
7.一种计算机可读存储介质,其特征在于,存储有计算机可执行指令,所述可执行指令在被处理器执行时,实现根据权利要求1-4中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111645765.7A CN114443158B (zh) | 2021-12-30 | 2021-12-30 | 基于Navisworks软件处理BIM文件的方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111645765.7A CN114443158B (zh) | 2021-12-30 | 2021-12-30 | 基于Navisworks软件处理BIM文件的方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114443158A CN114443158A (zh) | 2022-05-06 |
CN114443158B true CN114443158B (zh) | 2022-10-04 |
Family
ID=81365712
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111645765.7A Active CN114443158B (zh) | 2021-12-30 | 2021-12-30 | 基于Navisworks软件处理BIM文件的方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114443158B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116466853B (zh) * | 2022-09-08 | 2024-06-14 | 苏州浩辰软件股份有限公司 | 一种查看方法、***及计算机程序产品 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110347976A (zh) * | 2019-05-22 | 2019-10-18 | 广州明珞汽车装备有限公司 | 快速导出设备数据模型的方法、***、装置和存储介质 |
CN112084556A (zh) * | 2020-08-25 | 2020-12-15 | 天津大学 | 一种海量数据bim模型的轻量化显示方法及*** |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105426601B (zh) * | 2015-11-11 | 2019-04-23 | 深圳市华阳国际工程设计股份有限公司 | 一种基于bim的多样性设计方案汇报方法及其*** |
CN106919728B (zh) * | 2015-12-28 | 2021-10-12 | 上海核工程研究设计院 | 一种将dgn模型转化成轻量模型的方法 |
CN107609302B (zh) * | 2017-09-28 | 2021-12-28 | 广州明珞汽车装备有限公司 | 一种产品工艺结构生成方法及*** |
CN108647330B (zh) * | 2018-05-11 | 2020-05-26 | 厦门海迈科技股份有限公司 | 一种基于bim模型文件的3d轻量化转换方法 |
-
2021
- 2021-12-30 CN CN202111645765.7A patent/CN114443158B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110347976A (zh) * | 2019-05-22 | 2019-10-18 | 广州明珞汽车装备有限公司 | 快速导出设备数据模型的方法、***、装置和存储介质 |
CN112084556A (zh) * | 2020-08-25 | 2020-12-15 | 天津大学 | 一种海量数据bim模型的轻量化显示方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN114443158A (zh) | 2022-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11188390B2 (en) | Method for configuring a server kit by a server management system | |
US11922564B2 (en) | Generative content system that supports location-based services and methods therefor | |
US20220335174A1 (en) | Interpreter framework for a computer file | |
Elliott et al. | TBAG: A high level framework for interactive, animated 3D graphics applications | |
CN109976735B (zh) | 一种基于web可视化的知识图谱算法应用平台 | |
CN112347546A (zh) | 基于轻量级设备的bim渲染方法、设备和计算机可读存储介质 | |
CN107273543B (zh) | 一种dgn数据格式的转换方法 | |
CN112199086A (zh) | 自动编程控制***、方法、装置、电子设备及存储介质 | |
CN112651711B (zh) | 基于xdb文件在bs架构下的协同设计管理平台的搭建*** | |
CN114443158B (zh) | 基于Navisworks软件处理BIM文件的方法、装置、设备和存储介质 | |
CN115205476A (zh) | 三维地质建模方法、装置、电子设备及存储介质 | |
WO2021102615A1 (zh) | 虚拟现实场景及其交互方法、终端设备 | |
CN109858059B (zh) | 基于cad超大模型的虚拟现实技术在水电站仿真的应用方法 | |
CN115659445A (zh) | 一种基于Open Cascade的CAD模型在网页轻量化渲染显示的方法 | |
Parente et al. | Integration of convolutional and adversarial networks into building design: A review | |
CN117077256A (zh) | 从rvt格式到b3d格式的转换方法及其插件和*** | |
Taghavi et al. | Visualization of multi-objective design space exploration for embedded systems | |
CN109684656B (zh) | 一种基于SolidWorks的装配约束继承方法 | |
CN116152451A (zh) | 多维参数化城市信息模型构建方法、***及计算机设备 | |
CN115543428A (zh) | 一种基于策略模板的模拟数据生成方法和装置 | |
CN112199075B (zh) | 一种基于微服务智能信息处理方法及框架*** | |
CN115544311A (zh) | 数据分析方法以及装置 | |
US10467819B2 (en) | Real-time spatial authoring in augmented reality using additive and subtractive modeling | |
CN114461959A (zh) | Bim数据的web端在线显示方法、装置及电子设备 | |
Huai et al. | [Retracted] Distributed 3D Environment Design System Based on Color Image Model |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: Room 105, first floor, building 82, No. 10, Jiuxianqiao Road, Chaoyang District, Beijing 100102 Patentee after: Beijing Youhao Technology Co.,Ltd. Country or region after: China Address before: Room 105, first floor, building 82, No. 10, Jiuxianqiao Road, Chaoyang District, Beijing 100102 Patentee before: BEIJING YOUNUO TECHNOLOGY Co.,Ltd. Country or region before: China |
|
CP03 | Change of name, title or address |