中台预生产全量接口
  1. 轻量化展示
中台预生产全量接口
  • 规范
  • 项目管理
    • 项目
      • 项目枚举数据
      • 新建项目
      • 项目列表
      • 项目详情
      • 更新项目
      • 删除项目
      • 项目锁定
      • 解锁项目
      • 项目级扩展属性挂接
      • 项目级扩展属性列表
      • 项目级扩展属性删除
      • 项目级扩展属性更新
      • 项目组织树
    • 文件
      • 文件重命名
      • 文件版本列表
      • 模型文件详情
      • 文件挂载到文件夹
      • 添加文件扩展属性
      • 移动文件
      • 删除文件
      • 获取文件标签
      • 更新文件标签
      • 查询所有或指定文件列表
      • 查询文件所属专业
    • 文件夹
      • 融合递归树(文件、文件夹)
      • 新建文件夹
      • 文件夹列表
      • 文件夹重命名
      • 移动文件夹
      • 获取文件夹扩展属性
      • 更新文件夹扩展属性
      • 获取文件夹标签
      • 更新文件夹标签
      • 删除文件夹
      • 文件列表
    • 单体
      • 根据单体ID查询项目ID
  • 存储管理
    • 分片上传
      • 检查分片是否存在
      • 合并分片
      • 检查分片是否存在v2
      • 文件分片上传
      • 获取分片上传凭证
    • 下载
      • 下载
      • 批量下载
    • 检查文件是否已存在
    • 秒传
    • 上传
    • 存储上传信息
  • 轻量化引擎
    • 转换格式查询
    • 轻量化结果文件查询
  • 能力服务
    • 轻量化展示
      • 轻量化展示
      • 轻量化
        POST
      • 获取obv-token
        GET
    • 点云模型查看
      • 点云模型查看
      • 轻量化
      • 获取obv-token
    • 点云实模对比
      • 点云实模对比
      • 获取obv-token
    • 模型对比-IFC
      • 模型对比-IFC
      • 开启IFC模型对比任务
      • 获取同源对比结果
      • 获取非同源对比结果
    • 二维码生成
      • 二维码生成
      • 生成base64二维码
    • 图模匹配
      • 图模匹配
      • 开启图模匹配任务
      • 获取任务结果
    • 图模一致性检查
      • 图模一致性检查
      • 开启图模一致任务
      • 获取任务结果
    • AI图纸识别
      • AI图纸识别
      • 识图识别任务开启
      • 获取任务结果
    • SZ-IFC标识分类树
      • SZ-IFC标识分类树
      • 空间关系树
      • 查询构件树
      • 查询机电系统树
      • 根据构件查属性
      • 根据空间查构件
      • 查询空间树
    • 扩展属性挂接
      • 扩展属性挂接
      • 构件级扩展属性挂接
      • 构件级扩展属性列表
      • 构件级扩展属性更新
      • 构件级扩展属性删除
    • 设备模型添加
      • 设备模型添加
      • 设备挂接到文件
      • 已挂接设备列表
      • 已挂接设备更新
      • 已挂接设备删除
    • 模型维度统计查询
      • 模型维度统计查询
      • 获取入库文件数(按文件类型返回)
      • 全量文件种类统计
      • 按天、周、月统计新增/更新模型(按文件类型返回)
      • 按天、周、月统计各数据源新增/更新模型(按文件类型分组返回)
      • 按天、周、月统计项目新增情况,返回项目数据更新情况
      • 单项目按文件类型统计文件数量
      • 查询项目下所有或指定类型文件列表
      • 全量文件数量统计
      • 按区域统计文件种类
      • 按区域统计模型数量
      • 按数据源返回入库文件分类
    • 项目维度统计查询
      • 项目维度统计查询
      • 全量项目统计
      • 按区域项目统计
      • 项目聚合列表
    • 获取特定 SZ-IFC标识下的类型子集
      • 获取特定 SZ-IFC标识下的类型子集
      • 获取特定 SZ-IFC标识下的类型子集
    • 模型对比-RVT
      • 模型对比-RVT
      • 开启Revit模型对比任务
      • 查询Revit模型对比任务信息
      • 查询Revit模型对比结果
    • 数据入库
      • 数据入库
      • 根据空间名称,查询空间属性-详情-v3
      • 根据构件名称,查询构件属性-详情-v3
      • 根据空间名称,查询空间属性-统计-v3
      • 根据构件名称,查询构件属性-统计-v3
      • 数据入库
      • 查询项目数据入库记录
      • 数据入库单体查询
      • 数据入库项目查询
      • 数据入库构件分类树
      • 数据入库空间关系树
      • 数据入库空间分类树
      • 数据入库系统树
      • 查询数据入库文件列表
      • 根据楼层查空间和构件
      • 根据空间名称,查询空间属性
      • 根据构件名称,查询构件属性
      • 根据空间查构件树
      • 获取空间数据标准树
      • 获取构件数据标准树
    • 基点一致性检查
      • 基点一致性检查
      • 获取任务结果
    • 合标性检查
      • 合标性检查
      • 合标性检查任务开启
      • 获取任务结果
    • BIM模型数字化认证
      • 模型文件Hash存储
      • 模型文件Hash查询
    • 任务管理
      • 任务状态
      • 任务列表
      • 获取任务结果
      • 设置任务优先级,10 ~ 99,数字越小,优先级越高
    • 一致性检查任务开启
      POST
    • 能力列表
      POST
  1. 轻量化展示

