@polar3d/file-analyzer
v1.0.1
Published
Analyze 3D printing files (STL, 3MF, GCODE, GX) to extract metadata like printer compatibility, layers, filament info, and slicer details
Readme
@polar3d/file-analyzer
Analyze 3D printing files to extract metadata like printer compatibility, layer count, filament information, and slicer details.
Features
- ✅ Multi-format support: STL, 3MF, GCODE, GX
- ✅ Printer detection: Identifies compatible printers (Bambu Lab, Prusa, Creality, etc.)
- ✅ Layer counting: Extracts layer count from sliced files
- ✅ Filament analysis: Detects colors (hex codes) and types (PLA, ABS, etc.)
- ✅ Slicer identification: Identifies which slicer created the file and version
- ✅ Multi-color detection: Determines if file requires multiple filaments
- ✅ Framework-agnostic: Works in browser and Node.js
- ✅ TypeScript: Full type definitions included
Installation
npm install @polar3d/file-analyzerUsage
Basic Analysis
import { analyzeFile } from '@polar3d/file-analyzer';
const file = document.querySelector('input[type="file"]').files[0];
const result = await analyzeFile(file);
console.log(result);
// {
// fileType: '3mf',
// isSliced: true,
// printerInfo: [
// { name: 'X1 Carbon', brand: 'Bambu Lab' }
// ],
// layerCount: 245,
// filamentInfo: {
// isMultiColor: true,
// filamentCount: 3,
// colors: ['#FF0000', '#00FF00', '#0000FF'],
// types: ['PLA', 'PLA', 'PLA']
// }
// }Detailed Analysis
import { analyzeFileDetailed } from '@polar3d/file-analyzer';
const result = await analyzeFileDetailed(file);
console.log(result);
// Includes all basic info plus:
// {
// fileSize: 15728640,
// slicerInfo: {
// name: 'Bambu Studio',
// version: '01.09.07.52'
// },
// ...
// }Using the Class
import { FileAnalyzer } from '@polar3d/file-analyzer';
const analyzer = new FileAnalyzer();
const result = await analyzer.analyzeFile(file);Supported Slicers
- Bambu Studio - Full support
- PrusaSlicer - Full support
- OrcaSlicer - Full support
- SuperSlicer - Full support
- Ultimaker Cura - Full support
- FlashPrint (GX files) - Full support
- Slic3r - Basic support
Supported Printer Brands
- Bambu Lab (X1, P1, A1 series)
- Prusa Research (MK3, MK4, MINI, XL)
- Creality (Ender, CR, K1 series)
- Anycubic, Elegoo, FlashForge, Ultimaker, Artillery, and more
API
analyzeFile(file: File): Promise<FileAnalysisResult>
Analyzes a 3D printing file and returns basic metadata.
Returns:
{
fileType: 'stl' | '3mf' | 'gcode' | 'gx' | 'unknown';
isSliced: boolean;
printerInfo?: PrinterInfo[];
layerCount?: number;
filamentInfo?: FilamentInfo;
}analyzeFileDetailed(file: File): Promise<DetailedFileAnalysis>
Returns detailed analysis including file size and slicer information.
FileAnalyzer
Class for creating a reusable analyzer instance.
const analyzer = new FileAnalyzer();
await analyzer.analyzeFile(file);
await analyzer.analyzeFileDetailed(file);
await analyzer.isValidGcodeContent(file);
await analyzer.isValid3mf(file);License
MIT © Polar3D
Credits
Built with ❤️ by Polar3D for the 3D printing community.
