# Json 文件格式

::: details 目录
[[toc]]
:::

## 整体数据格式

``` json5
{
    data:[
        {
          
            elements:{                          // 系统图展示所需数据
                nodes:[],                       // 图例节点，所有与工程信息化相关的图例（图标类型与区域）
                markers:[],                     // 与工程信息无关的标识对象（增加文本注释，图上的图片说明）
                relations:[],                   // 管线对象
            },
            id: '',                             // 图ID
            name: '',                           // 名称
            categoryID: '',                     // 图分类ID
            projectID: '',                      // 项目ID
            buildingID: '',                     // 建筑ID
            floorID: '',                        // 楼层id
            note: '',                           // 图说明
            log: {                              // 图操作日志
                  mark:'',                      // 图的存盘标记
                  commandList:[
                   {
                        command: '',            // 命令
                        desc: '',               // 描述
                        detail: ''              // 详情
                    }
                ]
            }
        }
    ],
    message: '',
    result: ''
}
```

## 图例节点

``` json5
    nodes:[
        {   
            id: '',                             // ID
            name: '',                           // 名称
            attachObjectIds:[],                 // 返回工程信息化对象 ID 列表
            graphElementType: '',               // 图例类型 None/Line/Zone/Image:非图例/线条/区域类型/图标
            graphElementId: '',                 // 对应的图元ID
            num: 1                              // 图例数量
            type: '',                           // 节点类型(image / zone)
            pos: {x: 0, y: 0},                  // 位置
            scale: {x: 1, y: 1, Z: 1},          // 缩放
            rotate: {x: 0, y: 0, Z: 0},         // 旋转
            size: {width:0, height: 0},         // 大小
            anchorList:[
                    {
                        id: '',                 // 锚点ID
                        pos: {x: 0, y: 0},      // 锚点的坐标
                    },
                    ...
                ],
            outline: [
                [{x:0,y:0,z:0},...],            // 外轮廓 
                ...                             // 内轮廓
            ],                                  // 轮廓线
            properties: {}                      // 由应用自己定义
        },
        ...
    ]
```

## 标识对象

``` json5
    markers:[
        {
            id: '',                             // ID
            name: '',                           // 名称
            type: '',                           // 图标（Image），线类型(Line)，文本（Text）
            pos: {x: 0, y: 0},                  // 位置
            scale: {x: 1, y: 1, z: 1},          // 缩放
            rotate: {x: 0, y: 0, z: 0},         // 旋转
            size: {width: 0, height: 0},        // 大小
            properties: {}                      // 由应用自己定义
        },
        ...
    ]
```

## 对象关系

``` json5
    relations: [
        {
            id: '',                             // ID
            name: '',                           // 名称
            graphElementId: '',                 // 对应的图元ID
            node1Id: '',                        // 关联节点1_id
            node2Id: '',                        // 关联节点2_id
            anchor1Id: '',                      // 关联锚点1_id
            anchor2Id: '',                      // 关联锚点2_id
            dir: 0,                             // 方向（0:无向，1：节点1到节点2，2：节点2到节点1)
            lineType: '',                       // 直线（Line），水平垂直
            pointList: [{x:0,y:0,z:0},...],     // 线的顶点坐标
            style: {}                           // 线的绘图样式
        },
        ...
    ]
```
