将链接的 Revit 模型上传到 Autodesk Forge
Uploading linked Revit models to Autodesk Forge
我一直在尝试使用 Post 引用 (https://developer.autodesk.com/en/docs/model-derivative/v2/reference/http/urn-references-POST/) 在 forge 中设置两个文件之间的引用,但是当我收到消息 "success" 作为结果时我在 forge viewer 上试了一下,即使我翻译了模型,我仍然可以单独看到文件。有人遇到过同样的问题吗?
如果没有看到您的代码,很难判断发生了什么。下面我复制了我的 bash 脚本代码,其中 references/translate 一个带有 material 和纹理的对象。
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":正确,如文档所述 here。
现在,我可以等待翻译完成并在查看器中查看结果。
参考上面用到的xbase64safeencode函数
function xbase64safeencode () { local id64=$(echo -ne | base64 $wrap_arg | tr -d '=' | tr '+/' '-_'); echo $id64; }
@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"
}'
关键是即使我在服务器上没有指定的文件,我也获得了成功,所以我建议很少进行服务器端验证,例如,当一个模型被翻译一次时我们不能设置为参考权所以它至少应该 return 一个错误。谢谢,希望对您有所帮助。
我一直在尝试使用 Post 引用 (https://developer.autodesk.com/en/docs/model-derivative/v2/reference/http/urn-references-POST/) 在 forge 中设置两个文件之间的引用,但是当我收到消息 "success" 作为结果时我在 forge viewer 上试了一下,即使我翻译了模型,我仍然可以单独看到文件。有人遇到过同样的问题吗?
如果没有看到您的代码,很难判断发生了什么。下面我复制了我的 bash 脚本代码,其中 references/translate 一个带有 material 和纹理的对象。
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":正确,如文档所述 here。
现在,我可以等待翻译完成并在查看器中查看结果。
参考上面用到的xbase64safeencode函数
function xbase64safeencode () { local id64=$(echo -ne | base64 $wrap_arg | tr -d '=' | tr '+/' '-_'); echo $id64; }
@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"
}'
关键是即使我在服务器上没有指定的文件,我也获得了成功,所以我建议很少进行服务器端验证,例如,当一个模型被翻译一次时我们不能设置为参考权所以它至少应该 return 一个错误。谢谢,希望对您有所帮助。