要使用Autodesk Forge设计自动化/模型衍生API来查看缓存的svf文件,可以按照以下步骤操作:
获取访问令牌:首先,需要获取一个有效的访问令牌,以便调用Forge API。可以使用OAuth 2.0流程或其他身份验证方式来获取令牌。
创建模型衍生作业:使用Design Automation API创建一个模型衍生作业,以便将源文件转换为svf格式。可以使用以下代码示例来创建作业:
import requests
import json
def create_derivative_job(accessToken, bucketKey, objectName, outputName):
url = "https://developer.api.autodesk.com/modelderivative/v2/designdata/job"
headers = {
"Authorization": "Bearer " + accessToken,
"Content-Type": "application/json"
}
payload = {
"input": {
"urn": "urn:adsk.objects:os.object:" + bucketKey + "/" + objectName
},
"output": {
"formats": [
{
"type": "svf",
"views": ["3d"]
}
],
"destination": {
"region": "us"
},
"advanced": {
"generateMasterViews": True
}
}
}
response = requests.post(url, headers=headers, data=json.dumps(payload))
if response.status_code == 201:
job = response.json()
print("Derivative job created successfully with ID: " + job["urn"])
else:
print("Failed to create derivative job. Error: " + response.text)
# 使用示例
accessToken = "YOUR_ACCESS_TOKEN"
bucketKey = "YOUR_BUCKET_KEY"
objectName = "YOUR_SOURCE_FILE"
outputName = "YOUR_OUTPUT_FILE"
create_derivative_job(accessToken, bucketKey, objectName, outputName)
def check_job_status(accessToken, jobId):
url = "https://developer.api.autodesk.com/modelderivative/v2/designdata/" + jobId + "/manifest"
headers = {
"Authorization": "Bearer " + accessToken
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
manifest = response.json()
status = manifest["status"]
if status == "success":
print("Derivative job completed successfully")
elif status == "failed":
print("Derivative job failed")
else:
print("Derivative job is still processing, current status: " + status)
else:
print("Failed to check job status. Error: " + response.text)
# 使用示例
accessToken = "YOUR_ACCESS_TOKEN"
jobId = "YOUR_JOB_ID"
check_job_status(accessToken, jobId)
def get_svf_url(accessToken, jobId):
url = "https://developer.api.autodesk.com/modelderivative/v2/designdata/" + jobId + "/manifest"
headers = {
"Authorization": "Bearer " + accessToken
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
manifest = response.json()
derivatives = manifest["derivatives"]
for derivative in derivatives:
if derivative["outputType"] == "svf":
svfUrl = derivative["children"][0]["urn"]
print("SVF URL: " + svfUrl)
break
else:
print("Failed to get svf URL. Error: " + response.text)
# 使用示例
accessToken = "YOUR_ACCESS_TOKEN"
jobId = "YOUR_JOB_ID"
get_svf_url(accessToken, jobId)
def download_svf_file(accessToken, svfUrl, outputFilePath):
url = "https://developer.api.autodesk.com/modelderivative/v2/designdata/" + svfUrl
headers = {
"Authorization": "Bearer " + accessToken
}
response = requests.get(url, headers=headers, stream=True)
if response.status_code == 200:
with open(outputFilePath, 'wb') as file:
for chunk in response.iter_content(chunk_size=