BIMFACE获取一个模型所有构件信息

官方说明

分页获取链接

思路

1、获取分页ID

https://api.bimface.com/data/v2/query/paginationContextId

2、循环根据分页ID获取elementIds,直到返回的结果的数量小于1000

https://api.bimface.com/data/v2/files/%s/elementIds

3、根据elementIds获取elements

https://api.bimface.com/data/v2/files/%s/elements

实现

注意:这里有个循环根据分页ID获取elementIds的逻辑,直至获取的结果的数量小于1000.(因为默认查询的分页参数为1000,我这里查询的时候没有传这个参数,所以默认为1000. 假如小于1000证明后面没有更多的结果了)
在这里插入图片描述

fileId就是模型主键,HttpClientUtil是我自己封装的工具栏,你可以用其他的。这里只是展示下思路。

public Map<String, Object> getModelElements(String fileId) {
        Map<String, Object> headersMap = new HashMap();
        headersMap.put("Authorization", String.format("%s %s", "bearer", this.beamfaceAccesstokenService.getAccesstoken()));
        HashMap paramMap = new HashMap();

        try {
            String converResult = HttpClientUtil.httpGetRequest("https://api.bimface.com/data/v2/query/paginationContextId", headersMap, paramMap);
            if (converResult == null) {
                log.error("调用转换服务失败");
                return null;
            } else {
                Map<String, Object> converResultJson = (Map)JSONUtils.parse(converResult);
                List<Map<String, Object>> rs = new ArrayList<>();
                if (converResultJson.get("code").toString().equals("success")) {
                    String contextId = converResultJson.get("data").toString();
                    paramMap = new HashMap();
                    paramMap.put("paginationContextId", contextId);
                    boolean flag = true;
                    while (flag) {
                        converResult = HttpClientUtil.httpGetRequest(String.format("https://api.bimface.com/data/v2/files/%s/elementIds", fileId), headersMap, paramMap);
                        converResultJson = (Map)JSONUtils.parse(converResult);
                        List<Map<String, Object>> stata = (List<Map<String, Object>>)converResultJson.get("data");
                        if (stata.size() < 1000) {
                            flag = false;
                        }
                        if (converResultJson.get("code").toString().equals("success")) {
                            ArrayList<String> elementsIds = (ArrayList)converResultJson.get("data");
                            JSONObject js = new JSONObject();
                            js.put("elementIds", elementsIds);
                            converResult = HttpClientUtil.httpPostRequestByRb(String.format("https://api.bimface.com/data/v2/files/%s/elements", fileId), headersMap, js.toJSONString());
                            converResultJson = (Map)JSONUtils.parse(converResult);
                            stata = (List<Map<String, Object>>)converResultJson.get("data");
                            rs.addAll(stata);
                        }
                    }
                }
                log.info("====={}=====", rs.size());
                Map<String, Object> rs2 = new HashMap<>();
                rs2.put("code", "success");
                rs2.put("data", rs);
                return rs2;
            }
        } catch (URISyntaxException | UnsupportedEncodingException var9) {
            log.error(var9.getMessage(), var9);
            return null;
        }
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值