API调用说明
  • 1、概述

    BOS3DEngine提供了丰富的RESTful 风格API接口供二次开发者使用,可提供模型上传、模型解析、场景计算、glTF格式导出、模型删除等功能。

    1.1  模型上传和解析

    BOS3D支持IFC、RVT、iModel、OBJ等国际通用的BIM模型的解析。

    (1)对于IFC模型(.ifc文件),BOS3D支持源文件直接上传服务器执行解析;

    (2)对于RVT(.rvt文件)和iModel模型(.dgn文件),BOS3D分别提供针对Revit和MicroStation的本地导出工具,可导出数据打包为zip文件后再上传服务器执行模型解析,其中,对于Revit模型,支持材质数据的提取。

    (3)对于OBJ模型,可先使用压缩工具将.obj文件、.mtl文件、.png统一压缩在一个zip包中,BOS3D提供将zip文件上传服务器执行模型解析;

    (4)对于其他格式的模型,可转为IFC或OBJ模型进行数据解析。

    模型经过解析后可将原始模型中的非几何信息(例如,造价、进度、建模相关的其他数据等属性相关数据)和几何信息(例如,顶点、面片、材质等几何相关数据)提取出来,便于用户后续根据自己的实际应用所需而使用。

    1.2   场景计算

    场景用于对场景中所有元素进行层次化的管理,BOS3D提供创建默认场景。为了方便场景元素的查找和显示,BOS3D还支持创建自定义的场景,即根据用户自定义的规则创建和维护场景树,例如,按照空间关系(建筑群、建筑、楼层等)将整个场景划分为不同的区域,或者,按照系统关系(暖通、电气、给排水等)对场景进行划分,只要用户自定义的规则遵循BOS3D的场景定义格式,就可以按照用户的意愿来组织BIM数据。

    1.3   模型数据查看和下载

    针对模型的数据计算完成后,BOS3D提供模型数据相关的查看和下载功能。可获取模型id、模型key、构件数量、包围盒等模型信息,可获取模型所有的构件清单,可获取模型中指定构件的属性,还可以下载模型的几何数据,或根据指定属性查询并返回满足指定属性的构件列表。

    1.4   glTF格式导出

    为了支持行业通用格式glTF,BOS3D提供glTF导出功能。可将原始模型转换为glTF格式导出,并下载到本地。

    1.5   删除相关功能

    当用户不需要文件、模型或场景时,BOS3D提供对应的删除功能,包括删除文件、删除模型、删除场景、删除gltf。

    1.6   API调用流程

    1)       上传文件(3.1):得到文件key;

    2)       请求解析模型(4.1):传入文件key,得到模型key;

    3)       创建模型场景(6.1),传入模型key,完成后即可使用BOSDViewer浏览模型。

  • 2、数据格式说明

    1) 请求数据格式
    API请求参数以Headers、Search Parameters、Path Parameters和Body(适用于POST、PUT)等形式传递:
    Headers:主要包含Authorization、Content-Type等HTTP头部信息;
    Search Parameters:查询参数,url中的参数。例如:http://x.xx.xx/xx?key=1中的key属于Search Parameter;
    Path Parameters:路径参数,url中的路径参数,例如:http://x.xx.xx/xxx/{key}中的key属于Path Parameter;
    Body:对于对象型数据,body格式为{"参数名":"参数值",……};对于列表型数据,body格式为[{},{}]。

    2)响应数据格式
    HTTP Status Code(HTTP状态码)
    HTTP Status 200 ->服务器已成功处理了请求 
    HTTP Status 400 ->服务器不理解请求的语法
    HTTP Status 401 ->请求要求身份验证
    HTTP Status 403 ->服务器拒绝请求
    HTTP Status 404 ->服务器找不到请求的资源
    HTTP Status 405 ->禁用请求中指定的方法
    HTTP Status 406 ->无法使用请求的内容特性响应请求的资源
    HTTP Status 407 ->未授权,但指定请求者应当授权使用代理(需要代理授权)
    HTTP Status 408 ->服务器等候请求时发生超时
    HTTP Status 409 ->服务器在完成请求时发生冲突
    HTTP Status 410 ->请求的资源已永久删除
    HTTP Status 411 ->服务器不接受不含有效内容长度标头字段的请求
    HTTP Status 412 ->服务器未满足请求者在请求中设置的其中一个前提条件
    HTTP Status 413->服务器无法处理请求,因为请求实体过大,超出服务器的处理能力
    HTTP Status 414 ->请求的 URI(通常为网址)过长,服务器无法处理
    HTTP Status 415 ->请求的格式不受请求页面的支持
    HTTP Status 416 ->如果页面无法提供请求的范围,则服务器会返回此状态代码
    HTTP Status 417 ->服务器未满足”期望”请求标头字段的要求
    HTTP Status 500 ->服务器遇到错误,无法完成请求
    HTTP Status 501 ->服务器不具备完成请求的功能
    HTTP Status 502 ->服务器作为网关或代理,从上游服务器收到无效响应
    HTTP Status 503 ->服务器目前无法使用(由于超载或停机维护)
    HTTP Status 504 ->服务器作为网关或代理,但是没有及时从上游服务器收到请求
    HTTP Status 505 ->服务器不支持请求中所用的 HTTP 协议版本
    HTTP Body(HTTP消息主体)
    通常情况下,API响应消息主体格式如下:
    {
    "code":"xxx",
    "message":"xxxxx",
    "data":xxx
    }
    其中:code为响应代码,message为响应消息,data为响应数据。
    对于对象型数据,data格式为{};对于列表型数据,data格式为[{},{}];data也可以为null。
    特殊情况:当下载文件时,HTTP body为特定格式的文件。
    通用错误响应
    接口地址错误:调用一个不存在的接口时:HTTP Status Code:404
    接口方法错误:使用错误的Method调用接口时:HTTP Status Code:405
    接口Body参数为空错误:调用需要设置body参数的接口时,如果Body为空,相应如下: HTTP Status Code:200
    接口参数类型错误:请求参数类型不符合要求时(比如接口要求Body为JSON对象,调用时Body为空格、数字、字符串或JSON数组),响应如下: HTTP Status Code:400
    请求路径或Body中缺少必传参数:HTTP Status Code:200
    请求的资源不存在:HTTP Status Code:200
    接口参数格式错误:调用接口时,缺少必填参数或参数格式不符合要求时(比如接口要求Body为JSON对象,调用时Body为空或JSON数组):HTTP Status Code:400
    系统错误:HTTP Status Code:500
  • 3、模型文件操作

    3.1   模型文件上传

    本接口实现将本地模型文件上传到服务器进行存储,以便于后续的数据解析和模型展示。

    POST http://bos3d.bimwinner.com/api/{databaseKey}/files

    请求参数

    Headers

    Content-Type:multipat/formdata

    Path Parameters

    databaseKey:数据库key,必传

    Search Parameters

     

    Body

    {

    "name":"xxxx", //模型名称(不带扩展名)

    "file":xxxx, //本地文件或者

    "url":xxxx //网络下载地址

    "type":xxxx //模型类型

    }

    正常返回

    {

      "code":"SUCCESS",

      "message":"请求处理成功",

      "data":{

            "key":"xxxxxx"

            }

    }

    错误返回

    1)         当file、url均未指定时:{"code":"BAD_PARAMETER","message":"file、url不可同时为空",data:null};

    2)         当file、url同时指定时:{"code":"BAD_PARAMETER","message":"file、url不可同时指定",data:null};

    3)         当指定url但没有指定name时:{"code":"BAD_PARAMETER","message":"url、name应同时指定",data:null};

    4)         当type参数不是IFC、REVIT、IMODEL、OBJ之一时:{"code":"BAD_PARAMETER_VALUE","message":"参数(type)值不正确",data:null};

    5)         当file不是系统支持的模型文件时:{"code":"BAD_PARAMETER","message":"无法确定模型类型",data:null}

    6)         当file不是ifc或zip格式时:{"code":"BAD_PARAMETER","message":"file应为ifc或zip格式",data:null};

    7)         当url不是有效网址时:{"code":"BAD_PARAMETER","message":"参数(url)值不正确",data:null};

    8)         当file、type类型不匹配时:{"code":"BAD_PARAMETER","message":"file与type类型不匹配",data:null}。

    逻辑要点

    1)      Type选填,若该参数为空,系统将自动判断文件类型;若填写该参数,则值为IFC、REVIT、IMODEL、OBJ之一,不区分大小写;

    2)      file、url两种方式只能指定其中之一;

    3)      如选择file方式,file必须是ifc或zip文件,name可选填;

    4)      如选择url方式,name必填;

    5)      如填写name参数,name为模型名称,不带扩展名;

    6)      type、file类型应匹配:当type为IFC时,file应为ifc文件;当type为REVIT、IMODEL或OBJ时,file应为zip文件。

    备注

    1)      当前支持上传的文件格式包括:ifc文件、imodel数据包、revit数据包、obj数据包;

    2)      文件全部上传成功后才会返回文件key;

    3)      对于revit、imodel模型,仅支持针对新版导出工具导出数据的文件类型的自动识别,即revitv2.0.0和imodel2.0.0及以上版本导出的数据支持自动识别文件类型,如使用旧版导出工具,请务必填写Type参数。(有关导出工具的版本可前往下载中心进行查看)

    4)      请妥善保管返回结果中的key,这是访问该文件的唯一途径,一旦丢失,将无法获取到文件数据。

    3.2   升版/替换模型文件

    为了针对上传的文件提供版本管理的支持,BOS3D提供升版/替换模型文件接口。当使用客户端设计软件对已经上传的模型进行修改后,可调用本接口进行文件的上传,新上传的文件可以替换原模型,也可以作为原模型的升级版本进行保存。

    POST http://bos3d.bimwinner.com/api/{databaseKey}/files/update

    用途

    升版或替换模型文件

    请求参数

    Headers

    Content-Type:multipat/formdata

    Path Parameters

    databaseKey:数据库key,必传

    Search Parameters

     

    Body

    {

    "fileKey":"XXX",//待升版或替换的文件key,必传

    "file":xxxx, //本地文件或者

    "url":xxxx //网络下载地址

    "revision":XXX //是否升版,true或false

    }

    正常返回

    {

      "code":"SUCCESS",

      "message":"请求处理成功",

      "data":{

           "fileKey":"xxxxxx",

           "version":XXX,//当前最新版本

           "modelKey":"XXX" //如有

            }

    }

    错误返回

    1)         当file、url均未指定时:{"code":"BAD_PARAMETER","message":"file、url不可同时为空",data:null};

    2)         当file、url同时指定时:{"code":"BAD_PARAMETER","message":"file、url不可同时指定",data:null};

    3)         当file不是系统支持的模型文件时:{"code":"BAD_PARAMETER","message":"无法确定模型类型",data:null}

    4)         当指定url但没有指定name时:{"code":"BAD_PARAMETER","message":"url、name应同时指定",data:null};

    5)         当url不是有效网址时:{"code":"BAD_PARAMETER","message":"参数(url)值不正确",data:null};

    6)         新版文件的模型类型与原模型不一致时:{"code":"BAD_PARAMETER","message":"模型类型与原模型不一致",data:null}。

    逻辑要点

    1)      revision可选,值为true或false,默认值为true;

    2)      当revision为false时,表示替换原模型文件,将清空原模型数据,fileKey和modelKey保持不变;

    3)      当revision为true时,表示对原模型文件进行升版,将保留原模型文件和模型数据为历史版本(可通过key-version获取历史信息,初始version为0),最新版本的fileKey和modelKey保持不变;

    4)      file、url只能选择其一。

    备注

    1)      升版时,模型类型必须与原模型类型一致;

    2)      文件升版/替换完成后,并不会自动执行后续的模型解析和场景创建,如需对升版/替换的新模型调用相关接口来完成对应功能,即执行以下后续操作:

         *  如原模型已有modelKey,需调用接口:重新解析模型;否则需调用接口:请求解析文件;

         *  模型解析成功后,需调用接口:创建模型默认场景或创建自定义场景。

    3.3   删除模型文件

    当不再需要某个模型时,可通过调用模型文件删除接口,对模型文件进行物理删除,该文件一旦删除,将无法获取模型信息和数据。

    DELETE http://bos3d.bimwinner.com/api/{databaseKey}/files?fileKey={fileKey}

    用途

    从数据库中删除一个模型文件

    请求参数

    Headers

     

    Path Parameters

    databaseKey:数据库key,必传

    Search Parameters

    fileKey:文件key,必传

    Body

     

    正常返回

    {

      "code":"SUCCESS",

      "message":"请求处理成功",

      "data":null

    }

    错误返回

    1)      当文件对应模型正在解析时:{"code":"PARSE_NOT_FINISHED","message":"模型(XXX)正在解析",data:null};

    2)      当文件对应模型正在创建场景时:{"code":"SCENE_NOT_FINISHED","message":"场景(XXX)正在创建",data:null};

    3)      当文件对应模型正在创建LOD时:{"code":"LOD_NOT_FINISHED","message":"LOD(XXX)正在创建",data:null};

    4)      当文件对应模型正在创建glTF时:{"code":"GLTF_NOT_FINISHED","message":"glTF(XXX)正在创建",data:null}。

    逻辑要点

    1)      删除文件时,文件对应的模型、场景、glTF数据一并删除。

    备注

    1)      如果指定文件对应有正在解析中的模型,或正在创建中的场景,或正在导出的gltf,则无法删除该文件;

    2)      如果被删除的文件是最新版且有历史版本存在,则恢复最近的历史版本为最新版。

  • 4、模型解析

    4.1   请求解析模型

    本接口提供对已上传的模型进行数据内容读取和信息提取。

    POST   http://bos3d.bimwinner.com/api/{databaseKey}/parses/files

    参数

    Headers

     

    Path Parameters

    databaseKey:数据库key,必传

    Search Parameters

     

    Body

    {

    "fileKey":"Z3JvdXAxLE0wM……WZj",

    "priority":1

    }

    正常返回

    {

        "message": " 请求处理成功 ",

        "code": "SUCCESS",

    "data": {

         "modelType": " 模型类型 "

          "modelKey": " 模型 key"

         "status": " 模型当前解析状态 "

         "remark ": " 解析状态说明 "

    }

    }

    错误返回

    1)      当body中缺少fileKey参数或者fileKey为空或空格时:{ "code": "PARAMETER_REQUIRED", "message": "参数(fileKey)不能为空", "data": null};

    2)      当文件不存在时:{"code": "FILE_NOT_FOUND", "message": "文件(xxxx)不存在", "data": null};

    3)      当priority不是数字时:{"code": "BAD_PARAMETER_TYPE", "message": "参数(priority)类型不正确","data": null};

    4)      当添加到解析队列失败时:{"code": "PARSE_REQUEST_FAILED", "message": "请求失败,文件(xxx)未能加入解析队列","data": null}。;

    逻辑要点

    1)      fileKey必传,值为上传模型文件得到的fileKey;

    2)      priority选填,表示解析优先级,默认为0,此时按队列顺序解析;如需优先解析,可设置为1,此时插入到当前解析队列最前端,优先解析;

    3)      如模型文件此前已申请解析过,则保持模型key不变,继续未完成的解析。

    备注

     

    4.2   查询模型解析进度

    模型解析请求成功后将立即返回modelKey,但模型解析可能需要花一点时间,可通过调用本接口实时查看模型解析进度。

    GET http://bos3d.bimwinner.com/api/{databaseKey}/parses/status?modelKey={modelKey}

    参数

    Headers

     

    Path Parameters

    databaseKey :数据库 key

    Search Parameters

    modelKey :模型 key

    Body

     

    正常返回

    {

        "message": "请求处理成功",

        "code": "SUCCESS",

    "data": {

           "percentage": "解析进度说明"

           "remark": "解析状态说明"

           "modelType": "模型类型"

           "modelKey": "模型key"

           "status": "模型当前解析状态"

    }

    }

    错误返回

    1)      当modelKey为空时:{ "code": "PARAMETER_REQUIRED", "message": "参数(modelKey)不能为空", "data": null};

    2)      当模型不存在时:{"code": "MODEL_NOT_FOUND", "message": "模型(xxxx)不存在", "data": null}。

    逻辑要点

     

    备注

    解析状态码( stateCode 说明:

    0: 从未解析

    1ifc几何解析完成

    2模型正在解析中

    3模型全部解析

    0.5 ifc 模型几何解析中

    1.5 ifc 模型属性解析中

    - 1 :模型 解析失败

    4.3  请求重新解析模型

    模型成功解析后,可以随时请求重新解析模型。

    PUT   http://bos3d.bimwinner.com/api/{databaseKey}/parses/models

    参数

    Headers

     

    Path Parameters

    databaseKey:数据库key,必传

    Search Parameters

     

    Body

    {

    "modelKey":"xxxxxx",

    "priority":1

    }

    正常返回

    {

        "message": "请求处理成功",

        "code": "SUCCESS",

    "data": {

           "modelType": "模型类型"

          "modelKey": "模型key"

          "status": "模型当前解析状态"

           "remark": "解析状态说明"

    }

    }

    错误返回

    1)      当body中缺少modelKey参数或者modelKey为空或空格时:{ "code": "PARAMETER_REQUIRED", "message": "参数(modelKey)不能为空", "data": null};

    2)       当模型不存在时:{"code": "MODEL_NOT_FOUND", "message": "模型(xxxx)不存在", "data": null};

    3)      当priority不是数字时:{"code": "BAD_PARAMETER_TYPE", "message": "参数(priority)类型不正确","data": null};

    4)      当添加到解析队列失败时:{"code": "PARSE_REQUEST_FAILED", "message": "请求失败,模型(xxx)未能加入解析队列","data": null}

    逻辑要点

    1)      modelKey必传,值为模型key

    2)      priority选填,表示解析优先级,默认为0,此时按队列顺序解析;如需优先解析,可设置为1,此时插入到当前解析队列最前端,优先解析;

    3)      清空历史解析结果,从头开始解析。

    备注

    重新解析模型之前若已有创建好的场景,则场景数据将被清除。因此,请求重新解析模型后,需要重新创建模型场景。

  • 5、模型数据

    5.1  获取模型信息

    本接口用于获取模型的基本信息。

    GET http://bos3d.bimwinner.com/api/{databaseKey}/models?modelKey={modelKey}

    参数

    Headers

     

    Path Parameters

    databaseKey :数据库 key

    Search Parameters

    modelKey :模型 key

    Body

     

    正常返回

    {

        "message":"请求处理成功",

        "code":"SUCCESS",

        "data": {

            "id": "models/3786825",

            "key": "3786825",

            "rev": "_XKmModO--B",

            "modelName": "TestModel",

            "maxBoundary": {

                "x": 7188.650588989258,

                "y": 3177.8038330078125,

                "z": 3240.1499996185303

            },

            "minBoundary": {

                "x": -3640.04443359375,

                "y": -84.8460865020752,

                "z": 2952

            },

            "componentCount": 52,

            "fileKey": [

                "mxzQ2RlR0FTdzJ1QUN0SE5Gc3JlNWszMzQuaWZj"

            ],

            "status": "3",

            "timestamp":"2018-07-05 20:28:30",

            "children": null,

            "type": "IFC"

            "scene": null

            "version": 0,

            "profiles": {

                "database": "1.0",

                "partition": "1.0",

                "api": "1.0",

                "scene": "1.0"

            }

       }

    }

    错误返回

    1)      当modelKey为空时:{ "code": "PARAMETER_REQUIRED", "message": "参数(modelKey)不能为空", "data": null};

    2)       当模型不存在时:{"code": "MODEL_NOT_FOUND", "message": "模型(xxxx)不存在", "data": null}。

    逻辑要点

     

    备注

    模型解析的属性说明见附录一

    5.2   下载模型数据文件

    本接口用于下载模型的数据文件。

    GET   http://bos3d.bimwinner.com/api/{databaseKey}/files?fileKey={fileKey}&type={type}

    参数

    Headers

     

    Path Parameters

    databaseKey :数据库 key

    Search Parameters

    fileKey :文件 key ,必传

    type :下载类型

    Body

     

    正常返回

    数据文件

    错误返回

    1)     当fileKey为空时:HTTP Status Code:400,body:{ "code": "BAD_FILE_DOWNLOAD_PARAMETER", "message": "参数(fileKey)不能为空", "data": null};

    2)     当fileKey对应文件不存在时:HTTP Status Code:400,{ "code": "BAD_FILE_DOWNLOAD_PARAMETER", "message": "文件(xxx)不存在", "data": null}。

    逻辑要点

    当需要下载为物理文件时,type应指定为file;其他情况可不指定type参数。

    备注

    1)     该接口参数错误时,返回的HTTP Status Code为400;

    2)     系统错误时,返回HTTP Status Code为500。

    5.3   批量下载模型几何文件

    本接口用于获取模型的所有几何数据。

    POST http://bos3d.bimwinner.com/api/{databaseKey}/files/batch

    参数

    Headers

     

    Path Parameters

    databaseKey:数据库key

    Search Parameters

     

    Body

    {

    "files":["xxx","yyy"]

    }

    正常返回

    几何文件压缩包,zip格式

    错误返回

    1)   当body为空时:HTTP Status Code:400,body:{ "code": "BAD_FILE_DOWNLOAD_PARAMETER", "message": "body不能为空", "data": null};

    2)   当files参数缺失或为空时:HTTP Status Code:400,body:{ "code": "BAD_FILE_DOWNLOAD_PARAMETER", "message": "参数(files)不能为空", "data": null};

    3)   当files中存在空的key时:HTTP Status Code:400,body:{ "code": "BAD_FILE_DOWNLOAD_PARAMETER","message": "files中的key不能为空", "data": null};

    4)   当files中存在重复的key时:HTTP Status Code:400,body:{ "code": "BAD_FILE_DOWNLOAD_PARAMETER","message": "files中的key(key)重复", "data": null};

    5)   当fileKey对应文件不存在时:HTTP Status Code:400,{ "code": "BAD_FILE_DOWNLOAD_PARAMETER", "message": "文件(xxx)不存在", "data": null}。

    逻辑要点

    1)       下载列表中的几何文件,压缩为zip文件夹;

    2)       如果列表中有文件不存在,提示文件不存在;

    3)       文件夹以随机生成的包含 32 个字符的字符串命名。

    备注

    1)       用于下载模型解析后生成的几何文件

    2)      该接口正常响应体是文件,如参数错误时,返回的HTTP Status Code为400;系统错误时,返回HTTP Status Code为500。

    5.4   获取模型构件列表

    本接口用于获取模型的构件列表。

    GET http://bos3d.bimwinner.com/api/{databaseKey}/components/keys?modelKey={modelKey}

    参数

    Headers

     

    Path Parameters

    databaseKey:数据库key

    Search Parameters

    modelKey:模型key

    Body

     

    正常返回

    {

        "message":"请求处理成功",

        "code":"SUCCESS",

       "data": [

                "1569745_610069",

                "1569745_715258",

                "1569745_715018",

                "1569745_715331",

                "1569745_606085",

                "1569745_715210"

        ]

    }

    错误返回

     

    逻辑要点

     

    备注

     

    5.5  获取模型单个构件属性

    本接口用于获取模型的指定单个构件的属性。

    GET   http://bos3d.bimwinner.com/api/{databaseKey}/components?componentKey={componentKey}&return={name,key}

    参数

    Headers

     

    Path Parameters

    databaseKey :数据库 key

    Search Parameters

    componentKey :构件 key

    return :返回的属性列表(可不指定)

    Body

     

    正常返回

    {

      "code":"SUCCESS",

      "message":"请求处理成功 ",

      "data": {

            "name": "Fenster-004",

            "key": "4785976_3LhgbZxOfBS96L3z1ugkAf"

            "parentId": 4760

            }

    }

    错误返回

    当构件参数格式错误时: {"code":"BAD_PARAMETER_FORMAT", "message": "参数(xxxx)格式不正确", "data": null};

    逻辑要点

    如指定return参数,则返回指定的字段;否则返回全部属性。

    备注

    构件属性说明见附录一:模型构件属性清单

    5.6   批量获取模型构件属性

    本接口用于获取模型的一组构件的属性。

    POST http://bos3d.bimwinner.com/api/{databaseKey}/components/batch?return={name,key}

    参数

    Headers

     

    Path Parameters

    databaseKey:数据库key

    Search Parameters

    return:返回的属性列表(可不指定)

    Body

    {

        "components":["38592-675657","38592-675658"]

    }

    正常返回

    {

        "code":"SUCCESS",

        "message":"请求处理成功",

       "data": [

            {

                "name": "S HY-三通-丝接:标准:5874473",

                "key": "3308592-675657"

            },

            {

                "name": "三通",

                "key": "3308592-675658"

            }

        ]

    }

    错误返回

    1)         当body中缺少components时:{"code":"PARAMETER_REQUIRED", "message": "参数(components)不能为空", "data": null};

    2)         当components中存在空的key时:{"code":"BAD_PARAMETER", "message": "components中的key不能为空", "data": null};

    3)         当构件参数格式错误时:{"code":"BAD_PARAMETER_FORMAT", "message": "参数(xxxx)格式不正确", "data": null};

    4)         当components中存在重复的key时{"code":"BAD_PARAMETER", "message": "components中的key(key)重复", "data": null};

    5)         当列表中有一个或多个构件不存在时:{"code": "COMPONENT_NOT_FOUND", "message": "构件(xx_xxx、yy_yyy)不存在", "data": null}。

    逻辑要点

    如指定return参数,则返回指定的字段;否则返回全部属性。

    备注

     

    5.7   根据属性查询构件

    本接口用于根据指定属性返回符合查询条件的构件列表。

    POST http://bos3d.bimwinner.com/api/{databaseKey}/queries/attributes

    参数

    Headers

     

    Path Parameters

    databaseKey:数据库key

    Search Parameters

     

    Body

    {

       "model": "M34345435352", 或

       "models":["M34345435352","M34345435353"]

       "condition": [

         {

           "type": "filter",

           "field": "attribute['其他']['类别']",

           "operator": "==",

           "value": "管\"件"

         },

         {

           "type": "filter",

           "field": "attribute['机械']['系统类型']",

           "operator": "==",

           "value": "管道系统: 暖通-空冷供水"

         },

         {

           "type": "or",

            "items": [

             {

                "type": "filter",

                "field": "name",

               "operator": "==",

               "value": "三'通"

             },

             {

                "type": "filter",

               "field": "parentId",

               "operator": "==",

               "value": 128

             }

           ]

         }

       ]

    }

    正常返回

    {

        "code":"SUCCESS",

        "message":"请求处理成功",

       "data": [

         "key1",

         "key2",

       ]

    }

    错误返回

    1)         当参数model、models都未指定时:{ "code": "PARAMETER_REQUIRED", "message": "model、models不可同时为空", "data": null};

    2)         当参数model、models同时指定时:{ "code": "BAD_PARAMETER", "message": "model、models不可同时指定", "data": null}为空字符串时:{ "code": "PARAMETER_REQUIRED", "message": "参数(model)不能为空", "data": null};

    3)         当type为filter、and、or以外的值时:{"code": "BAD_PARAMETER", "message": "查询条件类型只能为filter、and或or", "data": null};

    4)         当filter节点缺少field、operator或value字段时:{"code": "BAD_PARAMETER", "message": "filter节点必须包含field、operator和value字段", "data": null};

    5)         当模型解析已经失败时:{ "code": "PARSE_FAILED", "message": "模型(XXX)解析失败", "data": null};

    6)         当模型解析尚未完成时:{ "code": "PARSE_NOT_FINISHED", "message": "模型(XXX)正在解析", "data": null};

    7)         当operator值非法时:{"code": "BAD_PARAMETER", "message": "filter节点operator(XXX)不支持", "data": null}

    逻辑要点

    1)      Model、models必填其一、不可同时指定,限定查询范围为指定一个模型或多个模型;

    2)      condition非必填,可设置一个或多个查询条件,多个查询条件之间的逻辑关系为“与”(必须同时满足)。查询条件的type必须为filter、and、or三种类型之一:

              a. and:组合逻辑,对应节点必须设置items,items内的查询条件之间间的逻辑关系为"与"(必须同时满足);

              b. or:组合逻辑,对应节点必须设置items,items内的查询条件之间的逻辑关系为"或"(满足其一即可);

              c. filter:某个特定字段的查询条件,对应节点必须设置field、operator和value;

                   a).field:表示查询字段,可以为字段名(如name)或者对象字段的具体属性(如attribute['机械']['系统类型']);

                   b).operator:表示比较运算符,支持==、!=、<、<=、>、>=、like;;

                   c).value:表示值,可为字符串或数字或null,如operator为like,则value必须为字符串。

    备注

     

    5.8   获取模型所有构件类型

    本接口用于获取模型中所有构件的类型。

    GET http://bos3d.bimwinner.com/api/{databaseKey}/components/types?modelKey={modelKey}

    参数

    Headers

     

    Path Parameters

    databaseKey:数据库key

    Search Parameters

    modelKey:模型key

    Body

     

    正常返回

    {

        "message":"请求处理成功",

        "code":"SUCCESS",

       "data": [

         "窗",

         "门",

         "墙"

       ]

    }

    错误返回

    1) modelKey,必选;

    2) modelKey为空时:{"code": "PARAMETER _REQUIRED", "message": "参数(modelKey)不能为空", "data": null};

    逻辑要点

     

    备注

     

    5.9   更新模型变换矩阵

    本接口用于更新模型的变换矩阵,以满足改变模型展示的位置和朝向的需求。

    PUThttp://bos3d.bimwinner.com/api/{databaseKey}/models

    参数

    Headers

     

    Path Parameters

    databaseKey:数据库key

    Search Parameters

     

    Body

    {

        "modelKey":"2080811",

        "translation":[100,200,300],

        "rotation":[45,90,0]

    }

    正常返回

    {

        "code":"SUCCESS",

        "message":"请求处理成功",

       "data": {

         "key":"xxxxxx",

         "name":"xx",

         "transform": {

           "rotation": [45, 90, 0],

           "translation": [100, 200,300]

         }

    "matrix":[0,0,1,0,0.7071067811865475,0.7071067811865476,0,0,-0.7071067811865476,0.7071067811865475,0, 0,100,200,300,1]

      }

    }

    错误返回

    1)         当translation长度不为3或元素类型不是数字时:{"code": "BAD_PARAMETER_VALUE", "message": "参数(translation)值不正确", "data": null};

    2)         当rotation长度不为3或元素类型不是数字时:{"code": "BAD_PARAMETER_VALUE", "message": "参数(rotation)值不正确", "data": null}

    逻辑要点

    1)         modelKey、translation、rotation必填;

    2)         translation数组对应x、y、z方向的平移量,元素类型为double;

    3)         rotation数组对应模型绕x、y、z轴的旋转角度,元素类型double。

    备注

     

    5.10   删除模型数据

    本接口用于从数据库中删除指定模型的数据。

    DELETE http://bos3d.bimwinner.com/api/{databaseKey}/models?modelKey={modelKey}

    参数

    Headers

     

    Path Parameters

    databaseKey:数据库key,必传

    Search Parameters

    modelKey:模型key,必传

    Body

     

    正常返回

    {

        "code":"SUCCESS",

        "message":"请求处理成功",

       "data": null

    }

    错误返回

    1)      当模型正在解析时:{"code":"PARSE_NOT_FINISHED","message":"模型(XXX)正在解析",data:null};

    2)      当模型正在创建场景时:{"code":"SCENE_NOT_FINISHED","message":"场景(XXX)正在创建",data:null};

    3)      当模型正在创建glTF时:{"code":"GLTF_NOT_FINISHED","message":"glTF(XXX)正在创建",data:null}。

    逻辑要点

    1)      删除模型时,模型场景、glTF一并删除,不删除模型原始文件。

    备注

    1)      当模型正在解析时,或模型场景/gltf格式正在创建时,将无法删除模型;

    2)      删除模型仅仅是删除模型的数据,但模型对应的原始文件并不会被删除,模型删除后,仍然可以调用请求模型解析,对模型进行再次解析等后续操作。

    5.11   获取模型所有构件的特定属性

    本接口用于获取模型所有构件的特定属性,如模型所有构件的key和编码、分类等属性

    GET http://bos3d.bimwinner.com/api/{databaseKey}/components/attributes?modelKey={modelKey}&attributes={attribute1,attribute2...}&pageNumber={pageNumber}&pageSize={pageSize}

    参数

    Headers

     

    Path Parameters

    databaseKey:数据库key,必传

    Search Parameters

    modelKey:模型key,必传

    attributes:属性字段列表,如type,attribute.标高

    pageNumber:分页返回的页码,从0开始

    pageSize:分页返回每页最大条目,取值100~10000

    Body

     

    正常返回

    {

        "code":"SUCCESS",

        "message":"请求处理成功",

        "data": {

          "content": [

            {

              "type": "常规模型",

              "标高": null,

              "key": "XXX"

            }

            ...

            {

              "type": "常规模型",

              "标高": null,

              "key": "XXX"

            }

          ],

         "pageable": {

            "sort": {

              "sorted": true,

              "unsorted": false

            },

           "offset": 0,

            "pageSize": 100,

            "pageNumber": 0,

            "unpaged": false,

            "paged": true

          }

           "totalElements": 521,

           "totalPages": 6,

           "last": false,

            "number": 0,

            "size": 100,

            "sort": {

             "sorted": true,

              "unsorted": false

            },

          "first": true,

          "numberOfElements": 100

       }

    }

    错误返回

     

    逻辑要点

    1)      attributes:返回的属性列表,属性之间用英文符号逗号(,)连接。

    2)      attributes中的属性可以是构件基础属性(如type),也可以是构件attribute属性中的某个子属性(如attribute.标高),属性与子属性用英文符号点(.)连接,返回值中属性名称为attribute中最后一个子属性名称;

    3)      pageNumber:分页返回结果的当前页,从0开始;

    4)      pageSize:每页最大数据量,取值范围在100~10000之间。

    备注

     

  • 6、模型场景

    6.1   创建模型默认场景

    本接口用于创建模型默认场景。

    POST http://bos3d.bimwinner.com/api/{databaseKey} / scenes

    参数

    Headers

     

    Path Parameters

    databaseKey :数据库 key

    Search Parameters

     

    Body

    {

       "modelKey":" 2080811"

    }

    正常返回

    {

      "code":"SUCCESS",

      "message":"请求处理成功 ",

      "data":{

    "key":"xxxxxx",

    "status":"xx",

    "remark":"xx"

    }

    }

    错误返回

    1)      当body为空时:{"code": "BAD_PARAMETER", "message": "body不能为空", "data": null};

    2)      参数modelKey为空字符串时:{ "code": "PARAMETER_REQUIRED", "message": "参数(modelKey)不能为空", "data": null};

    3)      当模型不存在时:{"code": "MODEL_NOT_FOUND", "message": "模型(xxxx)不存在", "data": null};

    4)       当模型解析已经失败时:{ "code": "PARSE_FAILED", "message": "模型(xxxx)解析失败", "data": null};

    5)      当模型解析尚未完成时:{ "code": "PARSE_NOT_FINISHED", "message": "模型(xxxx)尚在解析中", "data": null}。

    逻辑要点

             模型解析完成后才可以创建场景;

    备注

     

    6.2   创建模型自定义场景

    本接口用于根据用户的需要创建自定义场景。

    POST http://bos3d.bimwinner.com/api/{databaseKey}/scenes/custom

    参数

    Headers

     

    Path Parameters

    databaseKey :数据库 key

    Search Parameters

     

    Body

    {

       "name": "测试场景",

       "child": [

         {

          "name": "主楼",

          "child": [

           {

               "name": "1层",

               "itemType": "component",

               "items": [

                 "1313058_1",

                 "1312396_9",

                 "1313058_1"

             ]

           },

           {

               "name": "2层",

               "itemType": "component",

               "items": [

                  "1368742_4",

                  "1313058_Z"

             ]

          }

         ]

         },

         {

             "name": "裙楼",

             "itemType": "model",

              "items": [

                "1422266"

          ]

         }

      ]

    }

    正常返回

    {

      "code":"SUCCESS",

      "message":"请求处理成功 ",

      "data":{

    "key":"xxxxxx",

    "status":"xx",

    "remark":"xx"

    }

    }

    错误返回

    当body不为空但参数错误时,返回{"code": "BAD_PARAMETER", "message": "XXX", "data": null}。具体错误消息有:

    1)节点为空时:场景节点参数不能为空;

    2)节点无name或name为空时:场景节点name不能为空;

    3)节点既无items也无child时:场景节点(name)应指定child或items参数;

    4)节点既有items也有child时:场景节点(name)不能同时定child和items参数;

    5)节点有items无itemType时:场景节点(name)应指定itemType参数;

    6)节点itemType不为component或model时:场景节点(name)itemType的值应为model或component;

    7)节点items不是列表时:场景节点(name)items应为列表;

    8)节点child不是列表时:场景节点(name)child应为列表;

    9)节点items中无数据时:场景节点(name)items不能为空;

    10)节点child中无数据时:场景节点(name)items不能为空;

    11)当itemType为model时:

            a.当items中key为空时:场景节点(name)items中的key不能为空;

           b.当items中key重复时:场景节点(name)items中的key(key)重复;

            c.当items中的模型不存在时:场景节点(name)items中的模型(key)不存在;

          d.当items中的模型尚在解析中时:场景节点(name)items中的模型(key)尚在解析中;

          e.当items中的模型解析已失败时:场景节点(name)items中的模型(key)解析失败。

    12)当itemType为component时:

            a.当items中key为空时:场景节点(name)items中的key不能为空;;

            b.当items中key格式错误时:场景节点(name)items中的key(key)格式错误;

            c.当items中key重复时:场景节点(name)items中的key(key)重复;

           d.当items中的构件不存在时:场景节点(name)items中的构件(key)不存在。

    逻辑要点

    1)         场景涉及的模型解析完成后才可以创建自定义场景;

    2)         场景节点必须指定name;

    3)         场景节点必须指定child或items,且不能同时指定;

    4)         tems、child不能为空;

    5)         child中的元素为场景子节点,不能为空,可以嵌套;

    6)         items中的元素不能为空,且同一节点中不能重复。

    备注

     

    6.3   获取场景信息

    本接口用于获取场景的信息。

    GET http://bos3d.bimwinner.com/api/{databaseKey}/scenes?sceneKey={sceneKey}

    参数

    Headers

     

    Path Parameters

    databaseKey :数据库 key

    Search Parameters

    sceneKey :场景 key

    Body

     

    正常返回

    {

      "message":"请求处理成功 ",

      "code":"SUCCESS",

      "data":{

    "name": "测试场景",

    "remark": "场景创建成功",

    "key": "S1532401016082",

    "status": "1",

    "scene": {

      "level": 2,

      "name": "测试场景",

      "isLeaf": false,

       "key": "S1532401016082",

      "child": [

       {

        "parent": "S1532401016082",

         "level": 1,

        "name": "主楼",

        "isLeaf": false,

        "key": "S1532401016082_1",

        child": [

         {

           "parent": "S1532401016082_1",

           "level": 0,

           "name": "1层",

           "isLeaf": true,

          "key": "S1532401016082_1_1"

         }

         {

           "parent": "S1532401016082_1",

           "level": 0,

           "name": "2层",

           "isLeaf": true,

          "key": "S1532401016082_1_2"

         }

        ]

       }

       {

         "parent": "S1532401016082",

         "level": 1,

         "name": "裙楼",

        "isLeaf": true,

         "key": "S1532401016082_2"

       }

      ]

     }

    }

    错误返回

     

    逻辑要点

    当场景尚未生成或生成失败时,返回创建状态

    备注

     

    6.4   查询场景生成状态

    由于场景的创建可能需要花费一点时间,可通过调用本接口查询场景的创建状态。

    GET http://bos3d.bimwinner.com/api/{databaseKey}/scenes/status?sceneKey={sceneKey}

    参数

    Headers

     

    Path Parameters

    databaseKey :数据库 key

    Search Parameters

    sceneKey :场景 key

    Body

     

    正常返回

    {

      "message":"请求处理成功 ",

      "code":"SUCCESS",

      "data":{

    "remark": "场景创建成功",

    "key": "S1532401016082",

    "status": "1",

     }

    }

    错误返回

    1)当参数sceneKey为空字符串时:{ "code": "PARAMETER_REQUIRED", "message": "参数(sceneKey)不能为空", "data": null}

    2)当场景不存在时:{"code": "SCENE_NOT_FOUND", "message": "场景(xxxx)不存在", "data": null}

    逻辑要点

     

    备注

    场景创建状态(status)说明:

      “1”:创建成功

      “0”:创建中

      “-1”:创建失败

    6.5   更新场景

    本接口用于模型重新解析后或者需要修改自定义场景参数时对场景进行更新。

    PUT http://bos3d.bimwinner.com/api/{databaseKey}/scenes?sceneKey={sceneKey}

    用途

    保持场景key不变,重新创建场景。如果是自定义场景,可修改参数。

    参数

    Headers

     

    Path Parameters

    databaseKey :数据库 key

    Search Parameters

    sceneKey :场景 key

    Body

    如为自定义场景,可以参照接口6.2:创建自定义场景的规定,重新设置参数

    正常返回

    {

      "message":"请求处理成功 ",

      "code":"SUCCESS",

      "data":{

    "remark": "XXX",

    "key": "XXX",

    "status": "XXX",

     }

    }

    错误返回

    1)当场景正在创建时:{"code":"SCENE_NOT_FINISHED","message":"场景(XXX)正在创建",data:null}。

    逻辑要点

     

    备注

    1)  更新场景将保持场景key不变;

    2)  如果是更新默认场景,则不需要指定Body

    3)  如果是更新自定义场景,可以参照接口6.2:创建自定义场景的规定,重新设置参数;

    4)  如果场景正在创建中,则无法更新场景。

    6.6   删除场景

    本接口用于删除场景。

    DELETE http://bos3d.bimwinner.com/api/{databaseKey}/scenes?sceneKey={sceneKey}

    用途

    从数据库中删除场景数据

    参数

    Headers

     

    Path Parameters

    databaseKey :数据库 key

    Search Parameters

    sceneKey :场景 key

    Body

     

    正常返回

    {

      "message":"请求处理成功 ",

     "code":"SUCCESS",

      "data":null

    }

    错误返回

    1)当场景正在创建时:1){"code":"SCENE_NOT_FINISHED","message":"场景(XXX)正在创建",data:null}。

    逻辑要点

    仅删除场景数据,不影响模型数据、模型glTF等其他数据。

    备注

    如果场景正在创建或更新中,则不能删除

  • 7、模型GLTF

    7.1  请求生成模型GLTF文件

    本接口用于请求生成模型的gltf文件。

    POST http://bos3d.bimwinner.com/api/{databaseKey}/gltfs

    参数

    Headers

     

    Path Parameters

    databaseKey :数据库 key

    Search Parameters

     

    Body

    {

       "modelKey":"2080811",

    }

    正常返回

    {

      "code":"SUCCESS",

      "message":"请求处理成功 ",

      "data":{

    "key": "xxxxxx",

    status":"xx",

    "remark":"xx"

     }

    }

    错误返回

    1) 当模型解析已经失败时:{ "code": "PARSE_FAILED", "message": "模型(xxxx)解析失败", "data": null};

    2) 当模型解析尚未完成时:{ "code": "PARSE_NOT_FINISHED", "message": "模型(xxxx)尚在解析中", "data": null}。

    逻辑要点

    模型解析完成后才可以生成GLTF文件。

    备注

    异步接口

    7.2  查询模型GLTF文件生成状态

    Gltf文件的生成需要花费一点时间,本接口用于查询gltf的生成状态。

    GET http://bos3d.bimwinner.com/api/{databaseKey}/gltfs/status?modelKey={modelKey}

    参数

    Headers

     

    Path Parameters

    databaseKey :数据库 key

    Search Parameters

    modelKey :模型 key

    Body

    正常返回

    {

      "message": "请求处理成功",

      "code": "SUCCESS",

      "data": {

         "path": "Z3JvdXAxLE0wMC8xMy9DQS93S2dIQmx1U……",

         "size": 234367,

         "name": "M1535428109297.gltf",

         "remark": "GLTF生成成功",

         "key": "M1535428109297",

         "status": "1"

      }

    }

    错误返回

    逻辑要点

    1) 当glTF文件尚未生成或生成失败时,返回创建状态(key、status、remark),status:“0”表示正在进行,“1”表示成功,“-1”表示已失败;

    2) 生成成功时,返回内容还包括glTF文件信息(name、path、size)。

    备注

    7.3  删除gltf

    本接口用于删除模型的gltf文件。

    DELETE http://bos3d.bimwinner.com/api/{databaseKey}/gltfs?modelKey={modelKey}

    用途

    从数据库中删除glTF数据和对应文件

    参数

    Headers

     

    Path Parameters

    databaseKey :数据库 key

    Search Parameters

    modelKey :模型 key

    Body

    正常返回

    {

       "message": "请求处理成功",

       "code": "SUCCESS",

      "data":null

    }

    错误返回

    1)当glTF正在创建时:{"code":"GLTF_NOT_FINISHED","message":"GLTF(XXX)正在创建",data:null}

    逻辑要点

    如果GLTF正在创建,则不能删除。

    备注

  • 8、其他

    8.1获取系统支持的模型类型

    本接口用于获取BOS3D系统所支持解析的模型格式类型。

    GET http://bos3d.bimwinner.com/api/supportedModelTypes

    参数

    Headers

     

    Path Parameters

     

    Search Parameters

     

    Body

     

    正常返回

    {

     "code":"SUCCESS",

     "message":"请求处理成功 ",

     "data":[

       "IFC",

       "IMODEL",

       "REVIT",

       "OBJ"

     ]

    }

    错误返回

     

    逻辑要点

     

    备注

     

  • 9、附录

    附录一、模型构件属性清单

    属性名

    描述

    示例

    key

    构件key

    M1534238745761_6861987

    attribute

    构件的属性

    {"系统分类": "循环供水","系统类型": "【S】KG空调补给水","系统名称": "G 1","系统缩写": "G","管段": "无缝钢管 - CECS 125"}

    geoFilePath

    构件的几何文件key

    Z3JvdXAxLE0wMC80Ni9FNy93S2dCRUZ0eW9CcUFjRmcyQUFBQWRIbnNKbTgxNy5qc29u

    guid

    构件的GUID

    25-29*u5c42*u673a*u7535-KG*u7a7a*u8c03*u8865*u7ed9*u6c34_6861987

    matrix

    构件的转换矩阵

    [1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]

    maxBoundary

    构件包围盒最大点

    {"x": -109967,"y": -76970,"z": 114450}

    minBoundary

    构件包围盒最小点

    {"x": -110027,"y": -77030,"z": 110250}

    model

    构件所属的模型id

    M1534238745761

    name

    构件名称

    【S】无缝钢管-焊接

    originalId

    构件的原始id

    6861987

    parentId

    父构件id

    0

    primitives

    构件面片数

    1701

    type

    构件类型

    管道

    version

    记录文件版本,目前没用,始终是0

    0

    注:
    1)OBJ模型并非BIM模型,不含业务属性,attribute为空,type对应obj对象的group,name对应obj对象的object,guid为对象在obj文件中的顺序索引。