0

最近,我试图实现可以将 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 没有实际用处。

任何帮助将不胜感激

4

2 回答 2

0

众所周知,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 中提取出来以确定您实际拥有的视图。

如果这不起作用,也许您可​​以帮助我们更好地理解这句话:Upload more times same zip file with changed rootFileName to provide all aspect of a model and translate all

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

于 2016-10-06T18:18:39.177 回答
0

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

编辑 2016 年 10 月 17 日

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

于 2016-09-29T19:11:17.890 回答