0

TransformationTool extension does not work when loading multiple models. It may also be due to the codes I wrote due to the version change.

Viewer.js

viewer = new Autodesk.Viewing.Private.GuiViewer3D(myViewerDiv, {
    extensions: [
      "Autodesk.ADN.Viewing.Extension.TransformTool",
      "Autodesk.DocumentBrowser",
      "TransformationExtension",
    ],
  });

  viewer.loadModel('./wraith.glb', { options2 }, wraith, (err) => console.error(err));
  viewer.loadModel("./wraith.glb", { options2 }, wraith2, (err) =>console.error(err));
  viewer.loadModel("./sample_revit_big.glb", (model) => { item = model; }); 

I think there is an error in the code writing here in the extension file, thank you very much if you help.

TransformationTool

                viewer.addEventListener(
                    Autodesk.Viewing.CAMERA_CHANGE_EVENT,
                    onCameraChanged);

                event.fragIdsArray.forEach(function (fragId) {

                    var fragProxy = viewer.impl.getFragmentProxy(
                        viewer.model,
                        fragId);




        this.getTransformMap = function() {

            var transformMap = {};

            for(var fragId in _modifiedFragIdMap){

                var fragProxy = viewer.impl.getFragmentProxy(
                    viewer.model,
                    fragId);

                fragProxy.getAnimTransform();

                transformMap[fragId] = {
                    position: fragProxy.position
                };

                fragProxy = null;
            }

            return transformMap;
        };

1 Answers1

0

You're right - the extension has been implemented for single-model scenarios only. I'd suggest to look for other examples of "transform" extensions online as some of them could support multi-model scenarios as well, or to modify the extension you're using. The modifications will require some effort but overall it should be doable. For example, instead of relying on viewer.model (reference to the last loaded model) you would have to iterate over all loaded models using viewer.getVisibleModels().

Petr Broz
  • 8,891
  • 2
  • 15
  • 24