Browse Source

Merge branch 'master' of http://39.106.8.246:3003/doc/persagy-web-doc

YaolongHan 4 years ago
parent
commit
2f4d671436
38 changed files with 3887 additions and 2 deletions
  1. BIN
      .DS_Store
  2. BIN
      docs/.DS_Store
  3. 17 2
      docs/.vuepress/config.js
  4. BIN
      docs/code3dServer/.DS_Store
  5. 1481 0
      docs/code3dServer/CodeDocument/Document.md
  6. BIN
      docs/code3dServer/CodeDocument/JiChuHelp/.DS_Store
  7. 18 0
      docs/code3dServer/CodeDocument/JiChuHelp/ChangJianWenTi/常见问题.md
  8. 398 0
      docs/code3dServer/CodeDocument/JiChuHelp/ConfigFile/完整示例.md
  9. 127 0
      docs/code3dServer/CodeDocument/JiChuHelp/ConfigFile/配置介绍.md
  10. 47 0
      docs/code3dServer/CodeDocument/JiChuHelp/Debugger/开发辅助功能.md
  11. 8 0
      docs/code3dServer/CodeDocument/JiChuHelp/QingLiangHuaFuWu/业务定位.md
  12. 11 0
      docs/code3dServer/CodeDocument/JiChuHelp/QingLiangHuaFuWu/文件信息.md
  13. 18 0
      docs/code3dServer/CodeDocument/JiChuHelp/QingLiangHuaFuWu/服务简介.md
  14. 112 0
      docs/code3dServer/CodeDocument/JiChuHelp/ToolClass/PEMessage.md
  15. 23 0
      docs/code3dServer/CodeDocument/JiChuHelp/ToolClass/VueViewController.md
  16. 77 0
      docs/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/3D加载数据查询.md
  17. 62 0
      docs/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/3D异常信息反馈.md
  18. 52 0
      docs/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/README.md
  19. 286 0
      docs/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/Tooltip面板.md
  20. 40 0
      docs/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/修改模型样式.md
  21. 115 0
      docs/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/切换场景.md
  22. 206 0
      docs/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/加载卸载模型.md
  23. 104 0
      docs/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/场景裁切.md
  24. 43 0
      docs/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/客户端新建模型.md
  25. 43 0
      docs/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/控制3D场景.md
  26. 58 0
      docs/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/显示隐藏模型.md
  27. 95 0
      docs/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/相机定位.md
  28. 73 0
      docs/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/设置模型后期处理.md
  29. 35 0
      docs/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/鼠标行为控制.md
  30. 30 0
      docs/code3dServer/CodeDocument/JiChuHelp/基础概念.md
  31. 172 0
      docs/code3dServer/CodeDocument/JiChuHelp/快速搭建.md
  32. 49 0
      docs/code3dServer/CodeDocument/JiChuHelp/框架概述.md
  33. BIN
      docs/code3dServer/Images/3DSceneDemo.png
  34. BIN
      docs/code3dServer/Images/FuWuQiMuLu.png
  35. BIN
      docs/code3dServer/Images/KongZhiLiuCheng.png
  36. BIN
      docs/code3dServer/Images/MoXingQingLiangHua.png
  37. BIN
      docs/code3dServer/Images/Persagy_Web3d_GongZuoLiuCheng.png
  38. 87 0
      docs/code3dServer/index.js

BIN
.DS_Store


BIN
docs/.DS_Store


+ 17 - 2
docs/.vuepress/config.js

@@ -2,6 +2,7 @@ const setupContent = require("../setup/index");
 const graphContent = require("../guides/index");
 // const notionContent = require('../notion/index');
 const standardContent = require('../standard/index');
+const code3dServer = require('../code3dServer/index');
 module.exports = {
     title: "博锐尚格 Web 组件开发文档",
     description: "博锐尚格 Web 组件开发文档",
@@ -103,7 +104,20 @@ module.exports = {
                     },
                 ]
             },
