图纸索引
图纸索引是一个文件夹,您保存的每个图纸在其中都有一个 JSON 文件,说明该图纸的情况:它在哪里、它的单位和保存时间、它是什么(其分类)及其备注、它带标签的变量及其值、它的尺寸、按图层统计和测量的图元,以及保存扩展返回的内容。有了它,无需打开图纸,就可以搜索、列出您的图纸,或将其载入数据库。
在首选项中开启(为已保存的图纸保留索引)并选择文件夹:共享文件夹也可以,这样一个团队可以共用一个索引。除非您开启,否则它处于关闭状态。
何时写入
每次保存图纸时(文件 › 保存、另存为…),在文件写入且保存扩展运行之后,会在后台(不占用窗口)生成图纸的描述并将其条目写入索引文件夹,因此不会拖慢保存。再次保存会替换其条目。条目无法写入时(例如文件夹已不存在),会在交互窗口中说明;图纸照常保存。
每个图纸的文件以图纸命名,后接一个根据其完整路径计算出的 id:Shipper-3f2a9c0d1e4b5a67.json。同一个图纸总是得到同一个文件;不同文件夹中同名的两个图纸得到不同的文件。图纸被移动或重命名后会得到一个新条目;旧条目会一直保留,直到您删除它。
文件内容
一个 JSON 对象,每个图纸的字段都相同(没有内容的字段为 null,或空列表、空对象),因此这些文件可以载入同一个表:
| 字段 | 类型 | 含义 |
|---|---|---|
schema |
数字 | 这是哪一套字段:1。如果字段发生了读取方会察觉到的变化,该值会增加。 |
id |
文字 | 图纸的 id:根据其完整路径计算出的 16 位十六进制数字(即文件名的末尾部分)。同一路径每次都相同:可用作数据库的键。 |
path |
文字 | 图纸文件的完整路径。 |
folder |
文字 | 它所在的文件夹。 |
fileName |
文字 | 带扩展名的文件名:"Shipper.piq"。 |
name |
文字 | 不带扩展名的文件名:"Shipper"。 |
fileSize |
数字 | 文件大小(字节)。 |
saved |
文字 | 保存时间(UTC):"2026-11-03T14:05:00Z"。 |
user |
文字 | 保存者(计算机的用户名)。 |
machine |
文字 | 保存它的计算机。 |
product |
文字 | 保存它的应用:"ParametrIQ CAD"。 |
productVersion |
文字 | 应用的版本。 |
format |
数字 | 保存时所用的图纸文件格式版本。 |
units |
文字 | "mm" 或 "in":下面所有尺寸和长度的单位。 |
classification |
对象 | 它是什么,由图纸属性设置:category、style、product、tags(列表)、description 及其他任何字段,均为文字(未提供时为 "")。 |
notes |
对象 | 图纸的备注,按名称排列:{"Customer": "Acme"}。 |
variables |
列表 | 它带标签的变量(运行时会询问的变量),按顺序排列,每个为 {name, label, value}:value 为数字、文字、真或假、位置 {x, y},无法计算时为 null。 |
size |
对象 | 图纸的范围:width、height 及其角点 minX、minY、maxX、maxY;未绘制任何内容时为 null。 |
pages |
列表 | 它的页面,每个为 {name, elements}(其上有多少个图元)。 |
elements |
数字 | 当前处理的页面上有多少个图元(即导出的图元)。 |
length |
数字 | 这些图元的总长度。 |
layers |
列表 | 有图元的图层,每个为 {layer, name, cutting, count, length, area}:图层编号和名称、是否为切割类图层(切割线、半切线、打孔线 …)、图元数量、总长度,以及闭合图元围成的面积。 |
kinds |
对象 | 每种图元的数量:{"LINE": 4, "ARC": 2}。 |
saveExtensions |
列表 | 保存时每个保存扩展做了什么,每个为 {name, file, record, error}:其名称、其文件、它返回的内容(JSON 格式,或 null),以及出错原因(未出错时为 null)。 |
例如:
{
"schema": 1,
"id": "3f2a9c0d1e4b5a67",
"path": "D:\\Drawings\\Shipper.piq",
"folder": "D:\\Drawings",
"fileName": "Shipper.piq",
"name": "Shipper",
"fileSize": 4210,
"saved": "2026-11-03T14:05:00Z",
"user": "ana",
"machine": "STUDIO-2",
"product": "ParametrIQ CAD",
"productVersion": "3.2",
"format": 1,
"units": "mm",
"classification": { "category": "Box", "style": "FEFCO 0201", "product": "", "tags": ["shipper"], "description": "" },
"notes": { "Customer": "Acme" },
"variables": [
{ "name": "L", "label": "Length", "value": 300 },
{ "name": "W", "label": "Width", "value": 200 }
],
"size": { "width": 1030, "height": 560, "minX": 0, "minY": 0, "maxX": 1030, "maxY": 560 },
"pages": [ { "name": "Page 1", "elements": 38 } ],
"elements": 38,
"length": 9120.5,
"layers": [
{ "layer": 0, "name": "Cut", "cutting": true, "count": 22, "length": 6410.2, "area": 0 },
{ "layer": 1, "name": "Crease", "cutting": false, "count": 16, "length": 2710.3, "area": 0 }
],
"kinds": { "LINE": 36, "ARC": 2 },
"saveExtensions": [
{ "name": "Order", "file": "orders.js", "record": { "order": 4711 }, "error": null }
]
}
载入数据库
每个文件是一行:id 是其键,其他简单字段(path、name、saved、units、format、fileSize …)是列。列表(variables、layers、pages、saveExtensions)适合放在各自的表中,以图纸的 id 加上变量的 name、图层的 layer 等作为键。大多数数据库可以直接读取 JSON 文件;用一个脚本定期载入该文件夹中最新的文件,即可使数据库保持最新。
如果要在每次保存图纸时自己写入数据库,请使用保存扩展:它返回的内容也会保存在这里的 saveExtensions 中。