7.3 KiB
Remplissage motif relief — extension Inkscape
Sommaire
Fonctionnalités
- Motif périodique (maille hexagonale de 5 arêtes) calculé, pas importé : taille, rotation et origine réglables.
- Formes gérées : chemins (courbes aplaties), rectangles, cercles, ellipses, polygones, polylignes, et groupes de ces éléments (transformations prises en compte). Les chemins composés avec trous restent vides à l'intérieur des trous.
- Deux modes d'origine : centre de chaque forme (motif symétrique) ou origine du document (motif continu d'une forme à l'autre).
- Segments alignés fusionnés : peu de nœuds, un seul chemin par forme, pas de
transformsur les chemins produits. - Option : tracer aussi le contour de la forme ; option : conserver ou supprimer la forme d'origine.
- Garde-fou : refus au-delà de 250 000 segments, avec un message d'aide.
- Interface traduite en français et en anglais, selon la langue d'Inkscape (anglais pour toute autre langue).
- Script de déploiement Windows (
deploy.ps1).
Installation
Aucune dépendance externe : l'extension utilise inkex, fourni avec Inkscape.
Windows
Fermer Inkscape, puis, dans PowerShell, depuis le dossier du projet :
.\deploy.ps1 # installe
.\deploy.ps1 -Uninstall # désinstalle
.\deploy.ps1 -Force # installe même si Inkscape est ouvert
Les fichiers sont copiés dans %APPDATA%\inkscape\extensions\Remplissage motif relief.
Manuelle
Copier relief_fill.inx, relief_fill.py, relief_core.py, images/ et locale/
dans un sous-dossier du dossier d'extensions utilisateur :
| Système | Dossier |
|---|---|
| Windows | %APPDATA%\inkscape\extensions\ |
| Linux | ~/.config/inkscape/extensions/ |
| macOS | ~/Library/Application Support/org.inkscape.Inkscape/config/inkscape/extensions/ |
Redémarrer Inkscape après l'installation.
Utilisation
- Sélectionner une ou plusieurs formes.
- Menu Extensions > AlexDesign > Remplissage motif relief… (Relief Pattern Fill).
- Régler la longueur d'arête, la rotation et l'origine, puis Appliquer.
Le résultat est un groupe « Remplissage relief » placé juste au-dessus de chaque forme sélectionnée.
Conseils
| Symptôme | Réglage |
|---|---|
| Motif trop fin ou trop dense | Augmenter la longueur d'arête |
| « Trop de traits » | Augmenter la longueur d'arête ou sélectionner une forme plus petite |
| « Aucun trait n'y tient » | Réduire la longueur d'arête |
| Motif discontinu entre deux formes voisines | Choisir l'origine « Origine du document » |
| Texte non rempli | Le convertir d'abord en chemins (Chemin > Objet en chemin) |
Paramètres
| Paramètre | Défaut | Rôle |
|---|---|---|
| Longueur d'arête | 5 mm | Arête unitaire de la grille ; le motif se répète toutes les 5 arêtes |
| Unité | mm | Unité de la longueur d'arête et de l'épaisseur des traits (mm, cm, px, pt, in) |
| Rotation (degrés, sens horaire) | 0 | Fait tourner le motif autour de l'origine du motif |
| Origine du motif | Centre de chaque forme | Nœud de la grille au centre de chaque forme, ou à l'origine du document |
| Couleur des traits | noir | Couleur (et opacité) des traits |
| Épaisseur des traits | 0,3 | Dans l'unité de l'onglet Motif |
| Dessiner aussi le contour de la forme | non | Ajoute un chemin avec le contour de la forme |
| Conserver la forme d'origine | oui | Sinon la forme sélectionnée est supprimée |
Structure du projet
relief_fill.inx Boîte de dialogue (textes source en anglais)
relief_fill.py Couche inkex : sélection, unités, aplatissement, écriture SVG
relief_core.py Logique pure, sans inkex : motif, découpe
i18n.py Extraction / mise à jour / compilation des traductions
po/ relief_fill.pot, en.po, fr.po
locale/<lang>/LC_MESSAGES/relief_fill.mo (générés, déployés)
images/parameters_en.png Schéma de l'onglet « Help » (déployé)
docs/schema_parametres.py Générateur du schéma (fr pour le README, en pour le dialogue)
docs/parametres.png Schéma des paramètres du README
docs/capture-desktop.png Image de présentation du README (rendu de tests/data/shapes.svg)
doc/ Image de référence du motif
tests/data/ SVG d'exemple pour les tests de bout en bout
test_relief_fill.py Tests pytest
deploy.ps1 Déploiement / désinstallation Windows
API du noyau (relief_core.py) :
| Fonction | Rôle |
|---|---|
fill_rings(rings, edge, angle=0, anchor=(0, 0)) |
Segments du motif à l'intérieur d'un contour (pair-impair) |
pattern_segments(bbox, edge) |
Segments du motif couvrant une boîte, nœud (0, 0) à l'origine |
clip_segment(p, q, rings) |
Parties d'un segment situées dans le contour |
point_in_rings(point, rings) |
Appartenance au contour, règle pair-impair |
rotate_point(point, angle, center) |
Rotation (sens horaire à l'écran) |
rings_bbox(rings) |
Boîte englobante |
segments_to_polylines(segments) / polylines_to_d(polylines) |
Conversion vers les données d d'un chemin SVG |
parse_color(value) |
Couleur Inkscape (entier RGBA) → #rrggbb + opacité |
Développement
python -m venv .venv ; .\.venv\Scripts\Activate.ps1
pip install pytest lxml tinycss2 cssselect2 cssselect
python -m pytest -q # 23 tests passés, 11 ignorés (sans inkex)
$env:PYTHONPATH = 'C:\Program Files\Inkscape\share\inkscape\extensions'
python -m pytest -q # 34 tests passés (avec inkex)
Les tests couvrent le noyau (directions, périodicité, fusion des arêtes, découpe,
trous, rotation, ancrage), le bout en bout (formes, courbes, trou, groupe
transformé, échelle de page non standard, options) et la cohérence des
traductions et du .inx.
Traductions
python i18n.py # extrait, met à jour et compile ; liste les msgstr manquants
Après modification d'un texte du .inx ou d'un _("...") : lancer python i18n.py,
compléter les msgstr vides de po/fr.po, relancer. Ne jamais éditer les .mo.
Pour ajouter une langue : l'ajouter à LANGUAGES dans i18n.py.
Schéma des paramètres
python docs\schema_parametres.py # fr -> docs/parametres.png, en -> images/parameters_en.png
L'export PNG passe par inkscape.com. Le schéma est calculé avec les vraies
fonctions de relief_core.

