home / skills / benchflow-ai / skillsbench / mesh-analysis

This skill analyzes 3D STL meshes to compute volumes, extract attributes, and isolate the largest component for cleaner noisy scans.

npx playbooks add skill benchflow-ai/skillsbench --skill mesh-analysis

Review the files below or copy the command above to add this skill to your agents.

Files (2)
SKILL.md
2.2 KB
---
name: mesh-analysis
description: "Analyzes 3D mesh files (STL) to calculate geometric properties (volume, components) and extract attribute data. Use this skill to process noisy 3D scan data and filter debris."
---

# Mesh Analysis

This skill provides the `MeshAnalyzer` tool for robustly processing 3D STL files. It handles Binary STL parsing and connected component analysis.

## When to Use

Use this skill for:
1.  **Geometric Analysis**: Calculating volume of complex or noisy meshes.
2.  **Noise Filtering**: Isolating the largest connected component from "dirty" scan data.
3.  **Attribute Extraction**: Extracting metadata (e.g. material IDs) stored in the STL file attribute bytes.

## Usage

The tool is provided as a Python module in the `scripts/` directory.

### Basic Workflow

```python
import sys
# Add skill path to sys.path
sys.path.append('/root/.claude/skills/mesh-analysis/scripts')

from mesh_tool import MeshAnalyzer

# Initialize with file path
analyzer = MeshAnalyzer('/path/to/your/file.stl')

# Analyze specific components
# Automatically identifies the largest component (main part)
report = analyzer.analyze_largest_component()

volume = report['main_part_volume']
mat_id = report['main_part_material_id']

print(f"Volume: {volume}")
print(f"Material ID: {mat_id}")
```

### Calculating Mass

The tool provides the **Volume** and **Material ID**. To calculate **Mass**:
1.  Read the **Material ID** from the analysis report.
2.  Consult your provided material reference data (e.g. density tables) to find the density.
3.  Calculate: `Mass = Volume * Density`.

**Critical Note on Units**:
*   The **Volume** returned is in the **same units** as the STL file's coordinates (cubed).
*   **Do not assume** millimeters or inches. Check your task instructions for the coordinate system units (e.g., if coordinates are in cm, volume is in cm³).
*   If your density table uses the same unit (e.g., g/cm³ and cm³), **multiply directly**. No unit conversion is needed.

## Critical Notes

*   **Binary Support**: The tool automatically handles Binary STL files.
*   **Attribute extraction**: The tool extracts the 2-byte attribute stored in the binary STL format (often used for color or material ID).

Overview

This skill analyzes 3D STL mesh files to compute geometric properties and extract embedded attribute data. It focuses on robust handling of Binary STL, connected-component analysis, and filtering noisy scan data. Use it to isolate main parts, compute volume, and read 2-byte attribute fields such as material IDs or color codes.

How this skill works

The tool parses Binary STL files and builds connected-component graphs from triangle connectivity to identify separate parts. It computes volumes for each component and identifies the largest (main) component automatically. The analyzer also reads the 2-byte attribute stored in Binary STL triangles and summarizes per-component attribute values.

When to use it

  • Calculate volume of complex or noisy 3D scans
  • Isolate and keep the largest connected component from scan debris
  • Extract material IDs or color codes embedded in Binary STL attributes
  • Preprocess meshes before mass or density-based calculations
  • Validate that a scanned part is a single contiguous object

Best practices

  • Confirm the coordinate unit system of your STL before interpreting volume (volume units = coordinate units^3).
  • Use the largest-component report to remove small debris or scanning artifacts before downstream processing.
  • Map extracted material IDs to a reliable density table for correct mass calculations.
  • Validate results on a small sample mesh to confirm attribute encoding conventions.
  • When combining volumes or densities across parts, ensure consistent units and conversions if needed.

Example use cases

  • Post-process 3D scan of a mechanical part to remove loose debris and compute the part volume.
  • Extract embedded material ID from an STL and compute mass using a company density reference.
  • Batch-analyze multiple STL files to report main-part volumes for inventory or QA.
  • Detect when a scan produced multiple disconnected fragments and split them into separate files for repair.

FAQ

What file formats are supported?

The tool is built for Binary STL files and automatically handles Binary STL parsing and attribute extraction.

What units are volumes reported in?

Volume is returned in the coordinate units cubed (e.g., if coordinates are in cm, volume is in cm^3). Confirm your source coordinate units before converting.

How do I compute mass from the report?

Read the material ID from the report, look up the corresponding density in your reference table, then multiply Mass = Volume * Density.