作者:taco
一,背景
最近遇到一些客户在使用bentley插件导出的过程中遇到些许的问题。接下来这篇文章主要介绍一下,该插件大概使用的流程以及一些常见问题的解决思路方法。
二,安装插件
通过辅助资源下载的三维导出插件中,可以看到有两种类型的bentley导出插件。其中包含导出点位+模型缓存版本 ,导出模型数据集版本。前者导出的数据包含三维点数据集及s3mb模型缓存文件,后者导出为模型数据集。
(注:目前插件仅支持MicroStation CONNECT Edition Update 14 版本软件。其他版本暂不支持。)
在两者工具的选择上可以根据实际使用需求进行选择。
1)如果模型中含有大量重复对象构成的,如铁路轨道,输电线等内容。常规导出模型数据集的方式会导致数据集中子对象内容过多,数据集急剧膨胀。从而使得在数据加载上会出现加载慢,加载卡顿等一系列情况。这个时候可以选择导出点位+模型缓存版本。但该方式如果存在建模位置与实际位置不一致的情况,后期并不好修改位置等问题。
2)如果模型中存在后期位置,方向,大小等调整,增减纹理等情况,可通过导出模型数据集 导出模型后进行编辑。
1.配置组件环境
两种导出方式并不需要配置两套环境,这里的SuperMap Bin 为C++组件包,只需要配置一次即可。开始菜单搜索编辑系统环境变量,打开系统属性窗口,在右下角单机环境变量进行配置。
在系统变量中的Path中设置组件变量并置顶,组件路径最好由英文路径组成,这里不建议使用中文路径进行配置。(*建议优先使用导出为模型数据集方式的组件包进行配置)
2.配置导出模型数据集版本插件
将DgnToUDB.dgnlib文件拷贝到bentley如下目录。安装bentley时如果默认设置则在C盘ProgramData目录下。如果安装修改路径需找到对应安装目录。
/ProgramData/Bentley/MicroStation CONNECT Edition/Configuration/Organization/Dgnlib/Gui
Update14文件夹下的DgnToUDB.dll,DgnToUDB.ma文件,拷贝到bentley如下目录中。同样如果安装时为默认则在C盘Program File 中即可找到。
/Program Files/Bentley/MicroStation CONNECT Edition/MicroStation/Mdlapps
3.配置点位+缓存模型版本导出插件
将DgnToUDB_S3MB.dgnlib文件拷贝到bentley如下目录。
/ProgramData/Bentley/MicroStation CONNECT Edition/Configuration/Organization/Dgnlib/Gui
将DgnToUDB_S3MB.dll,DgnToUDB_S3MB.ma文件,拷贝到bentley如下目录中。
/Program Files/Bentley/MicroStation CONNECT Edition/MicroStation/Mdlapps
详细配置路径导出模型数据集版本是一致的。配置完成插件后,即可在bentley内容菜单栏中查看到超图dgn导出插件。
4.其他可能出现问题
由于bentley产品可能会出现识别不到插件的情况,导致内容菜单栏中并未显示插件内容。可以通过如下方法运行该插件。菜单栏选中实用工具,在实用工具选框中可以找到MDL应用程序。
双击弹出应用程序,通过键入命令开启bentley导出插件。
在键入命令中输入mdl load dgntoudb_s3mb Export开启导出点集+模型导出插件
在键入命令中输入mdl load dgntoudb Export 开启模型数据集导出插件
三,导出模型数据集插件常规使用思路
导出为模型数据集插件,常规情况建模的单位均是以米为单位进行建模的,所以这里仅以大多数类型数据进行介绍说明。
1.设置模型插入点
由于大部分模型以米为单位建模,通常情况建议使用平面场景进行导出。
如果模型建模基点与模型位置不统一,且模型位置为某个大坐标的情况下,可以考虑模型是根据某一具体投影坐标系建模。此时插入点即导出设置的经度/x,纬度/y,高程/z。均按默认值0导出即可,无需设置插入点坐标值。
如果模型建模基点与模型位置在同一位置,且此时模型位于原点(0,0,0)附近,则需考虑模型并未按实际坐标进行建模,此时需根据实际位置设置插入点位置,即导出设置的经度/x,纬度/y,高程/z为模型真实位置。
2.重新指定坐标系
模型按照平面场景导出至桌面后,此时右键模型数据集查看属性可以看到导出后的模型数据中并未包含坐标信息。此时需要对模型重新指定坐标系。
首先需要与模型制作方确认该模型实际建模坐标系,如果能获取到含坐标系信息xml文件是最好的,如果没有该xml坐标文件也需要确认该模型EPSG码为多少。单击上图中红框圈出部分进行重新指定坐标系。如果下拉菜单中包含使用坐标系可以直接设置,如果不包含可以选择更多弹出坐标系设置窗口。如果已有xml文件的话,使用绿色框中导入可以导入已有坐标系。如果已知epsg码的话,可以使用紫色框内部去搜索坐标系进行设置。
设置完成后点击应用,完成重新指定坐标系。
3.投影转换至对应地理坐标系
由于需要将模型放置到球面场景使用,这里需要对模型原始投影坐标系转换至地理坐标系,使用投影转换功能将坐标系进行转换操作。可以在属性中直接进行操作,或者在开始菜单栏中数据处理投影转换操作下拉框选择数据集投影转换进行操作。
投影转换需根据原始坐标系设置对应地理坐标系,如原始为84/web_mercator 则目标坐标系为GCS_WGS 1984 坐标系。如原始为某2000的投影坐标系,则目标坐标系需设置为GCS_China_2000以此类推。
4.缓存及发布服务
完成上述操作后,可以将模型加载进场景中进行调整或者其他操作后,处理发布服务。缓存步骤与之前max或revit导出模型方式一致。这里就不详细介绍。可以参考以前文章进行处理。
四,导出点位+模型缓存基本处理思路
导出点位+模型缓存插件只提供平面场景导出,导出窗口设置方式与导出模型数据集类似。
1.导出插入点设置
插入点配置要求可参考导出模型数据集中插入点配置。但有一点需要注意。如果在 MicroStation CONNECT 中,查看是否对坐标系的原点设置了偏移,如果没有配置偏移,则保持默认值 0,0,0 不变;如果有,此处填写偏移的 XYZ 值;偏移值查看方法:MicroStation CONNECT 中,绘图辅助-ACS 模块下,点击右下角的展开按钮,弹出管理 ACS 面板中查看。
2.坐标系配置方法
点集导出后的数据中包含数据源及模型缓存。如下图所示
数据源中包含导出的三维点数据集,如果导出时未设置坐标系,则按照平面无投影坐标系导出。此时查看三维点的属性可以查看到。三维点的流程与上方模型数据集处理流程一致,可以参考三中的2~3进行处理。
3.点集生成外挂缓存
菜单栏中【三维数据】三维瓦片选框中【生成缓存】下拉框,选择【点集生成外挂缓存】弹出如下窗口。
左半边参数设置为常规设置,根据实际使用需求进行设置,或者默认使用即可。右边模型参数设置则需要根据三维点数据集中的字段进行选择。导出数据已包含这些字段可以直接选择。配置完成后选择生成,在输出目录中即可看到输出的文件了。
4.缓存及发布服务
缓存后的数据,直接在场景中添加,保存场景及工作空间,在iserver发布工作空间为三维服务即可。
五,其他常见问题
1.纹理丢失问题
如果在导出后发现大部分纹理成功导出,但是其中部分构建纹理却丢失的情况,需要检查原始数据中纹理配置。在bentley中可视化模式中,在材质选项栏中检查该元素是否成功分配材质。如果没有分配材质到该元素,材质是导出不出来的。
如果在分配材质中出现上面情况,是由于材质在配置共享单元后再进行设置的。需要处理数据人员再设置共享单元前配置材质。或者再桌面中通过材质功能再导入进行调整。但是更推荐再原始bentley中处理该材质。
2.缓存失败问题
缓存失败问题,多数由于建模不规范导致。模型中存在异常点,异常模型。这里只说明再idesktop中如何进行处理。原始bentley处理方式,只能规范建模。
首先再菜单栏中选择【三维数据】模块,使用模型选栏中【模型工具】,模型工具下拉菜单中选择【属性提取】。
对模型数据集进行属性提取,主要提取为顶点数量及底部高程,其他部分可顺带提取。也可以不进行选择。提取后会再数据集属性表最后更新多列,可右键模型数据集进行查看。
底部高程主要判断是否有极端的错误点,位置与大部分位置不一致。顶点数量中如果数量小于4的字段则为错误字段。将包含错误字段的数据删除或将正确的字段另存为新的数据集即可成功生成缓存。