@inweb/viewer-visualize 25.3.13 → 25.3.15
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/README.md +20 -20
- package/dist/viewer-visualize.js +311 -0
- package/dist/viewer-visualize.js.map +1 -1
- package/dist/viewer-visualize.min.js +1 -1
- package/dist/viewer-visualize.module.js +328 -0
- package/dist/viewer-visualize.module.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/package.json +5 -5
- package/src/Viewer/Commands/ApplyModelTransform.ts +2 -4
- package/src/index.ts +2 -0
|
@@ -352,6 +352,334 @@ class Options {
|
|
|
352
352
|
|
|
353
353
|
const CANVAS_EVENTS = [ "click", "dblclick", "mousedown", "mousemove", "mouseup", "mouseleave", "pointerdown", "pointermove", "pointerup", "pointerleave", "pointercancel", "wheel", "touchstart", "touchmove", "touchend", "touchcancel" ];
|
|
354
354
|
|
|
355
|
+
const composeMatrixFromTransform = (translate, rotate, scale, modelCenter, matrix) => {
|
|
356
|
+
const translateMatrix = matrix.setTranslation([ translate.x, translate.y, translate.z ]);
|
|
357
|
+
const rotateMatrix = matrix.setToRotation(rotate.angle, [ rotate.x, rotate.y, rotate.z ], modelCenter);
|
|
358
|
+
const scaleMatrix = matrix.setToScaling(scale, modelCenter);
|
|
359
|
+
return translateMatrix.postMultBy(rotateMatrix).postMultBy(scaleMatrix);
|
|
360
|
+
};
|
|
361
|
+
|
|
362
|
+
function applyModelTransform(viewer, model) {
|
|
363
|
+
var _a;
|
|
364
|
+
if (!viewer.visualizeJs) return;
|
|
365
|
+
if (!model.getModelTransformMatrix) return;
|
|
366
|
+
const visLib = viewer.visLib();
|
|
367
|
+
const visViewer = visLib.getViewer();
|
|
368
|
+
const modelItr = visViewer.getModelIterator();
|
|
369
|
+
for (;!modelItr.done(); modelItr.step()) {
|
|
370
|
+
const modelPtr = modelItr.getModel();
|
|
371
|
+
const transform = model.getModelTransformMatrix(modelPtr.getDatabaseHandle());
|
|
372
|
+
if (transform) {
|
|
373
|
+
const extents = modelPtr.getExtents();
|
|
374
|
+
const matrix = composeMatrixFromTransform(transform.translate, transform.rotation, transform.scale, extents.center(), new visLib.Matrix3d);
|
|
375
|
+
modelPtr.setModelingMatrix(matrix, true);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
modelItr.delete();
|
|
379
|
+
(_a = visViewer.clearViewExtentsCache) === null || _a === void 0 ? void 0 : _a.call(visViewer);
|
|
380
|
+
viewer.update();
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
commands("VisualizeJS").registerCommand("applyModelTransform", applyModelTransform);
|
|
384
|
+
|
|
385
|
+
commands("VisualizeJS").registerCommand("clearMarkup", (viewer => viewer.clearOverlay()));
|
|
386
|
+
|
|
387
|
+
commands("VisualizeJS").registerCommandAlias("clearMarkup", "clearOverlay");
|
|
388
|
+
|
|
389
|
+
commands("VisualizeJS").registerCommand("clearSlices", (viewer => viewer.clearSlices()));
|
|
390
|
+
|
|
391
|
+
function createPreview(viewer, type = "image/jpeg", encoderOptions = .25) {
|
|
392
|
+
var _a;
|
|
393
|
+
if (!viewer.visualizeJs) return "";
|
|
394
|
+
return ((_a = viewer.canvas) === null || _a === void 0 ? void 0 : _a.toDataURL(type, encoderOptions)) || "";
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
commands("VisualizeJS").registerCommand("createPreview", createPreview);
|
|
398
|
+
|
|
399
|
+
function explode(viewer, index = 0) {
|
|
400
|
+
if (!viewer.visualizeJs) return;
|
|
401
|
+
const visViewer = viewer.visViewer();
|
|
402
|
+
visViewer.explode(index);
|
|
403
|
+
viewer.update();
|
|
404
|
+
viewer.emit({
|
|
405
|
+
type: "explode",
|
|
406
|
+
data: index
|
|
407
|
+
});
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
commands("VisualizeJS").registerCommand("explode", explode);
|
|
411
|
+
|
|
412
|
+
commands("VisualizeJS").registerCommand("collect", (viewer => explode(viewer, 0)));
|
|
413
|
+
|
|
414
|
+
function getDefaultViewPositions(viewer) {
|
|
415
|
+
if (!viewer.visualizeJs) return [];
|
|
416
|
+
const visLib = viewer.visLib();
|
|
417
|
+
const defViewPos = visLib.DefaultViewPosition;
|
|
418
|
+
return Object.keys(defViewPos).filter((x => x !== "values"));
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
commands("VisualizeJS").registerCommand("getDefaultViewPositions", getDefaultViewPositions);
|
|
422
|
+
|
|
423
|
+
function getModels(viewer) {
|
|
424
|
+
if (!viewer.visualizeJs) return [];
|
|
425
|
+
const visViewer = viewer.visViewer();
|
|
426
|
+
const handles = [];
|
|
427
|
+
const modelItr = visViewer.getModelIterator();
|
|
428
|
+
for (;!modelItr.done(); modelItr.step()) {
|
|
429
|
+
const modelPtr = modelItr.getModel();
|
|
430
|
+
if (modelPtr.getName()[0] !== "$") handles.push(modelPtr.getDatabaseHandle());
|
|
431
|
+
}
|
|
432
|
+
modelItr.delete();
|
|
433
|
+
return handles;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
commands("VisualizeJS").registerCommand("getModels", getModels);
|
|
437
|
+
|
|
438
|
+
function getSelected(viewer) {
|
|
439
|
+
if (!viewer.visualizeJs) return [];
|
|
440
|
+
const visViewer = viewer.visViewer();
|
|
441
|
+
const handles = [];
|
|
442
|
+
const selectionSet = visViewer.getSelected();
|
|
443
|
+
if (!selectionSet.isNull() && selectionSet.numItems() !== 0) {
|
|
444
|
+
const itr = selectionSet.getIterator();
|
|
445
|
+
for (;!itr.done(); itr.step()) {
|
|
446
|
+
const entityId = itr.getEntity();
|
|
447
|
+
const entityPtr = entityId.getType() === 1 ? entityId.openObject() : entityId.getType() === 2 ? entityId.openObjectAsInsert() : null;
|
|
448
|
+
if (entityPtr) {
|
|
449
|
+
const handle = entityPtr.getNativeDatabaseHandle();
|
|
450
|
+
if (handle !== "-1") handles.push(handle);
|
|
451
|
+
entityPtr.delete();
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
itr.delete();
|
|
455
|
+
}
|
|
456
|
+
return handles;
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
commands("VisualizeJS").registerCommand("getSelected", getSelected);
|
|
460
|
+
|
|
461
|
+
function hideSelected(viewer) {
|
|
462
|
+
if (!viewer.visualizeJs) return;
|
|
463
|
+
const visViewer = viewer.visViewer();
|
|
464
|
+
visViewer.hideSelectedObjects(false);
|
|
465
|
+
viewer.update();
|
|
466
|
+
viewer.emit({
|
|
467
|
+
type: "hide"
|
|
468
|
+
});
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
commands("VisualizeJS").registerCommand("hideSelected", hideSelected);
|
|
472
|
+
|
|
473
|
+
function isolateSelected(viewer) {
|
|
474
|
+
if (!viewer.visualizeJs) return;
|
|
475
|
+
const visViewer = viewer.visViewer();
|
|
476
|
+
visViewer.isolateSelectedObjects(false);
|
|
477
|
+
viewer.update();
|
|
478
|
+
viewer.emit({
|
|
479
|
+
type: "isolate"
|
|
480
|
+
});
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
commands("VisualizeJS").registerCommand("isolateSelected", isolateSelected);
|
|
484
|
+
|
|
485
|
+
function regenerateAll(viewer) {
|
|
486
|
+
if (!viewer.visualizeJs) return;
|
|
487
|
+
const visViewer = viewer.visViewer();
|
|
488
|
+
visViewer.regenAll();
|
|
489
|
+
viewer.update();
|
|
490
|
+
viewer.emit({
|
|
491
|
+
type: "regenerateall"
|
|
492
|
+
});
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
commands("VisualizeJS").registerCommand("regenerateAll", regenerateAll);
|
|
496
|
+
|
|
497
|
+
function resetView(viewer) {
|
|
498
|
+
if (!viewer.visualizeJs) return;
|
|
499
|
+
viewer.executeCommand("setActiveDragger", "");
|
|
500
|
+
viewer.executeCommand("clearSlices");
|
|
501
|
+
viewer.executeCommand("clearOverlay");
|
|
502
|
+
viewer.executeCommand("setMarkupColor");
|
|
503
|
+
viewer.executeCommand("unselect");
|
|
504
|
+
viewer.executeCommand("showAll");
|
|
505
|
+
viewer.executeCommand("explode", 0);
|
|
506
|
+
viewer.executeCommand("zoomToExtents", true);
|
|
507
|
+
viewer.executeCommand("k3DViewSW");
|
|
508
|
+
viewer.emit({
|
|
509
|
+
type: "resetview"
|
|
510
|
+
});
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
commands("VisualizeJS").registerCommand("resetView", resetView);
|
|
514
|
+
|
|
515
|
+
function selectModel(viewer, handle) {
|
|
516
|
+
if (!viewer.visualizeJs) return;
|
|
517
|
+
const visViewer = viewer.visViewer();
|
|
518
|
+
const activeView = visViewer.activeView;
|
|
519
|
+
const modelItr = visViewer.getModelIterator();
|
|
520
|
+
for (;!modelItr.done(); modelItr.step()) {
|
|
521
|
+
const modelPtr = modelItr.getModel();
|
|
522
|
+
if (modelPtr.getDatabaseHandle() === handle) {
|
|
523
|
+
const selectionSet = activeView.selectCrossing([ 0, 9999, 9999, 0 ], modelPtr);
|
|
524
|
+
visViewer.setSelected(selectionSet);
|
|
525
|
+
const handles = viewer.getSelected();
|
|
526
|
+
viewer.update();
|
|
527
|
+
viewer.emitEvent({
|
|
528
|
+
type: "select",
|
|
529
|
+
data: selectionSet,
|
|
530
|
+
handles: handles
|
|
531
|
+
});
|
|
532
|
+
selectionSet.delete();
|
|
533
|
+
break;
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
modelItr.delete();
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
commands("VisualizeJS").registerCommand("selectModel", selectModel);
|
|
540
|
+
|
|
541
|
+
commands("VisualizeJS").registerCommand("setActiveDragger", ((viewer, dragger = "") => {
|
|
542
|
+
viewer.setActiveDragger(dragger);
|
|
543
|
+
}));
|
|
544
|
+
|
|
545
|
+
function setDefaultViewPosition(viewer, position = "") {
|
|
546
|
+
if (!viewer.visualizeJs) return;
|
|
547
|
+
const visLib = viewer.visLib();
|
|
548
|
+
const visViewer = viewer.visViewer();
|
|
549
|
+
const defViewPos = visLib.DefaultViewPosition;
|
|
550
|
+
visViewer.setDefaultViewPositionWithAnimation(defViewPos[position]);
|
|
551
|
+
viewer.update();
|
|
552
|
+
viewer.emit({
|
|
553
|
+
type: "viewposition",
|
|
554
|
+
data: position
|
|
555
|
+
});
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
commands("VisualizeJS").registerCommand("setDefaultViewPosition", setDefaultViewPosition);
|
|
559
|
+
|
|
560
|
+
commands("VisualizeJS").registerCommand("k3DViewTop", (viewer => setDefaultViewPosition(viewer, "k3DViewTop")));
|
|
561
|
+
|
|
562
|
+
commands("VisualizeJS").registerCommand("k3DViewBottom", (viewer => setDefaultViewPosition(viewer, "k3DViewBottom")));
|
|
563
|
+
|
|
564
|
+
commands("VisualizeJS").registerCommand("k3DViewLeft", (viewer => setDefaultViewPosition(viewer, "k3DViewLeft")));
|
|
565
|
+
|
|
566
|
+
commands("VisualizeJS").registerCommand("k3DViewRight", (viewer => setDefaultViewPosition(viewer, "k3DViewRight")));
|
|
567
|
+
|
|
568
|
+
commands("VisualizeJS").registerCommand("k3DViewFront", (viewer => setDefaultViewPosition(viewer, "k3DViewFront")));
|
|
569
|
+
|
|
570
|
+
commands("VisualizeJS").registerCommand("k3DViewBack", (viewer => setDefaultViewPosition(viewer, "k3DViewBack")));
|
|
571
|
+
|
|
572
|
+
commands("VisualizeJS").registerCommand("k3DViewSE", (viewer => setDefaultViewPosition(viewer, "k3DViewSE")));
|
|
573
|
+
|
|
574
|
+
commands("VisualizeJS").registerCommand("k3DViewSW", (viewer => setDefaultViewPosition(viewer, "k3DViewSW")));
|
|
575
|
+
|
|
576
|
+
commands("VisualizeJS").registerCommand("k3DViewNE", (viewer => setDefaultViewPosition(viewer, "k3DViewNE")));
|
|
577
|
+
|
|
578
|
+
commands("VisualizeJS").registerCommand("k3DViewNW", (viewer => setDefaultViewPosition(viewer, "k3DViewNW")));
|
|
579
|
+
|
|
580
|
+
commands("VisualizeJS").registerCommand("setMarkupColor", ((viewer, r = 255, g = 0, b = 0) => {
|
|
581
|
+
viewer.setMarkupColor(r, g, b);
|
|
582
|
+
}));
|
|
583
|
+
|
|
584
|
+
function setSelected(viewer, handles = []) {
|
|
585
|
+
if (!viewer.visualizeJs) return;
|
|
586
|
+
const visLib = viewer.visLib();
|
|
587
|
+
const visViewer = visLib.getViewer();
|
|
588
|
+
const selectionSet = new visLib.OdTvSelectionSet;
|
|
589
|
+
handles === null || handles === void 0 ? void 0 : handles.forEach((handle => {
|
|
590
|
+
const entityId = visViewer.getEntityByOriginalHandle(handle + "");
|
|
591
|
+
if (!entityId.isNull()) selectionSet.appendEntity(entityId);
|
|
592
|
+
}));
|
|
593
|
+
visViewer.setSelected(selectionSet);
|
|
594
|
+
viewer.update();
|
|
595
|
+
viewer.emitEvent({
|
|
596
|
+
type: "select",
|
|
597
|
+
data: selectionSet,
|
|
598
|
+
handles: handles
|
|
599
|
+
});
|
|
600
|
+
selectionSet.delete();
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
commands("VisualizeJS").registerCommand("setSelected", setSelected);
|
|
604
|
+
|
|
605
|
+
function showAll(viewer) {
|
|
606
|
+
if (!viewer.visualizeJs) return;
|
|
607
|
+
const visViewer = viewer.visViewer();
|
|
608
|
+
visViewer.unisolateSelectedObjects(false);
|
|
609
|
+
viewer.update();
|
|
610
|
+
viewer.emit({
|
|
611
|
+
type: "showall"
|
|
612
|
+
});
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
commands("VisualizeJS").registerCommand("showAll", showAll);
|
|
616
|
+
|
|
617
|
+
function unselect(viewer) {
|
|
618
|
+
if (!viewer.visualizeJs) return;
|
|
619
|
+
const visViewer = viewer.visViewer();
|
|
620
|
+
visViewer.unselect();
|
|
621
|
+
viewer.update();
|
|
622
|
+
viewer.emitEvent({
|
|
623
|
+
type: "select",
|
|
624
|
+
data: visViewer.getSelected(),
|
|
625
|
+
handles: []
|
|
626
|
+
});
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
commands("VisualizeJS").registerCommand("unselect", unselect);
|
|
630
|
+
|
|
631
|
+
function zoomToExtents(viewer, force = false, animate = viewer.options.cameraAnimation) {
|
|
632
|
+
if (!viewer.visualizeJs) return;
|
|
633
|
+
const visViewer = viewer.visViewer();
|
|
634
|
+
const saveEnableAmination = visViewer.getEnableAnimation();
|
|
635
|
+
visViewer.setEnableAnimation(animate);
|
|
636
|
+
visViewer.zoomExtents(force);
|
|
637
|
+
visViewer.update();
|
|
638
|
+
visViewer.setEnableAnimation(saveEnableAmination);
|
|
639
|
+
viewer.update();
|
|
640
|
+
viewer.emitEvent({
|
|
641
|
+
type: "zoom"
|
|
642
|
+
});
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
commands("VisualizeJS").registerCommand("zoomToExtents", zoomToExtents);
|
|
646
|
+
|
|
647
|
+
commands("VisualizeJS").registerCommandAlias("zoomToExtents", "zoomExtents");
|
|
648
|
+
|
|
649
|
+
function zoomToObjects(viewer, handles = []) {
|
|
650
|
+
var _a;
|
|
651
|
+
if (!viewer.visualizeJs) return;
|
|
652
|
+
const visLib = viewer.visLib();
|
|
653
|
+
const visViewer = viewer.visViewer();
|
|
654
|
+
const selectionSet = new visLib.OdTvSelectionSet;
|
|
655
|
+
handles.forEach((handle => {
|
|
656
|
+
const entityId = visViewer.getEntityByOriginalHandle(handle + "");
|
|
657
|
+
if (!entityId.isNull()) selectionSet.appendEntity(entityId);
|
|
658
|
+
}));
|
|
659
|
+
(_a = visViewer.zoomToObjects) === null || _a === void 0 ? void 0 : _a.call(visViewer, selectionSet);
|
|
660
|
+
viewer.update();
|
|
661
|
+
viewer.emitEvent({
|
|
662
|
+
type: "zoom"
|
|
663
|
+
});
|
|
664
|
+
selectionSet.delete();
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
commands("VisualizeJS").registerCommand("zoomToObjects", zoomToObjects);
|
|
668
|
+
|
|
669
|
+
function zoomToSelected(viewer) {
|
|
670
|
+
var _a;
|
|
671
|
+
if (!viewer.visualizeJs) return;
|
|
672
|
+
const visViewer = viewer.visViewer();
|
|
673
|
+
const selectionSet = visViewer.getSelected();
|
|
674
|
+
(_a = visViewer.zoomToObjects) === null || _a === void 0 ? void 0 : _a.call(visViewer, selectionSet);
|
|
675
|
+
viewer.update();
|
|
676
|
+
viewer.emitEvent({
|
|
677
|
+
type: "zoom"
|
|
678
|
+
});
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
commands("VisualizeJS").registerCommand("zoomToSelected", zoomToSelected);
|
|
682
|
+
|
|
355
683
|
class EventEmitter2 {
|
|
356
684
|
constructor() {
|
|
357
685
|
this._listeners = undefined;
|