Autodesk forge 如何在Forge中正确翻译和显示.sldasm文件?

Autodesk forge 如何在Forge中正确翻译和显示.sldasm文件?,autodesk-forge,autodesk-viewer,autodesk-model-derivative,Autodesk Forge,Autodesk Viewer,Autodesk Model Derivative,使用下面的代码,我们可以翻译和显示.dwg、.sldprt、.3ds、.pdf。上载和翻译.sldasm文件似乎成功了,但当尝试在查看器中加载它时,我们会收到以下消息:“模型为空,没有要显示的几何体”。这似乎发生在所有.sldasm文件中。是否有人有任何指示,或能发现任何错误 翻译: private async Task<TranslateResponse> StartTranslateFileJob(string bucketUrn) { var json

使用下面的代码,我们可以翻译和显示.dwg、.sldprt、.3ds、.pdf。上载和翻译.sldasm文件似乎成功了,但当尝试在查看器中加载它时,我们会收到以下消息:“模型为空,没有要显示的几何体”。这似乎发生在所有.sldasm文件中。是否有人有任何指示,或能发现任何错误

翻译:

 private async Task<TranslateResponse> StartTranslateFileJob(string bucketUrn)
    {
        var json = JsonConvert.SerializeObject(new
        {
            input = new
            {
                urn = ToUrlSafeBase64(bucketUrn)
            },
            output = new
            {
                formats = new List<Dictionary<string, dynamic>>()
                {
                    new Dictionary<string, dynamic>() { { "type", "svf" }, {"views", new List<string>() { "2d", "3d"} } }
                }
            }
        });
        Header header = new Header()
        {
            ContentType = "application/json",
            Body = json.ToString(),
            Authorization = new AuthenticationHeaderValue("Bearer", await GetAccessToken())
        };
        string response = await request.Request(HttpMethod.Post, "/modelderivative/v2/designdata/job", header);
        return JsonConvert.DeserializeObject<TranslateResponse>(response);
    }
专用异步任务StartTranslateFileJob(字符串bucketUrn)
{
var json=JsonConvert.SerializeObject(新
{
输入=新
{
urn=ToUrlSafeBase64(bucketUrn)
},
输出=新
{
格式=新列表()
{
新字典(){{“类型”,“svf”},{“视图”,新列表(){“2d”,“3d”}
}
}
});
页眉=新页眉()
{
ContentType=“application/json”,
Body=json.ToString(),
授权=新的AuthenticationHeaderValue(“承载者”,等待GetAccessToken())
};
字符串响应=等待请求。请求(HttpMethod.Post,“/modeldividential/v2/designdata/job”,标题);
返回JsonConvert.DeserializeObject(响应);
}
显示:

    private async load(urn: string) {
    let options = {
        env: 'AutodeskProduction',
        accessToken: this.access_token
    };

    let viewerDocument = await new Promise<Autodesk.Viewing.Document>((resolve, reject) =>
        Autodesk.Viewing.Initializer(options, () => {
            Autodesk.Viewing.Document.load(urn, (viewerDocument) => resolve(viewerDocument), (e) => reject(new Error("Blueprint load error: " + e)));
        })
    );

    let documentNode = viewerDocument.getRoot().search({ 'type': 'geometry' })[0];
    this.viewer.loadDocumentNode(viewerDocument, documentNode);
}
专用异步加载(urn:string){
让选项={
环境:“AutodeskProduction”,
accessToken:this.access\u令牌
};
让viewerDocument=等待新承诺((解决、拒绝)=>
Autodesk.Viewing.Initializer(选项,()=>{
Autodesk.Viewing.Document.load(urn,(viewerDocument)=>解析(viewerDocument),(e)=>拒绝(新错误(“蓝图加载错误:+e));
})
);
让documentNode=viewerDocument.getRoot().search({'type':'geometry'})[0];
this.viewer.loadDocumentNode(viewerDocument,documentNode);
}
类似于*.sldasm(SolidWorks部件)或*.iam(Inventor部件)的文件通常引用其他文件(*.sldprt或*.ipt),Forge无法自动识别这些引用。您可以执行以下操作之一:

  • 将*.sdlasm及其所有引用部分上传到ZIP存档中,并在触发翻译作业()时使用
    compressedUrn
    rootFilename
    属性
  • 使用端点建立引用

  • 如果有人有相同的问题,以下是答案:

    我已经和开发团队讨论过你的问题。看来 SLDASM文件格式支持“临时/烘焙可视化” 主文件中包含的“基本体”,即使 缺少引用的SLDPRT文件。不幸的是,锻造厂 翻译需要最新的引用文件,并且当前 不支持直接存储的临时可视化数据 在SLDASM文件中。要在中翻译和查看此文件 在Forge中,您可以采取以下方法之一:

  • (首选)如我在Stack Overflow post中所述,在ZIP文件中提供您的SLDASM文件及其所有引用文件
  • 使用SolidWorks中的“打包”功能将所有引用捆绑到单个SLDASM文件中
  • (这可能会有所帮助,但我们无法确认)在SolidWorks中加载程序集并请求强制完全重建(Ctrl+Q),然后 像往常一样在Forge中处理单个SLDASM文件

  • 这似乎不是由外部引用引起的,因为它在eDrawings中本地显示良好,即使我只有.sldasm文件。eDrawings是联机查看器还是桌面查看器?如果是桌面应用程序,它可以通过访问磁盘上的其他文件自动解析引用。它是桌面查看器,但我尝试从另一台计算机复制一个新的sldasm(仅此一个),然后关闭vpn,允许我在本地打开该计算机之前访问该计算机,因此任何引用都应中断,但它仍然有效。翻译响应也不会抱怨引用,当字体等丢失时,有时会抱怨DWG。在这种情况下,您介意在forge(dot)help(at)autodesk(dot)com上与我们共享sldasm文件,以便我们将其传递给负责SolidWorks翻译的开发团队吗?我们不会与公司以外的任何人共享该文件。