Forge Viewer 中设计自动化上生成的 Forge 可视项的方向与 Inventor 中的方向不匹配
Posted
技术标签:
【中文标题】Forge Viewer 中设计自动化上生成的 Forge 可视项的方向与 Inventor 中的方向不匹配【英文标题】:Orientation of Forge viewable generated on Design Automation in Forge Viewer not matching orientation in Inventor 【发布时间】:2020-12-16 16:27:06 【问题描述】:我正在使用设计自动化 API 从模型中导出 SVF。对于某些模型,可视项的查看器中的方向与 Inventor 中的方向不匹配。
如何更正此问题,以使所有模型的查看器方向与输入的 Inventor 模型匹配? 以下代码是导出 SVF 的位置。有关此功能的博客文章会有所帮助。
private string SaveForgeViewable(Inventor.Document doc)
string viewableOutputDir = null;
using(new HeartBeat())
//LogTrace($"** Saving SVF");
try
TranslatorAddIn oAddin = null;
foreach(ApplicationAddIn item in inventorApplication.ApplicationAddIns)
if (item.ClassIdString == "C200B99B-B7DD-4114-A5E9-6557AB5ED8EC")
//Trace.TraceInformation("SVF Translator addin is available");
oAddin = (TranslatorAddIn) item;
break;
else
if (oAddin != null)
//Trace.TraceInformation("SVF Translator addin is available");
TranslationContext oContext = inventorApplication.TransientObjects.CreateTranslationContext();
// Setting context type
oContext.Type = IOMechanismEnum.kFileBrowseIOMechanism;
NameValueMap oOptions = inventorApplication.TransientObjects.CreateNameValueMap();
// Create data medium;
DataMedium oData = inventorApplication.TransientObjects.CreateDataMedium();
Trace.TraceInformation("SVF save");
var workingDir = Path.GetDirectoryName(doc.FullFileName);
var sessionDir = Path.Combine(workingDir, "SvfOutput");
// Make sure we delete any old contents that may be in the output directory first,
// this is for local debugging. In DA4I the working directory is always clean
if (Directory.Exists(sessionDir))
Directory.Delete(sessionDir, true);
oData.FileName = Path.Combine(sessionDir, "result.collaboration");
var outputDir = Path.Combine(sessionDir, "output");
var bubbleFileOriginal = Path.Combine(outputDir, "bubble.json");
var bubbleFileNew = Path.Combine(sessionDir, "bubble.json");
// Setup SVF options
if (oAddin.get_HasSaveCopyAsOptions(doc, oContext, oOptions))
oOptions.set_Value("GeometryType", 1);
oOptions.set_Value("EnableExpressTranslation", true);
oOptions.set_Value("SVFFileOutputDir", sessionDir);
oOptions.set_Value("ExportFileProperties", false);
oOptions.set_Value("ObfuscateLabels", true);
oAddin.SaveCopyAs(doc, oContext, oOptions, oData);
LogTrace($ "** Saved SVF as oData.FileName");
File.Move(bubbleFileOriginal, bubbleFileNew);
viewableOutputDir = sessionDir;
catch(Exception e)
LogError($ "********Export to format SVF failed: e.Message");
return null;
return viewableOutputDir;
【问题讨论】:
我实际上无法将可视对象设置为正确的方向并更改主屏幕 - 视图立方体似乎有些问题。我点击一个角落,它会翻转成我想要的方向的旋转视图。 【参考方案1】:我们也遇到过这个问题,这是我们的 SVF 输出设置,它尊重您的设计基础:
oOptions.set_Value("EnableExpressTranslation", false);
oOptions.set_Value("ExportFileProperties", true);
oOptions.set_Value("ObfuscateLabels", false);
有关完整代码,您可以查看我们的新示例应用存储库https://github.com/Developer-Autodesk/forge-configurator-inventor/blob/master/AppBundles/CreateSVFPlugin/CreateSvfAutomation.cs#L96
【讨论】:
以上是关于Forge Viewer 中设计自动化上生成的 Forge 可视项的方向与 Inventor 中的方向不匹配的主要内容,如果未能解决你的问题,请参考以下文章
如何在对象上调整大小 - Autodesk Forge Viewer
forge Viewer - 如何以编程方式选择 dbId,因为它会自动取消选择其他选择
如何在 Forge Viewer v7 中折叠 PropertyPanel 中的类别?