filename is used to set the global filename of the export procedure.
/** * Sample to illustrate the use of a "complete" screenshot export procedure. */ import { DataSessionInterface, WorkingSetInterface, ExportJobInterface, ExportJobInterfaceSignal, InfiniteError, InfiniteEvent, InfiniteEngineInterface, Export2DOutputFormat, Vector2, Vector4 } from'generated_files/documentation/appinfiniteapi';
// the DataSessionInterface has been created previously and is connected letlDataSession: DataSessionInterface; // the working set to export as a raster screenshot letlWorkingSetToExport : WorkingSetInterface; // the export job to monitor letlExportJob : ExportJobInterface | undefined = undefined; // the infinite engine in use, created previously letlInfiniteEngine: InfiniteEngineInterface;
// the file to download // In this test, we will only download one file letlFileOffset : number = -1;
// triggers a save file from the browser constonDownloadReady = (pUrl : string) : void=> { constdownloadLink = document.createElement('a'); downloadLink.target = '_blank'; // set object URL as the anchors href downloadLink.href = pUrl; // append the anchor to document body document.body.appendChild(downloadLink); // fire a click event on the anchor downloadLink.click(); // cleanup: remove element and revoke object URL downloadLink.remove(); };
conststartExportProcedure = () : boolean=> { // we will try to export as png lExportJob = lDataSession.export2D( [{ workingSet:lWorkingSetToExport }], { type:'export2DOutputFormat', outputs: [ { // the name inside the screenshot procedure, as multiple viewpoint may // be set, in this case this is useless itemName:'screenshot', // the resolution of the image resolution:newVector2(1024, 768), // camera parameters viewpoint:lInfiniteEngine.getCameraManager().toJSON(), // the background color backgroundColor:newVector4(1, 1, 1, 1), // PNG to get a lossless compression dataFormat:Export2DOutputFormat.EOF_PNG } ], // filename without extension filename:'test' } ); // sanity check if(lExportJob === undefined) { returnfalse; } lExportJob.addEventListener(ExportJobInterfaceSignal.ExportJobFinished, (pEvent : InfiniteEvent) : void=> { // only get the URL if no error constlError : InfiniteError | undefined = lExportJob.getLastError(); if(lError === undefined && (lFileOffset === -1)) { lFileOffset = pEvent.attachments; if(lExportJob.isExportSuccess(lFileOffset)) { // trigger the URL computing if(!lExportJob.computeDownloadURL(lFileOffset)) { console.log('Export job failed'); } } } }); // URL will be ready lExportJob.addEventListener(ExportJobInterfaceSignal.ExportJobURLReady, () : void=> { constlUrl : string | undefined = lExportJob.getDownloadURL(lFileOffset); // sanity check if(lUrl === undefined) { console.log('Export job failed'); return; } // trigger the download from the browser onDownloadReady(lUrl); }); returntrue; };
startExportProcedure();
or asynchronously :
/** * Sample to illustrate the asynchronous use of a "complete" screenshot export procedure. */ import { DataSessionInterface, WorkingSetInterface, ExportJobInterface, AsyncResultReason, Export2DOutputFormat, Vector2, Vector4, InfiniteEngineInterface } from'generated_files/documentation/appinfiniteapi';
// the DataSessionInterface has been created previously and is connected letlDataSession: DataSessionInterface; // the working set to export as a raster screenshot letlWorkingSetToExport : WorkingSetInterface; // the export job to monitor letlExportJob : ExportJobInterface | undefined = undefined; // the infinite engine in use, created previously letlInfiniteEngine: InfiniteEngineInterface;
// triggers a save file from the browser constonDownloadReady = (pUrl : string) : void=> { constdownloadLink = document.createElement('a'); downloadLink.target = '_blank'; // set object URL as the anchors href downloadLink.href = pUrl; // append the anchor to document body document.body.appendChild(downloadLink); // fire a click event on the anchor downloadLink.click(); // cleanup: remove element and revoke object URL downloadLink.remove(); };
conststartExportProcedure = async () : Promise<boolean> => { // we will try to export as png lExportJob = lDataSession.export2D( [{ workingSet:lWorkingSetToExport }], { type:'export2DOutputFormat', outputs: [ { // the name inside the screenshot procedure, as multiple viewpoint may // be set, in this case this is useless itemName:'screenshot', // the resolution of the image resolution:newVector2(1024, 768), // camera parameters viewpoint:lInfiniteEngine.getCameraManager().toJSON(), // the background color backgroundColor:newVector4(1, 1, 1, 1), // PNG to get a lossless compression dataFormat:Export2DOutputFormat.EOF_PNG } ], // filename without extension filename:'test' } ); // sanity check if(lExportJob === undefined) { returnfalse; } // wait for file count to be known constlWaitForFileCount : AsyncResultReason = awaitlExportJob.asyncWaitForFileCount(); if(lWaitForFileCount !== AsyncResultReason.ARR_Success) { returnfalse; } constlNbFiles: number = lExportJob.getFileCount(); console.log('The export procedure consists in ' + lNbFiles + ' files'); if(lNbFiles < 1) { // not enough files ? // => should not happen returnfalse; } // wait for everything to be computed // we could have waited for a specific file with an asyncWaitForFinished(item) constlExportResult : AsyncResultReason = awaitlExportJob.asyncWaitForFinished(); if(lExportResult !== AsyncResultReason.ARR_Success) { returnfalse; } // file is ready // claim for a download url for file 0 console.log('retrieving file ' + lExportJob.getFilename(0)); awaitlExportJob.asyncGetDownloadURL(0); constlUrl : string | undefined = lExportJob.getDownloadURL(0); if(lUrl === undefined) { returnfalse; } // trigger a download of the file onDownloadReady(lUrl); returntrue; };
startExportProcedure();
Please make sure the destination browser supports promises before using async calls.
The destination filename set when the raster export procedure is done and downloaded from the browser.
You should not include any extension in filename.
The Export2DOutputFormatInterface interface defines the output format of a 2D export procedure called by DataSessionInterface.export2D.
or asynchronously :
Please make sure the destination browser supports promises before using async calls.
See