【问题标题】:Translating engine gives same guids & viewableIDs to diferrent files of complex model翻译引擎为复杂模型的不同文件提供相同的 guid 和 viewableID
【发布时间】:2017-01-21 14:28:04
【问题描述】:

最近我正在尝试实现可以​​将 3D 查看器中的视图与原始 revit 模型上的视图链接的场景。

  1. 我压缩了链接文件并上传了它们
  2. 多次上传相同的 zip 文件并更改 rootFileName 以提供模型的所有方面并翻译所有内容
  3. 下载他们的 manifest.jsons
  4. 使用原始 Revit 视图的 viewableID 和 uniqueID 将 Revit 端的视图与查看器中的视图链接

在这里,我将提供清单输出的真实缩短示例

例如文件 1.

{
	"guid" : "578dd62c-d5dc-8da0-1c75-aa6b0be8ba76",
	"name" : "3D pohled",
	"success" : "100%",
	"hasThumbnail" : "true",
	"status" : "success",
	"type" : "folder",
	"progress" : "complete",
	"children" : [{
			"guid" : "07e30540-b182-cd58-1c1f-eb46bc58fb9c",
			"name" : "{3D}",
			"success" : "100%",
			"size" : 771479.0,
			"hasThumbnail" : "true",
			"role" : "3d",
			"viewableID" : "8af1141e-a7ca-22b4-d104-d7331a1c0454",
			"status" : "success",
			"type" : "geometry",
			"progress" : "complete",
			"children" : [{
					"guid" : "429ba882-f0a0-40fa-96e6-c6e02d9fc601-00022cda",
					"name" : "{3D}",
					"role" : "3d",
					"camera" : [22586.240234, 40687.59375, 32810.621094, 54.133858, -29.527559, 16437.923828, -0.160696, -0.29039, 0.943319, 0.547078, 0, 1, 1],
					"status" : "success",
					"type" : "view",
					"progress" : "complete"
				}, {
					"guid" : "9a3b544b-3c15-9304-f6f8-2c4db7a7dcb3",
					"type" : "resource",
					"role" : "graphics",
					"urn" : "urn:adsk.viewing:fs.file:dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6dGVzdGJfMTIzZWUvRkhfRmFzJUMzJUExZGFfdi4wMS56aXA/output/Resource/3D_pohled/_3D_/_3D_.svf",
					"mime" : "application/autodesk-svf",
					"size" : 680482.0
				}
			]
		}
	]
}

例如。文件 2

{
	"guid" : "578dd62c-d5dc-8da0-1c75-aa6b0be8ba76",
	"name" : "3D pohled",
	"success" : "100%",
	"hasThumbnail" : "true",
	"status" : "success",
	"type" : "folder",
	"progress" : "complete",
	"children" : [{
			"guid" : "07e30540-b182-cd58-1c1f-eb46bc58fb9c",
			"name" : "{3D}",
			"success" : "100%",
			"size" : 7648740.0,
			"hasThumbnail" : "true",
			"role" : "3d",
			"viewableID" : "8af1141e-a7ca-22b4-d104-d7331a1c0454",
			"status" : "success",
			"type" : "geometry",
			"progress" : "complete",
			"children" : [{
					"guid" : "429ba882-f0a0-40fa-96e6-c6e02d9fc601-00022cda",
					"name" : "{3D}",
					"role" : "3d",
					"camera" : [40927.800781, 19529.832031, 36075.765625, 54.958988, -27.723097, 16418.119141, -0.359014, -0.171787, 0.917387, 0.320998, 0, 1, 1],
					"status" : "success",
					"type" : "view",
					"progress" : "complete"
				}, {
					"guid" : "9a3b544b-3c15-9304-f6f8-2c4db7a7dcb3",
					"type" : "resource",
					"role" : "graphics",
					"urn" : "urn:adsk.viewing:fs.file:dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6dGVzdGJfMTIzZWUvRkhfVFpCX1ZaVC56aXA/output/Resource/3D_pohled/_3D_/_3D_.svf",
					"mime" : "application/autodesk-svf",
					"size" : 7552662.0
				}
			]
		}
	]
}

