我正在尝试将查看器中所选对象的几何体提取到单独的模型中。为此,我尝试关注https://developer.autodesk.com/en/docs/model-derivative/v2/tutorials/extract-geometry-from-source-file/。但是我得到了一个错误的请求#34;尝试执行职位时出错,无法确定可能出现的问题。 我的JobPayload创建代码和调用javascript的代码如下。据我看到其他问题,人们从revit文件中提取到OBJ,但根据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") }