evo-stl-binary-parser

SkillFiles & storage

Parses binary STL files using Python's struct module, extracting triangle vertices, normals, and the 2-byte attribute byte count (used as Material ID). Provides filtering by Material ID and density table parsing.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the evo-stl-binary-parser skill

What this skill tells your AI

The instructions your AI receives, as published by openlair/openskill in tasks-evolved/3d-scan-calc/environment/skills/evo-stl-binary-parser/SKILL.md and read by ahel’s review.

Parses binary STL files and material density tables.

Key Functions

  • parse_binary_stl(filepath) - Parse binary STL, returns list of (v1, v2, v3, material_id) tuples
  • parse_material_density_table(filepath) - Parse markdown density table, returns {id: density} dict
  • filter_facets_by_material_id(triangles, material_id) - Filter triangles by material
  • detect_material_id(triangles) - Find dominant material ID (excluding debris ID=1)
  • lookup_density(material_id, density_table=None) - Look up density from table

Usage

import sys
sys.path.insert(0, '/app/environment/skills/evo-stl-binary-parser/scripts')
from utils import parse_binary_stl, parse_material_density_table, lookup_density

triangles = parse_binary_stl('/root/scan_data.stl')
density_table = parse_material_density_table('/root/material_density_table.md')

Binary STL Layout

  • 80 bytes header, 4 bytes uint32 count, N x 50-byte facet records
  • Each facet: 12 bytes normal + 36 bytes vertices + 2 bytes attribute (Material ID)
  • Format string: '<12fH' (little-endian)
  • data[3:6]=v1, data[6:9]=v2, data[9:12]=v3, data[12]=attribute

Signals

GitHub stars
89
Forks
4
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
evo-stl-binary-parser
Source
github.com/openlair/openskill