JSPM

@polar3d/file-analyzer

1.0.1
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 23
  • Score
    100M100P100Q52052F
  • License MIT

Analyze 3D printing files (STL, 3MF, GCODE, GX) to extract metadata like printer compatibility, layers, filament info, and slicer details

Package Exports

  • @polar3d/file-analyzer

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-analyzer

Usage

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.