mxdraw 0.0.17 → 0.1.2

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.
Files changed (106) hide show
  1. package/LICENSE +1 -0
  2. package/README.md +74 -169
  3. package/dist/lib/MxModule/McEdGetPointWorldDrawObject/McEdGetPointWorldDrawObjectClass.js +22 -11
  4. package/dist/lib/MxModule/McEdGetPointWorldDrawObject/index.js +0 -1
  5. package/dist/lib/MxModule/McGiWorldDraw/McGiWorldDraw.js +2 -0
  6. package/dist/lib/MxModule/McGiWorldDraw/index.js +2 -0
  7. package/dist/lib/MxModule/McGiWorldDrawType/McGiWorldDrawType.js +19 -0
  8. package/dist/lib/MxModule/McGiWorldDrawType/index.js +4 -0
  9. package/dist/lib/MxModule/MrxDbgUiPrBaseReturn/MrxDbgUiPrBaseReturn.js +0 -1
  10. package/dist/lib/MxModule/MrxDbgUiPrBaseReturn/index.js +0 -1
  11. package/dist/lib/MxModule/MrxDbgUiPrPoint/MrxDbgUiPrPointClass.js +0 -1
  12. package/dist/lib/MxModule/MrxDbgUiPrPoint/index.js +0 -1
  13. package/dist/lib/MxModule/MxDbEntity/MxDbEntity.js +174 -0
  14. package/dist/lib/MxModule/MxDbEntity/index.js +5 -0
  15. package/dist/lib/MxModule/MxDrawObject/MxDrawObject.js +401 -27
  16. package/dist/lib/MxModule/MxDrawObject/index.js +0 -1
  17. package/dist/lib/MxModule/MxFun/MxFun.js +84 -22
  18. package/dist/lib/MxModule/MxFun/index.js +0 -1
  19. package/dist/lib/MxModule/MxThreeJS/MxThreeJS.js +5 -35
  20. package/dist/lib/MxModule/MxThreeJS/MxThreeJS.mixin.js +71 -29
  21. package/dist/lib/MxModule/MxThreeJS/SVGLoader.js +4 -5
  22. package/dist/lib/MxModule/MxThreeJS/index.js +0 -1
  23. package/dist/lib/MxModule/MxType/MxType.js +27 -0
  24. package/dist/lib/MxModule/MxType/index.js +4 -0
  25. package/dist/lib/MxModule/loadCoreCode/index.js +0 -1
  26. package/dist/lib/MxModule/loadCoreCode/loadCoreCode.js +48 -41
  27. package/dist/lib/MxModule/loadCoreCode/mxfun.es5.js +1164 -943
  28. package/dist/lib/MxModule/store/PubsubClass.js +0 -1
  29. package/dist/lib/MxModule/store/StoreClass.js +0 -1
  30. package/dist/lib/MxModule/store/index.js +0 -1
  31. package/dist/lib/MxModule/store/store.js +0 -1
  32. package/dist/lib/MxModule/useCanvasResizeListener/index.js +0 -1
  33. package/dist/lib/MxModule/useCanvasResizeListener/useCanvasResizeListener.js +77 -25
  34. package/dist/lib/doc.js +5 -2
  35. package/dist/lib/mxdraw.js +12 -4
  36. package/dist/lib/tools/algorithm/math.js +0 -1
  37. package/dist/lib/tools/algorithm/random.js +0 -1
  38. package/dist/lib/tools/dom/create.js +0 -1
  39. package/dist/lib/tools/dynamicImport/index.js +142 -0
  40. package/dist/lib/tools/formatting/index.js +0 -1
  41. package/dist/lib/tools/proxy/index.js +0 -1
  42. package/dist/lib/tools/three/index.js +0 -1
  43. package/dist/lib/types/McEdGetPointWorldDrawObject.js +2 -0
  44. package/dist/lib/types/MrxDbgUiPrPoint.js +2 -0
  45. package/dist/lib/types/MxCADObject.js +3 -0
  46. package/dist/lib/types/MxDrawObject.js +2 -0
  47. package/dist/lib/types/MxFun.js +2 -0
  48. package/dist/mxdraw.es5.js +28 -3
  49. package/dist/mxdraw.es5.js.map +1 -1
  50. package/dist/mxdraw.umd.js +29 -4
  51. package/dist/mxdraw.umd.js.map +1 -1
  52. package/dist/types/MxModule/McEdGetPointWorldDrawObject/McEdGetPointWorldDrawObjectClass.d.ts +12 -2
  53. package/dist/types/MxModule/McGiWorldDraw/McGiWorldDraw.d.ts +227 -0
  54. package/dist/types/MxModule/McGiWorldDraw/index.d.ts +2 -0
  55. package/dist/types/MxModule/McGiWorldDrawType/McGiWorldDrawType.d.ts +16 -0
  56. package/dist/types/MxModule/McGiWorldDrawType/index.d.ts +2 -0
  57. package/dist/types/MxModule/MrxDbgUiPrPoint/MrxDbgUiPrPointClass.d.ts +1 -1
  58. package/dist/types/MxModule/MxDbEntity/MxDbEntity.d.ts +198 -0
  59. package/dist/types/MxModule/MxDbEntity/index.d.ts +3 -0
  60. package/dist/types/MxModule/MxDrawObject/MxDrawObject.d.ts +317 -1
  61. package/dist/types/MxModule/MxFun/MxFun.d.ts +66 -20
  62. package/dist/types/MxModule/MxThreeJS/MxThreeJS.d.ts +11 -14
  63. package/dist/types/MxModule/MxType/MxType.d.ts +24 -0
  64. package/dist/types/MxModule/MxType/index.d.ts +2 -0
  65. package/dist/types/MxModule/store/store.d.ts +1 -1
  66. package/dist/types/MxModule/useCanvasResizeListener/useCanvasResizeListener.d.ts +9 -5
  67. package/dist/types/doc.d.ts +4 -1
  68. package/dist/types/mxdraw.d.ts +8 -2
  69. package/dist/types/tools/dynamicImport/index.d.ts +1 -0
  70. package/dist/types/types/McEdGetPointWorldDrawObject.d.ts +9 -0
  71. package/dist/types/types/MrxDbgUiPrPoint.d.ts +23 -0
  72. package/dist/types/types/MxCADObject.d.ts +40 -0
  73. package/dist/types/types/MxDrawObject.d.ts +57 -0
  74. package/dist/types/types/MxFun.d.ts +37 -0
  75. package/package.json +8 -3
  76. package/dist/lib/MxModule/McEdGetPointWorldDrawObject/McEdGetPointWorldDrawObjectClass.js.map +0 -1
  77. package/dist/lib/MxModule/McEdGetPointWorldDrawObject/index.js.map +0 -1
  78. package/dist/lib/MxModule/MrxDbgUiPrBaseReturn/MrxDbgUiPrBaseReturn.js.map +0 -1
  79. package/dist/lib/MxModule/MrxDbgUiPrBaseReturn/index.js.map +0 -1
  80. package/dist/lib/MxModule/MrxDbgUiPrPoint/MrxDbgUiPrPointClass.js.map +0 -1
  81. package/dist/lib/MxModule/MrxDbgUiPrPoint/index.js.map +0 -1
  82. package/dist/lib/MxModule/MxDrawObject/MxDrawObject.js.map +0 -1
  83. package/dist/lib/MxModule/MxDrawObject/index.js.map +0 -1
  84. package/dist/lib/MxModule/MxFun/MxFun.js.map +0 -1
  85. package/dist/lib/MxModule/MxFun/index.js.map +0 -1
  86. package/dist/lib/MxModule/MxThreeJS/MxThreeJS.js.map +0 -1
  87. package/dist/lib/MxModule/MxThreeJS/MxThreeJS.mixin.js.map +0 -1
  88. package/dist/lib/MxModule/MxThreeJS/SVGLoader.js.map +0 -1
  89. package/dist/lib/MxModule/MxThreeJS/index.js.map +0 -1
  90. package/dist/lib/MxModule/loadCoreCode/index.js.map +0 -1
  91. package/dist/lib/MxModule/loadCoreCode/loadCoreCode.js.map +0 -1
  92. package/dist/lib/MxModule/loadCoreCode/mxfun.es5.js.map +0 -1
  93. package/dist/lib/MxModule/store/PubsubClass.js.map +0 -1
  94. package/dist/lib/MxModule/store/StoreClass.js.map +0 -1
  95. package/dist/lib/MxModule/store/index.js.map +0 -1
  96. package/dist/lib/MxModule/store/store.js.map +0 -1
  97. package/dist/lib/MxModule/useCanvasResizeListener/index.js.map +0 -1
  98. package/dist/lib/MxModule/useCanvasResizeListener/useCanvasResizeListener.js.map +0 -1
  99. package/dist/lib/doc.js.map +0 -1
  100. package/dist/lib/mxdraw.js.map +0 -1
  101. package/dist/lib/tools/algorithm/math.js.map +0 -1
  102. package/dist/lib/tools/algorithm/random.js.map +0 -1
  103. package/dist/lib/tools/dom/create.js.map +0 -1
  104. package/dist/lib/tools/formatting/index.js.map +0 -1
  105. package/dist/lib/tools/proxy/index.js.map +0 -1
  106. package/dist/lib/tools/three/index.js.map +0 -1
