Interface WorkingSet3DExportInterface

The WorkingSet3DExportInterface interface defines the data included in a export procedure called by DataSessionInterface.export3D.

Only WorkingSetInterface may be included in a export procedure, individual geometric instance ids cannot be exported.

It consists in a WorkingSetInterface, an optional color modifier to override the default DMU colors and some optional transform parameters, either a fixed transformation or an exploded view.

/** 
* Sample to illustrate the use of a 3d export procedure.
*/
import { DataSessionInterface, WorkingSetInterface, ExportJobInterface, ExportJobInterfaceSignal, InfiniteError, InfiniteEvent, Export3DOutputFormat } from 'generated_files/documentation/appinfiniteapi';

// the DataSessionInterface has been created previously and is connected
let lDataSession: DataSessionInterface;
// the working set to export as 3d data
let lWorkingSetToExport : WorkingSetInterface;
// the export job to monitor
let lExportJob : ExportJobInterface | undefined = undefined;
// the file to download
// In this test, we will only download one file
let lFileOffset : number = -1;

// triggers a save file from the browser
const onDownloadReady = (pUrl : string) : void => {
const downloadLink = 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();
};

const startExportProcedure = () : boolean =>
{
// will will try to export as fbx
lExportJob = lDataSession.export3D(
[{ workingSet: lWorkingSetToExport }],
{
type: 'export3DOutputFormat',
dataFormat: Export3DOutputFormat.EOF_FBX,
// filename without extension
filename: 'test'
}
);
// sanity check
if(lExportJob === undefined)
{
return false;
}
lExportJob.addEventListener(ExportJobInterfaceSignal.ExportJobFinished, (pEvent : InfiniteEvent) : void =>
{
// only get the URL if no error
const lError : 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 =>
{
const lUrl : string | undefined = lExportJob.getDownloadURL(lFileOffset);
// sanity check
if(lUrl === undefined)
{
console.log('Export job failed');
return;
}
// trigger the download from the browser
onDownloadReady(lUrl);
});
return true;
};

startExportProcedure();

or asynchronously :
/** 
* Sample to illustrate the asynchronous use of a 3d export procedure.
*/
import { DataSessionInterface, WorkingSetInterface, ExportJobInterface, AsyncResultReason, Export3DOutputFormat } from 'generated_files/documentation/appinfiniteapi';

// the DataSessionInterface has been created previously and is connected
let lDataSession: DataSessionInterface;
// the working set to export as 3d data
let lWorkingSetToExport : WorkingSetInterface;
// the export job to monitor
let lExportJob : ExportJobInterface | undefined = undefined;

// triggers a save file from the browser
const onDownloadReady = (pUrl : string) : void => {
const downloadLink = 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();
};

const startExportProcedure = async () : Promise<boolean> =>
{
// will will try to export as fbx
lExportJob = lDataSession.export3D(
[{ workingSet: lWorkingSetToExport }],
{
type: 'export3DOutputFormat',
dataFormat: Export3DOutputFormat.EOF_FBX,
// filename without extension
filename: 'test'
}
);
// sanity check
if(lExportJob === undefined)
{
return false;
}
// wait for file count to be known
const lWaitForFileCount : AsyncResultReason = await lExportJob.asyncWaitForFileCount();
if(lWaitForFileCount !== AsyncResultReason.ARR_Success)
{
return false;
}
const lNbFiles: number = lExportJob.getFileCount();
console.log('The export procedure consists in ' + lNbFiles + ' files');
if(lNbFiles < 1)
{
// not enough files ?
// => should not happen
return false;
}
// wait for everything to be computed
// we could have waited for a specific file with an asyncWaitForFinished(item)
const lExportResult : AsyncResultReason = await lExportJob.asyncWaitForFinished();
if(lExportResult !== AsyncResultReason.ARR_Success)
{
return false;
}
// file is ready
// claim for a download url for file 0
console.log('retrieving file ' + lExportJob.getFilename(0));
await lExportJob.asyncGetDownloadURL(0);
const lUrl : string | undefined = lExportJob.getDownloadURL(0);
if(lUrl === undefined)
{
return false;
}
// trigger a download of the file
onDownloadReady(lUrl);
return true;
};

startExportProcedure();

Please make sure the destination browser supports promises before using async calls.
AsyncJobs

interface WorkingSet3DExportInterface {
    colorModifier?: Vector3 | "restoreDMUColors";
    transforms?: (Matrix4 | WorkingSetExplodedViewInterface)[];
    workingSet: WorkingSetInterface;
}

Hierarchy (view full)

Properties

colorModifier?: Vector3 | "restoreDMUColors"

The optional color to set to override the DMU colors. 'restoreDMUColors' is used to reset the DMU color to their origin in case a previous WorkingSet3DExportInterface would have set a specific color for the parts belonging to the intersection of the given working sets.

The optional transforms to apply to each geometric instance inside this WorkingSetInterface. This may contain matrices or explosions to apply to each geometric instance inside this WorkingSetInterface.

transforms size is limited to maximum 64 items.

Note: transforms are cumulated from left to right (first transforms[0], then transforms[1], etc ....).

The given working set to export.