fix: resolve type errors in export-system for tsc --build

- Cast scene.clone() to Scene for GLTFExporter compatibility
- Cast DataView.buffer to ArrayBuffer for STL Blob construction
- Add THREE import for Object3D type in traverse callback
This commit is contained in:
Pascal
2026-03-31 20:54:46 +00:00
parent f2f362eda9
commit b4d9f3fbf6
@@ -2,6 +2,8 @@
import { useThree } from '@react-three/fiber' import { useThree } from '@react-three/fiber'
import { useEffect } from 'react' import { useEffect } from 'react'
import type { Scene } from 'three'
import * as THREE from 'three'
import { STLExporter } from 'three/examples/jsm/exporters/STLExporter.js' import { STLExporter } from 'three/examples/jsm/exporters/STLExporter.js'
import { GLTFExporter } from 'three/examples/jsm/exporters/GLTFExporter.js' import { GLTFExporter } from 'three/examples/jsm/exporters/GLTFExporter.js'
import { OBJExporter } from 'three/examples/jsm/exporters/OBJExporter.js' import { OBJExporter } from 'three/examples/jsm/exporters/OBJExporter.js'
@@ -30,8 +32,8 @@ export const ExportSystem = () => {
const filename = `pascal-export-${date}` const filename = `pascal-export-${date}`
// Clone scene and strip editor-only objects (layer 1 = EDITOR_LAYER) // Clone scene and strip editor-only objects (layer 1 = EDITOR_LAYER)
const exportRoot = scene.clone(true) const exportRoot = scene.clone(true) as Scene
const toRemove: typeof exportRoot[] = [] const toRemove: THREE.Object3D[] = []
exportRoot.traverse((obj) => { exportRoot.traverse((obj) => {
if (obj.layers.isEnabled(EDITOR_LAYER)) { if (obj.layers.isEnabled(EDITOR_LAYER)) {
toRemove.push(obj) toRemove.push(obj)
@@ -55,7 +57,7 @@ export const ExportSystem = () => {
} else if (format === 'stl') { } else if (format === 'stl') {
const exporter = new STLExporter() const exporter = new STLExporter()
const result = exporter.parse(exportRoot, { binary: true }) as DataView const result = exporter.parse(exportRoot, { binary: true }) as DataView
downloadBlob(new Blob([result], { type: 'model/stl' }), `${filename}.stl`) downloadBlob(new Blob([result.buffer as ArrayBuffer], { type: 'model/stl' }), `${filename}.stl`)
} else if (format === 'obj') { } else if (format === 'obj') {
const exporter = new OBJExporter() const exporter = new OBJExporter()
const result = exporter.parse(exportRoot) const result = exporter.parse(exportRoot)