inkscape.BoxFingering/README.md
2026-09-10 14:15:50 +02:00

104 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Boîte à créneaux pour Inkscape
Extension Inkscape 1.x qui génère le patron d'une boîte à découper au laser. Les faces s'assemblent par queues d'aronde droites (créneaux, _finger joints_) dont la largeur est paramétrable. Chaque pièce est un objet indépendant, déplaçable seul pour optimiser le placement sur la plaque.
## Table des matières
- [Fonctionnalités](#fonctionnalités)
- [Installation](#installation)
- [Utilisation](#utilisation)
- [En ligne de commande](#en-ligne-de-commande)
- [Le kerf : compensation du trait laser](#le-kerf--compensation-du-trait-laser)
- [Le problème](#le-problème)
- [Ce que fait l'extension](#ce-que-fait-lextension)
- [Mesurer son kerf](#mesurer-son-kerf)
- [Régler l'ajustement](#régler-lajustement)
- [Structure du projet](#structure-du-projet)
## Fonctionnalités
- Boîte **fermée** (6 pièces : avant, arrière, gauche, droite, fond, couvercle) ou **ouverte** (5 pièces, bord haut des côtés droit)
- Dimensions saisies **intérieures** ou **extérieures** (l'épaisseur est ajoutée automatiquement en mode intérieur)
- Largeur des créneaux paramétrable ; `0` = **3 × l'épaisseur** (défaut). La largeur est ajustée pour obtenir un nombre impair de créneaux par bord
- Compensation du **kerf** (défaut 0,1 mm), voir [section dédiée](#le-kerf--compensation-du-trait-laser)
- Chaque pièce = un chemin SVG fermé, nommé (Avant, Fond…), placé directement dans le calque courant : sélectionnable et déplaçable individuellement
- Pièces disposées en grille, espacement réglable, centrées sur la vue
- Couleur et épaisseur du trait réglables (défaut : rouge, 0,1 mm)
- Étiquettes optionnelles (texte bleu). Désactivées par défaut : le laser graverait le texte
- Message d'erreur si une dimension est trop petite (minimum 5 × l'épaisseur en dimension extérieure)
## Installation
Copier `box_maker.inx`, `box_maker.py` et `box_core.py` dans `%APPDATA%\inkscape\extensions\boxMaker\`, puis redémarrer Inkscape.
## Utilisation
1. Menu **Extensions > AlexDesign > Boîte à créneaux…**
2. Régler les paramètres, cocher **Aperçu en direct** si besoin
3. **Appliquer**
### En ligne de commande
Avec le Python d'Inkscape (PowerShell) :
```powershell
$env:PYTHONPATH = "C:\Program Files\Inkscape\share\inkscape\extensions"
& "C:\Program Files\Inkscape\bin\python.exe" box_maker.py `
--length=100 --width=80 --height=50 --thickness=3 `
--kerf=0.1 --dim_type=interior --lid=false --labels=true `
--stroke_color=4278190335 entree.svg > sortie.svg
```
Les options booléennes exigent une valeur (`--lid=true` / `--lid=false`). La couleur est un entier RGBA (`4278190335` = `0xff0000ff`, rouge).
## Le kerf : compensation du trait laser
### Le problème
Le faisceau laser n'a pas une largeur nulle : il vaporise une bande de matière, le **kerf** (typiquement 0,05 à 0,3 mm selon la machine, la lentille, la matière et son épaisseur). Cette bande est centrée sur le trait du dessin, donc chaque bord découpé recule de **kerf / 2** :
- une pièce de 100 mm sort à 100 − kerf ;
- un créneau de 9 mm sort à 9 − kerf ;
- une encoche de 9 mm sort à 9 + kerf.
Au montage, chaque créneau a donc un jeu d'un kerf complet dans son encoche : la boîte tient mal, voire pas du tout sans colle.
### Ce que fait l'extension
Chaque contour est décalé **vers l'extérieur de kerf / 2** avant d'être dessiné (`offset_orthogonal` dans `box_core.py`). Sur le dessin :
| Élément | Cote dessinée | Cote après découpe |
| --------------- | ------------- | ------------------ |
| Pièce de 100 mm | 100 + kerf | 100 mm |
| Créneau de 9 mm | 9 + kerf | 9 mm |
| Encoche de 9 mm | 9 − kerf | 9 mm |
Après passage du laser, les pièces retrouvent leurs cotes nominales et les créneaux remplissent exactement les encoches. Conséquence visible dans Inkscape : les pièces mesurent kerf de plus que les dimensions saisies, c'est normal.
### Mesurer son kerf
1. Dessiner un carré de 20 mm, le découper avec les réglages habituels (puissance, vitesse, matière).
2. Mesurer le carré au pied à coulisse : kerf = 20 − cote mesurée.
Pour plus de précision, découper une rangée de 10 carrés de 10 mm jointifs : kerf = (100 − longueur totale mesurée des 10 carrés) / 10.
### Régler l'ajustement
- **kerf = valeur mesurée** : ajustement exact, montage à frottement.
- **kerf plus grand** : plus serré (montage au maillet, sans colle). Attention au bois, qui gonfle avec l'humidité.
- **kerf plus petit** : du jeu (montage facile, collage).
- **kerf = 0** : pas de compensation, cotes du dessin = cotes nominales.
Le kerf dépend de la matière : refaire la mesure en changeant de matériau ou d'épaisseur.
## Structure du projet
```
.
├── box_maker.inx # Interface de l'extension (paramètres, menu)
├── box_maker.py # Extension inkex : conversion en SVG, placement dans le calque
├── box_core.py # Géométrie pure Python (mm) : créneaux, kerf, mise en page
├── deploy.ps1 # Installation / désinstallation dans Inkscape
└── tests/
└── test_box_core.py # Tests unitaires de la géométrie
```