Go to file
2026-09-24 10:39:18 +02:00
docs Version initiale 2026-09-24 10:39:18 +02:00
images Version initiale 2026-09-24 10:39:18 +02:00
locale Version initiale 2026-09-24 10:39:18 +02:00
po Version initiale 2026-09-24 10:39:18 +02:00
tests/data Version initiale 2026-09-24 10:39:18 +02:00
.gitignore Version initiale 2026-09-24 10:39:18 +02:00
deploy.ps1 Version initiale 2026-09-24 10:39:18 +02:00
i18n.py Version initiale 2026-09-24 10:39:18 +02:00
pattern_core.py Version initiale 2026-09-24 10:39:18 +02:00
README.md Version initiale 2026-09-24 10:39:18 +02:00
test_pattern.py Version initiale 2026-09-24 10:39:18 +02:00
y_pattern.inx Version initiale 2026-09-24 10:39:18 +02:00
y_pattern.py Version initiale 2026-09-24 10:39:18 +02:00

Remplissage motif Y fléché — extension Inkscape

Une forme courbe percée d'un trou et un cercle, remplis par l'extension d'un réseau de Y fléchés découpé au contour

Extension Inkscape 1.x qui remplit la surface d'une forme fermée avec un motif géométrique de « Y fléchés » : un réseau triangulaire de Y identiques (bras à 0°, 120° et 240°), chaque bras se terminant par un chevron dont les barbes sont parallèles aux deux autres bras. La pointe de chaque flèche vient se loger dans le « V » arrière du Y voisin, ce qui produit l'effet de chevrons imbriqués.

Table des matières

Fonctionnalités

  • Remplissage de path, rect, circle, ellipse, polygon (les groupes sélectionnés sont explorés ; line et polyline sont ignorées)
  • Deux modes au bord de la forme : découpe géométrique des traits sur le contour, ou motifs entiers uniquement avec marge réglable
  • Gestion des trous : les sous-chemins internes sont exclus (règle pair-impair)
  • Proportions réglables : période, longueur des bras et des barbes (en % de la période), rotation, épaisseur et couleur du trait
  • Ancrage du réseau sur l'origine du document (motif continu d'une forme à l'autre) ou au centre de chaque forme
  • Un chemin par motif, sans attribut transform sur les chemins : SVG directement exploitable par les logiciels de découpe laser
  • Motifs ordonnés en serpentin, ligne par ligne, pour limiter les déplacements à vide
  • Index spatial des arêtes du contour : plusieurs milliers de motifs en une fraction de seconde
  • Interface traduite en français et en anglais, selon la langue d'Inkscape (anglais pour toute autre langue)
  • Script de déploiement PowerShell (installation, mise à jour, désinstallation)

Installation

Aucune dépendance externe : l'extension utilise inkex, fourni avec Inkscape.

Windows — script de déploiement

Inkscape fermé, depuis le dossier du projet :

.\deploy.ps1              # copie vers %APPDATA%\inkscape\extensions\yArrowPattern
.\deploy.ps1 -Uninstall   # retire le sous-dossier de l'extension
.\deploy.ps1 -Force       # passe outre le contrôle « Inkscape ouvert »

Installation manuelle

Copier y_pattern.inx, y_pattern.py, pattern_core.py et les dossiers locale/ et images/ dans un sous-dossier (par exemple yArrowPattern) du dossier des extensions utilisateur, puis redémarrer Inkscape :

  • Windows : %APPDATA%\inkscape\extensions
  • Linux : ~/.config/inkscape/extensions
  • macOS : ~/Library/Application Support/org.inkscape.Inkscape/config/inkscape/extensions

Utilisation

  1. Sélectionner une ou plusieurs formes fermées.
  2. Extensions → AlexDesign → Remplissage motif Y fléché… (Y Arrow Pattern Fill… avec une interface en anglais)
  3. Régler les paramètres, puis Appliquer. L'onglet Schéma illustre chaque paramètre.

Le résultat est placé dans un groupe « Motif Y fléché » juste au-dessus de la forme.

Conseils :

  • motif trop serré ou trop lâche → ajuster la période ; les proportions restent identiques
  • traits qui se touchent → réduire l'épaisseur ou la longueur des bras (l'écart entre une pointe et le Y suivant vaut 100 % − bras)
  • en mode « motifs entiers », la demi-épaisseur du trait est ajoutée à la marge pour que rien ne déborde du contour
  • en mode découpe, les extrémités coupées en biais peuvent dépasser du contour d'au plus une demi-épaisseur de trait

Paramètres

Schéma des paramètres : période, bras, barbes, épaisseur, rotation, bord de la forme et ancrage du réseau

