BOS3DEngine提供了丰富的RESTful 风格API接口供二次开发者使用,可提供模型上传、模型解析、场景计算、glTF格式导出、模型删除等功能。
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模型进行数据解析。
模型经过解析后可将原始模型中的非几何信息(例如,造价、进度、建模相关的其他数据等属性相关数据)和几何信息(例如,顶点、面片、材质等几何相关数据)提取出来,便于用户后续根据自己的实际应用所需而使用。
场景用于对场景中所有元素进行层次化的管理,BOS3D提供创建默认场景。为了方便场景元素的查找和显示,BOS3D还支持创建自定义的场景,即根据用户自定义的规则创建和维护场景树,例如,按照空间关系(建筑群、建筑、楼层等)将整个场景划分为不同的区域,或者,按照系统关系(暖通、电气、给排水等)对场景进行划分,只要用户自定义的规则遵循BOS3D的场景定义格式,就可以按照用户的意愿来组织BIM数据。
针对模型的数据计算完成后,BOS3D提供模型数据相关的查看和下载功能。可获取模型id、模型key、构件数量、包围盒等模型信息,可获取模型所有的构件清单,可获取模型中指定构件的属性,还可以下载模型的几何数据,或根据指定属性查询并返回满足指定属性的构件列表。
为了支持行业通用格式glTF,BOS3D提供glTF导出功能。可将原始模型转换为glTF格式导出,并下载到本地。
当用户不需要文件、模型或场景时,BOS3D提供对应的删除功能,包括删除文件、删除模型、删除场景、删除gltf。
1) 上传文件(3.1):得到文件key;
2) 请求解析模型(4.1):传入文件key,得到模型key;
3) 创建模型场景(6.1),传入模型key,完成后即可使用BOSDViewer浏览模型。
本接口实现将本地模型文件上传到服务器进行存储,以便于后续的数据解析和模型展示。
|
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,这是访问该文件的唯一途径,一旦丢失,将无法获取到文件数据。 |
|
为了针对上传的文件提供版本管理的支持,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,需调用接口:重新解析模型;否则需调用接口:请求解析文件; * 模型解析成功后,需调用接口:创建模型默认场景或创建自定义场景。 |
|
当不再需要某个模型时,可通过调用模型文件删除接口,对模型文件进行物理删除,该文件一旦删除,将无法获取模型信息和数据。
|
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) 如果被删除的文件是最新版且有历史版本存在,则恢复最近的历史版本为最新版。 |
|
本接口提供对已上传的模型进行数据内容读取和信息提取。
|
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不变,继续未完成的解析。 |
|
|
备注 |
|
|
模型解析请求成功后将立即返回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: 从未解析 1:ifc几何解析完成 2:模型正在解析中 3:模型全部解析完 0.5: ifc 模型几何解析中 1.5 : ifc 模型属性解析中 - 1 :模型 解析失败 |
|
模型成功解析后,可以随时请求重新解析模型。
|
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) 清空历史解析结果,从头开始解析。 |
|
|
备注 |
重新解析模型之前若已有创建好的场景,则场景数据将被清除。因此,请求重新解析模型后,需要重新创建模型场景。 |
|
本接口用于获取模型的基本信息。
|
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}。 |
|
|
逻辑要点 |
|
|
|
备注 |
模型解析的属性说明见附录一 |
|
本接口用于下载模型的数据文件。
|
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。 |
|
本接口用于获取模型的所有几何数据。
|
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。 |
|
本接口用于获取模型的构件列表。
|
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" ] } |
|
|
错误返回 |
|
|
|
逻辑要点 |
|
|
|
备注 |
|
|
本接口用于获取模型的指定单个构件的属性。
|
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参数,则返回指定的字段;否则返回全部属性。 |
|
|
备注 |
构件属性说明见附录一:模型构件属性清单 |
|
本接口用于获取模型的一组构件的属性。
|
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参数,则返回指定的字段;否则返回全部属性。 |
|
|
备注 |
|
|
本接口用于根据指定属性返回符合查询条件的构件列表。
|
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必须为字符串。 |
|
|
备注 |
|
|
本接口用于获取模型中所有构件的类型。
|
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}; |
|
|
逻辑要点 |
|
|
|
备注 |
|
|
本接口用于更新模型的变换矩阵,以满足改变模型展示的位置和朝向的需求。
|
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。 |
|
|
备注 |
|
|
本接口用于从数据库中删除指定模型的数据。
|
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) 删除模型仅仅是删除模型的数据,但模型对应的原始文件并不会被删除,模型删除后,仍然可以调用请求模型解析,对模型进行再次解析等后续操作。 |
|
本接口用于获取模型所有构件的特定属性,如模型所有构件的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之间。 |
|
|
备注 |
|
|
本接口用于创建模型默认场景。
|
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}。 |
|
|
逻辑要点 |
模型解析完成后才可以创建场景; |
|
|
备注 |
|
|
本接口用于根据用户的需要创建自定义场景。
|
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中的元素不能为空,且同一节点中不能重复。 |
|
|
备注 |
|
|
本接口用于获取场景的信息。
|
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" } ] } } |
|
|
错误返回 |
|
|
|
逻辑要点 |
当场景尚未生成或生成失败时,返回创建状态 |
|
|
备注 |
|
|
由于场景的创建可能需要花费一点时间,可通过调用本接口查询场景的创建状态。
|
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”:创建失败 |
|
本接口用于模型重新解析后或者需要修改自定义场景参数时对场景进行更新。
|
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) 如果场景正在创建中,则无法更新场景。 |
|
本接口用于删除场景。
|
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等其他数据。 |
|
|
备注 |
如果场景正在创建或更新中,则不能删除 |
|
本接口用于请求生成模型的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文件。 |
|
|
备注 |
异步接口 |
|
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)。 |
|
|
备注 |
|
|
本接口用于删除模型的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正在创建,则不能删除。 |
|
|
备注 |
|
|
本接口用于获取BOS3D系统所支持解析的模型格式类型。
|
GET http://bos3d.bimwinner.com/api/supportedModelTypes |
||
|
参数 |
Headers |
|
|
Path Parameters |
|
|
|
Search Parameters |
|
|
|
Body |
|
|
|
正常返回 |
{ "code":"SUCCESS", "message":"请求处理成功 ", "data":[ "IFC", "IMODEL", "REVIT", "OBJ" ] } |
|
|
错误返回 |
|
|
|
逻辑要点 |
|
|
|
备注 |
|
|
|
属性名 |
描述 |
示例 |
|
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文件中的顺序索引。