轻量化展示

简介#

浏览器中无法直接呈现IFC、RVT格式文件,轻量化引擎基于WebGl开发,为满足在浏览器显示的要求,对源文件需要进行轻量化转换任务,同时对一些源文件信息做压缩处理,减小文件体积。任务完成后才能使用轻量化引擎将模型显示出来。
轻量化除了对文件转换显示格式,同时会对模型文件进行数据解析,几何信息以静态资源保存、构件及构件关系结构化存储方便动态查询。

对接流程#

开启文件轻量化任务 【轻量化】,参数documentId、documentVersion为文档版本信息,来自于文件上传后关联到文件夹。轻量化任务开启成功后返回任务taskId;
使用taskId查询轻量化任务状态 【任务状态】,通过taskStatus判断轻量化的状态,当taskStatus为"Success"表示轻量化任务成功,同时查询结果中也会返回urn字段,该字段标识轻量化后的几何信息存储位置,模型渲染需要传入该参数;
除了urn,模型渲染还需要token,通过 【获取obv-token】 接口获取token;
前端引入引擎资源,传入urn、token,指定服务路径初始化并渲染模型文件;

轻量化引擎概述#

通过对BIM模型的压缩处理等技术手段,让BIM可以在Web浏览器、移动App上被使用,支持各类BIM应用的显示、交互场景。
引擎基于WebGl渲染,核心引擎代码obv.js通过前端script标签引入,主要样式obv.css通过link标签引入。核心API请参考文档
除了核心的API,中台还额外提供了大量引擎扩展插件方便业务端快速实现应用,如SZ-IFC标识树、模型对比等。扩展插件依托于核心引擎,与obv.js、obv.css引入方式一样,不同的能力引入对应的扩展插件依赖。扩展插件API在对应的能力文档或demo中有介绍。

引擎接入指南#

业务端html中引入引擎核心、扩展插件资源,引擎被挂载到window.OBV这个全局对象下,通过window.OBV变量访问核心API,引入使用扩展插件也是同理;
业务端通过http请求从中台服务获取数据资源,如鉴权数据、需要引擎展示的模型数据等;
业务端将数据传入引擎核心或扩展插件API实现引擎应用的交互;

鉴权#

轻量化引擎有单独的权限控制。初始化引擎时需要的将token传入。

跨域#

前端在本地开发,请求指向线上的引擎服务时,可能会跨域。一般通过本地代理(常用webpack-dev-server或nginx)处理跨域问题。发布到线上后前端与请求不同源时可以使用nginx代理解决跨域问题。以下以引擎地址前缀https://bim-web-test.zjj.sz.gov.cn/zt/obv/ 为例:
引入轻量化引擎
/zt/obv作为代理识别标识,被代理识别,转发到对应的服务地址。
<!DOCTYPE html>
<html lang="">
  <head>
    <!-- obv样式 -->
    <link href="/zt/obv/bimviewer/viewer/v4/locale/locale.properties" rel="resource"
      type="application/l10n">
    <link rel="stylesheet" href="/zt/obv/bimviewer/viewer/v5/obv.css" type="text/css" />
    <script src="/zt/obv/bimviewer/viewer/v5/obv.js"></script>
