144 lines
5.3 KiB
Markdown
144 lines
5.3 KiB
Markdown
# 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)
|