Comment installer et programmer des scripts Python dans Inkscape ?

Comment installer et programmer des scripts Python dans
Inkscape ?
VVPix
v0.10 (d´
ecembre 2008)
Table des mati`
eres
1 Introduction 1
2 Installations 2
2.1 Installation d’Inkscape avec Windows ............................. 2
2.2 Installation de nouveaux scripts Python dans Inkscape .................... 2
2.3 Localisation des nouveaux scripts dans Inkscape ....................... 2
3 Programmation Python 3
3.1 Saisie de valeurs grˆ
ace `
a une interface utilisateur ....................... 3
3.2 Dessin des formes de base ................................... 5
3.3 Acc`
es `
a la documentation .................................... 8
1 Introduction
Inkscape est un logiciel de dessin vectoriel, gratuit et multiplateformes (Linux, Mac, Windows).
Ce document indique succintement comment ´
ecrire des scripts Python pour ce logiciel.
J’ai ´
ecrit ce document en faisant des tests sur la version 0.46 d’Inkscape, sous Windows 2000 SP4.
www.VVPix.com
2 Installations
2.1 Installation d’Inkscape avec Windows
La derni`
ere version d’Inkscape est disponible ici : http://www.inkscape.org/.
L’installation ne pose aucun probl`
eme particulier. Python est install´
e avec Inkscape et il ne faut faire
aucune installation compl´
ementaire pour pouvoir b´
en´
eficier des scripts Python avec Inkscape.
2.2 Installation de nouveaux scripts Python dans Inkscape
Un script Python pour Inkscape est constitu ´
e d’au moins deux fichiers :
Un fichier .inx :
Un fichier .py
Ces scripts sont localis ´
es dans le dossier share/extensions d’Inkscape.
Par exemple, le chemin par d´
efaut dans Windows est :
C:\Program Files\Inkscape\share\extensions
Avec Gimp et Blender, on peut choisir o`
u placer ses greffons pour ´
eviter de les m´
elanger avec ceux
livr´
es avec le logiciel, mais apparemment ce n’est pas encore le cas avec Inkscape v0.46.
2.3 Localisation des nouveaux scripts dans Inkscape
La localisation d’un script s’effectue grˆ
ace au fichier .inx. Un fichier “inx” est un fichier XML dont on
trouve un sch´
ema DTD sur le site officiel d’Inkscape.
Voici par exemple le fichier hello.inx, d´
eriv ´
e de l’exemple “Hello world” post ´
e sur le wiki de www.
inkscape.org.
Listing 1 – Exemple de fichier “.inx” : le fichier “Hello.inx”
1<inkscapeextension>
<name>Hello</ name>
3<i d>org . e kips . f i l t e r . h e l l o</ i d>
<dependency ty pe = e x e cu t abl e l o c a t i o n = ” e xt en si on s >h e l l o . py</ dependency>
5<dependency ty pe = e x e cu t abl e l o c a t i o n = ” e xt en si on s >i nke x . py</ dependency>
<param name= ” s t r T e x t e type = ” s t r i n g g ui t e x t = ” S a isi sse z l e t e x t e a e c r i r e : >
Hello</ param>
7<effect>
<ob je ct type>all</ o bj ec t type>
9<effectsmenu>
<submenu name= ” Exemples ” />
11 </ e f f e c t s menu>
</ effect>
13 <script>
<command r e l d i r = ex t en s io n s i n t e r p r e t e r = ” python >h e l l o . py</ command>
15 </ script>
</ inkscapeextension>
La ligne 2 du listing 1donne le nom d’appel du script dans le menu d’Inkscape (“Hello”).
Les lignes 9 et 10 indiquent que le script sera ins´
er´
e dans le menu “Effect - Exemples” d’Inkscape (voir
figure 1ci-apr`
es).
La ligne 4 indique quel fichier Python est reli´
e au fichier .py (hello.py).
page 2 / 8
www.VVPix.com
FIG. 1 – Script “Hello” dans le menu “Effect” d’Inkscape
ATTENTION : Un moyen tr`
es simple d’´
ecrire un fichier “.inx” qui ne fonctionne pas est d’ajouter un
accent dans n’importe laquelle de ses lignes. Le fichier “.inx” que j’ai utilis´
e est ´
ecrit avec le jeu de
caract`
ere CP1252 (ISO 8859-15).
3 Programmation Python
Dans les fichiers Python, comme dans les fichiers “.inx”, il ne faut utiliser aucun accent si on utilise le
jeu de caract`
ere CP1252 (ISO 8859-15).
3.1 Saisie de valeurs grˆ
ace `
a une interface utilisateur
Le fichier “Hello.inx”, listing 1, permet aussi de
cr´
eer l’interface graphique figure 2, juste avec
la ligne 6.
On voit la r´
ecup´
eration de cette variable
“strTexte” dans le listing 2, ligne 55 et 56.
FIG. 2 – Interface utilisateur g´
en´
er´
ee par le fi-
chier “Hello.inx”
Listing 2 – Fichier “hello.py” (partiel)
# ! / u sr / bin / env python
2
# Les deux l i g n e s s u i v a n t s ont n ece ss ai r es seulement s i l e s c r i p t n e s t pas
4# d i re ct em e nt dans l e d o s s i e r d i n s t a l l a t i o n
im po rt sys
6#sys . path . append ( / usr / share / inkscape / ex t en s io n s )
8# U t i l i s a t i o n du module in ke x avec des e f f e t s p r e d e f i n i s
im po rt inkex
10 # Le module s i m p l e s t y l e f o u r n i t des f o n c t i o n s pour l e p ar si ng des s t y l e s
page 3 / 8
www.VVPix.com
from simplestyle im po rt
12
class CHello ( i nkex . E f f e c t ) :
14 ” ” ”
Exemple Inkscape
16 Cree un nouveau calque e t dessine des elements de base
” ” ”
18 def i n i t ( s e l f ) :
”””
20 Co ns t ru ct e ur
D e f i n i t l o p t io n s t r T e x t e du s c r i p t
22 ”””
# Appel du c o n s t r u c t e u r .
24 in k ex . E f f e c t . i n i t ( s e l f )
26 # D e f i n i t l a c ha ine d o p t i o n s t r T e x t e avec l e r a c c o u r c i w e t
# l a v a l e u r pa r d e f a u t H e l l o .
28 s e l f . O p t io n P a r s er . a dd opt i on ( w ’ , s t r T e x t e , a c t i o n = s t o r e ,
type = s t r i n g ,
30 dest = s t r T e x t e , d e f a u l t = H e l lo ,
help = ’ Message a e c r i r e ? )
32
def e f f e c t ( s e l f ) :
34 ”””
Fon c tion p r i n c i p a l e
36 Surchage l a f o n c t i o n de l a clas se de base
Dessine quelques elements sur l e docuement SVG
38 ”””
# Recupere l e document SVG p r i n c i p a l
40 svg = s e l f . document . g e t r o o t ( )
42 # Recupe ration de l a hauteur et de l a l a r g e u r de l a f e u i l l e
wi dt h = in ke x . u n i t t o u u ( svg . g et ( w id th ) )
44 h e i g h t = i n ke x . u n i t t o u u ( svg . a t t r i b [ h e i g h t ] )
46 # Cr ea t io n d un nouveau calque
l a y e r = i nk e x . e t r e e . SubElement ( svg , ’ g )
48 l a y e r . se t ( i nke x . addNS( l a b e l , i nksc ape ) , Layer t e x t e )
l a y e r . se t ( i nke x . addNS( ’ groupmode , inksc ape ) , l a y e r )
50
# Cr ea ti on d un element t e x t e
52 t e x t e = i nk e x . e t r e e . Element ( i n k e x . addNS ( t e x t , svg ) )
#Re cu perat io n de l a v a l e u r de l a v a r i a b l e s t r T e x t e s a i s i e dans l a
54 # b o i t e de d ia lo gu e
s t r V a l = s e l f . o p ti o ns . s t r T e x t e
56 t e xt e . t e x t = s t r V a l
[...]
58
# Execute l a f o n c t i o n e f f e c t de l a cl as se CHello
60 h e l l o = CHello ( )
h e l l o . a f f e c t ( )
page 4 / 8
www.VVPix.com
3.2 Dessin des formes de base
Le script listing 3(page 5), associ ´
e au fichier inx, listing 1, produit l’image figure 3.
FIG. 3 – R´
esultat du script “Hello.py”, listing 3
Listing 3 – Fichier “hello.py”
1# ! / u sr / bin / env python
3# Les deux l i g n e s s u i v a n t s on t n ec es sa ir es seulement s i l e s c r i p t n e s t pas
# d i re ct em e nt dans l e d o s s i e r d i n s t a l l a t i o n
5im po rt sys
#sys . path . append ( / usr / share / inkscape / ex t en s io n s )
page 5 / 8
1 / 8 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !