Autodesk Forge Extract геометрия RVT -> OBJ приводит к ошибке неверного запроса - PullRequest
0 голосов
/ 26 мая 2018

Я пытаюсь извлечь геометрию выбранных объектов в программе просмотра в отдельную модель.Для этого я пытаюсь выполнить следующие действия: https://developer.autodesk.com/en/docs/model-derivative/v2/tutorials/extract-geometry-from-source-file/. Но я получаю ошибку «400 неверных запросов» при попытке выполнить пост-работу и не могу понять, что может быть не так.Мой код для создания JobPayload и JavaScript для вызова приведены ниже.Насколько я видел другие вопросы, люди делали извлечение в OBJ из файла revit, но согласно https://developer.autodesk.com/en/docs/model-derivative/v2/overview/supported-translations/ должно быть возможно только сделать RVT в SVF.Так можно ли извлечь геометрию из файла Revit или я должен изменить его на другой тип?Другой вопрос: можно ли использовать svf для извлечения?


    private JobPayload extractGeometryToOBJ(JSONObject jsonObject) {
            JobPayload job = new JobPayload();

            JobPayloadInput input = new JobPayloadInput();
            JSONObject inputObj = jsonObject.getJSONObject("input");
            input.setUrn(inputObj.getString("urn"));

            JobObjOutputPayloadAdvanced advanced = new JobObjOutputPayloadAdvanced();
            advanced.setExportFileStructure(ExportFileStructureEnum.SINGLE);
            JSONObject advancedFormat = (JSONObject) jsonObject.getJSONObject("output").getJSONArray("formats").get(0);
            JSONObject advancedFormatInfo = advancedFormat.getJSONObject("advanced");
            JSONArray objectIds = advancedFormatInfo.getJSONArray("objectIds");

            List objectIdList = new ArrayList();
            objectIds.forEach(e -> objectIdList.add(Integer.toString((Integer) e)));

            advanced.setModelGuid(advancedFormatInfo.getString("modelGuid"));
            advanced.setObjectIds(objectIdList);

            JobPayloadItem formats = new JobPayloadItem();
            formats.setAdvanced(advanced);
            formats.setType(JobPayloadItem.TypeEnum.OBJ);
            formats.setViews(Arrays.asList(JobPayloadItem.ViewsEnum._3D));

            JobPayloadOutput output = new JobPayloadOutput();
            output.setFormats(Arrays.asList(formats));

            job.setInput(input);
            job.setOutput(output);
            return job;
        }


    function getObjects(objectIds, modelGuid) { 
        getForgeToken(function (access_token) {
            var urn = viewerApp.myDocument.myData.urn;
            jQuery.post({
                url: '/api/forge/modelderivative/jobs',
                contentType: 'application/json',
                data: JSON.stringify({
                        "actionType": "extractToOBJ",
                       "input": {
                           "urn": urn
                        },
                        "output": {
                            "formats": [{
                                 "type": "obj",
                                 "advanced": {
                                     "modelGuid": modelGuid,
                                     "objectIds": objectIds
                                 }
                            }]
                    }}),
                    success: function (res) {
                           console.log(res);
                       },
                       error: function (err) {
                           console.log(err);
                       }
              })}, "internal")
    }

...