# Json 文件格式

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

## 整体数据格式

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

## 图例节点

``` json5
    nodes:[
        {   
            id: '',                             // 图编号
            graphId: '',                        // 图 id
            nodeId: '',                         // node 节点本身 id
            name: '',                           // 名称
            attachObjectIds:[],                 // 返回物理世界对象 id 列表
            graphElementId: '',                 // 对应的图元 id
            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: {},                     // 由应用自己定义
            style: {                            // 绘图样式
                default: {}                     // 默认状态样式
            }
        },
        ...
    ]
```

## 标识对象

``` json5
    markers:[
        {
            id: '',                             // 图编号
            graphId: '',                        // 图 id
            markerId: '',                       // marker 本身 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: {},                     // 由应用自己定义
            style: {                            // 绘图样式
                default: {}                     // 默认状态样式
            },
        },
        ...
    ]
```

## 对象关系

``` json5
    relations: [
        {
            id: '',                             // 图编号
            graphId: '',                        // 图 id
            relationId: '',                     // relation 本身 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），水平垂直
            properties: {},                     // 由应用自己定义
            style: {                            // 绘图样式
                outline: [{x:0,y:0,z:0},...],   // 折线数据
                default: {}                     // 默认状态样式
            }                           
        },
        ...
    ]
```
