# 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 ```