gs-bim-air 0.0.3-0.1 → 0.0.3-0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/READMEBETA.md ADDED
@@ -0,0 +1,8 @@
1
+ ## 更新日志
2
+
3
+ ### 0.0.30.2
4
+ - 重构renderObject树的结构(非标项目多模型交互操作)
5
+ - 添加获取与修改Viewer相机信息的接口 (Viewer.camera)
6
+ - 添加设置右键菜单默认显示隐藏的开关配置 (Options.components.contextMenu.visible)
7
+ - 更新了路径平移动画的功能,添加了对应的demo和说明文档.
8
+
@@ -0,0 +1,202 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="utf-8">
6
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
7
+ <meta name="viewport" content="width=device-width,initial-scale=1.0">
8
+ <link rel="icon" href="<%= BASE_URL %>favicon.ico">
9
+ <title>NWH-BIMCloud</title>
10
+ <link rel="stylesheet" href="https://static.graphicstone.com/bimAir/BimAir.css">
11
+ <script src="https://static.graphicstone.com/vue.min.js"></script>
12
+ <script src="https://static.graphicstone.com/bimAir/BimAir.umd.min.js"></script>
13
+ </head>
14
+
15
+ <body>
16
+ <style>
17
+ body {
18
+ margin: 0;
19
+ padding: 0;
20
+ height: 100vh;
21
+ }
22
+
23
+ #app {
24
+ height: 100vh;
25
+ position: relative;
26
+ }
27
+ </style>
28
+ <div id="app">
29
+ <viewer-wrapper elementId="viewer" style="height: 100%; width: 100%" />
30
+ </div>
31
+
32
+ <script type="text/javascript">
33
+ new Vue({
34
+ el: '#app',
35
+ });
36
+ let options = {
37
+ // viewerType: "model",
38
+ elementId: "viewer",
39
+ modelService: "https://static.graphicstone.com/modelApi",
40
+ fileService: "https://static.graphicstone.com/fileApi",
41
+ background: "linear-gradient(#e3fcfc, #f6ffff)",
42
+ }
43
+
44
+ BimAir.Loader({ url: "https://static.graphicstone.com/bimAir" }).then(() => {
45
+ let viewer = new BimAir.Viewer(this.options);
46
+ viewer.isUpdateTt = true;
47
+
48
+ // 厂房Id
49
+ let modelId = "62b2f7aa3a591513fe1799b5";
50
+ // 肘管模型Id
51
+ let carObjId = "62b2f7a73a591513fe1799a9";
52
+ viewer
53
+ .loadModels([
54
+ { id: modelId, version: 0 },
55
+ { id: carObjId, version: 0 },
56
+ ])
57
+ .then((lightModels) => {
58
+ console.log("roam Test");
59
+ this.modelName = viewer.renderObject.name;
60
+
61
+
62
+ // 动画移动的对象
63
+ let moveObjId = "QMD+M+4G+HYD+XDRA01+EL002";
64
+ let key = BimAir.LonganCore.JS_Show_Key_By_Id(moveObjId);
65
+ let moveSegmentObject = new BimAir.SegmentObject(viewer, key);
66
+
67
+ let bb = viewer.computeViewBoundingBox(moveSegmentObject.segment);
68
+ let center = new Float64Array([
69
+ (bb[0] + bb[3]) / 2,
70
+ (bb[1] + bb[4]) / 2,
71
+ (bb[2] + bb[5]) / 2,
72
+ ])
73
+
74
+ let p0 = new BimAir.Longan.Point();
75
+ p0[0] = 380022.3124998525;
76
+ p0[1] = 39384.624999855165;
77
+ p0[2] = 3072.023193359375;
78
+
79
+ let p1 = new BimAir.Longan.Point();
80
+ p1[0] = center[0];
81
+ p1[1] = center[1];
82
+ p1[2] = center[2];
83
+
84
+ let p2 = new BimAir.Longan.Point();
85
+ p2[0] = 380022.3124998525;
86
+ p2[1] = 39484.624999855165;
87
+ p2[2] = 3072.023193359375;
88
+
89
+ let points = new Array();
90
+ points.push(p0);
91
+ points.push(p1);
92
+ points.push(p2);
93
+
94
+ // 绘制路径点线段(用来看的).
95
+ viewer.process.animationManager.drawStraight(points);
96
+
97
+ // 漫游时长
98
+ let roamTime = 10;
99
+ // 添加路径动画并返回动画事件的Id.
100
+ // 添加动画1
101
+ let animationId1 = viewer.process.animationManager.objectRoamWithoutRotate(moveSegmentObject, points, roamTime, PathType.Curve, () => {
102
+ console.log("finish1");
103
+ });
104
+
105
+
106
+
107
+ let animationId2 = "";
108
+ setTimeout(() => {
109
+ let moveObjId = "QMD+M+4G+HYD+XDRA01+EL001";
110
+ // 动画2移动的对象
111
+ let key = JS_Show_Key_By_Id(moveObjId);
112
+ let moveSegmentObject = new BimAir.SegmentObject(viewer, key);
113
+
114
+ let bb = viewer.computeViewBoundingBox(moveSegmentObject.segment);
115
+ let center = new Float64Array([
116
+ (bb[0] + bb[3]) / 2,
117
+ (bb[1] + bb[4]) / 2,
118
+ (bb[2] + bb[5]) / 2,
119
+ ])
120
+
121
+ let p0 = new BimAir.Longan.Point();
122
+ p0[0] = 380022.3124998525;
123
+ p0[1] = 39384.624999855165;
124
+ p0[2] = 3072.023193359375;
125
+
126
+ let p1 = new BimAir.Longan.Point();
127
+ p1[0] = center[0];
128
+ p1[1] = center[1];
129
+ p1[2] = center[2];
130
+
131
+ let p2 = new BimAir.Longan.Point();
132
+ p2[0] = 380022.3124998525;
133
+ p2[1] = 39484.624999855165;
134
+ p2[2] = 3072.023193359375;
135
+
136
+ let points = new Array();
137
+ points.push(p0);
138
+ points.push(p1);
139
+ points.push(p2);
140
+
141
+ // 添加动画2
142
+ animationId2 = viewer.process.animationManager.objectRoamWithoutRotate(moveSegmentObject, points, roamTime, PathType.Straight, () => {
143
+ console.log("finish2");
144
+ });
145
+ }, 5000);
146
+
147
+ // 在两秒后,播放全部动画,此时只有动画1
148
+ setTimeout(() => {
149
+ viewer.process.animationManager.run();
150
+ }, 2000);
151
+
152
+ // 8秒后,暂停动画1
153
+ setTimeout(() => {
154
+ let palyingPercent = viewer.process.animationManager.pauseAnime(animationId1);
155
+ console.log("playing:", palyingPercent);
156
+ }, 8000);
157
+
158
+ // 9秒后,重启动画1
159
+ setTimeout(() => {
160
+ viewer.process.animationManager.run([animationId1]);
161
+ }, 9000);
162
+
163
+ // 14秒后,复原所有物体位置
164
+ // 若物体的动画已结束,则复位.否则,不会.
165
+ // 此时动画1已结束,动画2未结束..因此动画1的物体会复位,而动画2不会.
166
+ setTimeout(() => {
167
+ viewer.process.animationManager.resetAnimationItems();
168
+ console.log("reset1");
169
+ }, 14000);
170
+
171
+ // 18秒后,复原所有物体位置.
172
+ // 此时动画1已结束,动画2已结束..因此都会复位
173
+ setTimeout(() => {
174
+ viewer.process.animationManager.resetAnimationItems();
175
+ console.log("reset2");
176
+ }, 18000);
177
+
178
+ // 19秒后,从头开始播放动画2
179
+ setTimeout(() => {
180
+ viewer.process.animationManager.restartAnime(animationId2);
181
+ }, 19000);
182
+
183
+ //20秒后,先删除动画1,再添加动画3
184
+ let animationId3 = "";
185
+ setTimeout(() => {
186
+ viewer.process.animationManager.removeAnime(animationId1);
187
+ animationId3 = viewer.process.animationManager.objectRoamWithoutRotate(moveSegmentObject, points, roamTime, PathType.Straight, () => {
188
+ console.log("finish3")
189
+ });
190
+ viewer.process.animationManager.run([animationId3]);
191
+ }, 20000);
192
+
193
+ // 25秒后,停止播放动画2,并将segmentObject复位.
194
+ setTimeout(() => {
195
+ viewer.process.animationManager.stopAnime(animationId2, true);
196
+ }, 25000);
197
+ });
198
+ });
199
+ </script>
200
+ </body>
201
+
202
+ </html>
@@ -127,7 +127,7 @@ ___
127
127
 