-
+            {
+                text:'可编程模型服务',
+                items:[
+                    {
+                        text:'Web3D',
+                        items:[
+                            {
+                                text:'开发文档',
+                                link: "/code3dServer/CodeDocument/JiChuHelp/QingLiangHuaFuWu/服务简介.md"
+                            }
+                        ]
+                    }
+                ]
+            },
             {
                 text: "开发规范",
                 items: [
@@ -165,7 +179,8 @@ module.exports = {
             "/setup/": setupContent,
             "/guides/": graphContent,
             // "/notion": notionContent,
-            "/standard": standardContent
+            "/standard": standardContent,
+            "/code3dServer": code3dServer,
         }
     },
     module: {

BIN
docs/code3dServer/.DS_Store


File diff suppressed because it is too large
+ 1481 - 0
docs/code3dServer/CodeDocument/Document.md


BIN
docs/code3dServer/CodeDocument/JiChuHelp/.DS_Store


+ 18 - 0
docs/code3dServer/CodeDocument/JiChuHelp/ChangJianWenTi/常见问题.md

@@ -0,0 +1,18 @@
+# 常见问题
+
+::: details 目录
+[[toc]]
+:::
+
+## 移动端自定义View面板点击相应事件问题
+
+自定义vue组件作为3D场景中显示的说明面板,记得再BIMView组件中注册组件
+如果dom元素中需要响应点击事件需要同时响应click以及touchstart,同时需要在响应函数中阻止冒泡 否则会与模型的点击拖拽行为冲突
+
+```js
+<div class="Back" @touchstart="BackClick" @click="BackClick">返回</div>
+
+ BackClick: function () {
+      event.stopPropagation();
+ }
+```

+ 398 - 0
docs/code3dServer/CodeDocument/JiChuHelp/ConfigFile/完整示例.md

@@ -0,0 +1,398 @@
+# 完整示例
+
+::: details 完整结构 直接粘贴使用
+
+```json5
+{
+  "Url": {
+    "burl": "http://192.168.18.111:8000/",
+    "rurl": "api/WebMeshProvider/"
+  },
+  "Other": {
+    "WebView": {
+      "MaxViewNumber": 30
+    },
+    "CameraMove": {
+      "Angle": 45,
+      "Scale": 20
+    }
+  },
+  "Scene": {
+    "background": "#151c2a"
+  },
+  "SceneShowConfig":{
+    "IsShowHellp":false,
+    "IsSaveBgFileContent":false
+  },
+  "Camera": {
+    "set_position": [100, 100, 100],
+    "set_rotation": [0, 0, 0],
+    "set_up": [0, 0, 1]
+  },
+  "Controls": {
+    "set_target": [0, 0, 0],
+    "minDistance": 0,
+    "maxDistance": 100000,
+    "minPolarAngle": 3,
+    "maxPolarAngle": 89,
+    "enableDamping":false,
+    "dampingFactor":0.05
+  },
+  "Light": {
+    "DirectionalLight": {
+      "set_position": [1, -1, 4],
+      "color": "#ffffff"
+    },
+    "AmbientLight": {
+      "color": "#777777"
+    }
+  },
+  "Material": {
+    "DefaultMaterial": {
+      "matType": "MeshPhongMaterial",
+      "color": "#C2C2C2",
+      "transparent": true
+    },
+    "System": {
+
+    },
+    "CustomGroup": {
+      
+    }
+  },
+  "Matrix": {
+    "CustomGroup": {
+      "BaoJingWebPanel": {
+        "contentMessage": "所有报警设备面板默认位置以及缩放系数",
+        "translate": {
+          "y": 10
+        },
+        "scale": {
+          "x": 1,
+          "y": 1,
+          "z": 1
+        }
+      }
+    }
+  },
+  "Load_OST": [{
+      "name": "OST_MechanicalEquipment",
+      "CName": "机械设备"
+    },
+    {
+      "name": "OST_PipeFitting",
+      "CName": "管件"
+    },
+    {
+      "name": "OST_PipeAccessory",
+      "CName": "管道附件"
+    },
+    {
+      "name": "OST_PipeCurves",
+      "CName": "管道"
+    },
+    {
+      "name": "OST_CableTray",
+      "CName": "电缆桥架"
+    },
+    {
+      "name": "OST_CableTrayFitting",
+      "CName": "电缆桥架配件"
+    },
+    {
+      "name": "OST_DuctFitting",
+      "CName": "风管管件"
+    },
+    {
+      "name": "OST_DuctCurves",
+      "CName": "风管"
+    },
+    {
+      "name": "OST_DuctAccessory",
+      "CName": "风管附件"
+    },
+    {
+      "name": "OST_DuctTerminal",
+      "CName": "风道末端"
+    },
+    {
+      "name": "OST_ElectricalEquipment",
+      "CName": "电气设备"
+    },
+    {
+      "name": "OST_ElectricalFixtures",
+      "CName": "电气装置"
+    },
+    {
+      "name": "OST_FireAlarmDevices",
+      "CName": "火警设备"
+    },
+    {
+      "name": "OST_LightingFixtures",
+      "CName": "照明设备"
+    },
+    {
+      "name": "OST_SecurityDevices",
+      "CName": "安全设备"
+    },
+    {
+      "name": "OST_SpecialityEquipment",
+      "CName": "专用设备"
+    },
+    {
+      "name": "OST_FlexPipeCurves",
+      "CName": "软管"
+    },
+    {
+      "name": "OST_FlexDuctCurves",
+      "CName": "软风管"
+    },
+    {
+      "name": "OST_FabricationParts",
+      "CName": "预制零件"
+    },
+    {
+      "name": "OST_GenericModel",
+      "CName": "常规模型"
+    },
+    {
+      "name": "OST_Walls",
+      "CName": "墙"
+    },
+    {
+      "name": "OST_Ceilings",
+      "CName": "天花板"
+    },
+    {
+      "name": "OST_Floors",
+      "CName": "楼板"
+    },
+    {
+      "name": "OST_Roofs",
+      "CName": "屋顶"
+    },
+    {
+      "name": "OST_Doors",
+      "CName": "门"
+    },
+    {
+      "name": "OST_Windows",
+      "CName": "窗"
+    },
+    {
+      "name": "OST_Columns",
+      "CName": "柱"
+    },
+    {
+      "name": "OST_StructuralStiffener",
+      "CName": "结构加强板"
+    },
+    {
+      "name": "OST_AreaRein",
+      "CName": "结构区域钢筋"
+    },
+    {
+      "name": "OST_StructuralFoundation",
+      "CName": "结构基础"
+    },
+    {
+      "name": "OST_StructuralColumns",
+      "CName": "结构柱"
+    },
+    {
+      "name": "OST_StructuralTruss",
+      "CName": "结构桁架"
+    },
+    {
+      "name": "OST_StructuralFraming",
+      "CName": "结构框架"
+    },
+    {
+      "name": "OST_Stairs",
+      "CName": "楼梯"
+    },
+    {
+      "name": "OST_CurtainWallPanels",
+      "CName": "幕墙嵌板"
+    },
+    {
+      "name": "OST_CurtainWallMullions",
+      "CName": "幕墙竖梃"
+    },
+    {
+      "name": "OST_CurtaSystem",
+      "CName": "幕墙系统"
+    },
+    {
+      "name": "OST_Topography",
+      "CName": "地形"
+    },
+    {
+      "name": "OST_Site",
+      "CName": "场地"
+    },
+    {
+      "name": "OST_Ramps",
+      "CName": "坡道"
+    },
+    {
+      "name": "OST_HVAC_Zones",
+      "CName": "HVAC 区"
+    },
+    {
+      "name": "OST_Mass",
+      "CName": "体量"
+    },
+    {
+      "name": "OST_Parking",
+      "CName": "停车场"
+    },
+    {
+      "name": "OST_RasterImages",
+      "CName": "光栅图像"
+    },
+    {
+      "name": "OST_PlumbingFixtures",
+      "CName": "卫浴装置"
+    },
+    {
+      "name": "OST_Sprinklers",
+      "CName": "喷头"
+    },
+    {
+      "name": "OST_Furniture",
+      "CName": "家具"
+    },
+    {
+      "name": "OST_FurnitureSystems",
+      "CName": "家具系统"
+    },
+    {
+      "name": "OST_Wire",
+      "CName": "导线"
+    },
+    {
+      "name": "OST_Rooms",
+      "CName": "房间"
+    },
+    {
+      "name": "OST_NurseCallDevices",
+      "CName": "护理呼叫设备"
+    },
+    {
+      "name": "OST_DataDevices",
+      "CName": "数据设备"
+    },
+    {
+      "name": "OST_StairsRailing",
+      "CName": "栏杆扶手"
+    },
+    {
+      "name": "OST_Planting",
+      "CName": "植物"
+    },
+    {
+      "name": "OST_Casework",
+      "CName": "橱柜"
+    },
+    {
+      "name": "OST_LightingDevices",
+      "CName": "灯具"
+    },
+    {
+      "name": "OST_TelephoneDevices",
+      "CName": "电话设备"
+    },
+    {
+      "name": "OST_MEPSpaces",
+      "CName": "空间"
+    },
+    {
+      "name": "OST_PipeInsulations",
+      "CName": "管道隔热层"
+    },
+    {
+      "name": "OST_Entourage",
+      "CName": "环境"
+    },
+    {
+      "name": "OST_DetailComponents",
+      "CName": "详图项目"
+    },
+    {
+      "name": "OST_CommunicationDevices",
+      "CName": "通讯设备"
+    },
+    {
+      "name": "OST_Roads",
+      "CName": "道路"
+    },
+    {
+      "name": "OST_Areas",
+      "CName": "面积"
+    },
+    {
+      "name": "OST_DuctLinings",
+      "CName": "风管内衬"
+    },
+    {
+      "name": "OST_PlaceHolderDucts",
+      "CName": "风管占位符"
+    },
+    {
+      "name": "OST_DuctInsulations",
+      "CName": "风管隔热层"
+    },
+    {
+      "name": "OST_PlaceHolderPipes",
+      "CName": "管道占位符"
+    },
+    {
+      "name": "OST_Lines",
+      "CName": "线"
+    },
+    {
+      "name": "OST_Conduit",
+      "CName": "线管"
+    },
+    {
+      "name": "OST_ConduitFitting",
+      "CName": "线管配件"
+    },
+    {
+      "name": "OST_Parts",
+      "CName": "组成部分"
+    },
+    {
+      "name": "OST_StructuralFramingSystem",
+      "CName": "结构梁系统"
+    },
+    {
+      "name": "OST_PathRein",
+      "CName": "结构路径钢筋"
+    },
+    {
+      "name": "OST_StructConnections",
+      "CName": "结构连接"
+    },
+    {
+      "name": "OST_Rebar",
+      "CName": "结构钢筋"
+    },
+    {
+      "name": "OST_FabricReinforcement",
+      "CName": "结构钢筋网"
+    },
+    {
+      "name": "OST_FabricAreas",
+      "CName": "结构钢筋网区域"
+    },
+    {
+      "name": "OST_ShaftOpening",
+      "CName": "竖井洞口"
+    }
+  ]
+}
+```
+
+:::

+ 127 - 0
docs/code3dServer/CodeDocument/JiChuHelp/ConfigFile/配置介绍.md

@@ -0,0 +1,127 @@
+# 配置介绍
+
+::: details 目录
+[[toc]]
+:::
+
+**简介**
+
+通过配置文件可以快速定义3D场景的基本信息 例如背景色 相机的默认位置 角度等信息
+
+::: details 结构说明
+
+```json5
+{
+    //设置整个工程的模型请求地址
+    "Url": {
+        "burl": "http://47.104.108.133:8082/",
+        "rurl": "api/WebMeshProvider/"
+    },
+    //场景中其他逻辑类设置
+    "Other":{
+        "WebView":{//Tooltip设置
+            "MaxViewNumber":30//场景中最多同时显示的Web面板的数量
+        },
+        "CameraMove":{//相机定位设置
+            "Angle":45,//相机与目标点的角度
+            "Scale":20//相机与目标点的距离
+        }
+    },
+    //设置当前场景的默认属性信息
+    "Scene": {
+        "background": "#151c2a"
+    },
+    //设置场景中的辅助显示 例如帧率 世界坐标系等
+    "SceneShowConfig":{
+        "IsShowHellp":false,//是否显示场景的帧率以及世界坐标辅助线
+        "IsSaveBgFileContent":false//是否保存SourceID对应的Bg文件等相关所有信息
+    },
+    //当前场景相机的默认属性信息
+    "Camera": {
+        "set_position": [0, 0, 0],
+        "set_rotation": [0, 0, 0],
+        "set_up": [0, 0, 1]
+    },
+    //当前场景控制器默认控制属性信息
+    "Controls": {
+        "set_target": [0, 0, 0],//世界场景中心点
+        "minDistance": 0,//最小缩放距离
+        "maxDistance": 100000,//最大缩放距离
+        "minPolarAngle": 3,//最小仰角
+        "maxPolarAngle": 89,//最大仰角
+        "enableDamping":false,//场景是否开启阻尼
+        "dampingFactor":0.05//默认阻尼系数
+    },
+    //当前场景灯光默认属性信息
+    "Light": {
+        //平行光
+        "DirectionalLight": {
+            "set_position": [1, -1, 4],
+            "color": "#ffffff"
+        },
+        //环境光
+        "AmbientLight": {
+            "color": "#777777"
+        }
+    },
+    //材质信息
+    "Material": {
+        //整个场景加载模型默认显示材质
+        "DefaultMaterial": {
+            "matType": "MeshPhongMaterial",//材质类型
+            "color": "#ffffff",
+            "transparent": true
+        },
+        //定义工程中所有通用的系统专业默认显示的材质信息
+        "System": {
+            "OST_PipeCurves": {
+                "key":"***",//去System层级下超找属性进行原子合并
+                "color": "#0088f9"
+            }
+        },
+        //自定义类型默认显示的材质信息
+        "CustomGroup": {
+            "AllBaoJingEqState": {
+                "contentMessage": "所有报警设备显示的样式",
+                "key":"***",//去CustomGroup层级下超找属性进行原子合并
+                "color": "#CB3F79"
+            }
+        }
+    },
+    //设置素有非文件系统的模型矩阵信息
+    "Matrix": {
+        //保存所有通用的自定义类型矩阵信息
+        "CustomGroup": {
+            "TwoSceneQiangTi":{
+                //位置
+                "position":{
+                    "x":0,
+                    "y":0,
+                    "z":0
+                },
+                //角度
+                "rotation":{
+                    "x":0,
+                    "y":0,
+                    "z":0
+                },
+                //缩放                                      
+                "scale":{
+                    "x":0,
+                    "y":0,
+                    "z":0
+                }
+            }
+        }
+    },
+    //每个楼层需要加载的管件类型列表
+    "Load_OST":[
+        {
+            "name": "OST_MechanicalEquipment",
+            "CName": "机械设备"
+        }
+    ]
+}
+```
+
+:::

+ 47 - 0
docs/code3dServer/CodeDocument/JiChuHelp/Debugger/开发辅助功能.md

@@ -0,0 +1,47 @@
+# 开发辅助功能
+
+::: details 目录
+[[toc]]
+:::
+
+**简介**
+
+由于目前引擎没有编辑器辅助,所以暂时在window对象上挂载一些函数用于辅助获取基础场景信息
+
+### 获取相机位置信息
+
+```js
+/**
+ *获取当前相机的位置角度等信息
+ *
+ * @memberof PEHelpClass
+ */
+window.UI.PEGetCameraContent();
+```
+
+### 获取Mesh距离相机的当前距离
+
+```js
+/**
+ *获取某个mesh距离相机的当前距离
+ *
+ * @param {*} sourceID
+ * @memberof PEHelpClass
+ */
+window.UI.PEGetDistance(sourceid);
+
+```
+
+### 获取场景中任意一点的位置信息
+
+
+调用此函数之后会自动再场景的世界坐标中心点生成一个2 * 2 * 2的立方体,可以用鼠标拖动该立方体到自己想要的位置上,停止拖放时会在控制台打印该立方体的世界坐标信息。
+
+```js
+/**
+ *获取自定义相机的坐标,角度,场景中心点等信息
+ *
+ * @memberof PEHelpClass
+ */
+window.UI.PECreateCustomPosition()
+```

+ 8 - 0
docs/code3dServer/CodeDocument/JiChuHelp/QingLiangHuaFuWu/业务定位.md

@@ -0,0 +1,8 @@
+# 轻量化服务在公司数据业务流程中的定位
+
+::: details 目录
+[[toc]]
+:::
+
+## 流程图
+

+ 11 - 0
docs/code3dServer/CodeDocument/JiChuHelp/QingLiangHuaFuWu/文件信息.md

@@ -0,0 +1,11 @@
+# 模型服务资源目录信息
+
+轻量化引擎将Revit模型做轻量化解析之后会以项目 楼层 的目录形式组织资源
+
+例如 项目->楼层编号->该楼层下所有的模型资源文件
+
+![avatar](../../../Images/FuWuQiMuLu.png)
+
+这里的楼层编号与业务数据中的楼层编号都是一一对应的
+
+

+ 18 - 0
docs/code3dServer/CodeDocument/JiChuHelp/QingLiangHuaFuWu/服务简介.md

@@ -0,0 +1,18 @@
+# 模型轻量化服务介绍
+
+::: details 目录
+[[toc]]
+:::
+
+## 背景
+
+传统的Revit模型文件体积巨大,并且对客户端电脑性能要求很高,无法满足公司业务发展。
+
+## 简介
+
+模型轻量化服务主要功能是将Revit模型文件做轻量化处理之后并转换为我们公司自己研发的一套二进制数据格式,存放于文件服务器中,通过部署一套后台服务程序将二进制模型数据分发给前端使用。
+
+## 工作流程
+
+
+![avatar](../../../Images/MoXingQingLiangHua.png)

+ 112 - 0
docs/code3dServer/CodeDocument/JiChuHelp/ToolClass/PEMessage.md

@@ -0,0 +1,112 @@
+# PEMessage
+
+::: details 目录
+[[toc]]
+:::
+
+## 简介
+
+负责订阅事件通知 
+
+前端与引擎通过指令进行通信需要使用该类进行通信
+
+<font color=red>组件从内存中释放的时候记得调用off函数注销监听事件</font>
+
+## 实例方法
+
+### on 注册事件
+
+```js
+/**
+ *UI注册事件
+ *
+ * @param {*} type
+ * @param {*} block (data)=>{}
+ * @memberof PEMessage
+ */
+on(type, block) {}
+
+//eg: data的内容
+this.message.on('**',(data)=>{
+    //....
+})
+```
+
+### onMerge 注册一组事件 只有监听的事件全都执行完成才会执行回调函数
+
+```js
+/**
+ *监听一组事件 只有事件全都执行完成才会执行回调函数
+ *
+ * @param {*} typeList
+ * @param {*} event (dic)=>{} dic {type:data}
+ * @memberof PEMessage
+ */
+onMerge(typeList,event){}
+```
+
+### onMergeAny 监听一组事件 其中任意一个执行完成就开始回调通知
+
+```js
+/**
+ *监听一组事件 只有事件全都执行完成才会执行回调函数
+ *
+ * @param {*} typeList
+ * @param {*} event (dic)=>{} dic {type:data}
+ * @memberof PEMessage
+ */
+onMergeAny(typeList,event){}
+```
+
+### emit 给3D发送事件
+
+```js
+/**
+ *发送事件
+ *
+ * @param {*} type
+ * @param {*} data
+ * @memberof PEMessage
+ */
+emit(type, data) {}
+```
+
+### off 注销当前对象注册的所有事件通知
+
+```js
+/**
+ *注销事件
+ *
+ * @memberof PEMessage
+ */
+off() {}
+```
+
+### addMiddleware 注册指令过滤的中间件
+
+## 静态方法
+
+### emitMessage 发送消息 通过该函数发送的消息会立刻执行,不管当前是否还有正在执行的消息列表
+
+```js
+/**
+ *向3D发送消息
+ *
+ * @static
+ * @param {*} message
+ * @memberof PEMessage
+ */
+ static emitMessage(message){}
+```
+
+### emitMessageList 发送消息列表
+
+```js
+/**
+ *向3D发送消息列表
+ *
+ * @param {*} messageList
+ * @memberof PEMessage
+ */
+static emitMessageList(messageList) {}
+```

+ 23 - 0
docs/code3dServer/CodeDocument/JiChuHelp/ToolClass/VueViewController.md

@@ -0,0 +1,23 @@
+# VueViewController
+
+::: details 目录
+[[toc]]
+:::
+
+## 简介
+
+改控制类在初始化之后会自动订阅事件然后用于控制场景的加载以及卸载行为
+
+## 实例方法
+
+### loadSceneView 加载场景订阅事件
+
+```js
+/**
+ *初始化3D容器
+ *
+ * @param {*} domID
+ * @memberof VueHelpClass
+ */
+loadSceneView(domID) {}
+```

+ 77 - 0
docs/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/3D加载数据查询.md

@@ -0,0 +1,77 @@
+# 3D加载数据查询
+
+::: details 目录
+[[toc]]
+:::
+
+**指令说明**
+
+因为模型加载需要先从服务器下载然后解析,解析之后再开始渲染,所以有可能造成你要针对某个SourceID做出控制的时候,改SourceID对应的模型还没有下载解析完成,可以通过该指令查询SourceID是否已经解析完成
+
+## SourceID查询
+
+::: details 完整目录
+
+```json5
+{
+        "CmdName": "PEWeb3DCodeState",
+        "Time": "",
+        "Platform": "",
+        "CmdParams": {},
+        "OrderList": [
+            {
+                "OrderName": "PESourceIDIsInit",//--必填-- 查询要操作的SourceID是否已经完成
+                "OrderParams": {
+                    "ObjectID":[//--必填--SourceID列表
+                        ""
+                    ],
+                    "EndEventName":[//--必填--查询结果回调事件列表
+                        ""
+                    ]
+                }
+            }
+        ]
+}
+```
+
+:::
+
+## 使用举例
+
+::: details 完整目录
+1. 使用PEMessage注册一个事件  AA
+2. 发送指令
+
+```json
+{
+        "CmdName": "PEWeb3DCodeState",
+        "Time": "",
+        "Platform": "",
+        "CmdParams": {},
+        "OrderList": [
+            {
+                "OrderName": "PESourceIDIsInit",//--必填-- 查询要操作的SourceID是否已经完成
+                "OrderParams": {
+                    "ObjectID":[//--必填--SourceID列表
+                        "123"
+                    ],
+                    "EndEventName":[//--必填--查询结果回调事件列表
+                        "AA"
+                    ]
+                }
+            }
+        ]
+}
+```
+3. 接收返回查询返回结果
+
+```json
+{
+    "123":{
+        "state":1 //1 完成 0 未完成
+    }
+}
+```
+
+:::
+

+ 62 - 0
docs/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/3D异常信息反馈.md

@@ -0,0 +1,62 @@
+# 3D信息反馈
+
+::: details 目录
+[[toc]]
+:::
+
+## 日志信息
+
+::: details 完整结构
+
+```json5
+{
+        "CmdName": "PESend3dLog",
+        "Time": "",
+        "Platform": "",
+        "CmdParams": {
+
+        },
+        "OrderList": [
+            {
+                "OrderName": "PEError",//发送3D场景产生的异常,日志等信息
+                "OrderParams": {
+                    "Content": "",
+                    "Data": {}
+                }
+            }
+        ]
+
+    }
+```
+
+:::
+
+## 模型点击信息
+
+::: details 完整结构
+
+```json5
+{
+        "CmdName": "PESend3dLog",
+        "Time": "",
+        "Platform": "",
+        "CmdParams": {
+
+        },
+        "OrderList": [
+            {
+                "OrderName": "PEClick",//3D场景点击事件
+                "OrderParams": {
+                    "SourceID": ""//点击产生的SourceID
+                }
+            }
+        ]
+
+    }
+```
+
+:::
+
+## 使用说明
+
+一般在程序中使用PEMessage类注册一个名为**PESend3dLog**的事件,引擎会将上述指令作为参数传递给前端注册的事件中,用于前端做出判断分析。

+ 52 - 0
docs/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/README.md

@@ -0,0 +1,52 @@
+# 指令介绍
+
+::: details 目录
+[[toc]]
+:::
+
+## 介绍
+
+指令是UI前端与3D场景通信的唯一方式,前端通过发送各种预制好的指令通知3D引起执行响应的操作。
+
+## 形式
+
+指令的形式为JSON格式
+
+例如:
+
+::: details 指令格式
+
+```json5
+{
+        "CmdName": "PEChengScene",//--必填--指令类型名称
+        "Time": "",//发送指令的时间戳
+        "Platform": "",//发送指令的平台 WEB IOS ANDROID
+        "CmdParams": {//指令执行必备的参数
+
+        },
+        "OrderList": [{//--必填--具体指令的参数集合
+                "OrderName": "PELoadScene",//--必填--指令名称
+                "OrderParams": {//执行指令需要的参数
+                }
+            }
+        ]
+
+    }
+```
+:::
+
+## 执行方式
+
+目前一共提供两种执行方式 并行与串行,建议尽量使用串行
+
+### 串行
+
+引擎接收到一组指令之后会判断当前是否存在正在执行的指令,如果有则进入缓存等待执行,如果没有则会按照指令顺序执行,只有上一个执行执行完成之后才会进行下一个指令执行。
+
+### 并行
+
+引擎接收到一个指令之后会立刻执行,不管当前是否存在正在执行的指令。
+
+## 使用说明
+
+串行更适合执行一组操作,下一个操作需要上一个操作完成之后才能进行下一个操作,例如点击一个按钮需要初始化一个场景,然后需要加载一些设备模型,那显然第二个指令是建立在第一个场景执行结束之后才能执行,如果用并行则肯定会导致失败,因为场景还没有初始化完成。

+ 286 - 0
docs/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/Tooltip面板.md

@@ -0,0 +1,286 @@
+# Tooltip面板
+
+::: details 目录
+[[toc]]
+:::
+
+## 指令说明
+
+目前对模型添加Tooltip面板的方式只有一种 就是前端自定义一个Vue组件,然后引擎获取组件实例,并将其显示到3D场景中的特定位置,后续会支持Canvas方式添加Tooltip
+
+## 添加面板
+
+::: details 完整结构
+```json5
+{
+        "CmdName": "PEChengWebView",
+        "Time": "",
+        "Platform": "",
+        "CmdParams": {
+
+        },
+        "OrderList": [{
+                "OrderName": "PELoadWebView",//--必填-- 加载VUE组件
+                "OrderParams": {
+                    "ViewList": [{//--必填-- 需要显示web面板的SourceID
+                        "ObjectID": "",//--必填-- SourceID
+                        "ViewName": "",//--必填-- Vue组件名称
+                        "ViewParam": {},//--必填-- 需要传递给Vue组件的参数对象
+                        "IsLimit": true,//该View是否需要需要常驻显示在场景中 默认为True
+                        "Matrix": {//面板的默认显示参数
+                            "ScalePosition": {//View的缩放逻辑
+                                "MinScalePosition": 0,//最小缩放距离
+                                "MaxScalePosition": 0//最大缩放距离
+                            },
+                            "Translate": {//View距离Mesh的偏移量
+                                "x": 100,
+                                "y": 100,
+                                "z": 100
+                            },
+
+                            "DefaultScale": 0.2//View的默认缩放系数
+                        }
+                    }]
+                }
+            }
+        ]
+
+    }
+```
+:::
+
+
+### 原理说明
+
+引擎根据ObjectID找到对应的模型,然后计算出包围盒的大小,在根据ViewName从UI上获取该Vue组件的的Dom实例,将该Dom元素显示到模型正上方默认的位置
+
+### 参数说明
+
+::: details ObjectID
+模型对应的SourceID
+:::
+
+::: details ViewName
+自定义Vue组件的名称,<font color=red>该组件必须现在BimView.vue中注册过</font>
+:::
+
+::: details ViewParam
+需要显示ToolTip面板的数据源
+:::
+
+::: details IsLimit
+由于每一个ToolTip面板都是一个Dom实例,如果一次性显示太多面板会造成卡顿,所以引擎会自动根据当前场景中面板的数量,自动进行添加删除,例如一共显示50个面板,那么引擎会自动删除二十个,只显示距离相机最近的30个面板,但是如果希望某个面板一直显示在场景中,则设置**IsLimit**为false即可。
+:::
+
+::: details ScalePosition
+Vue组件添加到场景中后会默认设置为DefaultScale设置的缩放系数,该缩放系数是前端与美术一起商定的默认显示大小,然后再MinScalePosition与MinScalePosition距离范围内随着相机拉远View自动放大,相机拉近自动缩小,小于MinScalePosition或者大于MinScalePosition不进行缩放控制
+:::
+
+::: details Translate
+面板默认显示的位置是模型包围盒的正上方,如果默认位置并不符合需求,则可以通过该属性设置X,Y,Z三个方向上的偏移量
+:::
+
+::: details DefaultScale
+因为UI中的单位是像素,但是在3D中并没有像素的概念,所以UI中看到的大小并不是3D中看到的大小,所以需要通过该属性调整面板显示大小。
+:::
+
+### 使用说明
+
+::: details 简单例子
+1.编写自定义的Vue组件 例如名字叫:HelloWorld.vue
+```js
+<template>
+  <div id="SpaceView">
+      <div id="BottomBox" class="Space">{{Param.content}}</div>
+  </div>
+</template>
+
+<script>
+export default {
+    props:{
+        Param:Object
+    },
+    data:function () {
+        return {
+            
+        }
+    }
+}
+</script>
+
+<style scoped>
+    #SpaceView{
+        width: 206px;
+        height: 45px;
+        display: flex;
+        flex-direction: column;
+        justify-content: space-between;
+    }
+    .Space{
+        width: 206px;
+        height: 45px;
+        border: 1px solid;
+        display: flex;
+        justify-content: center;
+        align-content: center;
+        flex-direction: column;
+    }
+    #BottomBox{
+        border: yellow;
+        background-color: #FE5E86;
+    }
+</style>
+
+```
+2.在BIMView.vue中声明注册自定义组件
+
+3.发送显示Tooltip面板指令
+
+```json
+{
+        "CmdName": "PEChengWebView",
+        "Time": "",
+        "Platform": "",
+        "CmdParams": {
+
+        },
+        "OrderList": [{
+                "OrderName": "PELoadWebView",
+                "OrderParams": {
+                    "ViewList": [{
+                        "ObjectID": "*******",
+                        "ViewName": "HelloWorld",
+                        "ViewParam": {
+                            "content": "动态面板模拟数据源"
+                        },
+                        "IsLimit": true,
+                        "Matrix": {
+                            "ScalePosition": {
+                                "MinScalePosition": 0,
+                                "MaxScalePosition": 0
+                            },
+                            "Translate": {
+                                "x": 100,
+                                "y": 100,
+                                "z": 100
+                            },
+                            "DefaultScale": 0.2
+                        }
+                    }]
+                }
+            }
+        ]
+    }
+```
+
+:::
+
+## 卸载面板
+
+::: details 完整结构
+```json5
+{
+        "CmdName": "PEChengWebView",
+        "Time": "",
+        "Platform": "",
+        "CmdParams": {
+
+        },
+        "OrderList": [
+            {
+                "OrderName": "PERemoveWebView",//卸载View组件
+                "OrderParams": {
+                    "ViewList": [//--必填-- 需要卸载的SourceID列表
+                        ""
+                    ]
+                }
+            }
+        ]
+
+    }
+```
+:::
+
+## 更新面板数据源
+
+::: details 完整结构
+```json5
+{
+        "CmdName": "PEChengWebView",
+        "Time": "",
+        "Platform": "",
+        "CmdParams": {
+
+        },
+        "OrderList": [
+            {
+                "OrderName": "PEUpdateData",//更新数据
+                "OrderParams": {
+                    "IDList": [{//--必填-- 需要更新的SourceID列表
+                        "ObjectID": "",//--必填-- SourceID
+                        "ViewParam": {//--必填-- 需要更新的数据
+
+                        }
+                    }]
+                }
+            }
+        ]
+
+    }
+```
+:::
+
+## 面板刷新频率设置
+
+::: details 完整结构
+```json5
+{
+        "CmdName": "PEChengWebView",
+        "Time": "",
+        "Platform": "",
+        "CmdParams": {
+
+        },
+        "OrderList": [
+            {
+                "OrderName": "PEUpdateType",//设置View刷新的模式
+                "OrderParams": {
+                    "Type": 0,//0 表示 每一帧 固定时间间隔去计算一次 1 表示只有在鼠标结束操作之后才会去计算一次view
+                    "TimeOut": 500//刷新的时间间隔
+                }
+            }
+        ]
+
+    }
+```
+:::
+
+
+## 指令常见问题说明
+
+### View的显示逻辑
+
+如果场景中添加同时添加太多的view会导致性能消耗严重,而相同的dom元素又无法复用,所以在配置文件中MaxViewNumber属性设置了场景中同时存在View的数量限制
+
+默认再相机视野范围内并且距离场景中心点最近的30个View才会显示
+
+IsLimit控制是否接受限制,如果等于false不受限制则只要view出现在相机视野范围内就会一直常驻显示
+
+### View的刷新逻辑
+
+刷新方式1:在鼠标操作场景过程中每500毫秒修改一次View的位置缩放等信息
+
+刷新方式2:再鼠标操作场景结束之后500毫秒修改一次View的位置缩放等信息
+
+默认方式为刷新方式1
+
+### View的缩放逻辑
+
+View添加到场景中后回默认设置为DefaultScale设置的缩放系数,该缩放系数是前端与美术一起商定的默认显示大小,然后再MinScalePosition与MinScalePosition距离范围内随着相机拉远View自动放大,相机拉近自动缩小,小于MinScalePosition或者大于MinScalePosition不进行缩放控制
+
+### View的显示位置控制
+
+View默认显示为Mesh包围盒的正上方10单位的位置,然后以此为原点进行Translate设置的偏移量
+
+### View组件数据刷新
+Web平台直接修改**PELoadWebView**指令传入的**ViewParam**也可以修改面板中的数据源,<font color=red>但是强烈建议都通过PEUpdateData指令去进行修改数据源,因为直接修改会造成如果更新数据源出现bug很难浮现出问题。通过指令修改可以有效追踪数据是如何呗修改的。</font>

+ 40 - 0
docs/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/修改模型样式.md

@@ -0,0 +1,40 @@
+# 修改模型样式
+
+::: details 目录
+[[toc]]
+:::
+
+## 修改模型样式
+
+指令说明
+
+1.可以自定义Mesh的显示效果或者通过GroupKey执行配置文件中已经定义好的通用的显示效果,例如报警样式等配置信息
+
+2.如果不传入GroupKey以及Style属性则表示自动将模型返回到初始化时候的状态
+
+::: details 完整结构
+
+```json5
+{
+        "CmdName": "PEChengState3dObject",
+        "Time": "",
+        "Platform": "",
+        "CmdParams": {
+
+        },
+        "OrderList": [{
+            "OrderName": "PEChengState",//--必填-- 修改模型样式
+            "OrderParams": {
+                "ObjectID": [],//--必填-- SourceID列表
+                "GroupKey": "",//配置文件中定义的编组名称
+                "Style": {//自定义样式  style中的样式会覆盖GroupKye中相同的设置
+                    "color": "0xFFFFFF",
+                    "opacity":0.5
+                }
+            }
+        }]
+
+    }
+```
+
+:::

+ 115 - 0
docs/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/切换场景.md

@@ -0,0 +1,115 @@
+# 场景控制
+
+::: details 目录
+[[toc]]
+:::
+
+## 加载场景
+
+### 完整结构
+::: details 完整格式
+
+```json5
+{
+        "CmdName": "PEChengScene",//--必填-- 场景控制
+        "Time": "",
+        "Platform": "",
+        "CmdParams": {
+
+        },
+        "OrderList": [{
+                "OrderName": "PELoadScene",//--必填-- 加载场景 
+                "OrderParams": {
+                    "SceneName": "PublicScene",//--必填-- 需要加载的场景名称
+                    "Url": {//模型轻量化服务器地址
+                        "burl": "",
+                        "rurl": ""
+                    },
+                    "Configs": [//该场景需要定制的配置文件 后一个与前一个合并
+                        "JsonConfig/PorjectConfig.json"
+                    ],
+                    "SceneParam":{//向指定场景文件传入初始化参数,根据业务场景自定义
+
+                    }
+                }
+            }
+        ]
+
+    }
+```
+
+:::
+
+### 参数说明
+
+
+::: details SceneName
+场景初始化的过程中需要一个类专门负责读取配置文件并初始化3D场景,**SceneName**的作用就是指定谁去做这件事情,如果需要特殊定制,则需要自己实现场景类并将**SceneName**指向该类型的名称。
+
+引擎默认已经内置了一个**PublicScene**类专门负责初始化场景,所以**SceneName**的值直接写**PublicScene**即可.
+:::
+
+::: details Url
+Url对象用于设置当前场景中加载模型的服务器地址,此处的Url对象会覆盖配置文件中的Url设置
+:::
+
+::: details Configs
+Configs用于设置加载此场景需要读取的配置文件列表,如果存在多个配置文件,则后一个配置文件会与前一个配置文件做一次原子合并操作
+        例如:
+
+        A.json (表示整个工程的通用配置选项)
+        {
+            AA:'AA',
+            BB:{
+              name:'AA'  
+            },
+            CC:'AA'
+        }
+
+        B.json (某个特殊场景的配置文件)
+         {
+            BB:{
+              name:'BB'  
+            }
+        }
+
+        Configs参数:['JsonConfig/A.json','JsonConfig/B.json']
+
+        引擎加载配置文件的时候会将B.json与A.json文件做一次合并最终得到
+        {
+            AA:'AA',
+            BB:{
+              name:'BB'  
+            },
+            CC:'AA'
+        }
+:::
+
+## 卸载场景
+
+## 完整格式
+
+::: details 完整格式
+```json5
+{
+        "CmdName": "PEChengScene",//--必填-- 场景控制
+        "Time": "",
+        "Platform": "",
+        "CmdParams": {
+
+        },
+        "OrderList": [
+            {
+                "OrderName": "PERemoveScene"//--必填-- 卸载场景
+            }
+        ]
+
+    }
+```
+:::
+
+### 补充说明
+
+由于目前只支持前端应用中只能同时存在一个场景,所以收到**PERemoveScene**指令后就立刻卸载当前正在显示的场景并释放所有占用的资源内存.
+
+因为JS垃圾回收机制并不会释放3D所占有的内存资源,所有前端应根据业务场景及时卸载场景释放资源保证客户端流畅。

+ 206 - 0
docs/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/加载卸载模型.md

@@ -0,0 +1,206 @@
+# 加载/卸载模型
+
+::: details 目录
+[[toc]]
+:::
+
+## 根据业务SourceID加载模型(业务开发使用)
+
+## 加载原理
+
+首先根据参数rootpath请求并且解析某个项目某个楼层下所有的模型信息得到所有的模型对应的ID,然后根据AllNeedInitSourceID+AllNeedInitSaga排除不需要初始化的模型。
+
+将设置的eq+sapce+saga中设置的ID显示出来,剩余的ID对应的模型进入隐藏状态,这样可以有效减少资源消耗。
+
+::: details 完整结构
+
+```json5
+{
+        "CmdName": "PEInitOrDelete3dObject",
+        "Time": "",
+        "Platform": "",
+        "CmdParams": {
+
+        },
+        "OrderList": [
+            {
+                "OrderName": "PEInitObject_V2",//--必填-- 加载模型 方式2 根据目前公司业务流程场景
+                "EndEventName": [
+                    ""
+                ],
+                "OrderParams": {
+                    "URL": [{
+                        "burl": "http://47.104.108.133:8080/",
+                        "rurl": "api/WebMeshProvider/",
+                        "surl": "files/wanda/dikuaibai.FBX",
+                        "rootpath": "wanda/F03",//--必填--
+                        "GroupKey": "",
+                        "EndEventName": [
+                            ""
+                        ],
+                        "Style": {
+                            "color": "0xFFFFFF",
+                            "opacity": 0.1
+                        },
+                        "Floor": {//需要加载的楼层的包围壳模型
+                            "ID": "",//楼层ID
+                            "GroupKey": "",//配置文件中的配置信息
+                            "EndEventName": [//结束事件通知
+                                ""
+                            ],
+                            "Style": {//楼层模型显示的样式
+                                "color": "0xFFFFFF",
+                                "opacity": 0.1
+                            }
+                        },
+                        "AllNeedInitSourceID":[//整个楼层中需要所有需要初始化的设备 空间 的SourceID 具体根据业务场景设置
+                            ""
+                        ],
+                        "AllNeedInitSaga":[//楼层中所有需要显示的管网列表
+                            ""
+                        ],
+                        "Eq": [{//要显示的设备分组列表
+                            "ID": [//ID列表
+                                ""
+                            ],
+                            "GroupKey": "",//配置文件中的配置信息
+                            "EndEventName": [//结束通知
+                                ""
+                            ],
+                            "Style": {//样式
+                                "color": "0xFFFFFF",
+                                "opacity": 0.1
+                            }
+                        }],
+                        "Space": [{//要显示的空间分组列表
+                            "ID": [//空间ID列表
+                                ""
+                            ],
+                            "GroupKey": "",//配置文件中的配置信息
+                            "EndEventName": [//结束事件通知
+                                ""
+                            ],
+                            "Style": {//样式
+                                "color": "0xFFFFFF",
+                                "opacity": 0.1
+                            }
+                        }],
+                        "Saga": [{//要显示的官网列表
+                            "name": "",//管网名称
+                            "GroupKey": "",//配置文件中的配置信息
+                            "EndEventName": [//管网加载完成的事件通知
+                                ""
+                            ],
+                            "Style": {//管网显示的样式
+                                "color": "0xFFFFFF"
+                            }
+                        }]
+                    }]
+                }
+            }
+        ]
+
+    }
+```
+
+:::
+
+
+## 按照管件类型加载模型(内部开发使用)
+
+指令说明
+
+* PEInitObject指令中设置的URL会覆盖加载场景指令中设置的URL或者配置文件中配置的URL
+
+* PEInitObject指令中设置的Style会覆盖配置文件中该系统专业或者GroupKey定义的样式信息,具有最高优先级
+
+* 可以根据具体的业务场景设置EndEventName监听加载进入然后执行相应的消息指令
+返回信息:
+
+```json
+{
+    "Type":1 //0 全部加载失败 1 全部加载完成
+}
+```
+
+::: details 完整结构
+
+```json5
+{
+        "CmdName": "PEInitOrDelete3dObject",
+        "Time": "",
+        "Platform": "",
+        "CmdParams": {
+
+        },
+        "OrderList": [{
+                "OrderName": "PEInitObject",//--必填-- 加载模型 方式1 按照Revit中类别进行加载模型组件
+                "EndEventName": [//加载完成的事件列表 用于3D加载完成会主动通知前端 
+                    ""
+                ],
+                "OrderParams": {
+                    "URL": [{//--必填-- 加载的URL列表
+                        "burl": "http://47.104.108.133:8080/",////加载地址 优先级最高
+                        "rurl": "api/WebMeshProvider/",
+                        "surl": "files/wanda/dikuaibai.FBX",
+                        "rootpath": "wanda/F03",
+                        "GroupKey": "",//自定义标签 会自动读取配置文件中该标签的定义配置信息来默认设置模型显示样式等行为 由3D开发人员事先定义好即可
+                        "EndEventName": [//加载完成的事件列表 ----等FBX加载完成或者所有的系统专业都加载完成之后才会通知----
+                            ""
+                        ],
+                        "Style": {//默认显示的样式,优先级最高 会覆盖GroupKey中的配置信息
+                            "color": "0xFFFFFF",//颜色
+                            "opacity": 0.1//透明度 0-1
+                        },
+                        "categories": [{//系统专业
+                            "name": "OST_PipeCurves",//系统或者专业
+                            "EndEventName": [//当前系统专业加载完成之后的通知事件
+                                ""
+                            ],
+                            "Style": {//该系统专业的样式设置 优先级最高
+                                "color": "0xFFFFFF",
+                                "opacity": 0.1
+                            }
+                        }]
+                    }]
+                }
+            }
+        ]
+
+    }
+```
+
+:::
+
+## 卸载模型
+
+::: details 完整结构
+
+```json5
+{
+        "CmdName": "PEInitOrDelete3dObject",
+        "Time": "",
+        "Platform": "",
+        "CmdParams": {
+
+        },
+        "OrderList": [
+            {
+                "OrderName": "PEDeleteObject",//从内存中卸载模型
+                "OrderParams": {
+                    "ObjectID": [//SourceID列表
+                        ""
+                    ],
+                    "SystemType":[//所属系统专业
+                        ""
+                    ],
+                    "GroupKey":[//自定义分组
+                        ""
+                    ]
+                }
+            }
+        ]
+    }
+```
+
+:::

+ 104 - 0
docs/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/场景裁切.md

@@ -0,0 +1,104 @@
+# 场景裁切
+
+::: details 目录
+[[toc]]
+:::
+
+## 场景进入裁切状态
+
+::: details 完整格式
+```json5
+{
+        "CmdName": "PEClip3dObject",
+        "Time": "",
+        "Platform": "",
+        "CmdParams": {
+           
+        },
+        "OrderList": [{
+                "OrderName": "PEClip",//场景裁切
+                "OrderParams": {
+                    "ClipStyle": {//裁切样式
+                        "BorderColor": "#FFFFFF",//裁切面板边框样式
+                        "ClipNormalColor": "#FFFFFF",//裁切面板默认显示颜色
+                        "ClipNormalOpacity": 0.1,//裁切面板默认透明度
+                        "ClipHighlightedColor": "#FFFFFF",//裁切面板高亮颜色
+                        "ClipHighlightedOpacity": 0.1,//裁切面板高亮透明度
+                        "MinClipSize": 100//最小裁切距离,当裁切包围盒每个面之间的距离小于100之后将不允许继续裁切
+                    }
+                }
+            }
+        ]
+    }
+
+```
+:::
+
+## 隐藏裁切状态
+
+::: details 完整格式
+```json5
+{
+        "CmdName": "PEClip3dObject",
+        "Time": "",
+        "Platform": "",
+        "CmdParams": {
+           
+        },
+        "OrderList": [
+            {
+                "OrderName": "PEVisible",//裁切面板显示隐藏
+                "OrderParams":{
+                    "Visible":true
+                }
+            }
+        ]
+
+    }
+
+```
+:::
+
+## 还原裁切状态
+
+::: details 完整格式
+```json5
+{
+        "CmdName": "PEClip3dObject",
+        "Time": "",
+        "Platform": "",
+        "CmdParams": {
+           
+        },
+        "OrderList": [
+            {
+                "OrderName": "PERestitution"//还原裁切
+            }
+        ]
+
+    }
+
+```
+:::
+
+## 取消裁切状态
+
+::: details 完整格式
+```json5
+{
+        "CmdName": "PEClip3dObject",
+        "Time": "",
+        "Platform": "",
+        "CmdParams": {
+           
+        },
+        "OrderList": [
+            {
+                "OrderName": "PECancel"//取消裁切
+            }
+        ]
+
+    }
+
+```
+:::

+ 43 - 0
docs/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/客户端新建模型.md

@@ -0,0 +1,43 @@
+# 客户端新建模型
+
+::: details 目录
+[[toc]]
+:::
+
+## 指令说明
+
+暂时不具备实际功能作用,目前只用在没有编辑器配合的情况下在3D场景中添加一个小立方体表示一个场景中的位置信息,用于辅助其他指令,例如想在场景中特定的一个位置支板,但是这个位置又没有设备或者其他模型,就可以再想要支板的地方新建一个空的模型,然后再这个空的模型上支板。
+
+::: details 完整机构
+
+```json5
+{
+  "CmdName": "PECreate3dObject",//初始化模型
+  "Time": "",
+  "Platform": "",
+  "CmdParams": {
+    
+  },
+  "OrderList": [
+    {
+      "OrderName": "PECreateObject",//--必填-- 初始化模型
+      "OrderParams": {
+        "CustomObjectID": "",//--必填-- 自定义控制ID,相当于自己创建一个SourceID
+        "CustomPosition": {//自定义空间信息
+          "Position": {//位置
+            "x": 100,
+            "y": 100,
+            "z": 100
+          }
+        },
+        "Style": {//样式
+          "color": "#ffffff",
+          "opacity": 0.0
+        }
+      }
+    }
+  ]
+}
+```
+
+:::

+ 43 - 0
docs/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/控制3D场景.md

@@ -0,0 +1,43 @@
+# 控制3D场景
+
+::: details 目录
+[[toc]]
+:::
+
+## 旋转平移缩放
+
+::: details 完整格式
+```json5
+{
+        "CmdName": "PEController3dScene",
+        "Time": "",
+        "Platform": "",
+        "CmdParams": {
+
+        },
+        "OrderList": [{
+            "OrderName": "PEController",//--必填-- 客户端通过虚拟摇杆等交互行为控制3D场景
+            "OrderParams": {
+                "Mode":0,//--必填-- 控制模型 0 平移 1 旋转 2 缩放
+                "Value": {//--必填-- 控制速度系数
+                    "x": 1,
+                    "y": 1
+                }
+            }
+        }]
+
+    }
+```
+:::
+
+## 指令说明
+
+::: details 指令简介
+该指令主要解决UI与3D并不在一个执行环境中,则提供类似游戏控制摇杆的方式进行控制场景的交互
+
+客户端控制方式:以一个二维坐标系作为控制坐标系,x取值为-1到1 y取值为-1到1 x向右为正 y向上为正
+  
+平移旋转需要发送x,y的偏移系数
+  
+缩放只需要发送y的偏移系数
+:::

+ 58 - 0
docs/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/显示隐藏模型.md

@@ -0,0 +1,58 @@
+# 显示隐藏模型
+
+::: details 目录
+[[toc]]
+:::
+
+## 显示模型
+::: details 完整结构
+
+```json5
+{
+        "CmdName": "PEShowOrHidden3dObject",
+        "Time": "",
+        "Platform": "",
+        "CmdParams": {
+
+        },
+        "OrderList": [{
+                "OrderName": "PEShowObject",//--必填-- 显示模型
+                "OrderParams": {
+                    "ObjectID": []//--必填-- SourceID列表
+                }
+            }
+        ]
+
+    }
+
+```
+
+:::
+
+
+## 隐藏模型
+::: details 完整结构
+
+```json5
+{
+        "CmdName": "PEShowOrHidden3dObject",
+        "Time": "",
+        "Platform": "",
+        "CmdParams": {
+
+        },
+        "OrderList": [
+            {
+                "OrderName": "PEHiddenObject",//--必填-- 隐藏模型
+                "OrderParams": {
+                    "ObjectID": []//--必填-- SourceID列表
+                }
+            }
+        ]
+
+    }
+
+```
+
+:::
+

+ 95 - 0
docs/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/相机定位.md

@@ -0,0 +1,95 @@
+# 相机控制
+
+::: details 目录
+[[toc]]
+:::
+
+## 定位到具体模型附近
+
+::: details 完整结构
+```json5
+{
+        "CmdName": "PECameraLookAtFor3dObject",
+        "Time": "",
+        "Platform": "",
+        "CmdParams": {
+
+        },
+        "OrderList": [
+            {
+            "OrderName": "PELookAt",//--必填-- 相机定位
+            "OrderParams": {
+                "ObjectID": "",//--必填-- SourceID
+                "Angle": 45,//相机距离目标所在水平面的的俯视角
+                "Scale": 20,//相机距离目标包围球的距离
+                "Time": {//相机定位动画时间控制
+                      "PositionTime": 1000,//默认1000毫秒
+                      "TargetTime": 500//中心点变更的时间 默认500毫秒
+                },
+                "Position": {//自定义相机位移到的目标坐标
+                    "x": 100,
+                    "y": 100,
+                    "z": 100
+                }
+            }
+        }
+    ]
+
+}
+```
+:::
+
+### 参数说明
+
+::: details ObjectID
+ObjectID就是设备/空间的SourceID
+:::
+
+::: details Position
+相机定位的原理是引擎自动根据ObjectID对应的3D模型计算出最小的包围球,然后根据设置的角度距离等计算出相机的终点位置,但是会存在个别设备模型被墙壁遮挡等情况,此时需要前端指定**Position**参数指定一个自定义的位置,则引擎会自动将相机直接移动到此位置,不在进行计算
+:::
+
+## 自定义相机运动位置
+
+::: details 完整结构
+```json5
+{
+        "CmdName": "PECameraLookAtFor3dObject",
+        "Time": "",
+        "Platform": "",
+        "CmdParams": {
+
+        },
+        "OrderList": [
+        {
+                "OrderName": "PELookAtPosition",//相机运动到指定的位置
+                "OrderParams": {
+                    "CustomPosition": {//自定义相机位置信息 如果不填写表示自动返回到场景初始化的默认位置
+                        "Position": {//相机位置
+                            "x": 100,
+                            "y": 100,
+                            "z": 100
+                        },
+                        "Rotation": {//相机角度
+                            "x": 100,
+                            "y": 100,
+                            "z": 100
+                        },
+                        "Target": {//场景的中心点
+                            "x": 100,
+                            "y": 100,
+                            "z": 100
+                        }
+                    },
+                    "Time": {//动画时间
+                        "PositionTime": 1000,//平移位置的动画时间
+                        "RotationTime": 1000,//平移角度的动画时间
+                        "TargetTime": 1000//中心点变更的时间
+                    }
+                }
+        }
+    ]
+
+}
+```
+:::

+ 73 - 0
docs/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/设置模型后期处理.md

@@ -0,0 +1,73 @@
+# 设置模型后期处理
+
+::: details 目录
+[[toc]]
+:::
+
+**注意事项**
+
+<font color=red>后期效果对想能损耗比较明显,但是目前代码逻辑并没有对前端做任何限制,所以需要根据具体业务场景酌情使用</font>
+
+## 发光外轮廓
+
+**逻辑说明**
+
+当收到PEAddOutLine一个指令之后会根据ObjectID列表对应的Config配置信息做判断是否需要重新初始一个新的后期对象用于显示轮廓,例如两个配置不同的ObjectList会初始化两个对象,如果配置相同则使用同一个对象显示这些ObjectList的轮廓,初始对象越多性能越差,所以需要尽力避免使用不同的配置效果。
+
+
+### 添加外轮廓
+
+::: details 完整结构
+
+```json5
+{
+        "CmdName": "PESetMeshEspecially",
+        "Time": "",
+        "Platform": "",
+        "CmdParams": {
+
+        },
+        "OrderList": [{
+                "OrderName": "PEAddOutLine",//为模型添加外轮廓
+                "OrderParams": {
+                    "ObjectID": [],//--必填-- SourceID列表
+                    "Config":{//轮廓的默认配置参数
+                        "edgeStrength": 10,//轮廓边缘强度 可以认为是轮廓粗细
+                        "edgeGlow": 0,//轮廓泛光强度 
+                        "edgeThickness": 2,//轮廓泛光浓度
+                        "pulsePeriod": 0,//轮廓闪烁频率 默认0 表示不闪烁
+                        "visibleEdgeColor": "#010793",//没有遮挡区域的轮廓显示颜色
+                        "hiddenEdgeColor": "#010793"//遮挡轮廓的显示颜色
+                    }
+                }
+            }
+        ]
+    }
+```
+
+:::
+
+### 删除外轮廓
+
+::: details 完整结构
+
+```json5
+{
+        "CmdName": "PESetMeshEspecially",
+        "Time": "",
+        "Platform": "",
+        "CmdParams": {
+
+        },
+        "OrderList": [
+            {
+                "OrderName": "PERemoveOutLine",//删除外轮廓
+                "OrderParams": {
+                    "ObjectID": []//--必填--
+                }
+            }
+        ]
+    }
+```
+
+:::

+ 35 - 0
docs/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/鼠标行为控制.md

@@ -0,0 +1,35 @@
+# 鼠标行为控制
+
+::: details 目录
+[[toc]]
+:::
+
+## 设置鼠标控制行为
+
+模型的点击事件默认会通过**PESend3dLog**指令发送给前端,也可以通过该指令指定具体的SourceID响应具体的事件
+
+::: details 完整结构
+
+```json
+{
+        "CmdName": "PEMouseController3dObject",
+        "Time": "",
+        "Platform": "",
+        "CmdParams": {},
+        "OrderList": [
+            {
+                "OrderName": "PESourceIDClick",//--必填-- 设置SourceID点击的接收事件
+                "OrderParams":{
+                    "ObjectID":[//SourceID列表
+                        ""
+                    ],
+                    "ClickEventName":[//事件列表 不允许重复注册
+                        ""
+                    ]
+                }
+            }
+        ]
+    }
+```
+
+:::

+ 30 - 0
docs/code3dServer/CodeDocument/JiChuHelp/基础概念.md

@@ -0,0 +1,30 @@
+# 名词解释
+
+::: details 目录
+[[toc]]
+:::
+
+
+## 3D
+
+### 场景
+
+场景就相当于是一个容器,比如我们说要加载一个场景,显示设备模型,那么就必须要先新建一个场景,然后场景中会自动包含灯光,控制器,相机等所有必要的元素。然后所有的模型等也都会在这个场景中显示,直到你不需要的时候卸载场景,那么就相当于把所有3D内容全都卸载了。
+
+### 相机
+
+相机相当于是我们的眼睛,可以看到场景中的东西。场景中所有的东西都是通过相机看到的。
+
+### 控制器
+
+控制器会自动捕获鼠标的事件,比如点击 拖拽等行为然后控制相机的**旋转 平移 缩放** 等行为,通过控制器我们就可以用鼠标自由的控制场景了。
+
+## 业务
+
+### SourceID
+
+模型数据解析之后每个模型都会有一个SourceID,这个ID与客户端从中台服务取到的数据中的ID是可以一一对应的。所有客户端对3D的所有操作行为都是以SourceID为单位进行操作的。
+
+比如:
+
+你从中台服务中取到一些设备的业务数据,每个设备都具有bimID,比如叫aa,那你就可以把aa这个ID扔给3D引擎,它会自动找到一个叫aa的模型去加载或者控制等行为。

+ 172 - 0
docs/code3dServer/CodeDocument/JiChuHelp/快速搭建.md

@@ -0,0 +1,172 @@
+
+# 快速开始
+
+::: details 目录
+[[toc]]
+:::
+
+
+## 实例工程
+
+###  安装依赖包
+
+```vue
+npm install persagy_web3d
+```
+
+### 初始化3D容器
+
+新建一个BIMView.vue组件作为页面中显示3D场景的容器,嵌入到你需要显示的页面中,例如页面A
+
+::: details BIMView.vue代码
+```vue
+<template>
+  <div class="BIMRootView">
+    <!-- 3D渲染容器 -->
+    <div id="CanvasRoot"></div>
+    <!-- 动态初始化DOM元素用于在3D场景中显示Vue组件 -->
+    <template>
+      <div
+        style="display: inline-block; width: auto; height: auto"
+        v-for="item in ViewList"
+        :key="item.id"
+        :id="item.id"
+      >
+        <component :is="item.name" :Param="item.data"></component>
+      </div>
+    </template>
+  </div>
+</template>
+
+<script>
+
+//引用3D类库
+import WEB3D from 'persagy_web3d'
+
+
+export default {
+  data: function () {
+    return {
+      ViewList:[]
+    };
+  },
+  components: {
+  },
+  created: function () {
+  },
+  mounted: function () {
+    //初始化3D场景
+    this.sceneConroller =new WEB3D.VueViewController(this);
+    //设置宣绒容器
+    this.sceneConroller.loadSceneView("CanvasRoot");
+  },
+  methods: {
+   
+  },
+  destroyed: function () {
+    //在组件卸载之前通知3D场景对象卸载场景
+    this.sceneConroller.destroyed();
+    this.sceneConroller = null;
+  },
+};
+</script>
+
+<style scoped>
+.BIMRootView {
+  height: 100%;     
+}
+#CanvasRoot {
+  width: 100%;
+  height: 100%;
+}
+
+</style>
+
+```
+
+* 因为WebGl3D渲染本质上是在一个Canvas容器中进行渲染3D图像,所以在BimView组件模板代码中需要声明一个id名称为CanvasRoot的div元素用于初始化Canvas元素
+
+* 当Vue模板渲染完成之后在mounted声明周期函数中初始化一个VueViewController类型对象,并将vue组件作为初始化参数传入,该对象会自动注册接收消息指令的事件,用于后续初始化场景。
+
+:::
+
+### 添加工程配置文件
+
+工程配置文件描述了场景应该具有的最基本的形态,比如相机默认位置,场景的背景色等各种信息
+
+在工程静态资源目录(public或者static)中新建PorjectConfig.json文件
+
+本实例是在public目录中新建JsonConfig目录,然后再JsonConfig目录中新建中新建PorjectConfig.json配置文件
+
+配置文件请直接从**配置文件->完整示例**目录中粘贴
+
+* 配置文件中的burl表示模型轻量化服务器的地址
+* 配置文件中的rurl表示需要获取的的资源目录
+
+
+### 发送指令
+
+在BIMView.vue的父组件中 也就是页面A 发送初始化场景的指令
+
+引用组件
+
+```js
+import WEB3D from "persagy_web3d";
+
+```
+
+发送初始化场景的指令
+
+::: details 页面A中发送指令代码
+
+```js
+
+let messageList = [
+        {
+          CmdName: "PEChengScene",
+          Time: "",
+          Platform: "",
+          CmdParams: {},
+          OrderList: [
+            {
+              OrderName: "PELoadScene",
+              OrderParams: {
+                SceneName: "PublicScene",
+                Configs: ["JsonConfig/PorjectConfig.json"],
+              },
+            },
+          ],
+        },
+        {
+          CmdName: "PEInitOrDelete3dObject",
+          Time: "",
+          Platform: "",
+          CmdParams: {},
+          OrderList: [
+            {
+              OrderName: "PEInitObject_V2",
+              OrderParams: {
+                URL: [
+                  {
+                    rootpath: "wanda/F03",
+                  },
+                ],
+              },
+            },
+          ],
+        },
+      ];
+      WEB3D.PEMessage.emitMessageList(messageList);
+
+```
+* PELoadScene指令中的Configs参数是一个配置文件地址url的数组,如果路径错误导致加载失败则无法初始化3D场景
+:::
+
+
+### 运行
+
+上述代码从轻量化服务器上加载万达项目下的F03楼层中所有的3D模型文件并展示
+
+::: details 展示结果
+![avatar](../../Images/3DSceneDemo.png) 
+:::

+ 49 - 0
docs/code3dServer/CodeDocument/JiChuHelp/框架概述.md

@@ -0,0 +1,49 @@
+# 引擎功能概述
+
+::: details 目录
+[[toc]]
+:::
+
+## 简介
+
+Web3D引擎以Npm包的形式集成在Web客户端代码中,然后通过加载配置文件方式自动去请求模型轻量化服务器中的模型数据并解析加载为Webgl在网页中显示
+
+## 加载流程
+
+客户端通过发送Json格式的**加载场景**指令通知引擎需要加载场景,引擎就会根据Json指令中的信息去服务器上拉取数据并解析渲染到客户端指定的Div容器中。
+
+
+![avatar](../../Images/Persagy_Web3d_GongZuoLiuCheng.png)
+
+## 控制流程
+
+场景加载完成之后,客户端可根据文档向引擎发送各种控制指令,引擎会根据Json指令的内容去对3D场景做各种控制操作,如果控制过程中产生异常信息也会已Json格式的形式发送给客户端
+
+![avatar](../../Images/KongZhiLiuCheng.png)
+
+## 通信方式
+
+客户端与引擎之间通信的方式是客户端通过发送指定的Json格式的指令**数组**去通知引擎做相应的操作,理论上客户端无法直接控制3D场景。
+
+在**指令介绍**目录中有详细的控制指令介绍
+
+## 配置文件
+
+引擎在加载场景的时候需要客户端提供一个场景配置文件的地址,引擎是先去下载配置文件信息,然后再去加载数据并根据配置文件去渲染场景。否则引擎不知道该如何去渲染场景。
+
+例如
+
+```json5
+{   
+    ...
+    "Scene": {
+        "background": "#151c2a"
+    }
+    ...
+}
+
+```
+
+配置文件中 配置场景背景色为蓝色,那么渲染出来的场景背景颜色就是蓝色。
+
+详细信息请翻阅**配置文件**目录

BIN
docs/code3dServer/Images/3DSceneDemo.png


BIN
docs/code3dServer/Images/FuWuQiMuLu.png


BIN
docs/code3dServer/Images/KongZhiLiuCheng.png


BIN
docs/code3dServer/Images/MoXingQingLiangHua.png


BIN
docs/code3dServer/Images/Persagy_Web3d_GongZuoLiuCheng.png


+ 87 - 0
docs/code3dServer/index.js

@@ -0,0 +1,87 @@
+const content = [
+    {
+        title: "基础使用",
+        children: [
+            {
+                title: '轻量化服务',
+                children: [
+                    ["/code3dServer/CodeDocument/JiChuHelp/QingLiangHuaFuWu/服务简介.md", "服务简介"],
+                    ["/code3dServer/CodeDocument/JiChuHelp/QingLiangHuaFuWu/文件信息.md", "模型服务"],
+                ]
+            },
+            ["/code3dServer/CodeDocument/JiChuHelp/框架概述.md", "引擎概述"],
+            ["/code3dServer/CodeDocument/JiChuHelp/基础概念.md", "基础概念"],
+            ["/code3dServer/CodeDocument/JiChuHelp/快速搭建.md", "快速搭建"],
+            {
+                title: '指令介绍',
+                path: '/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei',
+                children: [
+                    {
+                        title: '场景控制',
+                        children: [
+                            ["/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/切换场景.md", "加载/卸载场景"],
+                            ["/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/控制3D场景.md", "虚拟摇杆控制"],
+                            ["/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/场景裁切.md", "场景裁切"],
+                        ]
+                    },
+                    {
+                        title: '相机控制',
+                        children: [
+                            ["/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/相机定位.md", "相机定位"],
+                        ]
+                    },
+                    {
+                        title: '模型控制',
+                        children: [
+                            ["/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/Tooltip面板.md", "Tooltip显示"],
+                            ["/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/显示隐藏模型.md", "显示/隐藏"],
+                            ["/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/修改模型样式.md", "显示样式"],
+                            ["/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/加载卸载模型.md", "加载/卸载模型"],
+                            ["/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/客户端新建模型.md", "本地初始化模型"],
+                        ]
+                    },
+                    {
+                        title: '事件',
+                        children: [
+                            ["/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/鼠标行为控制.md", "点击事件"],
+                        ]
+                    },
+                    {
+                        title: '后期特效',
+                        children: [
+                            ["/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/设置模型后期处理.md", "发光外轮廓"],
+                        ]
+                    },
+                    {
+                        title: '辅助',
+                        children: [
+                            ["/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/3D加载数据查询.md", "3D加载信息查询"],
+                            ["/code3dServer/CodeDocument/JiChuHelp/XiaoXiFenLei/3D异常信息反馈.md", "接收3D日志"],
+                        ]
+                    }
+                ]
+            },
+            {
+                title: '工具类',
+                children: [
+                    ["/code3dServer/CodeDocument/JiChuHelp/ToolClass/PEMessage.md", "PEMessage"],
+                    ["/code3dServer/CodeDocument/JiChuHelp/ToolClass/VueViewController.md", "VueViewController"],
+                ]
+            },
+            {
+                title: '配置文件',
+                children: [
+                    ["/code3dServer/CodeDocument/JiChuHelp/ConfigFile/配置介绍.md", "配置介绍"],
+                    ["/code3dServer/CodeDocument/JiChuHelp/ConfigFile/完整示例.md", "完整示例"],
+                ]
+            },
+            ["/code3dServer/CodeDocument/JiChuHelp/Debugger/开发辅助功能.md", "开发辅助"],
+            ["/code3dServer/CodeDocument/JiChuHelp/ChangJianWenTi/常见问题.md", "常见问题"],
+        ]
+    },
+    {
+        title: "进阶使用",
+    },
+];
+
+module.exports = content;