You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Autodesk Forge API与Streamlit集成可行性及示例咨询

Streamlit 与 Forge APIs 集成方案及示例

完全可以将Streamlit作为前端,对接Forge APIs实现集成。Streamlit的快速交互式界面搭建能力,搭配Forge的CAD数据处理、模型可视化等API能力,能快速构建轻量化的工程类Web应用。

核心集成步骤

  • 注册Forge开发者应用,获取Client ID和Client Secret,并为应用申请对应API权限(如数据管理、模型衍生、模型查看等)
  • 在Streamlit应用中实现Forge的鉴权逻辑,获取临时访问令牌(Access Token)
  • 通过HTTP请求调用Forge APIs完成数据上传、模型格式转换、模型预览等操作,将结果嵌入Streamlit界面展示

示例代码

首先安装所需依赖:

pip install streamlit requests

以下是一个基础的集成示例,实现Forge鉴权、模型转换状态查询,并嵌入Forge Viewer展示模型:

import streamlit as st
import requests
import json

# Forge鉴权函数
def get_forge_token(client_id, client_secret):
    url = "https://developer.api.autodesk.com/authentication/v1/authenticate"
    payload = {
        "client_id": client_id,
        "client_secret": client_secret,
        "grant_type": "client_credentials",
        "scope": "data:read data:write bucket:create bucket:read"
    }
    response = requests.post(url, data=payload)
    if response.status_code == 200:
        return response.json()["access_token"]
    else:
        st.error("Forge鉴权失败,请检查Client ID和Secret")
        return None

# 主应用逻辑
st.title("Streamlit + Forge 集成示例")

# 输入Forge凭证(实际部署建议用环境变量)
client_id = st.text_input("Forge Client ID")
client_secret = st.text_input("Forge Client Secret", type="password")

if client_id and client_secret:
    token = get_forge_token(client_id, client_secret)
    if token:
        st.success("鉴权成功")
        
        # 示例:查询模型转换状态(需提前上传并发起转换任务)
        urn = st.text_input("输入模型URN(Base64编码)")
        if urn:
            status_url = f"https://developer.api.autodesk.com/modelderivative/v2/designdata/{urn}/manifest"
            headers = {"Authorization": f"Bearer {token}"}
            response = requests.get(status_url, headers=headers)
            if response.status_code == 200:
                manifest = response.json()
                st.subheader("模型转换状态")
                st.json(manifest["status"])
                
                # 如果转换完成,嵌入Forge Viewer
                if manifest["status"] == "success":
                    st.subheader("模型预览")
                    viewer_html = f"""
                    <div style="width: 100%; height: 600px;">
                        <script src="https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/viewer3D.min.js"></script>
                        <link rel="stylesheet" href="https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/style.min.css">
                        <div id="forgeViewer"></div>
                        <script>
                            var viewer;
                            var options = {{
                                env: 'AutodeskProduction',
                                accessToken: '{token}'
                            }};
                            Autodesk.Viewing.Initializer(options, function() {{
                                viewer = new Autodesk.Viewing.GuiViewer3D(document.getElementById('forgeViewer'));
                                viewer.start();
                                var documentId = 'urn:{urn}';
                                Autodesk.Viewing.Document.load(documentId, function(doc) {{
                                    var viewables = doc.getRoot().getDefaultGeometry();
                                    viewer.loadDocumentNode(doc, viewables);
                                }}, function(err) {{
                                    console.error(err);
                                }});
                            }});
                        </script>
                    </div>
                    """
                    st.components.v1.html(viewer_html, height=650)

内容的提问来源于stack exchange,提问作者Shafeekh Melangadi
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 22:55:48