AutoDesk 视图和数据 API - 返回所选元素的位置

Posted

技术标签:

【中文标题】AutoDesk 视图和数据 API - 返回所选元素的位置【英文标题】:AutoDesk View and Data API - return position of selected element 【发布时间】:2015-12-25 21:36:19 【问题描述】:

问题:

我一直在使用 AutoDesk 视图和数据 API,我很想知道是否可以返回有关所选元素的几何信息。理想情况下,我想要选定元素的位置、大小、角度、形状类型等,以便我可以比较例如两条线。我不介意这些信息是如何表示的,只要可以比较两个形状即可。

目标:

如果有一条线,这样(伪表示):

(x1=0,y1=0),(x2=10,y2=0),长度为10的二维直线;

和另一行,这样:

(x1=20,y1=20),(x2=30,y2=20),另一条长度为 10 的二维直线。

那么我可以说这两条线是相似的,从这个信息中推断出它们的角度。显然还需要对所选择的实体类型进行一些指示。这是我的问题的预期结果。

我的尝试:

到目前为止,我在 Viewer3d.js 中发现了几个有用的函数,但似乎没有一个函数可以返回有关单个选定形状的几何位置的任何数据:

Viewing.Extension.SomeExtension = function (viewer, options)

    ...

    var shapeRenderData = viewer.impl.getRenderProxy(viewer, dbId);
    var shapeFragmentData = viewer.impl.getFragmentProxy(viewer, dbId);

我已经了解如何包含 onSelect 事件,为了问题的清晰而省略了。

这两个都返回一个 JSON 对象,其属性为 fragId, scale, quaternionposition - 尽管除了 fragId,这些属性都有空值。

额外:

我基于 AutoDesk 团队的这个 GitHub 教程创建的扩展:

https://github.com/Developer-Autodesk/tutorial-getting.started-view.and.data/blob/master/chapter-3.md#Step5

请注意第五步包括我正在讨论的 onSelect 事件的代码,如果您希望重新创建问题来帮助我解决这个问题。

【问题讨论】:

【参考方案1】:

我写了一篇关于几何捕捉和选择命令的博文。我认为它应该为您的问题提供一些答案:

Geometry snapping and selection commands with View & Data API

【讨论】:

致所有遇到此答案的人 - 它不像大多数 SO 那样被灌输,但它是正确设计 VAD 扩展和更好地理解 API 中的几何形状的一堂好课!这次真是万分感谢。此外,在询问后的一段时间内,我发现 Autodesk.Viewing.Document.getSubItemsWithProperties 为进一步挖掘文档几何提供了一些黄金。

以上是关于AutoDesk 视图和数据 API - 返回所选元素的位置的主要内容,如果未能解决你的问题,请参考以下文章

从 Autodesk Foge Viewer 获取数据(视图和数据 Api)

Autodesk Forge 数据管理 API 获取***文件夹请求现在返回 404 Not Found 今天始终如一,但上周工作

Autodesk forge 查看其他 3d 视图和选项

Autodesk forge 模型衍生测试 API

Autodesk Forge 混乱的视图

Revit API 无效对象