# 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é) ```powershell # 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 1. Démarrer Inkscape 2. Menu **Extensions > Découpe laser > Boîte à créneaux…** 3. Configurer les paramètres (voir tableau ci-dessous) 4. 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 ```bash 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 ```bash # 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)