</html>
防止本地跨域代理
以下为webpack-dev-server配置
proxy: {
  '/zt/obv': { // '/zt/obv' 为代理标识
    target: 'https://bim-web-test.zjj.sz.gov.cn', // 指向实际的轻量化服务地址
    secure: false, // 本地代理如果是http协议,需要配置为false
    headers: {
      referer: 'https://bim-web-test.zjj.sz.gov.cn', // 中台referer只识别*.zjj.sz.gov.cn域名,设置referer头防止报错
      origin: 'https://bim-web-test.zjj.sz.gov.cn' // 中台origin只识别*.zjj.sz.gov.cn域名,设置origin头防止报错
    }
  }
}
nginx配置
location ^~ /zt/obv/ {
   proxy_pass https://bim-web-test.zjj.sz.gov.cn;
   proxy_set_header Origin https://bim-web-test.zjj.sz.gov.cn;
   add_header Referer https://bim-web-test.zjj.sz.gov.cn;
}
轻量化引擎初始化
// 创建实例需要传入的参数,部署环境serviceConfig 和 用户有效期getAccessToken
const applicationOptions = {
  getAccessToken: this.getAccessToken,
  refreshAccessToken: this.getAccessToken,
  serviceConfig: { // 引擎内部的请求路径通过origin + apiContextPath拼接,同样会被代理到远程引擎服务的地址
    origin: `${window.location.protocol}//${window.location.host}`, // host
    apiContextPath: '/zt/obv/bimserver/viewing/v3' // path
  }
}
// 返回token
getAccessToken(callBack) {
  callBack(this.obvToken, 36000)
}

扩展插件使用#

使用插件需要在加载模型时传入相应的配置,以加载识图插件为例,传入的config应如下所示
// 创建 viewer 容器, 并传入插件需要初始化的插件
const obvApi = await builder.buildViewer2d(application, document.getElementById('viewer'), {
  addinConfigs: [
      {
          id: window.ArchOcrAddin.default.ADDIN_ID, // 引入识图插件包后自动注册为引擎插件,通过window.ArchOcrAddin.default.ADDIN_ID访问插件id
          el: document.getElementById('viewer'), // 识图绘制挂载
          noButton: true, // 不显示插件button
          files: [ // 需要绘制的模型信息
              {
                  documentId: files[0].documentId,
                  documentVersion: files[0].documentVersion,
                  urn: files[0].urn,
                  jobType: files[0].jobType,
              }
          ]
      }
  ]
})
// 通过插件id获取识图插件实例并调用识图插件API
const addin = obvApi.getAddinManager().getAddin(window.ArchOcrAddin.default.ADDIN_ID)
addin.setData(jsonData)

示例demo#

引擎demo主要展示交互为主,避免接口动态获取数据等待时间过长,大部分demo数据都是以json内置。业务端对接请以实际情况获取动态数据。

单文件显示#

通过调用Builder实例的loadDocument方法并传入模型urn来加载显示单个模型视图
示例

关于modelId#

模型文件被载入到引擎后,引擎通过modelId来区分操作的哪个模型。单文件显示的情况下,这个模型文件的modelId = 1。多个模型合并显示情况下,modeId按模型文件的载入顺序递增,在调用引擎API交互时,经常需要传入modelId。通过builder.load3dModels加载模型完成返回的数据可以获取modelId
// 加载模型
const { model } = await builder.load3dModels(obvApi, {
    obvDocument: obvDoucment,
    viewer3dItem: viewer3dItems[0],
    modelOffset: { x: -40, y: 0, z: 0 },
    // 模型二逆时针旋转240°
    rotation: 240 * Math.PI / 180
})
console.log(model.id) // modelId

多文件合并显示#

多次调用loadDocument方法创建多个模型视图来加载显示多个模型文件,特别注意的是引擎默认以中点对齐模型,ifc、rvt等文件如果需要按照基点对齐需要引入ModelBasePoint.umd.min.js插件并设置Viewer3d实例的displayWithBasePoint属性为true
示例

接口列表#

轻量化
任务状态
获取obv-token
修改于 2024-04-09 03:33:07
上一页
能力服务
下一页
轻量化
Built with