Paramètre Défaut Rôle
Période 10.0 Distance entre les centres de deux Y voisins
Longueur des bras 83 % En pourcentage de la période
Longueur des barbes 33 % En pourcentage de la période ; 0 donne des Y simples
Rotation du motif 0° Sens anti-horaire
Épaisseur du trait 0.5 Largeur du trait
Unité mm Unité de la période, de l'épaisseur et de la marge
Couleur du trait #b3b3b3 Couleur et opacité
Bord de la forme Découpe Découpe au contour, ou motifs entiers uniquement
Marge au contour 0.0 Mode « motifs entiers » seulement
Ancrage du réseau Document Origine du document, ou centre de chaque forme
Finesse d'échantillonnage 0.2 Précision de l'aplatissement des courbes de Bézier
Conserver la forme d'origine oui Sinon la forme source est supprimée

Les valeurs par défaut (83 % / 33 %) reproduisent les proportions du motif d'origine.

Structure du projet

y_pattern.inx          Description de la boîte de dialogue Inkscape
y_pattern.py           Extension : lecture de la sélection, aplatissement des
                       chemins, écriture des motifs dans le SVG
pattern_core.py        Noyau géométrique sans dépendance à inkex
deploy.ps1             Déploiement / désinstallation sous Windows
test_pattern.py        Tests pytest
i18n.py                Chaîne de traduction : extraction, mise à jour, compilation
po/                    Catalogues source : modèle .pot, en.po, fr.po
locale/                Catalogues compilés (.mo) chargés par Inkscape
images/                Schéma anglais de l'onglet « Diagram » (déployé)
tests/data/shapes.svg  Formes d'exemple (rectangle, cercle, courbe, forme trouée)
docs/                  Images du README, SVG des schémas et leur générateur
                       (non déployés)

API de pattern_core.py (utilisable seule, hors Inkscape) :

Fonction Rôle
motif_polylines(cx, cy, arm, barb, angle) Polylignes d'un Y fléché
lattice_centers(bbox, period, angle, reach) Centres du réseau triangulaire, en ordre serpentin
EdgeIndex(rings) Index spatial du contour : appartenance, intersections
clip_polyline(polyline, index) Morceaux d'une polyligne intérieurs au contour
motif_fits(polylines, index, clearance) Motif entier intérieur, à distance minimale du bord
fill_pattern(rings, period, …) Remplissage complet, renvoie une liste de motifs
polylines_to_d(polylines) Données d d'un chemin SVG
parse_color(value) Décode la couleur RGBA transmise par Inkscape

Développement

python -m venv .venv
.venv\Scripts\activate      # Linux/macOS : source .venv/bin/activate
pip install pytest
python -m pytest test_pattern.py -q

Résultat attendu : 23 passés, 3 ignorés (tests de bout en bout sautés quand inkex n'est pas importable). Pour les exécuter :

pip install lxml tinycss2 cssselect2 cssselect
$env:PYTHONPATH = 'C:\Program Files\Inkscape\share\inkscape\extensions'
python -m pytest test_pattern.py -q     # 26 passés

Les tests couvrent la géométrie du motif (barbes parallèles aux bras, voisins à une période), la couverture du réseau, l'absence de croisement entre motifs voisins aux proportions par défaut, la découpe (y compris à travers un trou), la marge du mode « motifs entiers » et la continuité du motif entre deux formes adjacentes.

Traductions

Les textes source du .inx et des appels _() de y_pattern.py sont en anglais ; Inkscape les traduit avec le catalogue yarrowpattern (attribut translationdomain du .inx) trouvé dans locale/<langue>/LC_MESSAGES/. i18n.py n'a besoin que de Python (ni xgettext ni msgfmt) :

python i18n.py            # tout : extract + update + compile
python i18n.py extract    # po/yarrowpattern.pot depuis le .inx et le .py
python i18n.py update     # reporte les nouveaux textes dans po/en.po et po/fr.po
python i18n.py compile    # po/*.po -> locale/*/LC_MESSAGES/yarrowpattern.mo

Après modification d'un texte d'interface : lancer python i18n.py, compléter les msgstr vides de po/fr.po (liste affichée par la commande), relancer python i18n.py, puis redéployer. po/en.po est rempli automatiquement avec les textes source. Ajouter une langue : l'ajouter à LANGUAGES dans i18n.py. Le test test_translations_up_to_date_and_complete échoue si un catalogue est incomplet ou si un .mo n'a pas été recompilé.

Schéma des paramètres

Le schéma existe en deux versions, produites à partir de pattern_core (même géométrie que l'extension) :

  • docs/parametres.png : version française du README (1400 px) ;
  • images/parameters_en.png : version anglaise, textes agrandis, affichée à 900 × 694 px dans l'onglet Schéma / Diagram de la boîte de dialogue. Inkscape ne traduit pas le chemin d'une <image> : cet onglet montre la version anglaise quelle que soit la langue.
python docs/schema_parametres.py        # les deux versions (ou : fr, en)

Le script écrit les SVG dans docs/ puis les exporte en PNG avec C:\Program Files\Inkscape\bin\inkscape.com. Il faut passer par inkscape.com : la commande inkscape installée par Chocolatey rend la main avant la fin de l'export.