正如您每次看到文件的 URN 不同时,viewableID 和 guid 仍然相同。这不应该发生,并且在处理信息时代表了一个真正的问题。在 manifest.json 中也缺少 关于原始 revit guid(uniqueid) 的信息,它是从哪个视图生成的,这是唯一识别 revit 端视图所必需的。

我认为这是一个错误,需要解决,并且将 revit 视图 guid 添加到输出清单中会有很大帮助。因为 name 属性不够唯一,所以其他的 guid 没有实际用处。

任何帮助将不胜感激

【问题讨论】:

  • 原始revit文件中的uniqueid应该在对象树中,尝试获取对象树,看看是否可以找到它。
  • 您是指使用查看器的经典属性吗?因为此时还没有查看器(自动化过程)。还是你的意思是别的?
  • 我正在检查有关这方面的更多信息...会尽快回复您。

标签: autodesk-forge autodesk-model-derivative


【解决方案1】:

无论文件名如何,如果它们是从同一个文件翻译而来的(即 Revit 在其视图中使用的唯一 ID),它们的 ID 将是相同的。因此,如果您有一个带有视图的 .rvt,请使用不同的名称复制此文件,同时翻译它们,它们在该视图上将具有相同的 id。

2016 年 10 月 17 日编辑

我们在 2016 年 9 月 26 日更新了翻译引擎,气泡中的 viewableID 与 Revit 视图的 UniqueId 相同,适用于 3d 和 2d。这样您就可以使用 viewableId 来实现您的功能特性。

【讨论】:

  • 是的,这正是我在这里写的内容,这代表了一个问题。指导的目的是它们是全球唯一的。所以至少,我如何在遍历 manifest.json 时识别 revit 中的唯一视图? 所以我可以实现前向和后向同步(revit -> 查看器,查看器 -> revit)?
  • @JadaVonRuth,您能给我发一封电子邮件,其中包含您的场景的完整描述吗?这样我就可以将其上报给开发团队。请使用我的 first[dot]lastName@autodesk.com
  • 我已将用例的详细描述通过电子邮件发送给您
  • @JadaVonRuth,我已经更新了上面的回复,请看一下。
  • 非常感谢,相信会得到更多人的赞赏。
【解决方案2】:

众所周知,Revit 元素的“唯一”ID 实际上并不是真正的 GUID。文件的两个副本对于这些文件中的元素将具有完全相同的“唯一”ID(它们不会在另存为操作中重新生成)。 Revit 中唯一 ID 的目的是提供一种机制来促进工作共享,其中元素 ID 不是“稳定的”,并且可能在重新加载最新事件期间发生变化,其中来自中心的元素 ID 与本地元素 ID 冲突。 以下是 The Building Coder 关于此主题的一些信息: http://thebuildingcoder.typepad.com/blog/2014/04/element-id-export-unique-navisworks-and-other-ids.html#3

就您的具体问题而言:“我如何在遍历 manifest.json 时唯一地识别 revit 中的视图?”我建议您(如果有能力)将 Revit 文件名添加为您已上传和翻译的导出视图名称的一部分。将其从 URN 中提取出来以确定您实际拥有的视图。

如果这不起作用,也许您可​​以帮助我们更好地理解此声明: 多次上传相同的 zip 文件并更改 rootFileName 以提供模型的所有方面并翻译所有内容

这是为了达到什么目的?同一视图数据的查看器端的不同实现?如果是这样,也许您可​​以告诉我们更多关于您最终想要达到的目标,我们可以提供一些更具体的建议。

【讨论】:

  • 一件事是指出我认为不正确的行为(指导是相同的),但最后的关键步骤是将 revit 视图与 svf 视图链接。遍历 manifest.json 时,我已经知道确切的 revit 文件文件,但不知道我当前正在迭代哪个翻译视图以及 revit 中属于哪个视图缩略图,这就是原因。 “另存为”行为不是这里的问题(1个文件范围匹配 - 我知道属于哪个文件清单)。将精确的 svf 与另一侧的 revit 视图相匹配是不可能的。
猜你喜欢
  • 2013-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-21
  • 2022-08-18
  • 2014-02-11
  • 2014-03-17
  • 2012-05-01
相关资源
最近更新 更多