move getDiscretized and getPattern outside of getSVG()
This commit is contained in:
committed by
Yorik van Havre
parent
e1eae5e114
commit
dc8d8fdb44
@@ -24,6 +24,7 @@
|
||||
#***************************************************************************
|
||||
|
||||
#from __future__ import division
|
||||
|
||||
__title__="FreeCAD Draft Workbench"
|
||||
__author__ = "Yorik van Havre, Werner Mayer, Martin Burbaum, Ken Cline, Dmitry Chigrin, Daniel Falck"
|
||||
__url__ = "http://www.freecadweb.org"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import FreeCAD, math, sys, os, DraftVecUtils, WorkingPlane
|
||||
import Part, DraftGeomUtils
|
||||
from FreeCAD import Vector
|
||||
from Draft import getType, getrgb
|
||||
from Draft import getType, getrgb, svgpatterns
|
||||
|
||||
|
||||
def getLineStyle(linestyle):
|
||||
@@ -43,6 +43,29 @@ def getProj(vec, plane):
|
||||
return Vector(lx,ly,0)
|
||||
|
||||
|
||||
def getDiscretized(edge, plane):
|
||||
ml = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Draft").GetFloat("svgDiscretization",10.0)
|
||||
if ml == 0:
|
||||
ml = 10
|
||||
d = int(edge.Length/ml)
|
||||
if d == 0:
|
||||
d = 1
|
||||
edata = ""
|
||||
for i in range(d+1):
|
||||
v = getProj(edge.valueAt(edge.FirstParameter+((float(i)/d)*(edge.LastParameter-edge.FirstParameter))), plane)
|
||||
if not edata:
|
||||
edata += 'M ' + str(v.x) +' '+ str(v.y) + ' '
|
||||
else:
|
||||
edata += 'L ' + str(v.x) +' '+ str(v.y) + ' '
|
||||
return edata
|
||||
|
||||
|
||||
def getPattern(pat):
|
||||
if pat in svgpatterns():
|
||||
return svgpatterns()[pat][0]
|
||||
return ''
|
||||
|
||||
|
||||
def getSVG(obj,scale=1,linewidth=0.35,fontsize=12,fillstyle="shape color",direction=None,linestyle=None,color=None,linespacing=None,techdraw=False,rotation=0):
|
||||
'''getSVG(object,[scale], [linewidth],[fontsize],[fillstyle],[direction],[linestyle],[color],[linespacing]):
|
||||
returns a string containing a SVG representation of the given object,
|
||||
@@ -88,27 +111,6 @@ def getSVG(obj,scale=1,linewidth=0.35,fontsize=12,fillstyle="shape color",direct
|
||||
stroke = getrgb(obj.ViewObject.LineColor)
|
||||
|
||||
|
||||
def getDiscretized(edge):
|
||||
ml = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Draft").GetFloat("svgDiscretization",10.0)
|
||||
if ml == 0:
|
||||
ml = 10
|
||||
d = int(edge.Length/ml)
|
||||
if d == 0:
|
||||
d = 1
|
||||
edata = ""
|
||||
for i in range(d+1):
|
||||
v = getProj(edge.valueAt(edge.FirstParameter+((float(i)/d)*(edge.LastParameter-edge.FirstParameter))), plane)
|
||||
if not edata:
|
||||
edata += 'M ' + str(v.x) +' '+ str(v.y) + ' '
|
||||
else:
|
||||
edata += 'L ' + str(v.x) +' '+ str(v.y) + ' '
|
||||
return edata
|
||||
|
||||
def getPattern(pat):
|
||||
if pat in svgpatterns():
|
||||
return svgpatterns()[pat][0]
|
||||
return ''
|
||||
|
||||
def getPath(edges=[],wires=[],pathname=None):
|
||||
import Part,DraftGeomUtils
|
||||
svg = "<path "
|
||||
@@ -207,7 +209,7 @@ def getSVG(obj,scale=1,linewidth=0.35,fontsize=12,fillstyle="shape color",direct
|
||||
str(int(flag_large_arc)),\
|
||||
str(int(flag_sweep)),str(v.x),str(v.y))
|
||||
else:
|
||||
edata += getDiscretized(e)
|
||||
edata += getDiscretized(e, plane)
|
||||
elif DraftGeomUtils.geomType(e) == "Line":
|
||||
v = getProj(vs[-1].Point, plane)
|
||||
edata += 'L '+ str(v.x) +' '+ str(v.y) + ' '
|
||||
@@ -276,7 +278,7 @@ def getSVG(obj,scale=1,linewidth=0.35,fontsize=12,fillstyle="shape color",direct
|
||||
else:
|
||||
# any other projection: ellipse
|
||||
svg = '<path d="'
|
||||
svg += getDiscretized(edge)
|
||||
svg += getDiscretized(edge, plane)
|
||||
svg += '" '
|
||||
svg += 'stroke="' + stroke + '" '
|
||||
svg += 'stroke-width="' + str(linewidth) + ' px" '
|
||||
|
||||
Reference in New Issue
Block a user