| __pycache__ | ||
| tests | ||
| box_core.py | ||
| box_maker.inx | ||
| box_maker.py | ||
| deploy.ps1 | ||
| README.md | ||
Boîte à créneaux pour Inkscape
Extension Inkscape 1.x générant des pièces de boîte à découper au laser. Les parois s'assemblent par queues d'aronde droites (finger joints) à bords complémentaires, garantissant des ajustements serrés et réguliers.
Caractéristiques
- Boîte fermée ou ouverte : 6 pièces (avant, arrière, gauche, droite, fond, couvercle) ou 5 (sans couvercle)
- Dimensions intérieures ou extérieures : le calcul compense automatiquement l'épaisseur
- Créneaux paramétrables : largeur 0 (défaut = 3 × épaisseur) ou valeur explicite, ajustée à un nombre impair par bord
- Compensation du kerf : défaut 0,1 mm, élargit les créneaux, rétrécit les encoches pour un assemblage serré
- Mise en page : espacement entre pièces configurable, centrage automatique sur la vue
- Apparence : couleur et épaisseur du trait réglables
- Étiquettes optionnelles : nom de chaque pièce en texte bleu, gravé avec les créneaux
Structure des pièces
Chaque pièce est un chemin SVG indépendant, placé dans le calque courant :
- Sélectionnable et déplaçable individuellement
- Nommée selon sa fonction (Avant, Arrière, etc.)
- Polygone fermé à bords orthogonaux
Convention d'emboîtement
Garantit des bords complémentaires jumeaux :
| Pièce | Haut | Droite | Bas | Gauche |
|---|---|---|---|---|
| Avant | Mâle | Mâle | Mâle | Mâle |
| Arrière | Mâle | Mâle | Mâle | Mâle |
| Gauche | Mâle* | Femelle | Mâle | Femelle |
| Droite | Mâle* | Femelle | Mâle | Femelle |
| Fond | Femelle | Femelle | Femelle | Femelle |
| Couvercle | Femelle | Femelle | Femelle | Femelle |
* Haut mâle si couvercle présent, bord lisse si boîte ouverte.
- Bord mâle : créneaux extrêmes en saillie
- Bord femelle : créneaux extrêmes en creux
- Coin plein : si aucun bord adjacent n'est femelle
Installation
Via script PowerShell (recommandé)
# Fermer Inkscape au préalable
.\deploy.ps1
# ou avec options :
.\deploy.ps1 -Uninstall
.\deploy.ps1 -Force # Ignore la vérification Inkscape ouvert
.\deploy.ps1 -FolderName 'ma-boite' # Dossier personnalisé
Copie box_maker.inx, box_maker.py, box_core.py dans %APPDATA%\inkscape\extensions\boxMaker/.
Installation manuelle
Copier les trois fichiers dans %APPDATA%\inkscape\extensions\boxMaker/ (créer le dossier s'il n'existe pas). Inkscape explore récursivement ce répertoire.
Utilisation dans Inkscape
- Démarrer Inkscape
- Menu Extensions > Découpe laser > Boîte à créneaux…
- Configurer les paramètres (voir tableau ci-dessous)
- Cliquer Appliquer
Paramètres
| Paramètre | Défaut | Plage | Description |
|---|---|---|---|
| Longueur (mm) | 100 | 5–5000 | Dimension avant/arrière |
| Largeur (mm) | 80 | 5–5000 | Dimension gauche/droite |
| Hauteur (mm) | 50 | 5–5000 | Dimension haut/bas |
| Les dimensions sont | Extérieures | Extérieures / Intérieures | Mode calcul |
| Boîte fermée | ✓ | ✓ / ☐ | Avec couvercle |
| Épaisseur matière (mm) | 3 | 0,5–50 | MDF, plexiglas, etc. |
| Largeur créneaux (mm) | 0 | 0–500 | 0 = auto (3 × épaisseur) |
| Kerf (mm) | 0,1 | 0–2 | Compensation laser |
| Espacement (mm) | 5 | 0–100 | Entre les pièces |
| Épaisseur trait (mm) | 0,1 | 0,001–5 | Largeur du vecteur |
| Couleur trait | #FF0000 (rouge) | Couleur RGB | Pour la découpe laser |
| Nommer les pièces | ☐ | ✓ / ☐ | Texte gravé (bleu) |
Notes sur les paramètres :
- Largeur créneaux 0 calcule automatiquement la meilleure approximation pour un nombre impair de créneaux par bord
- Kerf = 0,1 mm typique pour lasers CO₂ ; ajuster selon le matériau et la machine
- Les dimensions trop petites relatif à l'épaisseur lèvent une erreur (minimum 5 × épaisseur recommandé)
- Étiquettes : texte gravé en bleu, pas de contour, à vérifier avant découpe
Tests
python -m pytest tests/
Validations :
- Nombre impair de créneaux par bord
- Complémentarité des bords mâles/femelles
- Dimensions et orthogonalité des pièces
- Compensation du kerf
- Absence de chevauchements en mise en page
Utilisation CLI
# Environnement Python d'Inkscape
$env:PYTHONPATH = "C:\Program Files\Inkscape\share\inkscape\extensions"
# Génération SVG
& "C:\Program Files\Inkscape\bin\python.exe" box_maker.py `
--length=100 `
--width=80 `
--height=50 `
--thickness=3 `
--finger=9 `
--kerf=0.1 `
--dim_type=exterior `
--lid `
--gap=5 `
--stroke_color=0xff0000ff `
--stroke_width=0.1 `
--labels `
entree.svg > sortie.svg
Le module box_core est indépendant d'Inkscape (Python pur, longueurs en mm).
Modules
| Fichier | Rôle |
|---|---|
box_maker.inx |
Définition de l'interface Inkscape |
box_maker.py |
Extension Inkscape, intégration SVG |
box_core.py |
Géométrie pur Python, indépendant d'Inkscape |
deploy.ps1 |
Script d'installation PowerShell |
tests/test_box_core.py |
Tests unitaires géométrie |
Repère de coordonnées
- Origine (0, 0) : coin haut-gauche de la pièce
- x : vers la droite
- y : vers le bas (SVG)
- Tous les bords sont orthogonaux (horizontaux/verticaux uniquement)