filename is used to set the global filename of the export procedure.
/** * Sample to illustrate the use of a SVG export procedure. */ import { DataSessionInterface, WorkingSetInterface, ExportJobInterface, ExportJobInterfaceSignal, InfiniteError, InfiniteEvent, InfiniteEngineInterface, Vector2, ExportSVGOutputFormat } from'generated_files/documentation/appinfiniteapi';
// the DataSessionInterface has been created previously and is connected letlDataSession: DataSessionInterface; // the working set to export as a svg image 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=> { // will will try to export as svg lExportJob = lDataSession.exportSVG( [{ workingSet:lWorkingSetToExport }], { type:'exportSVGOutputFormat', outputs: [ { // the name inside the screenshot procedure, as multiple viewpoint may // be set, in this case this is useless itemName:'svg_screenshot', // the page size in mm (A4 here) pageSize:newVector2(210, 287), // camera parameters viewpoint:lInfiniteEngine.getCameraManager().toJSON(), // SVG file format dataFormat:ExportSVGOutputFormat.EOF_SVG } ], // 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 SVG export procedure. */ import { DataSessionInterface, WorkingSetInterface, ExportJobInterface, AsyncResultReason, Vector2, InfiniteEngineInterface, ExportSVGOutputFormat } from'generated_files/documentation/appinfiniteapi';
// the DataSessionInterface has been created previously and is connected letlDataSession: DataSessionInterface; // the working set to export as a svg image 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> => { // will will try to export as svg lExportJob = lDataSession.exportSVG( [{ workingSet:lWorkingSetToExport }], { type:'exportSVGOutputFormat', outputs: [ { // the name inside the screenshot procedure, as multiple viewpoint may // be set, in this case this is useless itemName:'svg_screenshot', // the page size in mm (A4 here) pageSize:newVector2(210, 287), // camera parameters viewpoint:lInfiniteEngine.getCameraManager().toJSON(), // SVG file format dataFormat:ExportSVGOutputFormat.EOF_SVG } ], // 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 ExportSVGOutputFormatInterface interface defines the output format of a SVG export procedure called by DataSessionInterface.exportSVG.
or asynchronously :
Please make sure the destination browser supports promises before using async calls.
See