@@ -1,11 +1,19 @@
1
1
  "use strict";
2
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
+ if (ar || !(i in from)) {
5
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
+ ar[i] = from[i];
7
+ }
8
+ }
9
+ return to.concat(ar || Array.prototype.slice.call(from));
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  var random_1 = require("../../tools/algorithm/random");
4
13
  var create_1 = require("../../tools/dom/create");
5
14
  var proxy_1 = require("../../tools/proxy");
6
15
  var MxDrawObject_1 = require("../MxDrawObject");
7
16
  var store_1 = require("../store/store");
8
- var _mxdrawObj;
9
17
  /**
10
18
  * MxFun 模块
11
19
  * 导出库时已实例化,只需要调用实例方法 例如:
@@ -22,7 +30,7 @@ var MxFun = /** @class */ (function () {
22
30
  * 创建图纸展示控件实例
23
31
  * @param canvasId 提供一个canvas元素或者唯一的ID或者class类亦或者Jquery选中的元素
24
32
  * @paramType string | HTMLCanvasElement | JQuery<HTMLElement>
25
- * @param drawName 提供要展示的图纸名称
33
+ * @param cadFile 提供要展示的图纸名称
26
34
  * @paramType string
27
35
  * @param callback 图纸展示控件创建完成后的回调函数 回调参数mxDraw和dom
28
36
  * @paramType function
@@ -33,7 +41,7 @@ var MxFun = /** @class */ (function () {
33
41
  * ``` typescript
34
42
  * Mx.MxFun.createMxObject({
35
43
  * canvasId: "my-app",
36
- * drawName: "test2.dwg",
44
+ * cadFile: "test2.dwg",
37
45
  * callback(mxDraw, { canvas, canvasParent }) {
38
46
  * console.log(mxDraw, canvas, canvasParent)
39
47
  * },
@@ -42,8 +50,7 @@ var MxFun = /** @class */ (function () {
42
50
  * ```
43
51
  */
44
52
  MxFun.prototype.createMxObject = function (_a) {
45
- var _this = this;
46
- var _b = _a.canvasId, canvasId = _b === void 0 ? (0, random_1.createReandomId)() : _b, _c = _a.drawName, drawName = _c === void 0 ? 'test2.dwg' : _c, callback = _a.callback, _d = _a.isNewFile, isNewFile = _d === void 0 ? true : _d;
53
+ var _b = _a.canvasId, canvasId = _b === void 0 ? (0, random_1.createReandomId)() : _b, _c = _a.cadFile, cadFile = _c === void 0 ? 'test2.dwg' : _c, callback = _a.callback, _d = _a.isNewFile, isNewFile = _d === void 0 ? true : _d;
47
54
  // 获取canvas和其父级
48
55
  var canvas = (0, create_1.createCanvas)(canvasId);
49
56
  var canvasParent = (0, create_1.createCanvasParent)(canvas);
@@ -57,8 +64,8 @@ var MxFun = /** @class */ (function () {
57
64
  // canvasParent.style.position = 'relative';
58
65
  // 创建实例
59
66
  ;
60
- store_1.default.state.MxFun.createMxObject(canvasId, drawName, function (mxDraw) {
61
- _mxdrawObj = new MxDrawObject_1.default(mxDraw);
67
+ store_1.default.state.MxFun.createMxObject(canvasId, cadFile, function (mxDraw) {
68
+ var mxdrawObj = new MxDrawObject_1.default(mxDraw);
62
69
  mxDraw.setMouseRightRotate(false);
63
70
  mxDraw.setIniset({ EnableOsnapFunction: true });
64
71
  mxDraw.addEvent('onResize', function () {
@@ -69,7 +76,7 @@ var MxFun = /** @class */ (function () {
69
76
  };
70
77
  });
71
78
  callback &&
72
- callback.call(_this, _mxdrawObj, {
79
+ callback(mxdrawObj, {
73
80
  canvas: canvas,
74
81
  canvasParent: canvasParent
75
82
  });
@@ -143,7 +150,12 @@ var MxFun = /** @class */ (function () {
143
150
  * ```
144
151
  */
145
152
  MxFun.prototype.sendStringToExecute = function (cmdName) {
146
- return store_1.default.state.MxFun.sendStringToExecute(cmdName);
153
+ var _a;
154
+ var ages = [];
155
+ for (var _i = 1; _i < arguments.length; _i++) {
156
+ ages[_i - 1] = arguments[_i];
157
+ }
158
+ return (_a = store_1.default.state.MxFun).sendStringToExecute.apply(_a, __spreadArray([cmdName], ages, false));
147
159
  };
148
160
  /**
149
161
  * 调用后台服务程序中的NodeJS用户定义函数 后台程序使用Mx.MxFun.registFun注册用户定义函数
@@ -154,7 +166,7 @@ var MxFun = /** @class */ (function () {
154
166
  * @example
155
167
  * ``` typescript
156
168
  * Mx.MxFun.call("getDrawObject", {
157
- * drawName: "test.dwg"
169
+ * cadFile: "test.dwg"
158
170
  * }, (res)=> {
159
171
  * console.log(res)
160
172
  * })
@@ -173,8 +185,7 @@ var MxFun = /** @class */ (function () {
173
185
  * ```
174
186
  */
175
187
  MxFun.prototype.getCurrentDraw = function () {
176
- return _mxdrawObj;
177
- // return (store.state.MxFun as MxFunType).getCurrentDraw()
188
+ return new MxDrawObject_1.default(store_1.default.state.MxFun.getCurrentDraw());
178
189
  };
179
190
  /**
180
191
  * 屏幕坐标长度转THREE.JS坐标长度
@@ -202,6 +213,18 @@ var MxFun = /** @class */ (function () {
202
213
  MxFun.prototype.worldCoordLong2Doc = function (len) {
203
214
  return store_1.default.state.MxFun.worldCoordLong2Doc(len);
204
215
  };
216
+ /**
217
+ * DWG文档坐标长度到ThreeJS坐标长度
218
+ * @returns number
219
+ * @example
220
+ * ```typescript
221
+ *
222
+ *
223
+ * ```
224
+ */
225
+ MxFun.prototype.docCoordLong2World = function (l) {
226
+ return store_1.default.state.MxFun.docCoordLong2World(l);
227
+ };
205
228
  /**
206
229
  * 屏幕坐标转THREE.JS坐标.
207
230
  * @param x 坐标x
@@ -218,7 +241,7 @@ var MxFun = /** @class */ (function () {
218
241
  return store_1.default.state.MxFun.screenCoord2World(x, y, z);
219
242
  };
220
243
  /**
221
- * THREE.JS坐标转屏幕坐标.
244
+ * THREE.JS坐标转屏幕坐标.,屏幕坐标的Y轴向下。坐标原点在左上角.
222
245
  * @param x 坐标x
223
246
  * @param y 坐标y
224
247
  * @param z 坐标z
@@ -234,6 +257,7 @@ var MxFun = /** @class */ (function () {
234
257
  };
235
258
  /**
236
259
  * 文档坐标转THREE.JS坐标
260
+ * 说明: 文档坐标,THREE.JS坐标的X轴都是从左到右,Y轴是下到上,但是屏幕像素坐标系:X轴都是从左到右,Y轴是上到下
237
261
  * @param x 坐标x
238
262
  * @param y 坐标y
239
263
  * @param z 坐标z
@@ -383,8 +407,8 @@ var MxFun = /** @class */ (function () {
383
407
  * ```
384
408
  */
385
409
  MxFun.prototype.getCurrentMxCAD = function () {
386
- return _mxdrawObj;
387
- // return (store.state.MxFun as MxFunType).getCurrentMxCAD()
410
+ // 暂时还没有实现。
411
+ return store_1.default.state.MxFun.getCurrentMxCAD();
388
412
  };
389
413
  /**
390
414
  * 得到地址栏参数
@@ -399,18 +423,14 @@ var MxFun = /** @class */ (function () {
399
423
  return store_1.default.state.MxFun.getQueryString(name);
400
424
  };
401
425
  /**
402
- * 设置控件的配制参数. Mx.MxFun.createMxObject的 callback回调函数中调用.
426
+ * 设置控件的配制参数.
403
427
  * @param name
404
- * @return string 地址栏参数
428
+ * @return object 配制参数.
405
429
  * @example
406
430
  * ``` typescript
407
- * Mx.MxFun.createMxObject({
408
- * callback() {
409
431
  * Mx.MxFun.setIniset({
410
432
  * EnableIntelliSelect: true
411
433
  * })
412
- * }
413
- * })
414
434
  * ```
415
435
  */
416
436
  MxFun.prototype.setIniset = function (iniObj) {
@@ -455,7 +475,49 @@ var MxFun = /** @class */ (function () {
455
475
  MxFun.prototype.testMX = function (p) {
456
476
  return 5 + 6;
457
477
  };
478
+ /**
479
+ * 加载一个图片对象,返回Three.js材质对象,该函数具有缓存功能,下次加载同样的图片,可以直接返回.
480
+ * @param p
481
+ * @return any
482
+ * @example
483
+ * ``` typescript
484
+ *
485
+ * ```
486
+ */
487
+ MxFun.prototype.loadImageMaterial = function (imageUrlPath, callResult) {
488
+ return store_1.default.state.MxFun.loadImageMaterial(imageUrlPath, callResult);
489
+ };
490
+ /**
491
+ * 判断点是否在一个闭合的多边形区域。
492
+ * @param p
493
+ * @return any
494
+ * @example
495
+ * ``` typescript
496
+ * let aryPoint:Array<THREE.Vector3> = [];
497
+ * aryPoint.push(new THREE.Vector3(0,0,0));
498
+ * aryPoint.push(new THREE.Vector3(0,100,0));
499
+ * aryPoint.push(new THREE.Vector3(100,100,0));
500
+ * aryPoint.push(new THREE.Vector3(100,0,0));
501
+ * let pt:THREE.Vector3 = new THREE.Vector3(150,150);
502
+ * if(MxFun.pointInPolyline(pt,aryPoint) ){
503
+ * console.log("in");
504
+ * }
505
+ * ```
506
+ */
507
+ MxFun.prototype.pointInPolyline = function (pt, vecPolyline) {
508
+ return store_1.default.state.MxFun.pointInPolyline(pt, vecPolyline);
509
+ };
510
+ /**
511
+ * 计算多边形区域的面积
512
+ * @param p
513
+ * @return any
514
+ * @example
515
+ * ``` typescript
516
+ * ```
517
+ */
518
+ MxFun.prototype.calcArea = function (aryPoint) {
519
+ return store_1.default.state.MxFun.calcArea(aryPoint);
520
+ };
458
521
  return MxFun;
459
522
  }());
460
523
  exports.default = MxFun;
461
- //# sourceMappingURL=MxFun.js.map
@@ -7,4 +7,3 @@ var MxFun_1 = require("./MxFun");
7
7
  // loadCoreCode()
8
8
  // }
9
9
  exports.default = new MxFun_1.default();
10
- //# sourceMappingURL=index.js.map
@@ -139,8 +139,8 @@ var MxThreeJS = /** @class */ (function () {
139
139
  context.font = sFont;
140
140
  context.textAlign = 'center';
141
141
  context.textBaseline = 'middle';
142
- var sColor = (0, formatting_1.formatString)('#{0}', iColor.toString(16));
143
- context.fillStyle = sColor;
142
+ context.fillStyle = (0, formatting_1.formatString)('rgba({0}, {1}, {2}, 1.0)', ((iColor >> 16) & 0xff) + "", ((iColor >> 8) & 0xff) + "", (iColor & 0xff) + "");
143
+ //const sColor = formatString('#{0}', iColor.toString(16))
144
144
  context.fillText(message, textWidth / 2, textHeight / 2);
145
145
  var texture = new three_1.Texture(canvas);
146
146
  texture.needsUpdate = true;
@@ -241,7 +241,7 @@ var MxThreeJS = /** @class */ (function () {
241
241
  };
242
242
  /**
243
243
  * 创建Image
244
- * @param pos 图片位置
244
+ * @param pos 图片中心点位置,屏幕坐标,屏幕坐标的Y轴向上。坐标原点在左下角.
245
245
  * @param w 图片宽度
246
246
  * @param h 图片高度
247
247
  * @param imageUrlPath 图片URl地址
@@ -255,38 +255,9 @@ var MxThreeJS = /** @class */ (function () {
255
255
  * ```
256
256
  */
257
257
  MxThreeJS.prototype.createImage = function (pos, w, h, imageUrlPath, callResult) { };
258
- // createImage(pos:Vector3,w:number,h:number,imageUrlPath:string,callResult:(mesh:Mesh | null)=>void): void{
259
- // new TextureLoader().load(
260
- // imageUrlPath,
261
- // function (texture) {
262
- // let geometry = new PlaneGeometry(w, w);
263
- // // 测试 transparent: true,打开,renderOrder才管用。
264
- // let materialTexture = new MeshLambertMaterial({
265
- // map: texture,
266
- // transparent: true,
267
- // side: DoubleSide
268
- // });
269
- // if(materialTexture.map)
270
- // materialTexture.map.needsUpdate = true;
271
- // setGeometryPostion(geometry,pos);
272
- // //var mesh = new Mesh(geometry, material);
273
- // let mesh:any = new Mesh(geometry, materialTexture);
274
- // mesh.material["depthTest"]=false;
275
- // //mesh.renderOrder = renderOrder;
276
- // callResult(mesh);
277
- // },
278
- // undefined,
279
- // function (err) {
280
- // console.log(err)
281
- // callResult(null);
282
- // });
283
- // }
284
258
  /**
285
259
  * 加载SVG
286
- * @param url SVG路径地址
287
- * @param x X轴位置
288
- * @param y Y轴位置
289
- * @param scale 缩放比
260
+ * @param url SVG路径地址,该函数具有缓存功能,下次加载同样的图片,可以直接返回.
290
261
  * @param color 颜色
291
262
  * @param callResult SVG加载完成的回调 回调参数:THREE.Object3D和Array<THREE.MeshBasicMaterial>
292
263
  * @returns void
@@ -297,8 +268,7 @@ var MxThreeJS = /** @class */ (function () {
297
268
  * })
298
269
  * ```
299
270
  */
300
- MxThreeJS.prototype.loadSVG = function (url, x, y, scale, color, callResult) { };
271
+ MxThreeJS.prototype.loadSVG = function (url, color, callResult) { };
301
272
  return MxThreeJS;
302
273
  }());
303
274
  exports.default = MxThreeJS;
304
- //# sourceMappingURL=MxThreeJS.js.map
@@ -4,39 +4,23 @@ var three_1 = require("three");
4
4
  // import { SVGLoader } from 'three/examples/jsm/loaders/SVGLoader'
5
5
  var SVGLoader_1 = require("./SVGLoader");
6
6
  var three_2 = require("../../tools/three");
7
- function default_1(MxThreeJS) {
8
- MxThreeJS.createImage = function (pos, w, h, imageUrlPath, callResult) {
9
- new three_1.TextureLoader().load(imageUrlPath, function (texture) {
10
- var geometry = new three_1.PlaneGeometry(w, h);
11
- // 测试 transparent: true,打开,renderOrder才管用。
12
- var materialTexture = new three_1.MeshLambertMaterial({
13
- map: texture,
14
- transparent: true,
15
- side: three_1.DoubleSide
16
- });
17
- if (materialTexture.map)
18
- materialTexture.map.needsUpdate = true;
19
- (0, three_2.setGeometryPostion)(geometry, pos);
20
- //var mesh = new Mesh(geometry, material);
21
- var mesh = new three_1.Mesh(geometry, materialTexture);
22
- mesh.material['depthTest'] = false;
23
- //mesh.renderOrder = renderOrder;
24
- callResult && callResult(mesh);
25
- }, undefined, function (err) {
26
- console.log(err);
27
- callResult && callResult(null);
28
- });
29
- };
30
- MxThreeJS.loadSVG = function (url, x, y, scale, color, callResult) {
7
+ var MxThreeJSSVGData = /** @class */ (function () {
8
+ function MxThreeJSSVGData() {
9
+ this.svg = new three_1.Group();
10
+ this.aryMeterial = [];
11
+ }
12
+ return MxThreeJSSVGData;
13
+ }());
14
+ var MxThreeJSBuffer = /** @class */ (function () {
15
+ function MxThreeJSBuffer() {
16
+ this.mapSvgUrlToData = new Map();
17
+ }
18
+ MxThreeJSBuffer.prototype.loadSVGImp = function (url, color, callResult) {
31
19
  var loader = new SVGLoader_1.SVGLoader();
32
20
  loader.load(url, function (data) {
33
21
  var aryMeterial = [];
34
22
  var paths = data.paths;
35
23
  var group = new three_1.Group();
36
- group.scale.multiplyScalar(scale);
37
- group.position.x = x;
38
- group.position.y = y;
39
- group.scale.y *= -1;
40
24
  var drawStrokes = true;
41
25
  var strokesWireframe = false;
42
26
  var drawFillShapes = true;
@@ -85,8 +69,66 @@ function default_1(MxThreeJS) {
85
69
  }
86
70
  }
87
71
  callResult && callResult(group, aryMeterial);
72
+ }, undefined, function () {
73
+ callResult && callResult(null, null);
74
+ });
75
+ };
76
+ MxThreeJSBuffer.prototype.loadSVG = function (url, color, callResult) {
77
+ var _this = this;
78
+ var data = this.mapSvgUrlToData.get(url);
79
+ if (data) {
80
+ if (callResult) {
81
+ if (data == null)
82
+ callResult(null, null);
83
+ else
84
+ callResult(data.svg.clone(), data.aryMeterial);
85
+ }
86
+ return;
87
+ }
88
+ else {
89
+ this.loadSVGImp(url, color, function (group, aryMeterial) {
90
+ if (group && aryMeterial) {
91
+ var data_1 = new MxThreeJSSVGData;
92
+ data_1.svg = group;
93
+ data_1.aryMeterial = aryMeterial;
94
+ _this.mapSvgUrlToData.set(url, data_1);
95
+ callResult && callResult(data_1.svg.clone(), data_1.aryMeterial);
96
+ }
97
+ else {
98
+ _this.mapSvgUrlToData.set(url, null);
99
+ callResult && callResult(null, null);
100
+ }
101
+ });
102
+ }
103
+ };
104
+ return MxThreeJSBuffer;
105
+ }());
106
+ function default_1(MxThreeJS) {
107
+ var mxThreeJsBuffer = new MxThreeJSBuffer;
108
+ MxThreeJS.createImage = function (pos, w, h, imageUrlPath, callResult) {
109
+ new three_1.TextureLoader().load(imageUrlPath, function (texture) {
110
+ var geometry = new three_1.PlaneGeometry(w, h);
111
+ // 测试 transparent: true,打开,renderOrder才管用。
112
+ var materialTexture = new three_1.MeshLambertMaterial({
113
+ map: texture,
114
+ transparent: true,
115
+ side: three_1.DoubleSide
116
+ });
117
+ if (materialTexture.map)
118
+ materialTexture.map.needsUpdate = true;
119
+ (0, three_2.setGeometryPostion)(geometry, pos);
120
+ //var mesh = new Mesh(geometry, material);
121
+ var mesh = new three_1.Mesh(geometry, materialTexture);
122
+ mesh.material['depthTest'] = false;
123
+ //mesh.renderOrder = renderOrder;
124
+ callResult && callResult(mesh);
125
+ }, undefined, function (err) {
126
+ console.log(err);
127
+ callResult && callResult(null);
88
128
  });
89
129
  };
130
+ MxThreeJS.loadSVG = function (url, color, callResult) {
131
+ mxThreeJsBuffer.loadSVG(url, color, callResult);
132
+ };
90
133
  }
91
134
  exports.default = default_1;
92
- //# sourceMappingURL=MxThreeJS.mixin.js.map
@@ -1185,13 +1185,13 @@ var SVGLoader = /** @class */ (function (_super) {
1185
1185
  var center = new three_1.Vector2();
1186
1186
  boundingBox.getCenter(center);
1187
1187
  var allIntersections = [];
1188
- paths.forEach(function (path) {
1188
+ paths && paths.forEach(function (path) {
1189
1189
  // check if the center of the bounding box is in the bounding box of the paths.
1190
1190
  // this is a pruning method to limit the search of intersections in paths that can't envelop of the current path.
1191
1191
  // if a path envelops another path. The center of that oter path, has to be inside the bounding box of the enveloping path.
1192
1192
  if (path.boundingBox.containsPoint(center)) {
1193
1193
  var intersections = getIntersections(scanline, path.points);
1194
- intersections.forEach(function (p) {
1194
+ intersections && intersections.forEach(function (p) {
1195
1195
  allIntersections.push({ identifier: path.identifier, isCW: path.isCW, point: p });
1196
1196
  });
1197
1197
  }
@@ -1307,13 +1307,13 @@ var SVGLoader = /** @class */ (function (_super) {
1307
1307
  // check if path is solid or a hole
1308
1308
  var isAHole = simplePaths.map(function (p) { return isHoleTo(p, simplePaths, scanlineMinX, scanlineMaxX, shapePath.userData.style.fillRule); });
1309
1309
  var shapesToReturn = [];
1310
- simplePaths.forEach(function (p) {
1310
+ simplePaths && simplePaths.forEach(function (p) {
1311
1311
  var amIAHole = isAHole[p.identifier];
1312
1312
  if (!amIAHole.isHole) {
1313
1313
  var shape_1 = new three_1.Shape();
1314
1314
  shape_1.curves = p.curves;
1315
1315
  var holes = isAHole.filter(function (h) { return h.isHole && h.for === p.identifier; });
1316
- holes.forEach(function (h) {
1316
+ holes && holes.forEach(function (h) {
1317
1317
  var hole = simplePaths[h.identifier];
1318
1318
  var path = new three_1.Path();
1319
1319
  path.curves = hole.curves;
@@ -1860,4 +1860,3 @@ var SVGLoader = /** @class */ (function (_super) {
1860
1860
  return SVGLoader;
1861
1861
  }(three_1.Loader));
1862
1862
  exports.SVGLoader = SVGLoader;
1863
- //# sourceMappingURL=SVGLoader.js.map
@@ -5,4 +5,3 @@ var MxThreeJS_1 = require("./MxThreeJS");
5
5
  var MxThreeJS = new MxThreeJS_1.default();
6
6
  (0, MxThreeJS_mixin_1.default)(MxThreeJS);
7
7
  exports.default = MxThreeJS;
8
- //# sourceMappingURL=index.js.map
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ /** @module MxType*/
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ /**
5
+ * 动态绘制类型
6
+ * @example ```typescript
7
+
8
+ * ```
9
+ */
10
+ var MxCloneType;
11
+ (function (MxCloneType) {
12
+ /** 正常Clone */
13
+ MxCloneType[MxCloneType["kClone"] = 1] = "kClone";
14
+ /** 动态拖动Clone */
15
+ MxCloneType[MxCloneType["kDragClone"] = 2] = "kDragClone";
16
+ })(MxCloneType || (MxCloneType = {}));
17
+ var MxCloneType2;
18
+ (function (MxCloneType2) {
19
+ /** 正常Clone */
20
+ MxCloneType2[MxCloneType2["kClone"] = 1] = "kClone";
21
+ /** 动态拖动Clone */
22
+ MxCloneType2[MxCloneType2["kDragClone"] = 2] = "kDragClone";
23
+ })(MxCloneType2 || (MxCloneType2 = {}));
24
+ exports.default = {
25
+ MxCloneType: MxCloneType,
26
+ MxCloneType2: MxCloneType2
27
+ };
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var MxType_1 = require("./MxType");
4
+ exports.default = MxType_1.default;
@@ -3,4 +3,3 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  /** @module loadCoreCode */
4
4
  var loadCoreCode_1 = require("./loadCoreCode");
5
5
  exports.default = loadCoreCode_1.default;
6
- //# sourceMappingURL=index.js.map
@@ -36,6 +36,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
36
36
  }
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
+ /** @module loadCoreCode */
40
+ var dynamicImport_1 = require("../../tools/dynamicImport");
39
41
  var store_1 = require("../store/store");
40
42
  var mxfun_es5_js_1 = require("./mxfun.es5.js");
41
43
  /**
@@ -51,51 +53,56 @@ function loadCoreCode() {
51
53
  var _this = this;
52
54
  return __generator(this, function (_a) {
53
55
  return [2 /*return*/, new Promise(function (res, rej) { return __awaiter(_this, void 0, void 0, function () {
54
- var jQuery_1;
55
- return __generator(this, function (_a) {
56
- // 加载jQuery
57
- try {
58
- if (store_1.default.state.MxFun) {
59
- console.error('内部已调用loadCoreCode, 无需重复调用!');
60
- return [2 /*return*/, rej({
61
- code: 'error',
62
- msg: '内部已调用loadCoreCode, 无需重复调用'
63
- })];
64
- }
65
- jQuery_1 = require('jquery');
66
- window.$ = window.jQuery = jQuery_1;
67
- window.MxDocumentReady = undefined;
68
- window.MxUiMain = function (requireFun) {
69
- var MxFun = requireFun('./MxFun').MxFun;
70
- store_1.default.commit('setMxFun', MxFun);
71
- store_1.default.events.emit('MxUiMain', requireFun);
72
- window.MxUiMain = undefined;
73
- };
74
- // 与MxMain有冲突(执行顺序有问题)
75
- // window.MxDocumentReady = (requireFun: (path: string) => RequireFunReturnObjectType, mxinit: () => void) => {
76
- // store.events.emit("MxDocumentReady", requireFun, mxinit)
77
- // mxinit()
78
- // }
79
- window.MxMain = function (requireFun) {
80
- store_1.default.events.emit('MxMain', requireFun);
81
- window.MxMain = undefined;
82
- res();
83
- return 0;
84
- };
85
- // 加载mxfun.min.js,mxfun()相当直接模拟了mxfun.min.js的加载。
86
- (0, mxfun_es5_js_1.default)();
56
+ var _a, _b, e_1;
57
+ return __generator(this, function (_c) {
58
+ switch (_c.label) {
59
+ case 0:
60
+ _c.trys.push([0, 2, , 3]);
61
+ if (store_1.default.state.MxFun) {
62
+ console.error('内部已调用loadCoreCode, 无需重复调用!');
63
+ return [2 /*return*/, rej({
64
+ code: 'error',
65
+ msg: '内部已调用loadCoreCode, 无需重复调用'
66
+ })];
67
+ }
68
+ _a = window;
69
+ _b = window;
70
+ return [4 /*yield*/, (0, dynamicImport_1.dynamicImport)('jquery')];
71
+ case 1:
72
+ _a.$ = _b.jQuery = _c.sent();
73
+ window.MxDocumentReady = undefined;
74
+ window.MxUiMain = function (requireFun) {
75
+ var MxFun = requireFun('./MxFun').MxFun;
76
+ store_1.default.commit('setMxFun', MxFun);
77
+ store_1.default.events.emit('MxUiMain', requireFun);
78
+ window.MxUiMain = undefined;
79
+ };
80
+ // 与MxMain有冲突(执行顺序有问题)
81
+ // window.MxDocumentReady = (requireFun: (path: string) => RequireFunReturnObjectType, mxinit: () => void) => {
82
+ // store.events.emit("MxDocumentReady", requireFun, mxinit)
83
+ // mxinit()
84
+ // }
85
+ window.MxMain = function (requireFun) {
86
+ store_1.default.events.emit('MxMain', requireFun);
87
+ window.MxMain = undefined;
88
+ res();
89
+ return 0;
90
+ };
91
+ // 加载mxfun.min.js,mxfun()相当直接模拟了mxfun.min.js的加载。
92
+ (0, mxfun_es5_js_1.default)();
93
+ return [3 /*break*/, 3];
94
+ case 2:
95
+ e_1 = _c.sent();
96
+ rej({
97
+ code: 'error',
98
+ msg: e_1
99
+ });
100
+ return [3 /*break*/, 3];
101
+ case 3: return [2 /*return*/];
87
102
  }
88
- catch (e) {
89
- rej({
90
- code: 'error',
91
- msg: e
92
- });
93
- }
94
- return [2 /*return*/];
95
103
  });
96
104
  }); })];
97
105
  });
98
106
  });
99
107
  }
100
108
  exports.default = loadCoreCode;
101
- //# sourceMappingURL=loadCoreCode.js.map