inkscape.motif.relief/README.md
2026-10-19 21:27:54 +02:00

7.3 KiB

Remplissage motif relief — extension Inkscape

Cinq formes (rectangle, cercle, courbe, rectangle troué, ellipse) remplies par le motif de Y en relief, le trou restant vide

Extension Inkscape 1.x qui remplit l'intérieur des formes sélectionnées avec un motif en relief : des figures en « Y » dessinées sur une grille isométrique (arêtes verticales et à ±30°), relevé fidèle de l'image de référence du dossier doc/. Les traits sont coupés exactement au bord de la forme, trous compris, et le résultat tient dans un seul chemin par forme.

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 transform sur 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

  1. Sélectionner une ou plusieurs formes.
  2. Menu Extensions > AlexDesign > Remplissage motif relief… (Relief Pattern Fill).
  3. 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

Schéma des 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.