首页 > 解决方案 > 如何使用新的 RVT->SVF Model Derivative 参数来生成额外的内容,包括房间和空间?

问题描述

我在 Forge 中关注这个https://learnforge.autodesk.io/#/教程,这里是我的 modelderivative.js 文件。我正在尝试使用新的 RVT->SVF 模型导数参数来生成其他内容,包括房间和空间。它说我需要将 generateMasterViews 参数设置为 true。它也要求 x-ads-force 为真。有谁知道怎么弄的?????????

const express = require('express');
const {
    DerivativesApi,
    JobPayload,
    JobPayloadInput,
    JobPayloadOutput,
    JobSvfOutputPayload
} = require('forge-apis');
 
const { getClient, getInternalToken } = require('./common/oauth');
 
let router = express.Router();
 
// Middleware for obtaining a token for each request.
router.use(async (req, res, next) => {
    const token = await getInternalToken();
    req.oauth_token = token;
    req.oauth_client = getClient();
    next();
});
 
// POST /api/forge/modelderivative/jobs - submits a new translation job for given object URN.
// Request body must be a valid JSON in the form of { "objectName": "<translated-object-urn>" }.
router.post('/jobs', async (req, res, next) => {
    let job = new JobPayload();
    job.input = new JobPayloadInput();
    job.input.urn = req.body.objectName;
    job.output = new JobPayloadOutput([
        new JobSvfOutputPayload()
    ]);
    job.output.formats[0].type = 'svf';
    job.output.formats[0].views = ['2d', '3d'];
    try {
        // Submit a translation job using [DerivativesApi](https://github.com/Autodesk-Forge/forge-api-nodejs-client/blob/master/docs/DerivativesApi.md#translate).
        await new DerivativesApi().translate(job, {}, req.oauth_client, req.oauth_token);
        res.status(200).end();
    } catch(err) {
        next(err);
    }
});
 
module.exports = router;

标签: node.jsautodesk-forge

解决方案


根据您提出问题的方式,我假设您已经看过这篇文章: https ://forge.autodesk.com/blog/new-rvt-svf-model-derivative-parameter-generates-additional-content-including-rooms和空格

这有一个示例请求正文,显示例如“输出”部分的外观:

"output": {
  "formats": [{
    "type": "svf",
    "views": [
      "2d",
      "3d"
    ],
    "advanced": {
      "generateMasterViews": true
    }
  }]
}

从这里您可以看到“高级”需要添加到与“类型”相同的级别,因此您需要将其添加到您的代码中:

job.output.formats[0].advanced = {generateMasterViews: true};

如果您将鼠标悬停在translate () 函数上方,则应该会出现一个信息弹出窗口 - 如下所示: 在此处输入图像描述

从中可以看出,您可以将 { xAdsForce : true } 添加到输入选项中。这会将x-ads-force标头添加到请求中。所以你会像这样调用translate ()

await new DerivativesApi().translate(job, {xAdsForce: true}, req.oauth_client, req.oauth_token);

推荐阅读