inkscape.BoxFingering/README.md
2026-09-10 13:54:19 +02:00

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