@itk-wasm/mesh-to-poly-data
Version:
Convert an ITK Mesh to a simple data structure compatible with vtkPolyData.
77 lines (62 loc) • 1.9 kB
text/typescript
// Generated file. To retain edits, remove this comment.
import {
PolyData,
Mesh,
InterfaceTypes,
PipelineOutput,
PipelineInput,
runPipeline
} from 'itk-wasm'
import PolyDataToMeshOptions from './poly-data-to-mesh-options.js'
import PolyDataToMeshResult from './poly-data-to-mesh-result.js'
import { getPipelinesBaseUrl } from './pipelines-base-url.js'
import { getPipelineWorkerUrl } from './pipeline-worker-url.js'
import { getDefaultWebWorker } from './default-web-worker.js'
/**
* Convert an itk::PolyData to an itk::Mesh
*
* @param {PolyData} polyData - Input polydata
* @param {PolyDataToMeshOptions} options - options object
*
* @returns {Promise<PolyDataToMeshResult>} - result object
*/
async function polyDataToMesh(
polyData: PolyData,
options: PolyDataToMeshOptions = {}
) : Promise<PolyDataToMeshResult> {
const desiredOutputs: Array<PipelineOutput> = [
{ type: InterfaceTypes.Mesh },
]
const inputs: Array<PipelineInput> = [
{ type: InterfaceTypes.PolyData, data: polyData },
]
const args = []
// Inputs
const polyDataName = '0'
args.push(polyDataName)
// Outputs
const meshName = '0'
args.push(meshName)
// Options
args.push('--memory-io')
const pipelinePath = 'poly-data-to-mesh'
let workerToUse = options?.webWorker
if (workerToUse === undefined) {
workerToUse = await getDefaultWebWorker()
}
const {
webWorker: usedWebWorker,
returnValue,
stderr,
outputs
} = await runPipeline(pipelinePath, args, desiredOutputs, inputs, { pipelineBaseUrl: getPipelinesBaseUrl(), pipelineWorkerUrl: getPipelineWorkerUrl(), webWorker: workerToUse, noCopy: options?.noCopy })
if (returnValue !== 0 && stderr !== "") {
throw new Error(stderr)
}
const result = {
webWorker: usedWebWorker as Worker,
mesh: outputs[0]?.data as Mesh,
}
return result
}
export default polyDataToMesh