子件转换应用场景

1. 文件结构

业务端原始模型文件是一个zip格式的压缩包。其文件结构如下图:

  • Lights:存放转换后的轻量化模型文件
  • Models:存放待转换的原始模型文件
  • Convert.json:与数据转换有关的参数信息

Convert.json 数据结构如下:

{
    "Light": "Lights",
    "Assembly": "Models\\asm0001.asm",
	"Models": [
		{
			"Name": "Models\\asm0001.asm",
			"Guid": "4C31EE9A8A544FDCA24A58D0411EA760",
			"Path": "4C31EE9A8A544FDCA24A58D0411EA760"
		}
	]
}
字段 必填 描述
Light 存放轻量化文件的文件夹名称。首次转换时,其值为空;非首次转换时,其值默认为“Lights”。如果其值为空,则系统判断为首次转换。
Assembly 顶层装配文件在压缩包里的相对路径。
Models 装配体及其所有子装配和零件文件的相对路径及其Guid。Lights和输出文件夹里的轻量化文件以Guid命名
Guid 不一定非得是GUID,只要保证独一无二即可。
Path 轻量化文件的相对路径或轻量化文件的HTTP路径。如果为空,则默认同级目录Guid文件夹下路径。

2. 首次转换

应用场景:装配体或零件首次独立转换时。

数据组织:Models 文件夹中存放原始模型文件,如下图。Lights 文件夹为空。

Convert.json 数据结构如下:

{
	"Assembly": "Models\\asm0001.asm",
	"Light": "",
	"Models": [
		{
			"Name": "Models\\asm0001.asm",
			"Guid": "4C31EE9A8A544FDCA24A58D0411EA760"
		},
		{
			"Name": "Models\\prt0001.prt",
			"Guid": "21ED1C58D5324C0C9BA4D43958336F35"
		},
		{
			"Name": "Models\\asm0002.asm",
			"Guid": "9FA1B25211B3412298A4C1692A248808"
		},
		{
			"Name": "Models\\prt0002.prt",
			"Guid": "2BB4CC323CC84E0B969A25A103C1083A"
		}
	]
}

3. 新增修改转换

3.1 新增未转换过的模型

应用场景:顶层装配asm0001.asm 下面新增子装配asm0002.asm.2 和 零件prt0003.prt.2 。新增的子装配和零件均没有被转换过,不存在轻量化数据。需要转换新增的子装配和零件,并更新顶层装配的轻量化文件。

数据组织:Models 文件夹中存放新增的模型文件,及更新后的顶层装配文件。 Lights 文件夹中存放顶层装配体的轻量化文件 4C31EE9A8A544FDCA24A58D0411EA760 。



Convert.json 数据如下:

{
    "Light": "Lights",
	"Assembly": "Models\\asm0001.asm",
	"Models": [
		{
			"Name": "Models\\asm0001.asm",
			"Guid": "4C31EE9A8A544FDCA24A58D0411EA760"
		},
		{
			"Name": "Models\\asm0002.asm.2",
			"Guid": "9FA1B25211B3412298A4C1692A248808"
		},
		{
			"Name": "Models\\prt0003.prt.2",
			"Guid": "4C31EE9A8A544FDCA24A58D0411EA772"
		}
	]
}

3.2 新增已转换过的模型

应用场景:顶层装配asm0001.asm 下面新增子装配asm0002.asm.2 。新增的子装配已转换过,轻量化文件夹guid为9FA1B25211B3412298A4C1692A248808。数据转换时,不需要重新转换新增的子装配,只需要更新顶层装配的轻量化文件。

数据组织: Models 文件夹中存放新增子装配的原始模型文件,及更新后的顶层装配文件。 Lights 文件夹中存放顶层装配的轻量化文件 4C31EE9A8A544FDCA24A58D0411EA760 和 新增子装配的轻量化文件 9FA1B25211B3412298A4C1692A248808 。



Convert.json 数据如下:

{
    "Light": "Lights",
	"Assembly": "Models\\asm0001.asm",
	"Models": [
		{
			"Name": "Models\\asm0001.asm",
			"Guid": "4C31EE9A8A544FDCA24A58D0411EA760"
		},
		{
			"Name": "Models\\asm0002.asm.2",
			"Guid": "9FA1B25211B3412298A4C1692A248808"
		}
	]
}

3.3 模型更新-其父装配未更新

应用场景:子装配体asm0002.asm.2 下面的零件 prt0003.prt.2 有更新, 而子装配asm0002.asm.2 没有更新。数据转换时,只转换有更新的零件。

数据组织:Models 文件夹中存放更新后的原始模型文件,Lights 文件夹存为空。



Convert.json 数据如下:

{
	"Assembly": "Models\\prt0003.prt.2",
	"Light": "",
	"Models": [
		{
			"Name": "Models\\prt0003.prt.2",
			"Guid": "4C31EE9A8A544FDCA24A58D0411EA772"
		}
	]
}

3.4 模型更新-其父装配有更新

应用场景:子装配 asm0002.asm.2 下面的零件 prt0003.prt.2 有更新, 子装配asm0002.asm.2 也有更新。数据转换时,更新子装配和零件。

数据组织:Models 文件夹存放更新后的原始模型文件,Lights 文件夹存放子装配的轻量化文件 9FA1B25211B3412298A4C1692A248808 。



Convert.json 数据如下:

{
   "Light": "Lights",
	"Assembly": "Models\\asm0002.asm.2",
	"Models": [
      {
		"Name": "Models\\asm0002.asm.2",
		"Guid": "9FA1B25211B3412298A4C1692A248808"
      },
      {
        "Name": "Models\\prt0003.prt.2",
        "Guid": "4C31EE9A8A544FDCA24A58D0411EA772"
      }
	]
}

3.5 零件删除

应用场景:子装配体asm0002.asm.2 下面的零件 prt0003.prt.2 被删除。数据转换时,只需要更新对应子装配体的轻量化文件。

数据组织:Models 文件夹存放子装配的原始模型文件,Lights 文件夹存放子装配的轻量化文件。



Convert.json 数据如下:

{
   "Light": "Lights",
	"Assembly": "Models\\asm0002.asm.2",
	"Models": [
		{
			"Name": "Models\\asm0002.asm.2",
			"Guid": "9FA1B25211B3412298A4C1692A248808"
		}
	]
}