Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

StepToHolder - Fusion 360 Add-in

Convert vendor-supplied STEP files of tool holders into Fusion 360 tool library holder definitions for CAM collision detection.

Quick Start

  1. Open your holder model - Import a STEP file or open an existing document containing the tool holder
  2. Switch to Manufacture workspace and click STEP to Holder in the Manage panel
  3. Select the gauge plane face - Click the flat face where the tool exits the holder (collet nut face)
  4. Fill in holder info - Description, vendor, product ID
  5. Save - Choose "Tool Library" to add directly, or "JSON File" to export

That's it! Your holder is ready for CAM collision checking.

Features

Core Capabilities

  • Automatic profile extraction using Fusion's Spun Profile API for accurate outer envelope capture
  • Multi-body support - Handles holders with extensions (main body + extension as separate bodies)
  • Taper auto-detection - Identifies CAT/BT, HSK, and Morse tapers to orient the holder correctly
  • Direct tool library integration - Save holders directly to Document, Local, or Cloud libraries
  • Rotated model support - Works with models not aligned to standard X/Y/Z axes

Output Options

  • Tool Library (direct) - Add to any Fusion tool library without file export
  • JSON File - Export for backup, sharing, or manual import

Profile Processing

  • Hex nut corners captured via spun profile (true outer envelope)
  • Context-aware bore filtering — inner bores removed only when coexisting with outer body geometry; narrow extension features (probe styluses, long tools) are preserved
  • Narrow axial undercuts (break-away joints, wiper seals) automatically filled for conservative collision envelopes
  • Large radial features (V-grooves, step-downs, tapers) preserved as real geometry
  • Fillets simplified to conical segments
  • Small tessellation artifacts consolidated

Installation

Location

The add-in should be installed in your Fusion 360 add-ins directory:

Windows:

%APPDATA%\Autodesk\Autodesk Fusion 360\API\AddIns\StepToHolder\

macOS:

~/Library/Application Support/Autodesk/Autodesk Fusion 360/API/AddIns/StepToHolder/

Activation

  1. In Fusion 360, go to Tools > Add-Ins
  2. Find "StepToHolder" in the Add-Ins tab
  3. Click Run (optionally check "Run on Startup")
  4. Access the command from Manufacture workspace → Manage panel → STEP to Holder

Usage Guide

Gauge Plane Selection

The gauge plane is the reference point where the tool exits the spindle - typically the face taper flange. This determines:

  • Where gauge length is measured from
  • Which geometry is included in the holder profile

Tips:

  • Select a flat, circular face perpendicular to the holder axis
  • The add-in auto-detects if most geometry is above or below your selection

Multi-Body Holders

If your holder consists of multiple bodies (e.g., main holder + extension), simply have all bodies in the active document. The add-in automatically collects and processes all solid bodies together, creating a unified profile.

Taper Detection

The add-in identifies common spindle tapers by analyzing conical face angles:

Taper Type Half-Angle Standards
CAT/BT 8.297° CAT, BT, NMTB, SK, ISO 40/50, R8
HSK 2.862° HSK-A, HSK-E, HSK-F
Morse 1.49° MT0 through MT7

This helps orient the holder correctly (taper toward spindle).

Configuration Options

Option Description
Description Holder name (defaults to document name)
Vendor Manufacturer name
Product ID Part number / SKU
Draw Sketch Show extracted profile overlaid on model
Debug Mode Keep temporary geometry, write debug files

Save Destinations

Tool Library (direct):

  • [Document] Current Document - Saved with the Fusion document
  • Local libraries - Stored on your computer
  • Cloud/Hub libraries - Synced to your Autodesk account

JSON File:

  • Exports to {name}_holder.json
  • Can be imported later via Tool Library > Import

Output Format

The generated holder definition follows Fusion 360's tool library JSON schema:

{
  "data": [{
    "description": "BT30-ER20-60",
    "gaugeLength": 60.77,
    "guid": "{uuid}",
    "product-id": "BT30-ER20-60",
    "segments": [
      {
        "above-center": false,
        "height": 2.0,
        "lower-diameter": 30.0,
        "upper-diameter": 33.8
      }
    ],
    "type": "holder",
    "unit": "millimeters",
    "vendor": "Maritool"
  }]
}

Segment Orientation

  • Segments are ordered from gauge line toward spindle
  • lower-diameter = diameter at bottom (toward tool)
  • upper-diameter = diameter at top (toward spindle)
  • height = axial length of segment

How It Works

  1. Body Collection - Gathers all solid bodies from root component and sub-components
  2. Axis Detection - Finds the largest cylindrical/conical face to determine axis of revolution
  3. Taper Identification - Matches cone angles to known tapers for correct orientation
  4. Spun Profile Creation - Uses Fusion's Spun Profile API to generate 2D silhouette
  5. Curve Processing - Converts sketch lines and arcs to profile segments
  6. Outer Envelope Filter - Context-aware removal of inner bore geometry while preserving extension features
  7. Undercut Fill - Fills narrow axial undercuts (≤1.5mm deep, ≤5mm span) for conservative collision checking
  8. Gauge Clipping - Clips profile to holder side of gauge plane
  9. Segment Generation - Builds holder segments with diameter/height data

Limitations

  • Axisymmetric bodies only - The holder must be a body of revolution (standard for tool holders)
  • Outer envelope only - Internal features (drive dogs, keyways) are not captured in the holder profile
  • Conservative undercut fill - Narrow axial undercuts (≤1.5mm deep) are filled; deeper grooves are preserved as-is

File Structure

StepToHolder/
├── StepToHolder.py           # Main add-in entry point
├── StepToHolder.manifest     # Fusion add-in manifest
├── lib/
│   ├── profile_extractor.py  # Spun profile extraction
│   └── holder_generator.py   # JSON generation
├── tests/
│   ├── test_profile_extraction.py
│   └── test_outer_envelope.py
└── resources/                # Icons for Fusion UI

Development

Running Tests

Tests run without Fusion 360 using mock data:

pytest tests/ -v

Hot Reload

The add-in reloads lib/ modules on each command execution. After editing library code, simply close and reopen the command dialog to pick up changes.

License

MIT License - See LICENSE file.

Disclaimer

USE AT YOUR OWN RISK. This software is provided "as is" without warranty of any kind. The generated holder profiles are approximations intended for collision detection only. Always verify holder dimensions against manufacturer specifications before use in production. The authors are not responsible for any damage to tools, workpieces, machines, or persons resulting from use of this software.

Contributing

Contributions welcome! Please ensure tests pass before submitting pull requests.

Acknowledgments

  • Built for use with Maritool holders, but works with any vendor's STEP files
  • Thanks to the Fusion 360 API documentation and community

About

Convert vendor-supplied STEP files of tool holders into Fusion 360 tool library holder definitions.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages