patch for paths_svg2obj.py by author jms:
This patch solves some major problems of the svg script : - reading of the inkscape svg format - parsing of the scientific numbers - redundant arc data in the same path for only one command "a" - blending of curves after several files import and at the end a more correct management of the current point.
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
# -*- coding: latin-1 -*-
|
# -*- coding: latin-1 -*-
|
||||||
"""
|
"""
|
||||||
SVG 2 OBJ translater, 0.5.9h
|
SVG 2 OBJ translater, 0.5.9n
|
||||||
Copyright (c) jm soler juillet/novembre 2004-april 2007,
|
Copyright (c) jm soler juillet/novembre 2004-february 2009,
|
||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
released under GNU Licence
|
released under GNU Licence
|
||||||
for the Blender 2.42 Python Scripts Bundle.
|
for the Blender 2.42 Python Scripts Bundle.
|
||||||
@@ -20,7 +20,6 @@ en m
|
|||||||
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||||
MA 02111-1307, <20>tats-Unis.
|
MA 02111-1307, <20>tats-Unis.
|
||||||
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
@@ -35,7 +34,7 @@ You should have received a copy of the GNU General Public License
|
|||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
|
#
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# Page officielle :
|
# Page officielle :
|
||||||
# http://jmsoler.free.fr/didacticiel/blender/tutor/cpl_import_svg.htm
|
# http://jmsoler.free.fr/didacticiel/blender/tutor/cpl_import_svg.htm
|
||||||
@@ -253,15 +252,27 @@ Changelog:
|
|||||||
|
|
||||||
0.5.9h : - 2007/5/2
|
0.5.9h : - 2007/5/2
|
||||||
- script was updated with the modifs by cambo
|
- script was updated with the modifs by cambo
|
||||||
- removed all debug statements
|
- removed all debug statements
|
||||||
- correction of a zero division error in the calc_arc function.
|
- correction of a zero division error in the calc_arc function.
|
||||||
|
|
||||||
|
0.5.9f: - 2007/15/7
|
||||||
|
- Correction de plusieurs bugs sur l'attributions des couleurs et le nommage
|
||||||
|
des courbes
|
||||||
|
|
||||||
|
0.5.9i : - ??/??/??
|
||||||
|
- Patch externe r<>alis<69> sur blender.org project.
|
||||||
|
|
||||||
|
0.5.9j : - 08/11/2008
|
||||||
|
0.5.9k : - 14/01/2009
|
||||||
|
0.5.9l : - 31/01/2009
|
||||||
|
0.5.9n : - 01/02/2009
|
||||||
|
|
||||||
==================================================================================
|
==================================================================================
|
||||||
=================================================================================="""
|
=================================================================================="""
|
||||||
SHARP_IMPORT=0
|
SHARP_IMPORT=0
|
||||||
SCALE=1
|
SCALE=1
|
||||||
scale_=1
|
scale_=1
|
||||||
DEBUG = 0#print
|
DEBUG = 0
|
||||||
DEVELOPPEMENT=0
|
DEVELOPPEMENT=0
|
||||||
TESTCOLOR=0
|
TESTCOLOR=0
|
||||||
|
|
||||||
@@ -533,7 +544,7 @@ def createCURVES(curves, name):
|
|||||||
scene.objects.selected = []
|
scene.objects.selected = []
|
||||||
|
|
||||||
if not SEPARATE_CURVES:
|
if not SEPARATE_CURVES:
|
||||||
c = Curve.New()
|
c = Curve.New()
|
||||||
c.setResolu(24)
|
c.setResolu(24)
|
||||||
|
|
||||||
MATNAME=[]
|
MATNAME=[]
|
||||||
@@ -709,7 +720,6 @@ def circle(prp):
|
|||||||
else : cx =float(prp['cx'])
|
else : cx =float(prp['cx'])
|
||||||
if 'cy' not in prp: cy=0.0
|
if 'cy' not in prp: cy=0.0
|
||||||
else : cy =float(prp['cy'])
|
else : cy =float(prp['cy'])
|
||||||
#print prp.keys()
|
|
||||||
r = float(prp['r'])
|
r = float(prp['r'])
|
||||||
D=['M',str(cx),str(cy+r),
|
D=['M',str(cx),str(cy+r),
|
||||||
'C',str(cx-r), str(cy+r*0.552),str(cx-0.552*r),str(cy+r), str(cx),str(cy+r),
|
'C',str(cx-r), str(cy+r*0.552),str(cx-0.552*r),str(cy+r), str(cx),str(cy+r),
|
||||||
@@ -852,7 +862,7 @@ def calc_arc (cpx,cpy, rx, ry, ang, fa , fs , x, y) :
|
|||||||
#--------------------
|
#--------------------
|
||||||
# 0.3.9
|
# 0.3.9
|
||||||
#--------------------
|
#--------------------
|
||||||
def curve_to_a(c,D,n0,CP): #A,a
|
def curve_to_a(curves, c,D,n0,CP): #A,a
|
||||||
global SCALE
|
global SCALE
|
||||||
l=[float(D[c[1]+1]),float(D[c[1]+2]),float(D[c[1]+3]),
|
l=[float(D[c[1]+1]),float(D[c[1]+2]),float(D[c[1]+3]),
|
||||||
int(D[c[1]+4]),int(D[c[1]+5]),float(D[c[1]+6]),float(D[c[1]+7])]
|
int(D[c[1]+4]),int(D[c[1]+5]),float(D[c[1]+6]),float(D[c[1]+7])]
|
||||||
@@ -866,8 +876,7 @@ def curve_to_a(c,D,n0,CP): #A,a
|
|||||||
POINTS= calc_arc (CP[0],CP[1],
|
POINTS= calc_arc (CP[0],CP[1],
|
||||||
l[0], l[1], l[2]*(PI / 180.0),
|
l[0], l[1], l[2]*(PI / 180.0),
|
||||||
l[3], l[4],
|
l[3], l[4],
|
||||||
l[5], l[6] )
|
l[5], l[6] )
|
||||||
#if DEBUG == 1 : print POINTS
|
|
||||||
for p in POINTS :
|
for p in POINTS :
|
||||||
B=Bez()
|
B=Bez()
|
||||||
B.co=[ p[2][0],p[2][1], p[0][0],p[0][1], p[1][0],p[1][1]]
|
B.co=[ p[2][0],p[2][1], p[0][0],p[0][1], p[1][0],p[1][1]]
|
||||||
@@ -881,16 +890,23 @@ def curve_to_a(c,D,n0,CP): #A,a
|
|||||||
BP.co[2]=BP.co[0]
|
BP.co[2]=BP.co[0]
|
||||||
BP.co[3]=BP.co[1]
|
BP.co[3]=BP.co[1]
|
||||||
CP=[l[5], l[6]]
|
CP=[l[5], l[6]]
|
||||||
|
#---------- 059m------------
|
||||||
|
if len(D)>c[1]+7 and D[c[1]+8] not in TAGcourbe :
|
||||||
|
c[1]+=7
|
||||||
|
curves,n0,CP=curve_to_a(curves, c, D, n0,CP)
|
||||||
|
#---------- 059m------------
|
||||||
return curves,n0,CP
|
return curves,n0,CP
|
||||||
|
|
||||||
def move_to(c, D, n0,CP, proprietes):
|
def move_to(curves, c, D, n0,CP, proprietes):
|
||||||
global DEBUG,TAGcourbe, LAST_ID
|
global DEBUG,TAGcourbe, LAST_ID
|
||||||
global USE_COLORS
|
global USE_COLORS
|
||||||
|
|
||||||
l=[float(D[c[1]+1]),float(D[c[1]+2])]
|
l=[float(D[c[1]+1]),float(D[c[1]+2])]
|
||||||
|
|
||||||
if c[0]=='m':
|
if c[0]=='m':
|
||||||
l=[l[0]+CP[0],
|
l=[l[0]+CP[0],
|
||||||
l[1] + CP[1]]
|
l[1] + CP[1]]
|
||||||
|
|
||||||
if n0 in curves.ITEM:
|
if n0 in curves.ITEM:
|
||||||
n0+=1
|
n0+=1
|
||||||
CP=[l[0],l[1]]
|
CP=[l[0],l[1]]
|
||||||
@@ -917,14 +933,12 @@ def move_to(c, D, n0,CP, proprietes):
|
|||||||
B.co=[CP[0],CP[1],CP[0],CP[1],CP[0],CP[1]]
|
B.co=[CP[0],CP[1],CP[0],CP[1],CP[0],CP[1]]
|
||||||
B.ha=['L','C']
|
B.ha=['L','C']
|
||||||
B.tag=c[0]
|
B.tag=c[0]
|
||||||
curves.ITEM[n0].beziers_knot.append(B)
|
curves.ITEM[n0].beziers_knot.append(B)
|
||||||
#if DEBUG==1: print curves.ITEM[n0], CP
|
|
||||||
return curves,n0,CP
|
return curves,n0,CP
|
||||||
|
|
||||||
def close_z(c,D,n0,CP): #Z,z
|
def close_z(curves, c,D,n0,CP): #Z,z
|
||||||
curves.ITEM[n0].flagUV[0]=1
|
curves.ITEM[n0].flagUV[0]=1
|
||||||
if len(curves.ITEM[n0].beziers_knot)>1:
|
if len(curves.ITEM[n0].beziers_knot)>1:
|
||||||
#print len(curves.ITEM[n0].beziers_knot)
|
|
||||||
BP=curves.ITEM[n0].beziers_knot[-1]
|
BP=curves.ITEM[n0].beziers_knot[-1]
|
||||||
BP0=curves.ITEM[n0].beziers_knot[0]
|
BP0=curves.ITEM[n0].beziers_knot[0]
|
||||||
if BP.tag in ['c','C','s','S',]:
|
if BP.tag in ['c','C','s','S',]:
|
||||||
@@ -936,7 +950,7 @@ def close_z(c,D,n0,CP): #Z,z
|
|||||||
n0-=1
|
n0-=1
|
||||||
return curves,n0,CP
|
return curves,n0,CP
|
||||||
|
|
||||||
def curve_to_q(c,D,n0,CP): #Q,q
|
def curve_to_q(curves, c,D,n0,CP): #Q,q
|
||||||
l=[float(D[c[1]+1]),float(D[c[1]+2]),float(D[c[1]+3]),float(D[c[1]+4])]
|
l=[float(D[c[1]+1]),float(D[c[1]+2]),float(D[c[1]+3]),float(D[c[1]+4])]
|
||||||
if c[0]=='q':
|
if c[0]=='q':
|
||||||
l=[l[0]+CP[0], l[1]+CP[1], l[2]+CP[0], l[3]+CP[1]]
|
l=[l[0]+CP[0], l[1]+CP[1], l[2]+CP[0], l[3]+CP[1]]
|
||||||
@@ -948,15 +962,14 @@ def curve_to_q(c,D,n0,CP): #Q,q
|
|||||||
BP.co[2]=BP.co[0]
|
BP.co[2]=BP.co[0]
|
||||||
BP.co[3]=BP.co[1]
|
BP.co[3]=BP.co[1]
|
||||||
curves.ITEM[n0].beziers_knot.append(B)
|
curves.ITEM[n0].beziers_knot.append(B)
|
||||||
#if DEBUG==1: print B.co,BP.co
|
|
||||||
CP=[l[2],l[3]]
|
CP=[l[2],l[3]]
|
||||||
#if DEBUG==1: pass
|
#if DEBUG==1: pass
|
||||||
if len(D)>c[1]+5 and D[c[1]+5] not in TAGcourbe :
|
if len(D)>c[1]+5 and D[c[1]+5] not in TAGcourbe :
|
||||||
c[1]+=4
|
c[1]+=4
|
||||||
curve_to_q(c, D, n0,CP)
|
curves,n0,CP=curve_to_q(curves, c, D, n0,CP)
|
||||||
return curves,n0,CP
|
return curves,n0,CP
|
||||||
|
|
||||||
def curve_to_t(c,D,n0,CP): #T,t
|
def curve_to_t(curves, c,D,n0,CP): #T,t
|
||||||
l=[float(D[c[1]+1]),float(D[c[1]+2])]
|
l=[float(D[c[1]+1]),float(D[c[1]+2])]
|
||||||
if c[0]=='t':
|
if c[0]=='t':
|
||||||
l=[l[0]+CP[0], l[1]+CP[1]]
|
l=[l[0]+CP[0], l[1]+CP[1]]
|
||||||
@@ -970,11 +983,10 @@ def curve_to_t(c,D,n0,CP): #T,t
|
|||||||
BP.co[2]=l0[2]
|
BP.co[2]=l0[2]
|
||||||
BP.co[3]=l0[3]
|
BP.co[3]=l0[3]
|
||||||
curves.ITEM[n0].beziers_knot.append(B)
|
curves.ITEM[n0].beziers_knot.append(B)
|
||||||
#if DEBUG==1: print B.co,BP.co
|
|
||||||
CP=[l[0],l[1]]
|
CP=[l[0],l[1]]
|
||||||
if len(D)>c[1]+3 and D[c[1]+3] not in TAGcourbe :
|
if len(D)>c[1]+3 and D[c[1]+3] not in TAGcourbe :
|
||||||
c[1]+=4
|
c[1]+=4
|
||||||
curve_to_t(c, D, n0,CP)
|
curves,n0,CP=curve_to_t(curves, c, D, n0,CP)
|
||||||
return curves,n0,CP
|
return curves,n0,CP
|
||||||
|
|
||||||
#--------------------
|
#--------------------
|
||||||
@@ -985,7 +997,7 @@ def build_SYMETRIC(l):
|
|||||||
Y=l[3]-(l[1]-l[3])
|
Y=l[3]-(l[1]-l[3])
|
||||||
return X,Y
|
return X,Y
|
||||||
|
|
||||||
def curve_to_s(c,D,n0,CP): #S,s
|
def curve_to_s(curves, c,D,n0,CP): #S,s
|
||||||
l=[float(D[c[1]+1]),
|
l=[float(D[c[1]+1]),
|
||||||
float(D[c[1]+2]),
|
float(D[c[1]+2]),
|
||||||
float(D[c[1]+3]),
|
float(D[c[1]+3]),
|
||||||
@@ -1003,17 +1015,16 @@ def curve_to_s(c,D,n0,CP): #S,s
|
|||||||
#--------------------
|
#--------------------
|
||||||
BP.co[2],BP.co[3]=build_SYMETRIC([BP.co[4],BP.co[5],BP.co[0],BP.co[1]])
|
BP.co[2],BP.co[3]=build_SYMETRIC([BP.co[4],BP.co[5],BP.co[0],BP.co[1]])
|
||||||
curves.ITEM[n0].beziers_knot.append(B)
|
curves.ITEM[n0].beziers_knot.append(B)
|
||||||
#if DEBUG==1: print B.co,BP.co
|
|
||||||
#--------------------
|
#--------------------
|
||||||
# 0.4.3
|
# 0.4.3
|
||||||
#--------------------
|
#--------------------
|
||||||
CP=[l[2],l[3]]
|
CP=[l[2],l[3]]
|
||||||
if len(D)>c[1]+5 and D[c[1]+5] not in TAGcourbe :
|
if len(D)>c[1]+5 and D[c[1]+5] not in TAGcourbe :
|
||||||
c[1]+=4
|
c[1]+=4
|
||||||
curve_to_c(c, D, n0,CP)
|
curves,n0,CP=curve_to_c(curves, c, D, n0,CP)
|
||||||
return curves,n0,CP
|
return curves,n0,CP
|
||||||
|
|
||||||
def curve_to_c(c, D, n0,CP): #c,C
|
def curve_to_c(curves, c, D, n0,CP): #c,C
|
||||||
l=[float(D[c[1]+1]),float(D[c[1]+2]),float(D[c[1]+3]),
|
l=[float(D[c[1]+1]),float(D[c[1]+2]),float(D[c[1]+3]),
|
||||||
float(D[c[1]+4]),float(D[c[1]+5]),float(D[c[1]+6])]
|
float(D[c[1]+4]),float(D[c[1]+5]),float(D[c[1]+6])]
|
||||||
if c[0]=='c':
|
if c[0]=='c':
|
||||||
@@ -1030,6 +1041,8 @@ def curve_to_c(c, D, n0,CP): #c,C
|
|||||||
l[5],
|
l[5],
|
||||||
l[2],
|
l[2],
|
||||||
l[3]] #plus toucher au 2-3
|
l[3]] #plus toucher au 2-3
|
||||||
|
|
||||||
|
|
||||||
B.ha=['C','C']
|
B.ha=['C','C']
|
||||||
B.tag=c[0]
|
B.tag=c[0]
|
||||||
BP=curves.ITEM[n0].beziers_knot[-1]
|
BP=curves.ITEM[n0].beziers_knot[-1]
|
||||||
@@ -1037,32 +1050,38 @@ def curve_to_c(c, D, n0,CP): #c,C
|
|||||||
BP.co[3]=l[1]
|
BP.co[3]=l[1]
|
||||||
BP.ha[1]='C'
|
BP.ha[1]='C'
|
||||||
curves.ITEM[n0].beziers_knot.append(B)
|
curves.ITEM[n0].beziers_knot.append(B)
|
||||||
#if DEBUG==1: print B.co,BP.co
|
|
||||||
CP=[l[4],l[5]]
|
CP=[l[4],l[5]]
|
||||||
if len(D)>c[1]+7 and D[c[1]+7] not in TAGcourbe :
|
if len(D)>c[1]+7 and D[c[1]+7] not in TAGcourbe :
|
||||||
c[1]+=6
|
c[1]+=6
|
||||||
curve_to_c(c, D, n0,CP)
|
curves,n0,CP=curve_to_c(curves, c, D, n0,CP)
|
||||||
return curves,n0,CP
|
return curves,n0,CP
|
||||||
|
|
||||||
def draw_line_l(c, D, n0,CP): #L,l
|
def draw_line_l(curves, c, D, n0,CP): #L,l
|
||||||
l=[float(D[c[1]+1]),float(D[c[1]+2])]
|
|
||||||
|
l=[float(D[c[1]+1]),float(D[c[1]+2])]
|
||||||
if c[0]=='l':
|
if c[0]=='l':
|
||||||
l=[l[0]+CP[0],
|
l=[l[0]+CP[0],
|
||||||
l[1]+CP[1]]
|
l[1]+CP[1]]
|
||||||
B=Bez()
|
B=Bez()
|
||||||
B.co=[l[0],l[1],l[0],l[1],l[0],l[1]]
|
B.co=[l[0],l[1],
|
||||||
|
l[0],l[1],
|
||||||
|
l[0],l[1]]
|
||||||
|
|
||||||
B.ha=['L','L']
|
B.ha=['L','L']
|
||||||
B.tag=c[0]
|
B.tag=c[0]
|
||||||
BP=curves.ITEM[n0].beziers_knot[-1]
|
BP=curves.ITEM[n0].beziers_knot[-1]
|
||||||
BP.ha[1]='L'
|
BP.ha[1]='L'
|
||||||
|
|
||||||
curves.ITEM[n0].beziers_knot.append(B)
|
curves.ITEM[n0].beziers_knot.append(B)
|
||||||
CP=[B.co[0],B.co[1]]
|
CP=[B.co[4],B.co[5]]
|
||||||
|
|
||||||
if len(D)>c[1]+3 and D[c[1]+3] not in TAGcourbe :
|
if len(D)>c[1]+3 and D[c[1]+3] not in TAGcourbe :
|
||||||
c[1]+=2
|
c[1]+=2
|
||||||
draw_line_l(c, D, n0,CP) #L
|
curves,n0,CP=draw_line_l(curves, c, D, n0,CP) #L
|
||||||
|
|
||||||
return curves,n0,CP
|
return curves,n0,CP
|
||||||
|
|
||||||
def draw_line_h(c,D,n0,CP): #H,h
|
def draw_line_h(curves, c,D,n0,CP): #H,h
|
||||||
if c[0]=='h':
|
if c[0]=='h':
|
||||||
l=[float(D[c[1]+1])+float(CP[0]),CP[1]]
|
l=[float(D[c[1]+1])+float(CP[0]),CP[1]]
|
||||||
else:
|
else:
|
||||||
@@ -1077,7 +1096,7 @@ def draw_line_h(c,D,n0,CP): #H,h
|
|||||||
CP=[l[0],l[1]]
|
CP=[l[0],l[1]]
|
||||||
return curves,n0,CP
|
return curves,n0,CP
|
||||||
|
|
||||||
def draw_line_v(c,D,n0,CP): #V, v
|
def draw_line_v(curves, c,D,n0,CP): #V, v
|
||||||
if c[0]=='v':
|
if c[0]=='v':
|
||||||
l=[CP[0], float(D[c[1]+1])+CP[1]]
|
l=[CP[0], float(D[c[1]+1])+CP[1]]
|
||||||
else:
|
else:
|
||||||
@@ -1121,17 +1140,31 @@ TAGtransform=['M','L','C','S','H','V','T','Q']
|
|||||||
tagTRANSFORM=0
|
tagTRANSFORM=0
|
||||||
|
|
||||||
def wash_DATA(ndata):
|
def wash_DATA(ndata):
|
||||||
if ndata:
|
if ndata:
|
||||||
#if DEBUG==1: print ndata
|
|
||||||
ndata = ndata.strip()
|
ndata = ndata.strip()
|
||||||
|
|
||||||
if ndata[0]==',':ndata=ndata[1:]
|
if ndata[0]==',':ndata=ndata[1:]
|
||||||
if ndata[-1]==',':ndata=ndata[:-1]
|
if ndata[-1]==',':ndata=ndata[:-1]
|
||||||
|
|
||||||
#--------------------
|
#--------------------
|
||||||
# 0.4.0 : 'e'
|
# 0.4.0 : 'e'
|
||||||
#--------------------
|
#--------------------
|
||||||
i = ndata.find('-')
|
ni=0
|
||||||
if i != -1 and ndata[i-1] not in ' ,e':
|
i = ndata.find('-',ni)
|
||||||
ndata=ndata.replace('-',',-')
|
if i != -1:
|
||||||
|
while i>-1 :
|
||||||
|
i = ndata.find('-',ni)
|
||||||
|
# 059l ------
|
||||||
|
if i>0 :
|
||||||
|
if ndata[i-1] not in [' ',',','e']:
|
||||||
|
ndata=ndata[:i]+','+ndata[i:]
|
||||||
|
ni=i+2
|
||||||
|
else:
|
||||||
|
ni=i+1
|
||||||
|
elif i>-1:
|
||||||
|
ni=1
|
||||||
|
# 059l ------
|
||||||
|
|
||||||
ndata=ndata.replace(',,',',')
|
ndata=ndata.replace(',,',',')
|
||||||
ndata=ndata.replace(' ',',')
|
ndata=ndata.replace(' ',',')
|
||||||
ndata=ndata.split(',')
|
ndata=ndata.split(',')
|
||||||
@@ -1153,7 +1186,7 @@ def list_DATA(DATA):
|
|||||||
# borner les differents segments qui devront etre
|
# borner les differents segments qui devront etre
|
||||||
# traites
|
# traites
|
||||||
# pour cela construire une liste avec chaque
|
# pour cela construire une liste avec chaque
|
||||||
# la position de chaqe emplacement tag de type
|
# position de chaque emplacement tag de type
|
||||||
# commande path...
|
# commande path...
|
||||||
# ----------------------------------------
|
# ----------------------------------------
|
||||||
tagplace=[]
|
tagplace=[]
|
||||||
@@ -1169,8 +1202,10 @@ def list_DATA(DATA):
|
|||||||
# d'apparition des tags
|
# d'apparition des tags
|
||||||
#------------------------------------------
|
#------------------------------------------
|
||||||
tagplace.sort()
|
tagplace.sort()
|
||||||
|
|
||||||
tpn=range(len(tagplace))
|
tpn=range(len(tagplace))
|
||||||
|
|
||||||
|
|
||||||
#--------------------
|
#--------------------
|
||||||
# 0.3.5 :: short data, only one tag
|
# 0.3.5 :: short data, only one tag
|
||||||
#--------------------
|
#--------------------
|
||||||
@@ -1179,14 +1214,18 @@ def list_DATA(DATA):
|
|||||||
for t in tpn[:-1]:
|
for t in tpn[:-1]:
|
||||||
DATA2.append(DATA[tagplace[t]:tagplace[t]+1])
|
DATA2.append(DATA[tagplace[t]:tagplace[t]+1])
|
||||||
ndata=DATA[tagplace[t]+1:tagplace[t+1]]
|
ndata=DATA[tagplace[t]+1:tagplace[t+1]]
|
||||||
|
|
||||||
if DATA2[-1] not in ['z','Z'] :
|
if DATA2[-1] not in ['z','Z'] :
|
||||||
ndata=wash_DATA(ndata)
|
ndata=wash_DATA(ndata)
|
||||||
DATA2.extend(ndata)
|
DATA2.extend(ndata)
|
||||||
|
|
||||||
DATA2.append(DATA[tagplace[t+1]:tagplace[t+1]+1])
|
DATA2.append(DATA[tagplace[t+1]:tagplace[t+1]+1])
|
||||||
|
|
||||||
if DATA2[-1] not in ['z','Z'] and len(DATA)-1>=tagplace[t+1]+1:
|
if DATA2[-1] not in ['z','Z'] and len(DATA)-1>=tagplace[t+1]+1:
|
||||||
ndata=DATA[tagplace[t+1]+1:]
|
ndata=DATA[tagplace[t+1]+1:]
|
||||||
ndata=wash_DATA(ndata)
|
ndata=wash_DATA(ndata)
|
||||||
DATA2.extend(ndata) #059a
|
DATA2.extend(ndata) #059a
|
||||||
|
|
||||||
else:
|
else:
|
||||||
#--------------------
|
#--------------------
|
||||||
# 0.3.5 : short data,only one tag
|
# 0.3.5 : short data,only one tag
|
||||||
@@ -1276,15 +1315,13 @@ def control_CONTAINT(txt):
|
|||||||
nt0=txt[t0:t1+1]
|
nt0=txt[t0:t1+1]
|
||||||
t2=nt0[nt0.find('(')+1:-1]
|
t2=nt0[nt0.find('(')+1:-1]
|
||||||
val=nt0[:nt0.find('(')]
|
val=nt0[:nt0.find('(')]
|
||||||
|
|
||||||
while t2.find(' ')!=-1:
|
while t2.find(' ')!=-1:
|
||||||
t2=t2.replace(' ',' ')
|
t2=t2.replace(' ',' ')
|
||||||
t2=t2.replace(' ',',')
|
while t2.find(', ')!=-1: #059l
|
||||||
|
t2=t2.replace(', ',',') #059l
|
||||||
|
|
||||||
"""
|
t2=t2.replace(' ',',')
|
||||||
t2=t2.split(',')
|
|
||||||
for index, t in enumerate(t2):
|
|
||||||
t2[index]=float(t)
|
|
||||||
"""
|
|
||||||
t2=[float(t) for t in t2.split(',')]
|
t2=[float(t) for t in t2.split(',')]
|
||||||
|
|
||||||
if val=='rotate' :
|
if val=='rotate' :
|
||||||
@@ -1314,12 +1351,24 @@ def curve_FILL(Courbe,proprietes):
|
|||||||
i= i+6
|
i= i+6
|
||||||
Courbe[n].color=[int(pr[i:i+2],16),int(pr[i+2:i+4],16),int(pr[i+4:i+6],16)]
|
Courbe[n].color=[int(pr[i:i+2],16),int(pr[i+2:i+4],16),int(pr[i+4:i+6],16)]
|
||||||
Courbe[n].mat=1
|
Courbe[n].mat=1
|
||||||
elif ';fill-opacity' in pr:
|
elif ';fill-opacity' in pr:
|
||||||
i= pr.find('fill:')+5
|
if pr.find('fill:url')==-1:
|
||||||
i2= pr.find(';',i)
|
i= pr.find('fill:')+5
|
||||||
COLORNAME= pr[i:i2]
|
i2= pr.find(';',i)
|
||||||
Courbe[n].color=SVGCOLORNAMELIST[COLORNAME]
|
COLORNAME= pr[i:i2]
|
||||||
Courbe[n].mat=1
|
Courbe[n].color=SVGCOLORNAMELIST[COLORNAME]
|
||||||
|
Courbe[n].mat=1
|
||||||
|
elif 'color:' in pr:
|
||||||
|
i= pr.find('color:')+6
|
||||||
|
i2= pr.find(';',i)
|
||||||
|
COLORNAME= pr[i:i2]
|
||||||
|
Courbe[n].color=SVGCOLORNAMELIST[COLORNAME]
|
||||||
|
Courbe[n].mat=1
|
||||||
|
else :
|
||||||
|
COLORNAME= 'white'
|
||||||
|
Courbe[n].color=SVGCOLORNAMELIST[COLORNAME]
|
||||||
|
Courbe[n].mat=1
|
||||||
|
|
||||||
#----------------------------------------------
|
#----------------------------------------------
|
||||||
# 0.4.1 : apply transform stack
|
# 0.4.1 : apply transform stack
|
||||||
#----------------------------------------------
|
#----------------------------------------------
|
||||||
@@ -1367,9 +1416,8 @@ def filter(d):
|
|||||||
def get_BOUNDBOX(BOUNDINGBOX,SVG):
|
def get_BOUNDBOX(BOUNDINGBOX,SVG):
|
||||||
if 'viewbox' not in SVG:
|
if 'viewbox' not in SVG:
|
||||||
h=float(filter(SVG['height']))
|
h=float(filter(SVG['height']))
|
||||||
#if DEBUG==1 : print 'h : ',h
|
|
||||||
w=float(filter(SVG['width']))
|
w=float(filter(SVG['width']))
|
||||||
#if DEBUG==1 : print 'w :',w
|
|
||||||
BOUNDINGBOX['rec']=[0.0,0.0,w,h]
|
BOUNDINGBOX['rec']=[0.0,0.0,w,h]
|
||||||
r=BOUNDINGBOX['rec']
|
r=BOUNDINGBOX['rec']
|
||||||
BOUNDINGBOX['coef']=w/h
|
BOUNDINGBOX['coef']=w/h
|
||||||
@@ -1444,7 +1492,6 @@ def build_HIERARCHY(t):
|
|||||||
b=balisetype.index(t[t0+1])
|
b=balisetype.index(t[t0+1])
|
||||||
if t[t0+2]=='-':
|
if t[t0+2]=='-':
|
||||||
b=balisetype.index(t[t0+1])+1
|
b=balisetype.index(t[t0+1])+1
|
||||||
#print t[t0:t1]
|
|
||||||
balise=BALISES[b]
|
balise=BALISES[b]
|
||||||
if b==2:
|
if b==2:
|
||||||
parent=STACK.pop(-1)
|
parent=STACK.pop(-1)
|
||||||
@@ -1465,12 +1512,8 @@ def build_HIERARCHY(t):
|
|||||||
if balise=='E' or balise=='O':
|
if balise=='E' or balise=='O':
|
||||||
proprietes=collect_ATTRIBUTS(t[t0:t1+ouvrante])
|
proprietes=collect_ATTRIBUTS(t[t0:t1+ouvrante])
|
||||||
|
|
||||||
#print proprietes
|
|
||||||
if 'id' in proprietes:
|
if 'id' in proprietes:
|
||||||
LAST_ID=proprietes['id']
|
LAST_ID=proprietes['id']
|
||||||
#print LAST_ID
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if balise=='O' and 'transform' in proprietes:
|
if balise=='O' and 'transform' in proprietes:
|
||||||
STACK.append(proprietes['transform'])
|
STACK.append(proprietes['transform'])
|
||||||
@@ -1489,20 +1532,20 @@ def build_HIERARCHY(t):
|
|||||||
# 0.5.8, to remove exec
|
# 0.5.8, to remove exec
|
||||||
#--------------------
|
#--------------------
|
||||||
D=OTHERSSHAPES[proprietes['TYPE']](proprietes)
|
D=OTHERSSHAPES[proprietes['TYPE']](proprietes)
|
||||||
|
CP=[0.0,0.0]
|
||||||
if len(D)>0:
|
if len(D)>0:
|
||||||
cursor=0
|
cursor=0
|
||||||
proprietes['n']=[]
|
proprietes['n']=[]
|
||||||
for cell in D:
|
for cell in D:
|
||||||
#if DEBUG==2 : print 'cell : ',cell ,' --'
|
|
||||||
if len(cell)>=1 and cell[0] in TAGcourbe:
|
if len(cell)>=1 and cell[0] in TAGcourbe:
|
||||||
#--------------------
|
#--------------------
|
||||||
# 0.5.8, to remove exec
|
# 0.5.8, to remove exec
|
||||||
#--------------------
|
#--------------------
|
||||||
if cell[0] in ['m','M']:
|
if cell[0] in ['m','M']:
|
||||||
curves,n0,CP=Actions[cell]([cell,cursor], D, n0,CP,proprietes)
|
curves,n0,CP=Actions[cell](curves, [cell,cursor], D, n0,CP,proprietes)
|
||||||
else:
|
else:
|
||||||
curves,n0,CP=Actions[cell]([cell,cursor], D, n0,CP)
|
curves,n0,CP=Actions[cell](curves, [cell,cursor], D, n0,CP)
|
||||||
|
|
||||||
cursor+=1
|
cursor+=1
|
||||||
if TRANSFORM>0 or 'transform' in proprietes :
|
if TRANSFORM>0 or 'transform' in proprietes :
|
||||||
@@ -1513,7 +1556,6 @@ def build_HIERARCHY(t):
|
|||||||
|
|
||||||
|
|
||||||
elif proprietes['TYPE'] == 'svg':
|
elif proprietes['TYPE'] == 'svg':
|
||||||
#print 'proprietes.keys()',proprietes.keys()
|
|
||||||
BOUNDINGBOX = get_BOUNDBOX(BOUNDINGBOX,proprietes)
|
BOUNDINGBOX = get_BOUNDBOX(BOUNDINGBOX,proprietes)
|
||||||
else:
|
else:
|
||||||
#--------------------
|
#--------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user