128
128
  ### getProperty
129
129
 
130
- ▸ **getProperty**(`segmentObject`): `Promise`<`any`\>
130
+ ▸ **getProperty**(`segmentObject`): `Promise`<`any`[]\>
131
131
 
132
132
  #### Parameters
133
133
 
@@ -137,7 +137,7 @@ ___
137
137
 
138
138
  #### Returns
139
139
 
140
- `Promise`<`any`\>
140
+ `Promise`<`any`[]\>
141
141
 
142
142
  ___
143
143
 
@@ -82,6 +82,7 @@
82
82
 
83
83
  - [aspectRatio](Viewer.md#aspectratio)
84
84
  - [backgroundColor](Viewer.md#backgroundcolor)
85
+ - [camera](Viewer.md#camera)
85
86
  - [cameraOrientationFixed](Viewer.md#cameraorientationfixed)
86
87
  - [dynamicMemory](Viewer.md#dynamicmemory)
87
88
  - [freeze](Viewer.md#freeze)
@@ -148,6 +149,7 @@
148
149
  - [initManagers](Viewer.md#initmanagers)
149
150
  - [instantiateRenderObject](Viewer.md#instantiaterenderobject)
150
151
  - [loadLocalModel](Viewer.md#loadlocalmodel)
152
+ - [loadModelByMCA](Viewer.md#loadmodelbymca)
151
153
  - [loadModels](Viewer.md#loadmodels)
152
154
  - [locateObject](Viewer.md#locateobject)
153
155
  - [locatePoint](Viewer.md#locatepoint)
@@ -852,6 +854,32 @@ Longan.Viewer.backgroundColor
852
854
 
853
855
  ___
854
856
 
857
+ ### camera
858
+
859
+ • `get` **camera**(): `default`
860
+
861
+ 获取Viewer相机信息
862
+
863
+ #### Returns
864
+
865
+ `default`
866
+
867
+ • `set` **camera**(`camera`): `void`
868
+
869
+ 设置Viewer相机信息
870
+
871
+ #### Parameters
872
+
873
+ | Name | Type |
874
+ | :------ | :------ |
875
+ | `camera` | `default` |
876
+
877
+ #### Returns
878
+
879
+ `void`
880
+
881
+ ___
882
+
855
883
  ### cameraOrientationFixed
856
884
 
857
885
  • `get` **cameraOrientationFixed**(): `boolean`
@@ -2079,7 +2107,7 @@ ___
2079
2107
 
2080
2108
  ### loadLocalModel
2081
2109
 
2082
- ▸ **loadLocalModel**(`path`, `name`): `Promise`<[`LightModel`](LightModel.md)\>
2110
+ ▸ **loadLocalModel**(`path`, `name`): `Promise`<`RenderObject`\>
2083
2111
 
2084
2112
  加载本地gsl文件
2085
2113
 
@@ -2092,12 +2120,28 @@ ___
2092
2120
 
2093
2121
  #### Returns
2094
2122
 
2095
- `Promise`<[`LightModel`](LightModel.md)\>
2123
+ `Promise`<`RenderObject`\>
2096
2124
 
2097
2125
  模型
2098
2126
 
2099
2127
  ___
2100
2128
 
2129
+ ### loadModelByMCA
2130
+
2131
+ ▸ **loadModelByMCA**(`mca`): `Promise`<`RenderObject`\>
2132
+
2133
+ #### Parameters
2134
+
2135
+ | Name | Type |
2136
+ | :------ | :------ |
2137
+ | `mca` | `any` |
2138
+
2139
+ #### Returns
2140
+
2141
+ `Promise`<`RenderObject`\>
2142
+
2143
+ ___
2144
+
2101
2145
  ### loadModels
2102
2146
 
2103
2147
  ▸ **loadModels**(`modelIds`, `isReplace?`, `isSingleModel?`): `Promise`<[`LightModel`](LightModel.md)[]\>
@@ -0,0 +1,123 @@
1
+ # 快速上手
2
+
3
+ ## 安装
4
+
5
+ ### NPM
6
+ ```
7
+ # 最新稳定版
8
+ $ npm install gs-bim-air
9
+ ```
10
+
11
+ #### 添加静态资源
12
+ 从gs-bim-air安装包里复的public文件夹复制js文件夹到Vue项目的静态资源目录(通常为public目录),复制后路径为:
13
+
14
+ > public\js\lzma\lzma.js
15
+
16
+ > public\js\longanWithoutShareArrayBuffer\longan.js
17
+ > public\js\longanWithoutShareArrayBuffer\longan.wasm
18
+
19
+ #### vue用法
20
+ ```html
21
+ <template>
22
+ <div id="app">
23
+ <div id="viewerWrapper">
24
+ <viewer-wrapper elementId="viewer" ></viewer-wrapper>
25
+ </div>
26
+ </div>
27
+ </template>
28
+ <script>
29
+ import Vue from "vue";
30
+ import BimAir from 'gs-bim-air'
31
+ import 'gs-bim-air/lib/BimAir.css'
32
+
33
+ Vue.use(BimAir.ViewerWrapper);
34
+
35
+ export default {
36
+ name: "App",
37
+ components: {},
38
+ methods: {
39
+ },
40
+
41
+ mounted() {
42
+ let options = {
43
+ elementId: "viewer",
44
+ modelService: "https://static.graphicstone.com/modelApi",
45
+ fileService: "https://static.graphicstone.com/fileApi",
46
+ };
47
+
48
+ BimAir.Loader().then(() => {
49
+ let viewer = new BimAir.Viewer(options);
50
+
51
+ viewer.loadModels(["6253e9d6b0545a0a6e49bf85"]).then(() => {
52
+ viewer.fitWorld();
53
+ });
54
+ });
55
+ },
56
+ };
57
+ </script>
58
+
59
+ <style>
60
+ #app {
61
+ margin: 0;
62
+ padding: 0;
63
+ height: 100vh;
64
+ }
65
+
66
+ #viewerWrapper {
67
+ height: 100vh;
68
+ }
69
+ </style>
70
+ ```
71
+
72
+ ### 直接用 &lt;script&gt; 引入
73
+ ```html
74
+ <!DOCTYPE html>
75
+ <html>
76
+ <head>
77
+ <meta charset="UTF-8">
78
+ <title>引入BimAir</title>
79
+ <link rel="stylesheet" href="https://static.graphicstone.com/bimAir/BimAir.css">
80
+ <script src="https://static.graphicstone.com/vue.min.js"></script>
81
+ <script src="https://static.graphicstone.com/bimAir/BimAir.umd.min.js"></script>
82
+ </head>
83
+
84
+ <body>
85
+ <style>
86
+ body {
87
+ margin: 0;
88
+ padding: 0;
89
+ height: 100vh;
90
+ }
91
+
92
+ #app {
93
+ height: 100vh;
94
+ position: relative;
95
+ }
96
+ </style>
97
+ <div id="app">
98
+ <viewer-wrapper elementId="viewer" style="height: 100%; width: 100%" />
99
+ </div>
100
+
101
+ <script type="text/javascript">
102
+ new Vue({
103
+ el: '#app',
104
+ });
105
+
106
+ let options = {
107
+ elementId: "viewer",
108
+ modelService: "https://static.graphicstone.com/modelApi",
109
+ fileService: "https://static.graphicstone.com/fileApi",
110
+ }
111
+ BimAir.Loader({ url: "https://static.graphicstone.com/bimAir" }).then(() => {
112
+ let viewer = new BimAir.Viewer(options)
113
+ let modelId = "624fff10aba44c07ef4b184e";
114
+ viewer.loadModels(["624fff10aba44c07ef4b184e"])
115
+ viewer.fitWorld();
116
+ })
117
+ </script>
118
+ </body>
119
+ </html>
120
+ ```
121
+
122
+
123
+
@@ -0,0 +1,39 @@
1
+ # 轻量化云平台简介
2
+ 轻量化云平台是基于云的BIM模型轻量化管理及应用平台,它由模型轻量化转换工具,基于WebGL的三维显示引擎和平台开发功能包组成。
3
+
4
+ ## 平台架构
5
+ <center>
6
+
7
+ ```mermaid
8
+ graph LR
9
+ subgraph 模型转换
10
+     n1("BIM模型(rvt、CATPart,dgn,IFC)") --> n2("模型轻量化引擎") --> n3("BIM轻量化模型(gsl)")
11
+ end
12
+
13
+
14
+ ```
15
+ <font size=10>**↓**</font>
16
+ ```mermaid
17
+ graph LR
18
+ subgraph 文件管理
19
+ n4("ModelCloud云服务平台")
20
+
21
+ end
22
+ ```
23
+ <font size=10>↓</font>
24
+ ```mermaid
25
+ graph LR
26
+ subgraph 模型绘制
27
+ n5("Longan绘制引擎(Web版,基于WebGL)")
28
+ end
29
+ ```
30
+
31
+ </center>
32
+
33
+ ## 开发环境。
34
+ 轻量化云平台的API主要分两类:<br/>
35
+ 1.基于前端开发的JS API,并提供Type Script声明文件以方便进行基于TS的开发。<br/>
36
+ 2.基于服务器端的Web API。<br/>
37
+
38
+
39
+