【问题标题】:Uploading linked Revit models to Autodesk Forge将链接的 Revit 模型上传到 Autodesk Forge
【发布时间】:2018-07-16 19:32:04
【问题描述】:

我一直在尝试使用 Post 引用 (https://developer.autodesk.com/en/docs/model-derivative/v2/reference/http/urn-references-POST/) 在 forge 中设置两个文件之间的引用,但是当我在 forge 查看器上尝试时,我收到一条消息“成功”,但我仍然看到即使在我翻译模型之后,这些文件也会分开。有人遇到过同样的问题吗?

【问题讨论】:

    标签: autodesk-forge autodesk-model-derivative


    【解决方案1】:

    @Cyrille,这是我的要求:

    curl -X 'POST' -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsI' -H 'Content-Type: application/json' -v 'https://developer.api.autodesk.com/modelderivative/v2/designdata/{urn}/references' -d 
    '{
      "urn": "urn:adsk.objects:os.object:bucket/non-existent.rvt",
      "filename": "",
      "references": [
        {
          "urn": "urn:adsk.objects:os.object:bucket/non-existent.rvt",
          "relativePath": "",
          "filename": ""
        }
      ]
    }'
    

    我得到了结果:

    '{
      "result": "success"
    }'
    

    关键是即使我在服务器上没有指定的文件,我也因此获得了成功,所以我建议很少进行服务器端验证,例如,当我们可以翻译模型时'不设置为参考权,所以它至少应该返回一个错误。谢谢你,我希望这会有所帮助。

    【讨论】:

    • 知道了。谢谢!我向开发团队报告了这个错误
    【解决方案2】:

    没有看到你的代码,很难知道发生了什么。下面我复制了我的 bash 脚本代码,它引用/翻译了一个带有材质和纹理的 obj。

    Au.obj
      +- Au.mtl
           +- Au.jpg
    

    上传后,我得到了这些

    • idObj="urn:adsk.objects:os.object:cyrillejcrja/Au.obj"
    • idMtl="urn:adsk.objects:os.object:cyrillejcrja/Au.mtl"
    • idJpg="urn:adsk.objects:os.object:cyrillejcrja/Au.jpg"

    现在是设置引用的代码

    urn=$(xbase64encode $idObj)
    job='{
        "urn": "'${idObj}'",
        "filename": "Au.obj",
        "references": [{
            "urn": "'${idMtl}'",
            "relativePath": "./Au.mtl",
            "filename": "Au.mtl",
            "references": [{
                "urn": "'${idJpg}'",
                "relativePath": "./Au.jpg"
            }]
        }]
    }'
    response=$(curl -H "Content-Type: application/json" \
        -H "Authorization: ${bearer}" \
        -X POST ${ForgeHost}/modelderivative/v2/designdata/${urn}/references \
        -k -s -d "${job}")
    

    这里得到如下回复,仅表示引用已注册。

    {
      "result": "success"
    }
    

    现在,我这样做是为了翻译 obj 并使用引用

    urn=$(xbase64encode $idObj)
    job='{
        "input": {
          "urn": "'${urn}'",
          "checkReferences": true
        },
        "output": {
          "formats": [
            {
              "type": "svf",
              "views": [
                "2d",
                "3d"
              ]
            }
          ]
        }
    }'
    response=$(curl -H "Content-Type: application/json" \
        -H  "Authorization: ${bearer}" \
        -H "x-ads-force: true" \
        -X POST ${ForgeHost}/modelderivative/v2/designdata/job \
        -k -s -d "${job}")
    

    注意“checkReferences”:true,如文档中的here

    现在,我可以等待翻译完成并在查看器中查看结果。

    供参考上面使用的xbase64safeencode函数

    function xbase64safeencode () { local id64=$(echo -ne $1 | base64  $wrap_arg | tr -d '=' | tr '+/' '-_'); echo $id64; }
    

    【讨论】:

    • 嗨 Cyrille,感谢您抽出宝贵时间。我刚刚整理了一下,基本上就是动作顺序和瓮麻烦了。使用此资源时,我们需要注意的事项很少。我必须检查一下以确保,但我认为端点“引用”没有完全工作,所以如果有人可以看看它会很棒。再次感谢您。
    • @Ayslan,如果您给我一个无法调查该问题的示例,那就太好了。同时,如果上面的答案为您解决了问题,您是否可以接受作为答案,以便人们可以放心使用它。
    猜你喜欢
    • 2021-10-02
    • 2021-10-16
    • 2017-03-15
    • 2022-01-12
    • 2021-03-28
    • 2019-03-23
    • 2021-05-08
    • 2021-01-09
    • 2019-04-10
    相关资源
    最近更新 更多