Merge branch 'master' of ssh://free-cad.git.sourceforge.net/gitroot/free-cad/free-cad
This commit is contained in:
commit
a65b197815
|
@ -562,10 +562,10 @@ class Renderer:
|
||||||
v = edges[0].Vertexes[0].Point
|
v = edges[0].Vertexes[0].Point
|
||||||
svg = 'M '+ tostr(v.x) +' '+ tostr(v.y) + ' '
|
svg = 'M '+ tostr(v.x) +' '+ tostr(v.y) + ' '
|
||||||
for e in edges:
|
for e in edges:
|
||||||
if isinstance(e.Curve,Part.Line) or isinstance(e.Curve,Part.BSplineCurve):
|
if (DraftGeomUtils.geomType(e) == "Line") or (DraftGeomUtils.geomType(e) == "BSplineCurve"):
|
||||||
v = e.Vertexes[-1].Point
|
v = e.Vertexes[-1].Point
|
||||||
svg += 'L '+ tostr(v.x) +' '+ tostr(v.y) + ' '
|
svg += 'L '+ tostr(v.x) +' '+ tostr(v.y) + ' '
|
||||||
elif isinstance(e.Curve,Part.Circle):
|
elif DraftGeomUtils.geomType(e) == "Circle":
|
||||||
r = e.Curve.Radius
|
r = e.Curve.Radius
|
||||||
v = e.Vertexes[-1].Point
|
v = e.Vertexes[-1].Point
|
||||||
svg += 'A '+ tostr(r) + ' '+ tostr(r) +' 0 0 1 '+ tostr(v.x) +' '
|
svg += 'A '+ tostr(r) + ' '+ tostr(r) +' 0 0 1 '+ tostr(v.x) +' '
|
||||||
|
|
|
@ -46,7 +46,7 @@ def getIndices(shape,offset):
|
||||||
vlist.append(" "+str(round(v.X,p))+" "+str(round(v.Y,p))+" "+str(round(v.Z,p)))
|
vlist.append(" "+str(round(v.X,p))+" "+str(round(v.Y,p))+" "+str(round(v.Z,p)))
|
||||||
if not shape.Faces:
|
if not shape.Faces:
|
||||||
for e in shape.Edges:
|
for e in shape.Edges:
|
||||||
if isinstance(e,Part.Line):
|
if DraftGeomUtils.geomType(e) == "Line":
|
||||||
ei = " " + str(findVert(e.Vertexes[0],shape.Vertexes) + offset)
|
ei = " " + str(findVert(e.Vertexes[0],shape.Vertexes) + offset)
|
||||||
ei += " " + str(findVert(e.Vertexes[-1],shape.Vertexes) + offset)
|
ei += " " + str(findVert(e.Vertexes[-1],shape.Vertexes) + offset)
|
||||||
elist.append(ei)
|
elist.append(ei)
|
||||||
|
|
|
@ -107,7 +107,7 @@ def getParamType(param):
|
||||||
return "float"
|
return "float"
|
||||||
elif param in ["selectBaseObjects","alwaysSnap","grid","fillmode","saveonexit","maxSnap",
|
elif param in ["selectBaseObjects","alwaysSnap","grid","fillmode","saveonexit","maxSnap",
|
||||||
"SvgLinesBlack","dxfStdSize","showSnapBar","hideSnapBar","alwaysShowGrid",
|
"SvgLinesBlack","dxfStdSize","showSnapBar","hideSnapBar","alwaysShowGrid",
|
||||||
"renderPolylineWidth","showPlaneTracker"]:
|
"renderPolylineWidth","showPlaneTracker","UsePartPrimitives"]:
|
||||||
return "bool"
|
return "bool"
|
||||||
elif param in ["color","constructioncolor","snapcolor"]:
|
elif param in ["color","constructioncolor","snapcolor"]:
|
||||||
return "unsigned"
|
return "unsigned"
|
||||||
|
@ -250,7 +250,8 @@ def shapify(obj):
|
||||||
elif len(shape.Wires) == 1:
|
elif len(shape.Wires) == 1:
|
||||||
name = "Wire"
|
name = "Wire"
|
||||||
elif len(shape.Edges) == 1:
|
elif len(shape.Edges) == 1:
|
||||||
if isinstance(shape.Edges[0].Curve,Part.Line):
|
import DraftGeomUtils
|
||||||
|
if DraftGeomUtils.geomType(shape.Edges[0]) == "Line":
|
||||||
name = "Line"
|
name = "Line"
|
||||||
else:
|
else:
|
||||||
name = "Circle"
|
name = "Circle"
|
||||||
|
@ -426,13 +427,13 @@ def makeCircle(radius, placement=None, face=True, startangle=None, endangle=None
|
||||||
wireframe, otherwise as a face. If startangle AND endangle are given
|
wireframe, otherwise as a face. If startangle AND endangle are given
|
||||||
(in degrees), they are used and the object appears as an arc. If an edge
|
(in degrees), they are used and the object appears as an arc. If an edge
|
||||||
is passed, its Curve must be a Part.Circle'''
|
is passed, its Curve must be a Part.Circle'''
|
||||||
import Part
|
import Part, DraftGeomUtils
|
||||||
if placement: typecheck([(placement,FreeCAD.Placement)], "makeCircle")
|
if placement: typecheck([(placement,FreeCAD.Placement)], "makeCircle")
|
||||||
obj = FreeCAD.ActiveDocument.addObject("Part::Part2DObjectPython","Circle")
|
obj = FreeCAD.ActiveDocument.addObject("Part::Part2DObjectPython","Circle")
|
||||||
_Circle(obj)
|
_Circle(obj)
|
||||||
if isinstance(radius,Part.Edge):
|
if isinstance(radius,Part.Edge):
|
||||||
edge = radius
|
edge = radius
|
||||||
if isinstance(edge.Curve,Part.Circle):
|
if DraftGeomUtils.geomType(edge) == "Circle":
|
||||||
obj.Radius = edge.Curve.Radius
|
obj.Radius = edge.Curve.Radius
|
||||||
placement = FreeCAD.Placement(edge.Placement)
|
placement = FreeCAD.Placement(edge.Placement)
|
||||||
delta = edge.Curve.Center.sub(placement.Base)
|
delta = edge.Curve.Center.sub(placement.Base)
|
||||||
|
@ -1214,7 +1215,7 @@ def draftify(objectslist,makeblock=False,delete=True):
|
||||||
if obj.isDerivedFrom('Part::Feature'):
|
if obj.isDerivedFrom('Part::Feature'):
|
||||||
for w in obj.Shape.Wires:
|
for w in obj.Shape.Wires:
|
||||||
if DraftGeomUtils.hasCurves(w):
|
if DraftGeomUtils.hasCurves(w):
|
||||||
if (len(w.Edges) == 1) and isinstance(w.Edges[0].Curve,Part.Circle):
|
if (len(w.Edges) == 1) and (DraftGeomUtils.geomType(w.Edges[0]) == "Circle"):
|
||||||
nobj = makeCircle(w.Edges[0])
|
nobj = makeCircle(w.Edges[0])
|
||||||
else:
|
else:
|
||||||
nobj = FreeCAD.ActiveDocument.addObject("Part::Feature",obj.Name)
|
nobj = FreeCAD.ActiveDocument.addObject("Part::Feature",obj.Name)
|
||||||
|
@ -1298,15 +1299,16 @@ def getSVG(obj,scale=1,linewidth=0.35,fontsize=12,fillstyle="shape color",direct
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
def getPath(edges):
|
def getPath(edges):
|
||||||
|
import DraftGeomUtils
|
||||||
svg ='<path id="' + name + '" '
|
svg ='<path id="' + name + '" '
|
||||||
edges = DraftGeomUtils.sortEdges(edges)
|
edges = DraftGeomUtils.sortEdges(edges)
|
||||||
v = getProj(edges[0].Vertexes[0].Point)
|
v = getProj(edges[0].Vertexes[0].Point)
|
||||||
svg += 'd="M '+ str(v.x) +' '+ str(v.y) + ' '
|
svg += 'd="M '+ str(v.x) +' '+ str(v.y) + ' '
|
||||||
for e in edges:
|
for e in edges:
|
||||||
if isinstance(e.Curve,Part.Line) or isinstance(e.Curve,Part.BSplineCurve):
|
if (DraftGeomUtils.geomType(e) == "Line") or (DraftGeomUtils.geomType(e) == "BSplineCurve"):
|
||||||
v = getProj(e.Vertexes[-1].Point)
|
v = getProj(e.Vertexes[-1].Point)
|
||||||
svg += 'L '+ str(v.x) +' '+ str(v.y) + ' '
|
svg += 'L '+ str(v.x) +' '+ str(v.y) + ' '
|
||||||
elif isinstance(e.Curve,Part.Circle):
|
elif DraftGeomUtils.geomType(e) == "Circle":
|
||||||
if len(e.Vertexes) == 1:
|
if len(e.Vertexes) == 1:
|
||||||
# complete circle
|
# complete circle
|
||||||
svg = getCircle(e)
|
svg = getCircle(e)
|
||||||
|
@ -1623,7 +1625,7 @@ def makeSketch(objectslist,autoconstraints=False,addTo=None,delete=False,name="S
|
||||||
print "Error: The given object is not planar and cannot be converted into a sketch."
|
print "Error: The given object is not planar and cannot be converted into a sketch."
|
||||||
return None
|
return None
|
||||||
for e in obj.Shape.Edges:
|
for e in obj.Shape.Edges:
|
||||||
if isinstance(e.Curve,Part.BSplineCurve):
|
if DraftGeomUtils.geomType(e) == "BSplineCurve":
|
||||||
print "Error: One of the selected object contains BSplines, unable to convert"
|
print "Error: One of the selected object contains BSplines, unable to convert"
|
||||||
return None
|
return None
|
||||||
if not addTo:
|
if not addTo:
|
||||||
|
@ -1969,7 +1971,7 @@ def upgrade(objects,delete=False,force=None):
|
||||||
if not w.isClosed():
|
if not w.isClosed():
|
||||||
openwires.append(w)
|
openwires.append(w)
|
||||||
for e in ob.Shape.Edges:
|
for e in ob.Shape.Edges:
|
||||||
if not isinstance(e.Curve,Part.Line):
|
if DraftGeomUtils.geomType(e) != "Line":
|
||||||
curves.append(e)
|
curves.append(e)
|
||||||
if not e.hashCode() in wirededges:
|
if not e.hashCode() in wirededges:
|
||||||
loneedges.append(e)
|
loneedges.append(e)
|
||||||
|
@ -3362,22 +3364,22 @@ class _Shape2DView(_DraftObject):
|
||||||
newedges = []
|
newedges = []
|
||||||
for e in oldedges:
|
for e in oldedges:
|
||||||
try:
|
try:
|
||||||
if isinstance(e.Curve,Part.Line):
|
if DraftGeomUtils.geomType(e) == "Line":
|
||||||
newedges.append(e.Curve.toShape())
|
newedges.append(e.Curve.toShape())
|
||||||
elif isinstance(e.Curve,Part.Circle):
|
elif DraftGeomUtils.geomType(e) == "Circle":
|
||||||
if len(e.Vertexes) > 1:
|
if len(e.Vertexes) > 1:
|
||||||
mp = DraftGeomUtils.findMidpoint(e)
|
mp = DraftGeomUtils.findMidpoint(e)
|
||||||
a = Part.Arc(e.Vertexes[0].Point,mp,e.Vertexes[-1].Point).toShape()
|
a = Part.Arc(e.Vertexes[0].Point,mp,e.Vertexes[-1].Point).toShape()
|
||||||
newedges.append(a)
|
newedges.append(a)
|
||||||
else:
|
else:
|
||||||
newedges.append(e.Curve.toShape())
|
newedges.append(e.Curve.toShape())
|
||||||
elif isinstance(e.Curve,Part.Ellipse):
|
elif DraftGeomUtils.geomType(e) == "Ellipse":
|
||||||
if len(e.Vertexes) > 1:
|
if len(e.Vertexes) > 1:
|
||||||
a = Part.Arc(e.Curve,e.FirstParameter,e.LastParameter).toShape()
|
a = Part.Arc(e.Curve,e.FirstParameter,e.LastParameter).toShape()
|
||||||
newedges.append(a)
|
newedges.append(a)
|
||||||
else:
|
else:
|
||||||
newedges.append(e.Curve.toShape())
|
newedges.append(e.Curve.toShape())
|
||||||
elif isinstance(e.Curve,Part.BSplineCurve):
|
elif DraftGeomUtils.geomType(e) == "BSplineCurve":
|
||||||
if DraftGeomUtils.isLine(e.Curve):
|
if DraftGeomUtils.isLine(e.Curve):
|
||||||
l = Part.Line(e.Vertexes[0].Point,e.Vertexes[-1].Point).toShape()
|
l = Part.Line(e.Vertexes[0].Point,e.Vertexes[-1].Point).toShape()
|
||||||
newedges.append(l)
|
newedges.append(l)
|
||||||
|
|
|
@ -162,6 +162,22 @@ def hasOnlyWires(shape):
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def geomType(edge):
|
||||||
|
"returns the type of geom this edge is based on"
|
||||||
|
try:
|
||||||
|
if isinstance(edge.Curve,Part.Line):
|
||||||
|
return "Line"
|
||||||
|
elif isinstance(edge.Curve,Part.Circle):
|
||||||
|
return "Circle"
|
||||||
|
elif isinstance(edge.Curve,Part.BSplineCurve):
|
||||||
|
return "BSplineCurve"
|
||||||
|
elif isinstance(edge.Curve,Part.Ellipse):
|
||||||
|
return "Ellipse"
|
||||||
|
else:
|
||||||
|
return "Unknown"
|
||||||
|
except:
|
||||||
|
return "Unknown"
|
||||||
|
|
||||||
# edge functions *****************************************************************
|
# edge functions *****************************************************************
|
||||||
|
|
||||||
def findEdge(anEdge,aList):
|
def findEdge(anEdge,aList):
|
||||||
|
@ -190,7 +206,7 @@ def findIntersection(edge1,edge2,infinite1=False,infinite2=False,ex1=False,ex2=F
|
||||||
infinite1 = ex1
|
infinite1 = ex1
|
||||||
infinite2 = ex2
|
infinite2 = ex2
|
||||||
|
|
||||||
elif isinstance(edge1.Curve,Part.Line) and isinstance(edge2.Curve,Part.Line) :
|
elif (geomType(edge1) == "Line") and (geomType(edge2) == "Line") :
|
||||||
# we have 2 straight lines
|
# we have 2 straight lines
|
||||||
pt1, pt2, pt3, pt4 = [edge1.Vertexes[0].Point,
|
pt1, pt2, pt3, pt4 = [edge1.Vertexes[0].Point,
|
||||||
edge1.Vertexes[1].Point,
|
edge1.Vertexes[1].Point,
|
||||||
|
@ -235,14 +251,14 @@ def findIntersection(edge1,edge2,infinite1=False,infinite2=False,ex1=False,ex2=F
|
||||||
else :
|
else :
|
||||||
return [] # Lines aren't on same plane
|
return [] # Lines aren't on same plane
|
||||||
|
|
||||||
elif isinstance(edge1.Curve,Part.Circle) and isinstance(edge2.Curve,Part.Line) \
|
elif (geomType(edge1) == "Circle") and (geomType(edge2) == "Line") \
|
||||||
or isinstance(edge1.Curve,Part.Line) and isinstance(edge2.Curve,Part.Circle) :
|
or (geomType(edge1) == "Line") and (geomType(edge2) == "Circle") :
|
||||||
|
|
||||||
# deals with an arc or circle and a line
|
# deals with an arc or circle and a line
|
||||||
|
|
||||||
edges = [edge1,edge2]
|
edges = [edge1,edge2]
|
||||||
for edge in edges :
|
for edge in edges :
|
||||||
if isinstance(edge.Curve,Part.Line) :
|
if geomType(edge) == "Line":
|
||||||
line = edge
|
line = edge
|
||||||
else :
|
else :
|
||||||
arc = edge
|
arc = edge
|
||||||
|
@ -303,7 +319,7 @@ def findIntersection(edge1,edge2,infinite1=False,infinite2=False,ex1=False,ex2=F
|
||||||
del int[i]
|
del int[i]
|
||||||
return int
|
return int
|
||||||
|
|
||||||
elif isinstance(edge1.Curve,Part.Circle) and isinstance(edge2.Curve,Part.Circle) :
|
elif (geomType(edge1) == "Circle") and (geomType(edge2) == "Circle") :
|
||||||
|
|
||||||
# deals with 2 arcs or circles
|
# deals with 2 arcs or circles
|
||||||
|
|
||||||
|
@ -366,9 +382,9 @@ def findIntersection(edge1,edge2,infinite1=False,infinite2=False,ex1=False,ex2=F
|
||||||
|
|
||||||
def geom(edge,plac=FreeCAD.Placement()):
|
def geom(edge,plac=FreeCAD.Placement()):
|
||||||
"returns a Line, ArcOfCircle or Circle geom from the given edge, according to the given placement"
|
"returns a Line, ArcOfCircle or Circle geom from the given edge, according to the given placement"
|
||||||
if isinstance(edge.Curve,Part.Line):
|
if geomType(edge) == "Line":
|
||||||
return edge.Curve
|
return edge.Curve
|
||||||
elif isinstance(edge.Curve,Part.Circle):
|
elif geomType(edge) == "Circle":
|
||||||
if len(edge.Vertexes) == 1:
|
if len(edge.Vertexes) == 1:
|
||||||
return Part.Circle(edge.Curve.Center,edge.Curve.Axis,edge.Curve.Radius)
|
return Part.Circle(edge.Curve.Center,edge.Curve.Axis,edge.Curve.Radius)
|
||||||
else:
|
else:
|
||||||
|
@ -405,7 +421,7 @@ def mirror (point, edge):
|
||||||
|
|
||||||
def isClockwise(edge):
|
def isClockwise(edge):
|
||||||
"""Returns True if a circle-based edge has a clockwise direction"""
|
"""Returns True if a circle-based edge has a clockwise direction"""
|
||||||
if not isinstance(edge.Curve,Part.Circle):
|
if not geomType(edge) == "Circle":
|
||||||
return True
|
return True
|
||||||
v1 = edge.Curve.tangent(edge.ParameterRange[0])[0]
|
v1 = edge.Curve.tangent(edge.ParameterRange[0])[0]
|
||||||
if DraftVecUtils.isNull(v1):
|
if DraftVecUtils.isNull(v1):
|
||||||
|
@ -507,12 +523,12 @@ def sortEdges(lEdges, aVertex=None):
|
||||||
if aVertex.Point == result[3].Vertexes[0].Point:
|
if aVertex.Point == result[3].Vertexes[0].Point:
|
||||||
return lEdges
|
return lEdges
|
||||||
else:
|
else:
|
||||||
if isinstance(result[3].Curve,Part.Line):
|
if geomType(result[3]) == "Line":
|
||||||
return [Part.Line(aVertex.Point,result[3].Vertexes[0].Point).toShape()]
|
return [Part.Line(aVertex.Point,result[3].Vertexes[0].Point).toShape()]
|
||||||
elif isinstance(result[3].Curve,Part.Circle):
|
elif geomType(result[3]) == "Circle":
|
||||||
mp = findMidpoint(result[3])
|
mp = findMidpoint(result[3])
|
||||||
return [Part.Arc(aVertex.Point,mp,result[3].Vertexes[0].Point).toShape()]
|
return [Part.Arc(aVertex.Point,mp,result[3].Vertexes[0].Point).toShape()]
|
||||||
elif isinstance(result[3].Curve,Part.BSplineCurve):
|
elif geomType(result[3]) == "BSplineCurve":
|
||||||
if isLine(result[3].Curve):
|
if isLine(result[3].Curve):
|
||||||
return [Part.Line(aVertex.Point,result[3].Vertexes[0].Point).toShape()]
|
return [Part.Line(aVertex.Point,result[3].Vertexes[0].Point).toShape()]
|
||||||
else:
|
else:
|
||||||
|
@ -543,14 +559,14 @@ def sortEdges(lEdges, aVertex=None):
|
||||||
olEdges += [result[3]] + next
|
olEdges += [result[3]] + next
|
||||||
else:
|
else:
|
||||||
#print "inverting", result[3].Curve
|
#print "inverting", result[3].Curve
|
||||||
if isinstance(result[3].Curve,Part.Line):
|
if geomType(result[3]) == "Line":
|
||||||
newedge = Part.Line(aVertex.Point,result[3].Vertexes[0].Point).toShape()
|
newedge = Part.Line(aVertex.Point,result[3].Vertexes[0].Point).toShape()
|
||||||
olEdges += [newedge] + next
|
olEdges += [newedge] + next
|
||||||
elif isinstance(result[3].Curve,Part.Circle):
|
elif geomType(result[3]) == "Circle":
|
||||||
mp = findMidpoint(result[3])
|
mp = findMidpoint(result[3])
|
||||||
newedge = Part.Arc(aVertex.Point,mp,result[3].Vertexes[0].Point).toShape()
|
newedge = Part.Arc(aVertex.Point,mp,result[3].Vertexes[0].Point).toShape()
|
||||||
olEdges += [newedge] + next
|
olEdges += [newedge] + next
|
||||||
elif isinstance(result[3].Curve,Part.BSplineCurve):
|
elif geomType(result[3]) == "BSplineCurve":
|
||||||
if isLine(result[3].Curve):
|
if isLine(result[3].Curve):
|
||||||
newedge = Part.Line(aVertex.Point,result[3].Vertexes[0].Point).toShape()
|
newedge = Part.Line(aVertex.Point,result[3].Vertexes[0].Point).toShape()
|
||||||
olEdges += [newedge] + next
|
olEdges += [newedge] + next
|
||||||
|
@ -662,10 +678,10 @@ def superWire(edgeslist,closed=False):
|
||||||
p2 = median(curr.Vertexes[-1].Point,next.Vertexes[0].Point)
|
p2 = median(curr.Vertexes[-1].Point,next.Vertexes[0].Point)
|
||||||
else:
|
else:
|
||||||
p2 = curr.Vertexes[-1].Point
|
p2 = curr.Vertexes[-1].Point
|
||||||
if isinstance(curr.Curve,Part.Line):
|
if geomType(curr) == "Line":
|
||||||
print "line",p1,p2
|
print "line",p1,p2
|
||||||
newedges.append(Part.Line(p1,p2).toShape())
|
newedges.append(Part.Line(p1,p2).toShape())
|
||||||
elif isinstance(curr.Curve,Part.Circle):
|
elif geomType(curr) == "Circle":
|
||||||
p3 = findMidpoint(curr)
|
p3 = findMidpoint(curr)
|
||||||
print "arc",p1,p3,p2
|
print "arc",p1,p3,p2
|
||||||
newedges.append(Part.Arc(p1,p3,p2).toShape())
|
newedges.append(Part.Arc(p1,p3,p2).toShape())
|
||||||
|
@ -679,7 +695,7 @@ def findMidpoint(edge):
|
||||||
"calculates the midpoint of an edge"
|
"calculates the midpoint of an edge"
|
||||||
first = edge.Vertexes[0].Point
|
first = edge.Vertexes[0].Point
|
||||||
last = edge.Vertexes[-1].Point
|
last = edge.Vertexes[-1].Point
|
||||||
if isinstance(edge.Curve,Part.Circle):
|
if geomType(edge) == "Circle":
|
||||||
center = edge.Curve.Center
|
center = edge.Curve.Center
|
||||||
radius = edge.Curve.Radius
|
radius = edge.Curve.Radius
|
||||||
if len(edge.Vertexes) == 1:
|
if len(edge.Vertexes) == 1:
|
||||||
|
@ -698,41 +714,42 @@ def findMidpoint(edge):
|
||||||
endpoint = DraftVecUtils.scaleTo(perp,sagitta)
|
endpoint = DraftVecUtils.scaleTo(perp,sagitta)
|
||||||
return Vector.add(startpoint,endpoint)
|
return Vector.add(startpoint,endpoint)
|
||||||
|
|
||||||
elif isinstance(edge.Curve,Part.Line):
|
elif geomType(edge) == "Line":
|
||||||
halfedge = DraftVecUtils.scale(last.sub(first),.5)
|
halfedge = DraftVecUtils.scale(last.sub(first),.5)
|
||||||
return Vector.add(first,halfedge)
|
return Vector.add(first,halfedge)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def complexity(obj):
|
# OBSOLETED
|
||||||
'''
|
#def complexity(obj):
|
||||||
tests given object for shape complexity:
|
# '''
|
||||||
1: line
|
# tests given object for shape complexity:
|
||||||
2: arc
|
# 1: line
|
||||||
3: circle
|
# 2: arc
|
||||||
4: open wire with no arc
|
# 3: circle
|
||||||
5: closed wire
|
# 4: open wire with no arc
|
||||||
6: wire with arcs
|
# 5: closed wire
|
||||||
7: faces
|
# 6: wire with arcs
|
||||||
8: faces with arcs
|
# 7: faces
|
||||||
'''
|
# 8: faces with arcs
|
||||||
shape = obj.Shape
|
# '''
|
||||||
if shape.Faces:
|
# shape = obj.Shape
|
||||||
for e in shape.Edges:
|
# if shape.Faces:
|
||||||
if (isinstance(e.Curve,Part.Circle)): return 8
|
# for e in shape.Edges:
|
||||||
return 7
|
# if (isinstance(e.Curve,Part.Circle)): return 8
|
||||||
if shape.Wires:
|
# return 7
|
||||||
for e in shape.Edges:
|
# if shape.Wires:
|
||||||
if (isinstance(e.Curve,Part.Circle)): return 6
|
# for e in shape.Edges:
|
||||||
for w in shape.Wires:
|
# if (isinstance(e.Curve,Part.Circle)): return 6
|
||||||
if w.isClosed(): return 5
|
# for w in shape.Wires:
|
||||||
return 4
|
# if w.isClosed(): return 5
|
||||||
if (isinstance(shape.Edges[0].Curve,Part.Circle)):
|
# return 4
|
||||||
if len(shape.Vertexes) == 1:
|
# if (isinstance(shape.Edges[0].Curve,Part.Circle)):
|
||||||
return 3
|
# if len(shape.Vertexes) == 1:
|
||||||
return 2
|
# return 3
|
||||||
return 1
|
# return 2
|
||||||
|
# return 1
|
||||||
|
|
||||||
def findPerpendicular(point,edgeslist,force=None):
|
def findPerpendicular(point,edgeslist,force=None):
|
||||||
'''
|
'''
|
||||||
|
@ -774,7 +791,7 @@ def offset(edge,vector):
|
||||||
'''
|
'''
|
||||||
if (not isinstance(edge,Part.Shape)) or (not isinstance(vector,FreeCAD.Vector)):
|
if (not isinstance(edge,Part.Shape)) or (not isinstance(vector,FreeCAD.Vector)):
|
||||||
return None
|
return None
|
||||||
if isinstance(edge.Curve,Part.Line):
|
if geomType(edge) == "Line":
|
||||||
v1 = Vector.add(edge.Vertexes[0].Point, vector)
|
v1 = Vector.add(edge.Vertexes[0].Point, vector)
|
||||||
v2 = Vector.add(edge.Vertexes[-1].Point, vector)
|
v2 = Vector.add(edge.Vertexes[-1].Point, vector)
|
||||||
return Part.Line(v1,v2).toShape()
|
return Part.Line(v1,v2).toShape()
|
||||||
|
@ -797,11 +814,11 @@ def getNormal(shape):
|
||||||
if (shape.ShapeType == "Face") and hasattr(shape,"normalAt"):
|
if (shape.ShapeType == "Face") and hasattr(shape,"normalAt"):
|
||||||
n = shape.copy().normalAt(0.5,0.5)
|
n = shape.copy().normalAt(0.5,0.5)
|
||||||
elif shape.ShapeType == "Edge":
|
elif shape.ShapeType == "Edge":
|
||||||
if isinstance(shape.Edges[0].Curve,Part.Circle):
|
if geomType(shape.Edges[0]) == "Circle":
|
||||||
n = shape.Edges[0].Curve.Axis
|
n = shape.Edges[0].Curve.Axis
|
||||||
else:
|
else:
|
||||||
for e in shape.Edges:
|
for e in shape.Edges:
|
||||||
if isinstance(e.Curve,Part.Circle):
|
if geomType(e) == "Circle":
|
||||||
n = e.Curve.Axis
|
n = e.Curve.Axis
|
||||||
break
|
break
|
||||||
e1 = vec(shape.Edges[0])
|
e1 = vec(shape.Edges[0])
|
||||||
|
@ -921,10 +938,10 @@ def connect(edges,closed=False):
|
||||||
v2 = curr.Vertexes[-1].Point
|
v2 = curr.Vertexes[-1].Point
|
||||||
else:
|
else:
|
||||||
v2 = curr.Vertexes[-1].Point
|
v2 = curr.Vertexes[-1].Point
|
||||||
if isinstance(curr.Curve,Part.Line):
|
if geomType(curr) == "Line":
|
||||||
if v1 != v2:
|
if v1 != v2:
|
||||||
nedges.append(Part.Line(v1,v2).toShape())
|
nedges.append(Part.Line(v1,v2).toShape())
|
||||||
elif isinstance(curr.Curve,Part.Circle):
|
elif geomType(curr) == "Circle":
|
||||||
if v1 != v2:
|
if v1 != v2:
|
||||||
nedges.append(Part.Arc(v1,findMidPoint(curr),v2))
|
nedges.append(Part.Arc(v1,findMidPoint(curr),v2))
|
||||||
try:
|
try:
|
||||||
|
@ -939,7 +956,7 @@ def findDistance(point,edge,strict=False):
|
||||||
only if its endpoint lies on the edge.
|
only if its endpoint lies on the edge.
|
||||||
'''
|
'''
|
||||||
if isinstance(point, FreeCAD.Vector):
|
if isinstance(point, FreeCAD.Vector):
|
||||||
if isinstance(edge.Curve, Part.Line):
|
if geomType(edge) == "Line":
|
||||||
segment = vec(edge)
|
segment = vec(edge)
|
||||||
chord = edge.Vertexes[0].Point.sub(point)
|
chord = edge.Vertexes[0].Point.sub(point)
|
||||||
norm = segment.cross(chord)
|
norm = segment.cross(chord)
|
||||||
|
@ -957,7 +974,7 @@ def findDistance(point,edge,strict=False):
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
else: return dist
|
else: return dist
|
||||||
elif isinstance(edge.Curve, Part.Circle):
|
elif geomType(edge) == "Circle":
|
||||||
ve1 = edge.Vertexes[0].Point
|
ve1 = edge.Vertexes[0].Point
|
||||||
if (len(edge.Vertexes) > 1):
|
if (len(edge.Vertexes) > 1):
|
||||||
ve2 = edge.Vertexes[-1].Point
|
ve2 = edge.Vertexes[-1].Point
|
||||||
|
@ -980,7 +997,7 @@ def findDistance(point,edge,strict=False):
|
||||||
return None
|
return None
|
||||||
else:
|
else:
|
||||||
return dist
|
return dist
|
||||||
elif isinstance(edge.Curve,Part.BSplineCurve):
|
elif geomType(edge) == "BSplineCurve":
|
||||||
try:
|
try:
|
||||||
pr = edge.Curve.parameter(point)
|
pr = edge.Curve.parameter(point)
|
||||||
np = edge.Curve.value(pr)
|
np = edge.Curve.value(pr)
|
||||||
|
@ -1000,7 +1017,7 @@ def findDistance(point,edge,strict=False):
|
||||||
|
|
||||||
def angleBisection(edge1, edge2):
|
def angleBisection(edge1, edge2):
|
||||||
"angleBisection(edge,edge) - Returns an edge that bisects the angle between the 2 edges."
|
"angleBisection(edge,edge) - Returns an edge that bisects the angle between the 2 edges."
|
||||||
if isinstance(edge1.Curve, Part.Line) and isinstance(edge2.Curve, Part.Line):
|
if (geomType(edge1) == "Line") and (geomType(edge2) == "Line"):
|
||||||
p1 = edge1.Vertexes[0].Point
|
p1 = edge1.Vertexes[0].Point
|
||||||
p2 = edge1.Vertexes[-1].Point
|
p2 = edge1.Vertexes[-1].Point
|
||||||
p3 = edge2.Vertexes[0].Point
|
p3 = edge2.Vertexes[0].Point
|
||||||
|
@ -1093,14 +1110,14 @@ def getTangent(edge,frompoint=None):
|
||||||
returns the tangent to an edge. If from point is given, it is used to
|
returns the tangent to an edge. If from point is given, it is used to
|
||||||
calculate the tangent (only useful for an arc of course).
|
calculate the tangent (only useful for an arc of course).
|
||||||
'''
|
'''
|
||||||
if isinstance(edge.Curve,Part.Line):
|
if geomType(edge) == "Line":
|
||||||
return vec(edge)
|
return vec(edge)
|
||||||
elif isinstance(edge.Curve,Part.BSplineCurve):
|
elif geomType(edge) == "BSplineCurve":
|
||||||
if not frompoint:
|
if not frompoint:
|
||||||
return None
|
return None
|
||||||
cp = edge.Curve.parameter(frompoint)
|
cp = edge.Curve.parameter(frompoint)
|
||||||
return edge.Curve.tangent(cp)[0]
|
return edge.Curve.tangent(cp)[0]
|
||||||
elif isinstance(edge.Curve,Part.Circle):
|
elif geomType(edge) == "Circle":
|
||||||
if not frompoint:
|
if not frompoint:
|
||||||
v1 = edge.Vertexes[0].Point.sub(edge.Curve.Center)
|
v1 = edge.Vertexes[0].Point.sub(edge.Curve.Center)
|
||||||
else:
|
else:
|
||||||
|
@ -1236,7 +1253,7 @@ def isCubic(shape):
|
||||||
if len(shape.Edges) != 12:
|
if len(shape.Edges) != 12:
|
||||||
return False
|
return False
|
||||||
for e in shape.Edges:
|
for e in shape.Edges:
|
||||||
if not isinstance(e.Curve,Part.Line):
|
if geomType(e) != "Line":
|
||||||
return False
|
return False
|
||||||
# if ok until now, let's do more advanced testing
|
# if ok until now, let's do more advanced testing
|
||||||
for f in shape.Faces:
|
for f in shape.Faces:
|
||||||
|
@ -1320,7 +1337,7 @@ def arcFromSpline(edge):
|
||||||
its first point, midpoint and endpoint. Works best with bspline
|
its first point, midpoint and endpoint. Works best with bspline
|
||||||
segments such as those from imported svg files. Use this only
|
segments such as those from imported svg files. Use this only
|
||||||
if you are sure your edge is really an arc..."""
|
if you are sure your edge is really an arc..."""
|
||||||
if isinstance(edge.Curve,Part.Line):
|
if geomType(edge) == "Line":
|
||||||
print "This edge is straight, cannot build an arc on it"
|
print "This edge is straight, cannot build an arc on it"
|
||||||
return None
|
return None
|
||||||
if len(edge.Vertexes) > 1:
|
if len(edge.Vertexes) > 1:
|
||||||
|
@ -1682,45 +1699,45 @@ def getBoundaryAngles(angle,alist):
|
||||||
|
|
||||||
def circleFrom2tan1pt(tan1, tan2, point):
|
def circleFrom2tan1pt(tan1, tan2, point):
|
||||||
"circleFrom2tan1pt(edge, edge, Vector)"
|
"circleFrom2tan1pt(edge, edge, Vector)"
|
||||||
if isinstance(tan1.Curve, Part.Line) and isinstance(tan2.Curve, Part.Line) and isinstance(point, FreeCAD.Vector):
|
if (geomType(tan1) == "Line") and (geomType(tan2) == "Line") and isinstance(point, FreeCAD.Vector):
|
||||||
return circlefrom2Lines1Point(tan1, tan2, point)
|
return circlefrom2Lines1Point(tan1, tan2, point)
|
||||||
elif isinstance(tan1.Curve, Part.Circle) and isinstance(tan2.Curve, Part.Line) and isinstance(point, FreeCAD.Vector):
|
elif (geomType(tan1) == "Circle") and (geomType(tan2) == "Line") and isinstance(point, FreeCAD.Vector):
|
||||||
return circlefromCircleLinePoint(tan1, tan2, point)
|
return circlefromCircleLinePoint(tan1, tan2, point)
|
||||||
elif isinstance(tan2.Curve, Part.Circle) and isinstance(tan1.Curve, Part.Line) and isinstance(point, FreeCAD.Vector):
|
elif (geomType(tan2) == "Circle") and (geomType(tan1) == "Line") and isinstance(point, FreeCAD.Vector):
|
||||||
return circlefromCircleLinePoint(tan2, tan1, point)
|
return circlefromCircleLinePoint(tan2, tan1, point)
|
||||||
elif isinstance(tan2.Curve, Part.Circle) and isinstance(tan1.Curve, Part.Circle) and isinstance(point, FreeCAD.Vector):
|
elif (geomType(tan2) == "Circle") and (geomType(tan1) == "Circle") and isinstance(point, FreeCAD.Vector):
|
||||||
return circlefrom2Circles1Point(tan2, tan1, point)
|
return circlefrom2Circles1Point(tan2, tan1, point)
|
||||||
|
|
||||||
def circleFrom2tan1rad(tan1, tan2, rad):
|
def circleFrom2tan1rad(tan1, tan2, rad):
|
||||||
"circleFrom2tan1rad(edge, edge, float)"
|
"circleFrom2tan1rad(edge, edge, float)"
|
||||||
if isinstance(tan1.Curve, Part.Line) and isinstance(tan2.Curve, Part.Line):
|
if (geomType(tan1) == "Line") and (geomType(tan2) == "Line"):
|
||||||
return circleFrom2LinesRadius(tan1, tan2, rad)
|
return circleFrom2LinesRadius(tan1, tan2, rad)
|
||||||
elif isinstance(tan1.Curve, Part.Circle) and isinstance(tan2.Curve, Part.Line):
|
elif (geomType(tan1) == "Circle") and (geomType(tan2) == "Line"):
|
||||||
return circleFromCircleLineRadius(tan1, tan2, rad)
|
return circleFromCircleLineRadius(tan1, tan2, rad)
|
||||||
elif isinstance(tan1.Curve, Part.Line) and isinstance(tan2.Curve, Part.Circle):
|
elif (geomType(tan1) == "Line") and (geomType(tan2) == "Circle"):
|
||||||
return circleFromCircleLineRadius(tan2, tan1, rad)
|
return circleFromCircleLineRadius(tan2, tan1, rad)
|
||||||
elif isinstance(tan1.Curve, Part.Circle) and isinstance(tan2.Curve, Part.Circle):
|
elif (geomType(tan1) == "Circle") and (geomType(tan2) == "Circle"):
|
||||||
return circleFrom2CirclesRadius(tan1, tan2, rad)
|
return circleFrom2CirclesRadius(tan1, tan2, rad)
|
||||||
|
|
||||||
def circleFrom1tan2pt(tan1, p1, p2):
|
def circleFrom1tan2pt(tan1, p1, p2):
|
||||||
if isinstance(tan1.Curve, Part.Line) and isinstance(p1, FreeCAD.Vector) and isinstance(p2, FreeCAD.Vector):
|
if (geomType(tan1) == "Line") and isinstance(p1, FreeCAD.Vector) and isinstance(p2, FreeCAD.Vector):
|
||||||
return circlefrom1Line2Points(tan1, p1, p2)
|
return circlefrom1Line2Points(tan1, p1, p2)
|
||||||
if isinstance(tan1.Curve, Part.Line) and isinstance(p1, FreeCAD.Vector) and isinstance(p2, FreeCAD.Vector):
|
if (geomType(tan1) == "Line") and isinstance(p1, FreeCAD.Vector) and isinstance(p2, FreeCAD.Vector):
|
||||||
return circlefrom1Circle2Points(tan1, p1, p2)
|
return circlefrom1Circle2Points(tan1, p1, p2)
|
||||||
|
|
||||||
def circleFrom1tan1pt1rad(tan1, p1, rad):
|
def circleFrom1tan1pt1rad(tan1, p1, rad):
|
||||||
if isinstance(tan1.Curve, Part.Line) and isinstance(p1, FreeCAD.Vector):
|
if (geomType(tan1) == "Line") and isinstance(p1, FreeCAD.Vector):
|
||||||
return circleFromPointLineRadius(p1, tan1, rad)
|
return circleFromPointLineRadius(p1, tan1, rad)
|
||||||
if isinstance(tan1.Curve, Part.Circle) and isinstance(p1, FreeCAD.Vector):
|
if (geomType(tan1) == "Circle") and isinstance(p1, FreeCAD.Vector):
|
||||||
return circleFromPointCircleRadius(p1, tan1, rad)
|
return circleFromPointCircleRadius(p1, tan1, rad)
|
||||||
|
|
||||||
def circleFrom3tan(tan1, tan2, tan3):
|
def circleFrom3tan(tan1, tan2, tan3):
|
||||||
tan1IsLine = isinstance(tan1.Curve, Part.Line)
|
tan1IsLine = (geomType(tan1) == "Line")
|
||||||
tan2IsLine = isinstance(tan2.Curve, Part.Line)
|
tan2IsLine = (geomType(tan2) == "Line")
|
||||||
tan3IsLine = isinstance(tan3.Curve, Part.Line)
|
tan3IsLine = (geomType(tan3) == "Line")
|
||||||
tan1IsCircle = isinstance(tan1.Curve, Part.Circle)
|
tan1IsCircle = (geomType(tan1) == "Circle")
|
||||||
tan2IsCircle = isinstance(tan2.Curve, Part.Circle)
|
tan2IsCircle = (geomType(tan2) == "Circle")
|
||||||
tan3IsCircle = isinstance(tan3.Curve, Part.Circle)
|
tan3IsCircle = (geomType(tan3) == "Circle")
|
||||||
if tan1IsLine and tan2IsLine and tan3IsLine:
|
if tan1IsLine and tan2IsLine and tan3IsLine:
|
||||||
return circleFrom3LineTangents(tan1, tan2, tan3)
|
return circleFrom3LineTangents(tan1, tan2, tan3)
|
||||||
elif tan1IsCircle and tan2IsCircle and tan3IsCircle:
|
elif tan1IsCircle and tan2IsCircle and tan3IsCircle:
|
||||||
|
@ -1926,7 +1943,8 @@ def outerSoddyCircle(circle1, circle2, circle3):
|
||||||
'''
|
'''
|
||||||
Computes the outer soddy circle for three tightly packed circles.
|
Computes the outer soddy circle for three tightly packed circles.
|
||||||
'''
|
'''
|
||||||
if isinstance(circle1.Curve, Part.Circle) and isinstance(circle2.Curve, Part.Circle) and isinstance(circle3.Curve, Part.Circle):
|
if (geomType(circle1) == "Circle") and (geomType(circle2) == "Circle") \
|
||||||
|
and (geomType(circle3) == "Circle"):
|
||||||
# Original Java code Copyright (rc) 2008 Werner Randelshofer
|
# Original Java code Copyright (rc) 2008 Werner Randelshofer
|
||||||
# Converted to python by Martin Buerbaum 2009
|
# Converted to python by Martin Buerbaum 2009
|
||||||
# http://www.randelshofer.ch/treeviz/
|
# http://www.randelshofer.ch/treeviz/
|
||||||
|
@ -1978,7 +1996,8 @@ def innerSoddyCircle(circle1, circle2, circle3):
|
||||||
'''
|
'''
|
||||||
Computes the inner soddy circle for three tightly packed circles.
|
Computes the inner soddy circle for three tightly packed circles.
|
||||||
'''
|
'''
|
||||||
if isinstance(circle1.Curve, Part.Circle) and isinstance(circle2.Curve, Part.Circle) and isinstance(circle3.Curve, Part.Circle):
|
if (geomType(circle1) == "Circle") and (geomType(circle2) == "Circle") \
|
||||||
|
and (geomType(circle3) == "Circle"):
|
||||||
# Original Java code Copyright (rc) 2008 Werner Randelshofer
|
# Original Java code Copyright (rc) 2008 Werner Randelshofer
|
||||||
# Converted to python by Martin Buerbaum 2009
|
# Converted to python by Martin Buerbaum 2009
|
||||||
# http://www.randelshofer.ch/treeviz/
|
# http://www.randelshofer.ch/treeviz/
|
||||||
|
@ -2032,7 +2051,8 @@ def circleFrom3CircleTangents(circle1, circle2, circle3):
|
||||||
http://mathworld.wolfram.com/ApolloniusProblem.html
|
http://mathworld.wolfram.com/ApolloniusProblem.html
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if isinstance(circle1.Curve, Part.Circle) and isinstance(circle2.Curve, Part.Circle) and isinstance(circle3.Curve, Part.Circle):
|
if (geomType(circle1) == "Circle") and (geomType(circle2) == "Circle") \
|
||||||
|
and (geomType(circle3) == "Circle"):
|
||||||
int12 = findIntersection(circle1, circle2, True, True)
|
int12 = findIntersection(circle1, circle2, True, True)
|
||||||
int23 = findIntersection(circle2, circle3, True, True)
|
int23 = findIntersection(circle2, circle3, True, True)
|
||||||
int31 = findIntersection(circle3, circle1, True, True)
|
int31 = findIntersection(circle3, circle1, True, True)
|
||||||
|
@ -2136,7 +2156,7 @@ def findHomotheticCenterOfCircles(circle1, circle2):
|
||||||
http://mathworld.wolfram.com/HomotheticCenter.html
|
http://mathworld.wolfram.com/HomotheticCenter.html
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if isinstance(circle1.Curve, Part.Circle) and isinstance(circle2.Curve, Part.Circle):
|
if (geomType(circle1) == "Circle") and (geomType(circle2) == "Circle"):
|
||||||
if DraftVecUtils.equals(circle1.Curve.Center, circle2.Curve.Center):
|
if DraftVecUtils.equals(circle1.Curve.Center, circle2.Curve.Center):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@ -2188,7 +2208,7 @@ def findRadicalAxis(circle1, circle2):
|
||||||
@sa findRadicalCenter
|
@sa findRadicalCenter
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if isinstance(circle1.Curve, Part.Circle) and isinstance(circle2.Curve, Part.Circle):
|
if (geomType(circle1) == "Circle") and (geomType(circle2) == "Circle"):
|
||||||
if DraftVecUtils.equals(circle1.Curve.Center, circle2.Curve.Center):
|
if DraftVecUtils.equals(circle1.Curve.Center, circle2.Curve.Center):
|
||||||
return None
|
return None
|
||||||
r1 = circle1.Curve.Radius
|
r1 = circle1.Curve.Radius
|
||||||
|
@ -2240,7 +2260,7 @@ def findRadicalCenter(circle1, circle2, circle3):
|
||||||
@sa findRadicalAxis
|
@sa findRadicalAxis
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if isinstance(circle1.Curve, Part.Circle) and isinstance(circle2.Curve, Part.Circle) and isinstance(circle2.Curve, Part.Circle):
|
if (geomType(circle1) == "Circle") and (geomType(circle2) == "Circle"):
|
||||||
radicalAxis12 = findRadicalAxis(circle1, circle2)
|
radicalAxis12 = findRadicalAxis(circle1, circle2)
|
||||||
radicalAxis23 = findRadicalAxis(circle1, circle2)
|
radicalAxis23 = findRadicalAxis(circle1, circle2)
|
||||||
|
|
||||||
|
@ -2272,7 +2292,7 @@ def pointInversion(circle, point):
|
||||||
http://en.wikipedia.org/wiki/Inversive_geometry
|
http://en.wikipedia.org/wiki/Inversive_geometry
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if isinstance(circle.Curve, Part.Circle) and isinstance(point, FreeCAD.Vector):
|
if (geomType(circle) == "Circle") and isinstance(point, FreeCAD.Vector):
|
||||||
cen = circle.Curve.Center
|
cen = circle.Curve.Center
|
||||||
rad = circle.Curve.Radius
|
rad = circle.Curve.Radius
|
||||||
|
|
||||||
|
@ -2306,7 +2326,7 @@ def polarInversion(circle, edge):
|
||||||
http://mathworld.wolfram.com/InversionPole.html
|
http://mathworld.wolfram.com/InversionPole.html
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if isinstance(circle.Curve, Part.Circle) and isinstance(edge.Curve, Part.Line):
|
if (geomType(circle) == "Circle") and (geomType(edge) == "Line"):
|
||||||
nearest = circle.Curve.Center.add(findDistance(circle.Curve.Center, edge, False))
|
nearest = circle.Curve.Center.add(findDistance(circle.Curve.Center, edge, False))
|
||||||
if nearest:
|
if nearest:
|
||||||
inversionPole = pointInversion(circle, nearest)
|
inversionPole = pointInversion(circle, nearest)
|
||||||
|
@ -2324,7 +2344,7 @@ def circleInversion(circle, circle2):
|
||||||
|
|
||||||
Circle inversion of a circle.
|
Circle inversion of a circle.
|
||||||
'''
|
'''
|
||||||
if isinstance(circle.Curve, Part.Circle) and isinstance(circle2.Curve, Part.Circle):
|
if (geomType(circle) == "Circle") and (geomType(circle2) == "Circle"):
|
||||||
cen1 = circle.Curve.Center
|
cen1 = circle.Curve.Center
|
||||||
rad1 = circle.Curve.Radius
|
rad1 = circle.Curve.Radius
|
||||||
|
|
||||||
|
|
|
@ -257,7 +257,7 @@ class Snapper:
|
||||||
snaps.extend(self.snapToIntersection(edge))
|
snaps.extend(self.snapToIntersection(edge))
|
||||||
snaps.extend(self.snapToElines(edge,eline))
|
snaps.extend(self.snapToElines(edge,eline))
|
||||||
|
|
||||||
if isinstance (edge.Curve,Part.Circle):
|
if DraftGeomUtils.geomType(edge) == "Circle":
|
||||||
# the edge is an arc, we have extra options
|
# the edge is an arc, we have extra options
|
||||||
snaps.extend(self.snapToAngles(edge))
|
snaps.extend(self.snapToAngles(edge))
|
||||||
snaps.extend(self.snapToCenter(edge))
|
snaps.extend(self.snapToCenter(edge))
|
||||||
|
@ -383,7 +383,7 @@ class Snapper:
|
||||||
edges = ob.Shape.Edges
|
edges = ob.Shape.Edges
|
||||||
if (not self.maxEdges) or (len(edges) <= self.maxEdges):
|
if (not self.maxEdges) or (len(edges) <= self.maxEdges):
|
||||||
for e in edges:
|
for e in edges:
|
||||||
if isinstance(e.Curve,Part.Line):
|
if DraftGeomUtils.geomType(e) == "Line":
|
||||||
np = self.getPerpendicular(e,point)
|
np = self.getPerpendicular(e,point)
|
||||||
if not DraftGeomUtils.isPtOnEdge(np,e):
|
if not DraftGeomUtils.isPtOnEdge(np,e):
|
||||||
if (np.sub(point)).Length < self.radius:
|
if (np.sub(point)).Length < self.radius:
|
||||||
|
@ -501,13 +501,13 @@ class Snapper:
|
||||||
if self.isEnabled("perpendicular"):
|
if self.isEnabled("perpendicular"):
|
||||||
if last:
|
if last:
|
||||||
if isinstance(shape,Part.Edge):
|
if isinstance(shape,Part.Edge):
|
||||||
if isinstance(shape.Curve,Part.Line):
|
if DraftGeomUtils.geomType(shape) == "Line":
|
||||||
np = self.getPerpendicular(shape,last)
|
np = self.getPerpendicular(shape,last)
|
||||||
elif isinstance(shape.Curve,Part.Circle):
|
elif DraftGeomUtils.geomType(shape) == "Circle":
|
||||||
dv = last.sub(shape.Curve.Center)
|
dv = last.sub(shape.Curve.Center)
|
||||||
dv = DraftVecUtils.scaleTo(dv,shape.Curve.Radius)
|
dv = DraftVecUtils.scaleTo(dv,shape.Curve.Radius)
|
||||||
np = (shape.Curve.Center).add(dv)
|
np = (shape.Curve.Center).add(dv)
|
||||||
elif isinstance(shape.Curve,Part.BSplineCurve):
|
elif DraftGeomUtils.geomType(shape) == "BSplineCurve":
|
||||||
pr = shape.Curve.parameter(last)
|
pr = shape.Curve.parameter(last)
|
||||||
np = shape.Curve.value(pr)
|
np = shape.Curve.value(pr)
|
||||||
else:
|
else:
|
||||||
|
@ -522,7 +522,7 @@ class Snapper:
|
||||||
if constrain:
|
if constrain:
|
||||||
if isinstance(shape,Part.Edge):
|
if isinstance(shape,Part.Edge):
|
||||||
if last:
|
if last:
|
||||||
if isinstance(shape.Curve,Part.Line):
|
if DraftGeomUtils(shape) == "Line":
|
||||||
if self.constraintAxis:
|
if self.constraintAxis:
|
||||||
tmpEdge = Part.Line(last,last.add(self.constraintAxis)).toShape()
|
tmpEdge = Part.Line(last,last.add(self.constraintAxis)).toShape()
|
||||||
# get the intersection points
|
# get the intersection points
|
||||||
|
|
|
@ -461,6 +461,19 @@ class Line(Creator):
|
||||||
todo.delay(self.doc.removeObject,old)
|
todo.delay(self.doc.removeObject,old)
|
||||||
self.obj = None
|
self.obj = None
|
||||||
if (len(self.node) > 1):
|
if (len(self.node) > 1):
|
||||||
|
if (len(self.node) == 2) and Draft.getParam("UsePartPrimitives"):
|
||||||
|
# use Part primitive
|
||||||
|
p1 = self.node[0]
|
||||||
|
p2 = self.node[-1]
|
||||||
|
self.commit(translate("draft","Create Line"),
|
||||||
|
['line = FreeCAD.ActiveDocument.addObject("Part::Line","Line")',
|
||||||
|
'line.X1 = '+str(p1.x),
|
||||||
|
'line.Y1 = '+str(p1.y),
|
||||||
|
'line.Z1 = '+str(p1.z),
|
||||||
|
'line.X2 = '+str(p2.x),
|
||||||
|
'line.Y2 = '+str(p2.y),
|
||||||
|
'line.Z2 = '+str(p2.z)])
|
||||||
|
else:
|
||||||
# building command string
|
# building command string
|
||||||
rot,sup,pts,fil = self.getStrings()
|
rot,sup,pts,fil = self.getStrings()
|
||||||
self.commit(translate("draft","Create DWire"),
|
self.commit(translate("draft","Create DWire"),
|
||||||
|
@ -766,11 +779,22 @@ class Rectangle(Creator):
|
||||||
try:
|
try:
|
||||||
# building command string
|
# building command string
|
||||||
rot,sup,pts,fil = self.getStrings()
|
rot,sup,pts,fil = self.getStrings()
|
||||||
|
if Draft.getParam("UsePartPrimitives"):
|
||||||
|
# Use Part Primitive
|
||||||
|
self.commit(translate("draft","Create Plane"),
|
||||||
|
['plane = FreeCAD.ActiveDocument.addObject("Part::Plane","Plane")',
|
||||||
|
'plane.Length = '+str(length),
|
||||||
|
'plane.Width = '+str(height),
|
||||||
|
'pl = FreeCAD.Placement()',
|
||||||
|
'pl.Rotation.Q='+rot,
|
||||||
|
'pl.Base = '+DraftVecUtils.toString(p1),
|
||||||
|
'plane.Placement = pl'])
|
||||||
|
else:
|
||||||
self.commit(translate("draft","Create Rectangle"),
|
self.commit(translate("draft","Create Rectangle"),
|
||||||
['import Draft',
|
['import Draft',
|
||||||
'pl=FreeCAD.Placement()',
|
'pl = FreeCAD.Placement()',
|
||||||
'pl.Rotation.Q='+rot,
|
'pl.Rotation.Q = '+rot,
|
||||||
'pl.Base='+DraftVecUtils.toString(p1),
|
'pl.Base = '+DraftVecUtils.toString(p1),
|
||||||
'Draft.makeRectangle(length='+str(length)+',height='+str(height)+',placement=pl,face='+fil+',support='+sup+')'])
|
'Draft.makeRectangle(length='+str(length)+',height='+str(height)+',placement=pl,face='+fil+',support='+sup+')'])
|
||||||
except:
|
except:
|
||||||
print "Draft: error delaying commit"
|
print "Draft: error delaying commit"
|
||||||
|
@ -1010,6 +1034,16 @@ class Arc(Creator):
|
||||||
rot,sup,pts,fil = self.getStrings()
|
rot,sup,pts,fil = self.getStrings()
|
||||||
if self.closedCircle:
|
if self.closedCircle:
|
||||||
try:
|
try:
|
||||||
|
if Draft.getParam("UsePartPrimitives"):
|
||||||
|
# use primitive
|
||||||
|
self.commit(translate("draft","Create Circle"),
|
||||||
|
['circle = FreeCAD.ActiveDocument.addObject("Part::Circle","Circle")',
|
||||||
|
'circle.Radius = '+str(self.rad),
|
||||||
|
'pl = FreeCAD.Placement()',
|
||||||
|
'pl.Rotation.Q = '+rot,
|
||||||
|
'pl.Base = '+DraftVecUtils.toString(self.center),
|
||||||
|
'circle.Placement = pl'])
|
||||||
|
else:
|
||||||
# building command string
|
# building command string
|
||||||
self.commit(translate("draft","Create Circle"),
|
self.commit(translate("draft","Create Circle"),
|
||||||
['import Draft',
|
['import Draft',
|
||||||
|
@ -1024,6 +1058,18 @@ class Arc(Creator):
|
||||||
end = math.degrees(self.firstangle+self.angle)
|
end = math.degrees(self.firstangle+self.angle)
|
||||||
if end < sta: sta,end = end,sta
|
if end < sta: sta,end = end,sta
|
||||||
try:
|
try:
|
||||||
|
if Draft.getParam("UsePartPrimitives"):
|
||||||
|
# use primitive
|
||||||
|
self.commit(translate("draft","Create Arc"),
|
||||||
|
['circle = FreeCAD.ActiveDocument.addObject("Part::Circle","Circle")',
|
||||||
|
'circle.Radius = '+str(self.rad),
|
||||||
|
'circle.Angle0 = '+str(sta),
|
||||||
|
'circle.Angle1 = '+str(end),
|
||||||
|
'pl = FreeCAD.Placement()',
|
||||||
|
'pl.Rotation.Q = '+rot,
|
||||||
|
'pl.Base = '+DraftVecUtils.toString(self.center),
|
||||||
|
'circle.Placement = pl'])
|
||||||
|
else:
|
||||||
# building command string
|
# building command string
|
||||||
self.commit(translate("draft","Create Arc"),
|
self.commit(translate("draft","Create Arc"),
|
||||||
['import Draft',
|
['import Draft',
|
||||||
|
@ -1556,7 +1602,8 @@ class Dimension(Creator):
|
||||||
self.node = [v1,v2]
|
self.node = [v1,v2]
|
||||||
self.link = [ob,i1,i2]
|
self.link = [ob,i1,i2]
|
||||||
self.edges.append(ed)
|
self.edges.append(ed)
|
||||||
if isinstance(ed.Curve,Part.Circle):
|
import DraftGeomUtils
|
||||||
|
if DraftGeomUtils.geomType(ed) == "Circle":
|
||||||
# snapped edge is an arc
|
# snapped edge is an arc
|
||||||
self.arcmode = "diameter"
|
self.arcmode = "diameter"
|
||||||
self.link = [ob,num]
|
self.link = [ob,num]
|
||||||
|
@ -2253,8 +2300,9 @@ class Trimex(Modifier):
|
||||||
lc = self.obj.ViewObject.LineColor
|
lc = self.obj.ViewObject.LineColor
|
||||||
sc = (lc[0],lc[1],lc[2])
|
sc = (lc[0],lc[1],lc[2])
|
||||||
sw = self.obj.ViewObject.LineWidth
|
sw = self.obj.ViewObject.LineWidth
|
||||||
|
import DraftGeomUtils
|
||||||
for e in self.edges:
|
for e in self.edges:
|
||||||
if isinstance(e.Curve,Part.Line):
|
if DraftGeomUtils(e) == "Line":
|
||||||
self.ghost.append(lineTracker(scolor=sc,swidth=sw))
|
self.ghost.append(lineTracker(scolor=sc,swidth=sw))
|
||||||
else:
|
else:
|
||||||
self.ghost.append(arcTracker(scolor=sc,swidth=sw))
|
self.ghost.append(arcTracker(scolor=sc,swidth=sw))
|
||||||
|
@ -2362,7 +2410,7 @@ class Trimex(Modifier):
|
||||||
point = pts[DraftGeomUtils.findClosest(point,pts)]
|
point = pts[DraftGeomUtils.findClosest(point,pts)]
|
||||||
|
|
||||||
# modifying active edge
|
# modifying active edge
|
||||||
if isinstance(edge.Curve,Part.Line):
|
if DraftGeomUtils.geomType(edge) == "Line":
|
||||||
perp = DraftGeomUtils.vec(edge).cross(Vector(0,0,1))
|
perp = DraftGeomUtils.vec(edge).cross(Vector(0,0,1))
|
||||||
chord = v1.sub(point)
|
chord = v1.sub(point)
|
||||||
proj = DraftVecUtils.project(chord,perp)
|
proj = DraftVecUtils.project(chord,perp)
|
||||||
|
@ -2409,7 +2457,7 @@ class Trimex(Modifier):
|
||||||
for i in list:
|
for i in list:
|
||||||
edge = self.edges[i]
|
edge = self.edges[i]
|
||||||
ghost = self.ghost[i]
|
ghost = self.ghost[i]
|
||||||
if isinstance(edge.Curve,Part.Line):
|
if DraftGeomUtils.geomType(edge) == "Line":
|
||||||
ghost.p1(edge.Vertexes[0].Point)
|
ghost.p1(edge.Vertexes[0].Point)
|
||||||
ghost.p2(edge.Vertexes[-1].Point)
|
ghost.p2(edge.Vertexes[-1].Point)
|
||||||
else:
|
else:
|
||||||
|
@ -3296,9 +3344,20 @@ class Point:
|
||||||
if len(self.stack) == 1:
|
if len(self.stack) == 1:
|
||||||
self.view.removeEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(),self.callbackClick)
|
self.view.removeEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(),self.callbackClick)
|
||||||
self.view.removeEventCallbackPivy(coin.SoLocation2Event.getClassTypeId(),self.callbackMove)
|
self.view.removeEventCallbackPivy(coin.SoLocation2Event.getClassTypeId(),self.callbackMove)
|
||||||
FreeCAD.ActiveDocument.openTransaction("Create Point")
|
commitlist = []
|
||||||
Draft.makePoint((self.stack[0][0]),(self.stack[0][1]),self.stack[0][2])
|
if Draft.getParam("UsePartPrimitives"):
|
||||||
FreeCAD.ActiveDocument.commitTransaction()
|
# using
|
||||||
|
commitlist.append((translate("draft","Create Point"),
|
||||||
|
['point = FreeCAD.ActiveDocument.addObject("Part::Vertex","Point")',
|
||||||
|
'point.X = '+str(self.stack[0][0]),
|
||||||
|
'point.Y = '+str(self.stack[0][1]),
|
||||||
|
'point.Z = '+str(self.stack[0][2])]))
|
||||||
|
else:
|
||||||
|
# building command string
|
||||||
|
commitlist.append((translate("draft","Create Point"),
|
||||||
|
['import Draft',
|
||||||
|
'Draft.makePoint('+str(self.stack[0][0])+','+str(self.stack[0][1])+','+str(self.stack[0][2])+')']))
|
||||||
|
todo.delayCommit(commitlist)
|
||||||
FreeCADGui.Snapper.off()
|
FreeCADGui.Snapper.off()
|
||||||
|
|
||||||
class ToggleSnap():
|
class ToggleSnap():
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
# Resource object code
|
# Resource object code
|
||||||
#
|
#
|
||||||
# Created: Wed Mar 6 12:04:34 2013
|
# Created: Sun Mar 31 20:05:22 2013
|
||||||
# by: The Resource Compiler for PyQt (Qt v4.8.2)
|
# by: The Resource Compiler for PyQt (Qt v4.8.2)
|
||||||
#
|
#
|
||||||
# WARNING! All changes made in this file will be lost!
|
# WARNING! All changes made in this file will be lost!
|
||||||
|
@ -41407,268 +41407,273 @@ qt_resource_data = "\
|
||||||
\x33\x2e\x72\x9f\xc2\xcc\xa8\x77\x7d\x66\xc6\x1b\xcc\xef\xf2\x48\
|
\x33\x2e\x72\x9f\xc2\xcc\xa8\x77\x7d\x66\xc6\x1b\xcc\xef\xf2\x48\
|
||||||
\xa6\x8c\x0e\x28\xa3\x2d\x9e\x88\x63\x66\x74\x00\x9f\x1b\xd5\x84\
|
\xa6\x8c\x0e\x28\xa3\x2d\x9e\x88\x63\x66\x74\x00\x9f\x1b\xd5\x84\
|
||||||
\x37\x0f\xfe\x01\xbd\x89\x17\xfc\
|
\x37\x0f\xfe\x01\xbd\x89\x17\xfc\
|
||||||
\x00\x00\x10\x37\
|
\x00\x00\x10\x85\
|
||||||
\x00\
|
\x00\
|
||||||
\x00\xa6\x66\x78\x9c\xed\x1d\x6b\x6f\xdb\x38\xf2\x7b\x7e\x05\x91\
|
\x00\xa9\x59\x78\x9c\xed\x1d\x6b\x6f\xdb\x38\xf2\x7b\x7e\x05\x91\
|
||||||
\x0f\xbd\x1e\x90\x8d\x63\xe7\xdd\x3a\x3e\xb4\xe9\x13\x68\x77\xdb\
|
\x0f\xbd\x1e\xd0\x8d\x63\xe7\xdd\x3a\x3e\xb4\xe9\x13\x68\x77\xd3\
|
||||||
\x3a\x6d\x6f\xef\xcb\x82\x96\x68\x9b\x57\x59\xf4\x92\x72\x12\x2f\
|
\x3a\x6d\x6f\xef\xcb\x82\x96\x68\x9b\x57\x59\xf2\x92\x74\x12\x2f\
|
||||||
\xee\xc7\xdf\x0c\x49\x59\x8f\xc8\x72\x64\x59\x96\xbd\x75\x51\x20\
|
\xee\xc7\xdf\x0c\x49\x59\x8f\xc8\x72\x64\x59\x96\xbd\x75\x51\x20\
|
||||||
\x16\x49\x91\xc3\xe1\xbc\x38\x33\xa4\xda\xff\xba\x1f\x79\xe4\x96\
|
\x16\x49\x91\xc3\xe1\xbc\x38\x33\xa4\xda\xff\xba\x1f\x79\xe4\x96\
|
||||||
\x49\xc5\x85\x7f\xb5\xdf\x3c\x3c\xda\x27\xcc\x77\x84\xcb\xfd\xc1\
|
\x09\xc9\x03\xff\x72\xbf\x79\x70\xb8\x4f\x98\xef\x04\x2e\xf7\x07\
|
||||||
\xd5\xfe\xd7\x9b\x37\xbf\x5c\xec\xff\xab\xb3\xd7\x9e\xf0\xa8\xd1\
|
\x97\xfb\x5f\x6f\xde\xfe\x72\xbe\xff\xaf\xce\x5e\x7b\xc2\xa3\x46\
|
||||||
\x09\x34\xea\xec\x91\xb6\xe3\x51\xa5\x3a\x6f\x27\xfc\xd9\xb3\x57\
|
\xc7\xd0\xa8\xb3\x47\xda\x8e\x47\xa5\xec\xbc\x9b\xf0\xe7\xcf\x5f\
|
||||||
\x9c\x7a\x62\x00\x7f\xbd\x41\x97\x05\x01\xbc\xac\x5e\x49\xda\x0f\
|
\x73\xea\x05\x03\xf8\xeb\x0d\xba\x4c\x29\x78\x59\xbe\x16\xb4\xaf\
|
||||||
\xda\x0d\xd3\x08\x5a\xdf\x71\x77\xc0\x02\xa2\x9f\xaf\xf6\x3f\x7f\
|
\xda\x0d\xd3\x08\x5a\xdf\x71\x77\xc0\x14\xd1\xcf\x97\xfb\x9f\xbf\
|
||||||
\xd7\x8f\xfb\xc4\xa7\x23\x76\xb5\x9f\xdb\x09\x0e\x46\xda\x63\x29\
|
\xeb\xc7\x7d\xe2\xd3\x11\xbb\xdc\xcf\xed\x04\x07\x23\xed\xb1\x08\
|
||||||
\xc6\x4c\x06\x53\xfb\xc6\x80\x89\x11\x0b\xe4\x54\x57\x92\xb6\x64\
|
\xc6\x4c\xa8\xa9\x7d\x63\xc0\x82\x11\x53\x62\xaa\x2b\x49\x5b\x30\
|
||||||
\x4e\xa0\x7f\x91\xf6\x7d\xe7\xa8\xdd\xb8\xb7\x0f\x53\x7c\x98\xda\
|
\x47\xe9\x5f\xa4\x7d\xdf\x39\x6c\x37\xee\xed\xc3\x14\x1f\xa6\xf6\
|
||||||
\x07\x00\x21\x18\x76\x4e\x2f\xa1\xc8\xfc\x34\xc5\x43\xc6\x07\xc3\
|
\x01\x40\x50\xc3\xce\xc9\x05\x14\x99\x9f\xa6\x78\xc8\xf8\x60\xa8\
|
||||||
\xa0\x73\x76\xdc\x6a\x37\xec\x6f\xdd\x67\x23\xec\xb4\xdd\x08\x07\
|
\x3a\xa7\x47\xad\x76\xc3\xfe\xd6\x7d\x36\xc2\x4e\xdb\x8d\x70\xf0\
|
||||||
\xcf\x82\xe4\x8e\xfb\xae\xb8\xbb\xe1\x81\xc7\x2c\x30\x2a\x90\x00\
|
\x2c\x48\xee\xb8\xef\x06\x77\x37\x5c\x79\xcc\x02\x23\x95\x00\xe0\
|
||||||
\x7c\xe7\x2d\xf3\x99\xa4\x1e\x51\x76\x32\xed\x86\xad\x78\xd8\xa5\
|
\x3b\xef\x98\xcf\x04\xf5\x88\xb4\x93\x69\x37\x6c\xc5\xc3\x2e\x3d\
|
||||||
\x47\xa7\x62\x12\x21\xe7\xdb\x4b\x71\xff\x41\x17\xd9\x1e\x53\x43\
|
\x3a\x0d\x26\x11\x72\xbe\xbd\x0a\xee\x3f\xea\x22\xdb\x63\x6a\x48\
|
||||||
\xaa\x31\x75\xa0\xa3\x7d\x3b\x01\x7f\x32\xea\x31\xd9\x39\x6b\x37\
|
\x39\xa6\x0e\x74\xb4\x6f\x27\xe0\x4f\x46\x3d\x26\x3a\xa7\xed\x86\
|
||||||
\xec\x2f\x03\x7e\x7c\x84\x07\x5d\x8c\xa8\x1c\x70\x3f\xd5\xc3\x65\
|
\xfd\x65\xc0\x8f\x8f\xf0\xa0\x8b\x11\x15\x03\xee\xa7\x7a\xb8\xc8\
|
||||||
\x6e\x0f\x3c\x60\xa3\x08\x93\xf1\xc5\x7c\x2b\xc5\x64\x0c\x30\x87\
|
\xed\x81\x2b\x36\x8a\x30\x19\x5f\xcc\x77\x22\x98\x8c\x01\xe6\x70\
|
||||||
\xcb\x39\x08\x9f\x4d\xf3\x07\x83\x07\x11\xb2\x32\xf0\xa5\x17\x9d\
|
\x39\x07\xe1\xb3\x69\xfe\x60\x70\x15\x21\x2b\x03\x5f\x7a\xd1\x49\
|
||||||
\x74\x33\xb0\xf6\x10\xa8\x5c\xdc\xd9\xd1\x80\x70\x03\xee\x50\xcf\
|
\x37\x03\x6b\x0f\x81\xca\xc5\x9d\x1d\x0d\x08\x57\x71\x87\x7a\xa6\
|
||||||
\x94\xfe\xd1\x8a\x06\x8e\x66\x94\xd1\xd1\xbb\x07\x1d\x0d\x85\xe4\
|
\xf4\x8f\x56\x34\x70\x34\xa3\x8c\x8e\xde\x3f\xe8\x68\x18\x08\xfe\
|
||||||
\x7f\x09\x3f\x98\x75\xd5\xbc\x9c\xf5\x95\xee\xed\x01\x92\x34\x89\
|
\x57\xe0\xab\x59\x57\xcd\x8b\x59\x5f\xe9\xde\x1e\x20\x49\x93\xf8\
|
||||||
\x7f\x92\xac\x7f\x3d\x64\xce\x8f\x38\xb2\xb0\x62\x0c\x15\x0e\x56\
|
\xb5\x60\xfd\xab\x21\x73\x7e\xc4\x91\x85\x15\x63\xa8\x70\xb0\xa2\
|
||||||
\xf4\xc4\xfd\x1f\xcd\x56\xac\xdb\x0c\xec\x09\xe1\xdd\xf0\x71\xa2\
|
\x17\xdc\xff\xd1\x6c\xc5\xba\xcd\xc0\x5e\x10\x78\x37\x7c\x9c\x68\
|
||||||
\xcd\x0c\x89\xef\xfb\x24\x18\x72\x45\xe0\xbf\xee\x8f\xb9\x07\x50\
|
\x33\x43\xe2\x87\x3e\x51\x43\x2e\x09\xfc\xd7\xfd\x31\xf7\x19\x14\
|
||||||
\xc0\x2c\x52\xef\x84\xfc\xd1\x03\xfe\x1e\xc2\x2f\xff\x1f\x01\xa1\
|
\x30\x8b\xd4\xbb\x40\xfc\xe8\x01\x7f\x0f\xe1\x97\xff\x0f\x45\xe8\
|
||||||
\xe3\x31\xa3\xf2\x90\x7c\x55\xac\x3f\x01\x4a\xe5\xbe\xc3\x08\xf5\
|
\x78\xcc\xa8\x38\x20\x5f\x25\xeb\x4f\x80\x52\xb9\xef\x30\x42\x3d\
|
||||||
\x3c\x22\xfa\xb1\xb7\x70\x40\x45\xa8\xc4\x2a\x25\x08\xf7\x75\xdd\
|
\x8f\x04\xfd\xd8\x5b\x38\xa0\x24\x54\x60\x95\x0c\x08\xf7\x75\xdd\
|
||||||
\x0b\xa9\xbb\xb1\x1d\x1e\xa6\xd6\x29\x7b\xb1\xb2\xe7\xc3\xee\x83\
|
\x4b\xa1\xbb\xb1\x1d\x1e\xa4\xd6\x29\x7b\xb1\xb2\xe7\xc3\xee\x55\
|
||||||
\xec\xc9\xbc\xe3\xee\x03\xc8\x97\x1f\x07\x71\xfc\xda\x47\x99\x41\
|
\xf6\x64\xde\x73\xf7\x01\xe4\xcb\x8f\x83\x38\x7e\xe3\xa3\xcc\x20\
|
||||||
\x54\xe0\x02\x57\x5e\xed\x1f\xa5\xc6\x75\x6c\xdf\x43\x18\x58\x8f\
|
\x52\xb9\xc0\x95\x97\xfb\x87\xa9\x71\x1d\xdb\xf7\x10\x06\xd6\xe3\
|
||||||
\xfb\x3d\x1a\xd6\x29\x33\xee\x27\x1a\x0c\x17\x0f\xfb\x51\xb8\x8d\
|
\x7e\x8f\x86\x75\xca\x8c\x7b\x4d\xd5\x70\xf1\xb0\x9f\x02\xb7\x11\
|
||||||
\x50\x6e\x3e\x72\x34\x2d\xca\x80\xcc\x62\x74\xd8\x48\x12\xe2\x02\
|
\xca\xcd\x47\x8e\xa6\x45\x19\x90\x59\x8c\x0e\x1b\x49\x42\x5c\x40\
|
||||||
\xba\xfc\xfc\x81\xf6\x98\x17\x12\xa3\x87\x0f\x49\xba\x2e\xb2\x60\
|
\x97\x9f\x3f\xd2\x1e\xf3\x42\x62\xf4\xf0\x21\x49\xd7\x45\x16\xcc\
|
||||||
\x66\xad\xb8\x1f\x30\xd9\xa7\x40\x4a\x23\xe1\xb2\xe5\x17\x8c\x7a\
|
\xac\x15\xf7\x15\x13\x7d\x0a\xa4\x34\x0a\x5c\xb6\xfc\x82\x51\x8f\
|
||||||
\x7c\xe0\x8f\x98\xff\x60\x30\x98\xee\xe7\xe0\xd9\xb3\x17\x58\xff\
|
\x0f\xfc\x11\xf3\x1f\x0c\x06\xd3\xfd\xac\x9e\x3f\x7f\x89\xf5\x5f\
|
||||||
\x05\x05\xf6\xff\x66\x8f\x37\x92\x72\x0f\x46\x8b\x4a\xbe\x5d\x33\
|
\x50\x60\xff\x6f\xf6\x78\x23\x28\xf7\x60\xb4\xa8\xe4\xdb\x15\x43\
|
||||||
\x84\x07\xc0\x88\x63\xa9\x2a\x74\x46\x6c\x2e\x46\x3d\x91\xc9\xe6\
|
\x78\x00\x8c\x38\x96\xaa\x42\x67\xc4\xe6\xc1\xa8\x17\x64\xb2\x39\
|
||||||
\x58\x81\x6c\x7e\xb2\x3c\x97\xdf\x58\x16\x47\x3e\xfc\xfa\x5e\xa3\
|
\x56\x20\x9b\x1f\x2f\xcf\xe5\x37\x96\xc5\x91\x0f\xbf\x7e\xd0\x68\
|
||||||
\x19\xd9\xf2\x6e\xc8\x81\x27\x23\xc6\x85\xf2\x89\xc7\xc8\x1d\x07\
|
\x46\xb6\xbc\x1b\x72\xe0\xc9\x88\x71\xa1\x7c\xe2\x31\x72\xc7\x81\
|
||||||
\x8e\x46\x06\x7a\x46\x6e\xa0\xd7\x1e\x95\xe6\x0d\x5d\x3e\xf6\xa8\
|
\xa3\x91\x81\x9e\x93\x1b\xe8\xb5\x47\x85\x79\x43\x97\x8f\x3d\x6a\
|
||||||
\xe5\x79\xf3\x4e\xa8\xad\xb0\x3f\x0a\x4f\x63\x2a\x69\xc0\xb4\x0c\
|
\x79\xde\xbc\x13\x6a\x2b\xec\x8f\xc2\xd3\x98\x0a\xaa\x98\x96\x01\
|
||||||
\x80\x17\x0f\x70\x0c\xe8\x32\xa0\xea\x47\xb2\x9f\x89\x62\x7a\xe4\
|
\xf0\xe2\x33\x1c\x03\xba\x54\x54\xfe\x48\xf6\x33\x91\x4c\x8f\xfc\
|
||||||
\x37\x92\xb1\xeb\x17\xaf\xc8\x0d\xb4\xb8\xe5\xec\x8e\xa8\xa9\x02\
|
\x56\x30\x76\xf5\xf2\x35\xb9\x81\x16\xb7\x9c\xdd\x11\x39\x95\x80\
|
||||||
\x8c\x91\xbe\x90\x7a\x14\x1e\x28\x6c\x2b\x0d\x95\x50\x27\x00\x9b\
|
\x31\xd2\x0f\x84\x1e\x85\x2b\x89\x6d\x85\xa1\x12\xea\x28\xb0\x29\
|
||||||
\x62\x2d\x3c\xfd\x95\x7f\xd4\xd4\xb8\x99\x7c\xfc\x80\xae\x1e\xc3\
|
\xd6\xc2\xd3\x5f\xf9\x27\x4d\x8d\x9b\xc9\xc7\x0f\xe8\xea\x31\x6c\
|
||||||
\x76\x11\x3d\x98\xd5\xc9\xc2\xe3\xbc\xe1\x1a\xe9\xf1\xca\x01\x60\
|
\x17\xd1\x83\x59\x9d\x2c\x3c\xce\x1b\xae\x91\x1e\xaf\x1c\x00\x76\
|
||||||
\x57\xbb\x0c\x04\x0b\x79\xaf\xdd\x30\x2a\x7a\xa6\xbf\x13\xd5\xa5\
|
\xb5\xcb\x40\xb0\x90\xf7\xda\x0d\xa3\xa2\x67\xfa\x3b\x51\x5d\x5a\
|
||||||
\xb5\x79\xeb\xf1\xca\x3c\x4b\x68\x2e\x50\xda\xf3\x65\x26\xeb\xd3\
|
\x9b\xb7\x1e\xaf\xcc\xb3\x84\xe6\x02\xa5\x3d\x5f\x66\xb2\x3e\x9d\
|
||||||
\x89\x07\x5d\x0b\x4f\x64\xae\x60\xe5\x82\x0a\xc6\x7d\x39\x09\x02\
|
\x78\xd0\x75\xe0\x05\x99\x2b\x58\xb9\xa0\x82\x71\x5f\x4d\x94\x0a\
|
||||||
\xe1\x67\xc8\x2a\xa8\xeb\x99\xba\xa5\x85\x15\x4a\x05\x37\x3e\x49\
|
\xfc\x0c\x59\x05\x75\x3d\x53\xb7\xb4\xb0\x42\xa9\xe0\xc6\x27\xa9\
|
||||||
\x2d\x0b\x7c\x10\x0d\xa2\xf7\x5f\x30\xb1\xd3\x26\x5e\x1e\xcd\xa4\
|
\x65\x81\x0f\xa2\x21\xe8\xfd\x17\x4c\xec\xb4\x89\x97\x47\x33\xa9\
|
||||||
\xc6\xd5\xdd\xa5\x99\x10\xcb\x52\x54\x2a\x99\x8b\x1b\x01\xfc\x93\
|
\x71\x75\x77\x69\x26\xc4\xb2\x14\x95\x0a\xe6\xe2\x46\x00\xff\x24\
|
||||||
\xac\x18\x80\xb4\xf2\xb1\xca\xfc\x48\x56\xf6\xbc\x09\xc3\x3a\xfd\
|
\x2b\x06\x20\xad\x7c\xac\x32\x3f\x92\x95\x3d\x6f\xc2\xb0\x4e\xff\
|
||||||
\x37\x49\xd0\x0f\x06\x59\xb9\xb8\xb2\xe4\xb0\x99\xd2\xaa\x12\xab\
|
\x4d\x12\xf4\x83\x41\x56\x2e\xae\x2c\x39\x6c\xa6\xb4\xaa\xc4\xea\
|
||||||
\x63\x81\x3e\x9c\xcb\x40\x5d\x9f\x8e\x37\x9d\x7b\x16\x49\x87\xe2\
|
\x58\xa0\x0f\xe7\x32\x50\xd7\xa7\xe3\x4d\xe7\x9e\x45\xd2\xa1\x38\
|
||||||
\xfc\xa3\x70\xd6\x6a\x0a\xb6\x84\xb7\x63\xa0\x04\xf8\x16\x17\x88\
|
\xff\x48\x9c\xb5\x9c\x82\x2d\xe1\xed\x18\x28\x01\xbe\xc5\x05\x22\
|
||||||
\xa0\x9f\x8f\x89\x96\xb5\xdc\xaf\x85\x0f\xbf\x26\xda\x1c\xdb\x78\
|
\xe8\xe7\x63\xa2\x65\x2d\xf7\xab\xc0\x87\x5f\x13\x6d\x8e\x6d\x3c\
|
||||||
\x66\x3a\x5e\x8d\xe5\xfc\x90\xa9\xac\x42\x22\x3d\x06\x6d\x89\x2b\
|
\x33\x1d\xad\xc6\x72\x7e\xc8\x54\x56\x21\x91\x1e\x83\xb6\xc4\x15\
|
||||||
\xe9\x9d\x6f\x0d\x5e\x8e\x58\x89\xa1\x08\x0d\xdf\x12\x7b\xde\x22\
|
\xf4\xce\xb7\x06\x2f\x47\xac\xc4\x50\x84\x86\x6f\x89\x3d\x6f\x11\
|
||||||
\x7c\x77\x72\x32\x9f\xf1\x9a\xad\xd3\x1c\xd6\x6b\x9d\x9e\xd6\xa6\
|
\xbe\x3b\x3e\x9e\xcf\x78\xcd\xd6\x49\x0e\xeb\xb5\x4e\x4e\x6a\xd3\
|
||||||
\xbd\x22\x5c\xfd\x7c\x4c\xb8\x80\x3e\x17\x9a\x82\xb0\x81\x65\xda\
|
\x5e\x11\xae\x7e\x3e\x26\x5c\x40\x9f\x0b\x4d\x41\xd8\xc0\x32\xed\
|
||||||
\x43\x59\x03\x0f\x76\xc7\xdc\xcf\xda\xb6\x2a\x28\xef\x45\x2e\xbd\
|
\xa1\xac\x81\x07\xbb\x63\xee\x67\x6d\x5b\x25\x94\xf7\x22\x97\x5e\
|
||||||
\xec\x99\x3d\x56\x8d\xcd\x26\xb8\x3a\x53\xf0\x96\x02\x9d\xa7\x46\
|
\xf6\xcc\x1e\xab\xc6\x66\x13\x5c\x9d\x29\x78\x4b\x81\xce\x53\x23\
|
||||||
\xb6\xce\xcc\x56\xc2\xad\x59\xa8\xd7\x02\x24\x1f\x5b\xb4\x2d\x25\
|
\x5b\x67\x66\x2b\xe1\xd6\x2c\xd4\x6b\x01\x92\x8f\x2d\xda\x96\x92\
|
||||||
\xf5\x8a\xf7\x57\xc7\x25\xf7\x57\x47\xa5\x54\x1b\xe5\x5a\x68\xd7\
|
\x7a\xc5\xfb\xab\xa3\x92\xfb\xab\xc3\x52\xaa\x8d\x72\x2d\xb4\x6b\
|
||||||
\xa2\xd5\x16\x79\x82\x4e\xcb\xe8\x33\x46\x66\x13\x44\xa5\x05\x73\
|
\xd1\x6a\x8b\x3c\x41\x27\x65\xf4\x19\x23\xb3\x09\xa2\xd2\x82\x39\
|
||||||
\xe4\x7d\xce\x24\xf9\xc1\xa6\x6b\xf1\xab\xc0\x80\x4e\x08\xc0\xa6\
|
\xf2\x3e\x67\x82\xfc\x60\xd3\xb5\xf8\x55\x60\x40\x27\x04\x60\x53\
|
||||||
\x92\x7e\x39\xe7\x86\x1a\x72\x1c\xac\x2e\xdf\x8a\x13\x48\xaf\xbe\
|
\x49\xbf\x9c\x73\x43\x0e\x39\x0e\x56\x97\x6f\xc5\x51\xc2\xab\x6f\
|
||||||
\xd1\xa9\x57\x6a\xea\x4b\xb0\x11\x46\xb7\x80\x7e\xd3\x52\xa4\xab\
|
\x74\xea\x95\x9a\xfa\x12\x6c\x84\xd1\x2d\xa0\xdf\xb4\x14\xe9\xea\
|
||||||
\x8b\x17\xf0\x0a\xb4\x66\xd0\x18\xcd\x8e\x14\xf5\x30\x50\x01\xda\
|
\xe2\x05\xbc\x02\xad\x19\x34\x46\xb3\x23\x45\x3d\x0c\x54\x80\xf6\
|
||||||
\x6b\xfc\x6e\xd6\x63\xbb\xa1\x0b\x0b\x93\xaa\xe2\x7f\xb1\x77\xdc\
|
\x1a\xbf\x9f\xf5\xd8\x6e\xe8\xc2\xc2\xa4\x2a\xf9\x5f\xec\x3d\xf7\
|
||||||
\x0f\xe6\x93\x2a\xb6\x48\xa1\xd3\x44\x1c\x4f\x92\xb1\xc7\x59\xad\
|
\xd5\x7c\x52\xc5\x16\x29\x74\x9a\x88\xe3\x71\x32\xf6\x38\xab\xb5\
|
||||||
\x8d\x3b\xb6\x8e\x12\x21\xc8\x08\xac\x74\x87\x73\x44\x96\x41\xdd\
|
\x71\xc7\xd6\x61\x22\x04\x19\x81\x95\xee\x70\x8e\xc8\x32\xa8\x5b\
|
||||||
\x4a\x6d\x99\x56\xb3\xcc\xb6\x7c\x53\x25\xee\x59\x39\x89\xab\xec\
|
\xa9\x2d\xd3\x6a\x96\xd9\x96\x6f\xaa\xc4\x3d\x2d\x27\x71\xa5\x9d\
|
||||||
\xdc\x56\x20\x69\x9d\x89\x94\x40\xb2\xef\x7d\x97\xdd\x67\x9b\x2f\
|
\xdb\x0a\x24\xad\x33\x11\x02\x48\xf6\x83\xef\xb2\xfb\x6c\xf3\xa5\
|
||||||
\xcd\xb5\x98\x2f\x30\x1b\x9c\xd5\x4e\x82\x9b\xd2\x9d\x04\x8f\x0a\
|
\xb9\x16\xf3\x05\x66\x83\xb3\xda\x49\x70\x53\xba\x93\xe0\x51\xc1\
|
||||||
\x56\x2c\xc1\xf3\x79\x6f\x27\xc1\x57\x2e\xc1\x97\x8d\x4c\xbc\xf0\
|
\x8a\x25\x78\x3e\xef\xed\x24\xf8\xca\x25\xf8\xb2\x91\x89\x97\x9e\
|
||||||
\x82\x8d\x15\xe0\xe7\xe5\x04\x38\x35\x53\x5b\x8b\xfc\x5e\xcf\xf6\
|
\xda\x58\x01\x7e\x56\x4e\x80\x53\x33\xb5\xb5\xc8\xef\xf5\x6c\x3f\
|
||||||
\x13\x66\xa3\x19\x7d\x27\xbe\x77\xe2\x7b\x93\xa2\xaa\xcd\x38\x15\
|
\x61\x36\x9a\xd1\x77\xe2\x7b\x27\xbe\x37\x29\xaa\xda\x8c\x53\xd1\
|
||||||
\x2d\x93\x8b\x52\x6e\xdb\x6f\xdd\xb5\x3a\x23\x4d\xbf\x52\x83\x34\
|
\x32\xb9\x28\xe5\xb6\xfd\xd6\x5d\xab\x33\xd2\xf4\x2b\x35\x48\xb3\
|
||||||
\xfb\xc0\x7d\xf6\xda\xe5\xc1\x03\x69\x86\x2e\x23\x06\x15\x65\xa2\
|
\x8f\xdc\x67\x6f\x5c\xae\x1e\x48\x33\x74\x19\x31\xa8\x28\x13\x1d\
|
||||||
\x43\x59\x0e\xed\x68\xb6\xda\xbf\x96\x70\x5c\x87\x89\x93\x55\xe4\
|
\xca\x72\x68\x47\xb3\xd5\xfe\xb5\x84\xe3\x3a\x4c\x9c\xac\x22\x5f\
|
||||||
\x6b\xc5\x51\xbe\x16\xdf\x43\x7c\x66\x7a\xd2\x66\x85\x37\x53\x06\
|
\x2b\x8e\xf2\xb5\xf8\x1e\xe2\x33\xd3\x93\x36\x2b\xbc\x99\x32\xb0\
|
||||||
\xd6\xcd\x89\x27\x8f\x67\xc4\xc7\x27\x2b\x2e\x4f\xb8\xba\x07\x9b\
|
\x6e\x4e\x3c\x7e\x3c\x23\x3e\x3e\x59\x71\x79\xc2\xd5\x3d\xd8\x64\
|
||||||
\xac\xd8\x27\x00\x21\xb9\xa3\x3e\x26\x1b\xce\x52\x89\x74\xe0\xa0\
|
\xc5\x3e\x01\x08\xc9\x1d\xf5\x31\xd9\x70\x96\x4a\xa4\x03\x07\x8d\
|
||||||
\x11\xf3\x15\x4b\x31\xd2\x15\x36\x19\x89\x50\x15\x92\x7c\x15\xd4\
|
\x98\xaf\x58\x04\x23\x5d\x61\x93\x91\x08\x95\x21\xc9\x57\x41\xcd\
|
||||||
\xdc\xa5\xb7\x00\x83\x51\xef\x36\x46\x44\x7d\x37\xe6\xbb\xa6\x8e\
|
\x5d\x7a\x0b\x30\x18\xf5\x6e\x63\x44\xd4\x77\x63\xbe\x6b\xea\x88\
|
||||||
\x14\x4a\x11\xc5\x14\x26\x46\x97\xf0\x5d\x17\x89\x6a\x02\x50\xc2\
|
\x40\x4a\x22\x99\xc4\xc4\xe8\x12\xbe\xeb\x22\x51\x4d\x00\x2a\xf0\
|
||||||
\x67\xf7\x7c\x63\x55\x7d\xdd\x64\x7e\x5e\x05\x99\x97\x71\xd1\x66\
|
\xd9\x3d\xdf\x58\x55\x5f\x37\x99\x9f\x55\x41\xe6\x65\x5c\xb4\x59\
|
||||||
\xa5\xe4\x3a\x62\x3c\x8d\x25\xcf\xf5\x18\x18\xa1\xe3\x20\xa4\x28\
|
\x29\xb9\x4e\x30\x9e\xc6\x92\xe7\x7a\x0c\x8c\xd0\xb1\x0a\x29\x0a\
|
||||||
\xb0\x72\x47\x40\x6a\x07\x44\x00\xb5\xcb\x3b\xae\x58\x58\xa4\x4c\
|
\xac\xdc\x11\x90\xda\x33\x12\x00\xb5\x8b\x3b\x2e\x59\x58\x24\x4d\
|
||||||
\x7b\xea\xdd\xd1\x29\x50\x5e\x40\x25\xa6\x5b\x12\x5f\xfc\x32\xeb\
|
\x7b\xea\xdd\xd1\x29\x50\x9e\xa2\x02\xd3\x2d\x89\x1f\xfc\x32\xeb\
|
||||||
\xb1\x0a\x56\x78\xeb\x89\x1e\xf5\xc8\x0a\xc6\xb0\x18\x48\x0d\xd3\
|
\xb1\x0a\x56\x78\xe7\x05\x3d\xea\x91\x15\x8c\x61\x31\x90\x1a\xa6\
|
||||||
\x03\xfc\x75\x40\x90\x43\xc7\xfa\x67\xb5\x3a\x63\x3c\x1d\x6d\x70\
|
\x07\xf8\xeb\x80\x20\x87\x8e\xf5\xcf\x6a\x75\xc6\x78\x3a\xda\xe0\
|
||||||
\x26\x60\xdd\xfc\xd3\xbc\xa8\x84\x81\x4a\xc4\xec\x7f\x15\x72\x44\
|
\x4c\xc0\xba\xf9\xa7\x79\x5e\x09\x03\x95\x88\xd9\xff\x1a\x88\x11\
|
||||||
\x3d\x6f\x7a\x40\x00\x91\x4c\x6a\x32\xc4\x50\x87\x8d\x19\x1e\x58\
|
\xf5\xbc\xe9\x33\x02\x88\x64\x42\x93\x21\x86\x3a\x6c\xcc\xf0\x99\
|
||||||
\x65\x31\xe6\x4c\x11\x04\x4e\x31\x0f\xca\x99\x7b\x48\x42\xd6\x13\
|
\x55\x16\x63\xce\x24\x41\xe0\x24\xf3\xa0\x9c\xb9\x07\x24\x64\xbd\
|
||||||
\x63\x6d\xfb\xa4\x93\xe2\x7b\x14\x38\x2b\x8c\xf9\x87\x8c\x18\xbe\
|
\x60\xac\x6d\x9f\x74\x52\x7c\x8f\x02\x67\x85\x31\xff\x90\x11\xc3\
|
||||||
\x0d\x7c\xa5\x02\x46\xdd\x4a\x32\xdb\xbb\x7a\x90\x24\x00\x89\xc9\
|
\xb7\x81\xaf\xa4\x62\xd4\xad\x24\xb3\xbd\xab\x07\x49\x02\x90\x98\
|
||||||
\xad\x47\x99\x68\x28\x5e\x02\x10\xbf\x85\xe1\xd7\x1d\x4f\x64\xf1\
|
\xdc\x7a\x94\x89\x86\xe2\x15\x00\xf1\x5b\x18\x7e\xdd\xf1\x44\x16\
|
||||||
\xc4\x69\x25\x2c\x71\xb1\x5a\x9d\xa2\x4d\xa8\xb8\x76\x40\x27\x35\
|
\x4f\x9c\x54\xc2\x12\xe7\xab\xd5\x29\xda\x84\x8a\x6b\x07\x74\x52\
|
||||||
\x98\x53\x60\x2c\xa8\x20\xc6\x2f\x36\xa3\x05\xb3\x5b\xa0\x54\x33\
|
\x83\x39\x05\xc6\x82\x54\x31\x7e\xb1\x19\x2d\x98\xdd\x02\xa5\x9a\
|
||||||
\x89\x2f\x82\xd8\xfb\x3d\xe3\xe0\x1e\xeb\x77\x7c\x6f\x0a\x2f\x30\
|
\x49\xfc\x40\xc5\xde\xef\x19\x07\xf7\x58\xbf\xe3\x7b\x53\x78\x81\
|
||||||
\x9f\x00\xe8\x60\xe7\x40\xd1\xf5\xcd\x97\x0f\x95\x30\xc5\x8b\x24\
|
\xf9\x04\x40\x07\x3b\x07\x8a\xae\x6e\xbe\x7c\xac\x84\x29\x5e\x26\
|
||||||
\xdc\x21\xb8\x4f\x5d\xae\x68\xcf\x8b\xbc\xee\xe8\xb0\xf9\xe7\x36\
|
\xe1\x0e\xc1\x7d\xea\x72\x49\x7b\x5e\xe4\x75\x47\x87\xcd\x3f\xb7\
|
||||||
\xab\x20\xb3\x40\xdd\x0d\x76\xb7\xaf\xdc\xe9\x9b\xbf\xc3\xdd\x39\
|
\x59\x05\x99\x05\xea\x6e\xb0\xbb\x7d\xe5\x4e\xdf\xfc\x1d\xee\xce\
|
||||||
\x7d\x57\xed\xf4\x6d\x96\x74\x90\x4a\xea\xf2\x89\x9a\x65\x9a\x6a\
|
\xe9\xbb\x6a\xa7\x6f\xb3\xa4\x83\x54\x50\x97\x4f\xe4\x2c\xd3\x54\
|
||||||
\x59\x00\x3c\xa9\xc6\xcc\xe1\x60\x09\x8e\x05\x20\x52\x1d\xe2\x29\
|
\xcb\x02\xe0\x49\x39\x66\x0e\x07\x4b\x70\x1c\x00\x22\xe5\x01\x9e\
|
||||||
\x3d\x2c\x3e\x32\x79\x3c\x82\x00\xab\x06\x14\x0f\x91\x3d\xe5\x7e\
|
\xd2\xc3\xe2\x43\x93\xc7\x13\x10\x60\x55\x45\xf1\x10\xd9\x53\xee\
|
||||||
\x9f\xfb\x00\x77\x09\x46\x5d\x10\x5b\x94\xd4\x1f\xd4\xe1\xce\x59\
|
\xf7\xb9\x0f\x70\x97\x60\xd4\x05\xb1\x45\x41\xfd\x41\x1d\xee\x9c\
|
||||||
\x90\x21\xb5\x80\xd4\xd5\xa4\xdf\xe7\x69\x4f\xb1\x9d\xc3\xf8\x7e\
|
\x05\x19\x52\x0b\x48\x5d\x4e\xfa\x7d\x9e\xf6\x14\xdb\x39\x8c\xef\
|
||||||
\x3d\x6a\x1f\xb0\xf7\xc5\x20\x6f\x4b\xa5\x4f\xd5\x27\x41\x0a\xf8\
|
\xd7\xa3\xf6\x01\x7b\x5f\x0c\xf2\xb6\x54\xfa\x54\x7d\x12\xa4\x80\
|
||||||
\x2c\x0b\xe8\xfb\x12\x07\xbe\xb2\xf4\xfd\x8c\x2f\xb5\xd2\x06\x15\
|
\xcf\xb2\x80\xbe\x2f\x71\xe0\x2b\x4b\xdf\xcf\xf8\x52\x2b\x6d\x50\
|
||||||
\x4e\x84\xe3\x4c\x24\xa1\x03\x8a\xa6\x6b\xcc\xb0\x0d\x86\xa0\x36\
|
\xe1\x24\x70\x9c\x89\x20\x74\x40\xd1\x74\x8d\x19\xb6\x6a\x08\x6a\
|
||||||
\x25\x3a\x55\xa8\x39\xbb\xc9\x7d\x97\x3b\x14\x8d\x5c\x13\x99\xc0\
|
\x53\xa0\x53\x85\x9a\xb3\x9b\xdc\x77\xb9\x43\xd1\xc8\x35\x91\x09\
|
||||||
\xf3\x9e\x0c\x66\x55\xc2\x87\xb1\x28\x11\x80\xde\xf3\xd1\x64\x54\
|
\x3c\xef\xc9\x60\x56\x25\x7c\x18\x8b\x12\x01\xe8\x3d\x1f\x4d\x46\
|
||||||
\x89\xd6\xee\x53\x4f\xad\x43\x6d\xc3\x1c\x7e\x26\x9d\xbd\xd3\xd8\
|
\x95\x68\xed\x3e\xf5\xe4\x3a\xd4\x36\xcc\xe1\x67\xd2\xd9\x3b\x8d\
|
||||||
\xf3\x31\x5d\x45\x98\x36\x7f\x87\xcc\x7c\xb4\x81\x57\x4f\xff\xb9\
|
\x3d\x1f\xd3\x55\x84\x69\xf3\x77\xc8\xcc\x47\x1b\x78\xf5\xf4\x9f\
|
||||||
\x62\xe7\xa3\xe1\xda\xb4\x94\x40\x95\xdf\x63\x3a\xae\xc0\x5d\x26\
|
\x2b\x76\x3e\x19\xae\x4d\x4b\x09\x54\xf9\x3d\xa6\xe3\x0a\xdc\x65\
|
||||||
\x41\x8c\xc4\xed\x84\x2a\x64\xc8\x1c\x40\x36\x50\xfb\xe7\x67\x37\
|
\x02\xc4\x48\xdc\x4e\xa8\x42\x86\xcc\x01\x64\x03\xb5\x7f\x7e\x76\
|
||||||
\x54\xb5\x8a\x56\xbc\x66\x07\xa0\x2f\x2f\x2f\x97\x0f\x41\xe7\xe5\
|
\x43\x55\xab\x68\xc5\x6b\x76\x00\xfa\xe2\xe2\x62\xf9\x10\x74\x5e\
|
||||||
\x55\x9f\xac\x27\xb2\x6d\xc4\xee\x6b\xb3\xe0\x5b\x2a\x7b\xab\xb6\
|
\x5e\xf5\xf1\x7a\x22\xdb\x46\xec\xbe\x31\x0b\xbe\xa5\xb2\xb7\x6a\
|
||||||
\x58\x9a\x95\x58\x2c\x25\x36\x11\x60\xb1\x24\x7c\x6d\x5d\xb3\xab\
|
\x8b\xa5\x59\x89\xc5\x52\x62\x13\x01\x16\x4b\xc2\xd7\xd6\x35\xbb\
|
||||||
\x37\x81\x9b\x99\x9b\x61\x28\xf4\x09\x1b\xe6\xb3\x5b\x60\x6b\xf4\
|
\x7a\x13\xb8\x99\xb9\x19\x86\x81\x3e\x61\xc3\x7c\x76\x0b\x6c\x8d\
|
||||||
\x40\x60\xf0\xa7\x4a\x49\xd2\x85\x21\xc3\x2b\x46\x62\x20\x6d\xb3\
|
\x1e\x08\x0c\xfe\x54\x29\x49\xba\x30\x64\x78\xc5\x48\x0c\xa4\x6d\
|
||||||
\x3b\x01\xb1\x88\x73\x79\x49\xff\xbe\xc7\x6c\x0a\x10\xed\xb2\x47\
|
\x76\x27\x20\x16\x71\x2e\xaf\xe8\xdf\xf7\x98\x4d\x01\xa2\x5d\xf6\
|
||||||
\xe0\x62\xb7\x8d\xa8\x38\xb1\x1a\xbf\xec\x44\x95\x88\x7a\x14\xbc\
|
\x08\x5c\xec\xb6\x11\x19\x27\x56\xe3\x97\x9d\xc8\x12\x51\x8f\x82\
|
||||||
\x7a\x64\xdb\x17\xb3\xea\x08\x45\x81\x93\xfa\x45\xae\xdd\x59\x90\
|
\x57\x8f\x6c\xfb\x62\x56\x1d\xa1\x28\x70\x52\xbf\xc8\xb5\x3b\x0b\
|
||||||
\xe9\x9c\x27\xed\x78\x4c\xda\x51\x62\x41\xb0\xbb\x2c\xed\x3a\x19\
|
\x32\x9d\xf3\xa4\x1d\x8f\x49\x3b\x4a\x2c\x08\x76\x97\xa5\x5d\x27\
|
||||||
\x46\xa1\x64\xbc\x89\x03\xcb\xc6\x1e\xf5\x19\x89\x19\xd2\xf6\x3a\
|
\xc3\x28\x94\x8c\x37\x71\x60\xd9\xd8\xa3\x3e\x23\x31\x43\xda\x5e\
|
||||||
\x1e\x45\xdc\x09\x76\x1a\x7a\x68\x09\x82\xa1\x1b\x54\xb3\x3d\x43\
|
\xc7\x23\x89\x3b\xc1\x4e\x43\x0f\x2d\x41\x30\x74\x83\x6a\xb6\x67\
|
||||||
\x81\xf8\xdd\xc2\xf4\x49\xc3\x14\x48\x0a\x53\x29\x21\x13\x0b\x0a\
|
\x28\x10\xbf\x5b\x98\xae\x35\x4c\x4a\x50\x98\x4a\x09\x99\x58\x50\
|
||||||
\x2f\x3d\xea\x4d\x38\xe8\x8e\xe8\xb3\x88\xbe\x9a\xa8\x5c\x89\x3c\
|
\x78\xe9\x51\x6f\xc2\x41\x77\x44\x9f\x45\xf4\xd5\x44\xe5\x4a\xe4\
|
||||||
\xf8\x2c\x97\x44\x22\x96\x66\xa8\x19\x93\x34\xfa\xf0\x08\x9b\x84\
|
\xc1\x67\xb9\x24\x12\xb1\x34\x43\xcd\x98\xa4\xd1\x87\x47\xd8\x24\
|
||||||
\x28\x5d\xe3\x90\xfc\x16\x46\xb6\xb5\x75\x30\x4d\xbf\x71\xc7\x01\
|
\x44\xe9\x1a\x07\xe4\xb7\x30\xb2\xad\xad\x83\x69\xfa\x8d\x3b\x0e\
|
||||||
\x4a\x59\x24\x5d\xab\x00\xc5\xbf\xc1\xb1\x66\x47\x7d\xa7\xe5\x73\
|
\x50\x8a\x22\xe9\x5a\x05\x28\xfe\x2d\x8e\x35\x3b\xea\x3b\x2d\x9f\
|
||||||
\x48\x0a\x90\x3b\xa2\x62\x17\x7d\x9e\x4f\xe6\x05\x6e\x54\xcb\x74\
|
\x43\x52\x80\xdc\x11\x15\xbb\xe8\xf3\x7c\x32\x2f\x70\xa3\x5a\xa6\
|
||||||
\x7b\x97\xbd\x85\x25\x21\x9c\x37\x32\xf3\x39\x7f\x86\x05\x48\xd1\
|
\xdb\xbb\xec\x2d\x2c\x09\xe1\xbc\x91\x99\xcf\xf9\x33\x2c\x40\x8a\
|
||||||
\x92\xfd\xf7\x4f\x9b\x4a\x8b\xe5\xf2\x66\x7f\x15\xd9\x0b\xb8\x9e\
|
\x96\xec\xbf\x5f\x6f\x2a\x2d\x96\xcb\x9b\xfd\x35\xc8\x5e\xc0\xf5\
|
||||||
\xac\xdd\x7f\xff\x4e\x9e\xde\x88\x71\x66\xf4\x63\x4d\x10\xfc\x87\
|
\x64\xed\xfe\xfb\x77\xf2\xf4\x26\x18\x67\x46\x3f\xd6\x04\xc1\x7f\
|
||||||
\x3c\x7d\x23\x81\xb7\x6a\x84\xe1\x77\x80\xa1\x0b\x06\x6d\x29\x10\
|
\xc8\xd3\xb7\x02\x78\xab\x46\x18\x7e\x07\x18\xba\x60\xd0\x96\x02\
|
||||||
\xea\x16\x49\xcd\x6a\x32\xca\xca\x5d\xf2\x18\xb3\x36\x07\x92\xbb\
|
\xa1\x6e\x91\xd4\xac\x26\xa3\xac\xdc\x25\x8f\x31\x6b\x73\x20\xb8\
|
||||||
\x09\xfd\xa9\xc3\xf5\xd6\x78\xac\x42\x7f\x7e\x85\x2d\x3a\x0e\xba\
|
\x9b\xd0\x9f\x3a\x5c\x6f\x8d\xc7\x2a\xf4\xe7\x57\xd8\xa2\xe3\xa0\
|
||||||
\xd5\xce\x7c\x33\x81\xcd\x14\x7c\x2b\x8f\xbe\xe7\xfb\x71\x76\xbe\
|
\x5b\xed\xcc\x37\x13\xd8\x4c\xc1\xb7\xf2\xe8\x7b\xbe\x1f\x67\xe7\
|
||||||
\xfc\x32\xbe\xfc\x22\x3b\xcc\xfc\xb3\x0c\xb5\xb8\xf8\xd3\x7e\x3a\
|
\xcb\x2f\xe3\xcb\x2f\xb2\xc3\xcc\x3f\xcb\x50\x8b\x8b\x3f\xed\xa7\
|
||||||
\xe3\x00\x89\xc9\x14\x93\x94\xd3\x63\xe4\x96\x2b\x8e\x69\x38\x5a\
|
\x33\x0e\x90\x98\x4c\x31\x49\x39\x3d\x46\x6e\xb9\xe4\x98\x86\xa3\
|
||||||
\xbc\x64\xdd\x29\x0b\x3b\x01\xbc\xcf\xf1\x96\xc5\xcc\xfb\x58\x02\
|
\xc5\x4b\xd6\x9d\xb2\xb0\x13\xc0\xfb\x1c\x6f\x59\xcc\xbc\x8f\x25\
|
||||||
\xd1\x44\x67\x0f\xd1\x30\x95\xb5\xca\x0c\x22\xd8\x53\xae\xc5\x9a\
|
\x10\x4d\x74\xf6\x10\x0d\x53\x59\xab\xcc\x20\x82\x3d\xe5\x5a\xac\
|
||||||
\xb7\x89\x3c\x30\xdc\xdb\xbf\x97\x38\x79\x84\xa5\x9d\x9f\x11\x5d\
|
\x79\x9b\xc8\x03\xc3\xbd\xfb\x7b\x89\x93\x47\x58\xda\xf9\x19\xd1\
|
||||||
\x19\x2d\xcf\xcf\x51\x46\x92\xb5\x37\x63\xd7\x60\xb8\xbf\x12\x13\
|
\x95\xd1\xf2\xfc\x1c\x65\x24\x59\x7b\x33\x76\x0d\x86\xfb\xeb\x60\
|
||||||
\x98\xf0\xbc\xe8\x90\xab\x6b\xc3\x18\xd1\x06\x46\xfa\xf4\xa9\x76\
|
\x02\x13\x9e\x17\x1d\x72\x75\x6d\x18\x23\xda\xc0\x48\x9f\x3e\xd5\
|
||||||
\x83\x3c\xe0\xf5\xe0\x8e\x01\xc3\x32\x0a\x4c\xad\x25\x01\x9e\x79\
|
\x6e\x90\x07\xbc\xae\xee\x18\x30\x2c\xa3\xc0\xd4\x5a\x12\xe0\x99\
|
||||||
\x58\x9e\xa1\x5c\xe6\xf0\x11\x40\x9e\x1d\x45\x2a\x11\x44\xca\x8e\
|
\x87\xe5\x19\xca\x65\x0e\x1f\x01\xe4\xd9\x51\xa4\x12\x41\xa4\xec\
|
||||||
\x7a\x19\x5c\x63\xd4\xeb\xf2\xf0\xf2\xe2\x72\xf6\xef\xfc\xa2\xd5\
|
\xa8\x97\xc1\x35\x46\xbd\x2e\x0e\x2e\xce\x2f\x66\xff\xce\xce\x5b\
|
||||||
\x6e\xd8\xca\xc2\x43\x65\x85\xc1\x6c\x5f\xcd\xc3\xa3\xe4\xbf\xe5\
|
\xed\x86\xad\x2c\x3c\x54\x56\x18\xcc\xf6\xd5\x3c\x38\x4c\xfe\x5b\
|
||||||
\x47\x29\x68\xbf\x74\x43\x6a\xff\x99\xe4\x4e\x3d\x01\xd6\xbc\xd0\
|
\x7e\x94\x82\xf6\x4b\x37\xa4\xf6\x9f\x49\xee\xd4\x13\x60\xcd\x0b\
|
||||||
\x34\xf7\x35\x83\x28\x82\x41\xac\xc7\x1f\xac\x5b\x5f\x4c\x3a\x3f\
|
\x4d\x73\x5f\x33\x88\x24\x18\xc4\x7a\xfc\xc1\xba\xf5\xc5\xa4\xf3\
|
||||||
\xf1\xa8\xa6\xcc\x02\xee\x1b\xa4\x85\xb1\x40\x73\xdb\x5e\x30\xe4\
|
\x13\x8f\x6a\xca\x2c\xe0\xbe\x41\x5a\x18\x0b\x34\xb7\xed\xa9\x21\
|
||||||
\xe8\x05\x3e\x24\x5d\xcc\x34\xec\x4f\x09\xd8\x11\x8c\xa0\x8b\x1a\
|
\x47\x2f\xf0\x01\xe9\x62\xa6\x61\x7f\x4a\xc0\x8e\x60\x04\x5d\xd4\
|
||||||
\x6c\x86\x29\x51\x7f\x4e\xa8\x64\x6a\x26\xa2\x46\x61\x37\x25\x12\
|
\x60\x33\x4c\x89\xfc\x73\x42\x05\x93\x33\x11\x35\x0a\xbb\x29\x91\
|
||||||
\x92\x73\x22\xdc\xcd\xa3\xb5\x44\xb8\x91\x97\x5f\x1b\xda\xd9\x52\
|
\x90\x9c\x13\xe1\x6e\x1e\xae\x25\xc2\x8d\xbc\xfc\xc6\xd0\xce\x96\
|
||||||
\x4e\xae\x7a\x0b\x5e\xf2\xee\xb0\x05\x99\xf6\x73\x79\xfb\x3d\xde\
|
\x72\x72\xd5\x5b\xf0\x92\x77\x87\x2d\xc8\xb4\x9f\xcb\xdb\x1f\xf0\
|
||||||
\x51\xee\x63\xbe\xab\x04\x6a\xc4\x53\x7e\xc4\x03\x26\xcf\x3c\x0d\
|
\x8e\x72\x1f\xf3\x5d\x05\x50\x23\x9e\xf2\x23\x1e\x30\x79\xe6\x69\
|
||||||
\x5e\x33\x8f\xe7\xdb\x14\x56\x53\x76\x61\x47\xf4\xd8\x5d\xd7\x59\
|
\xf0\x9a\x79\x3c\xdf\xa6\xb0\x9a\xb2\x0b\x3b\xa2\xc7\xee\xba\x4e\
|
||||||
\xfe\xae\xab\x79\x76\x7e\x7e\xde\x6a\x9e\x96\xd9\x7b\x15\x37\x51\
|
\xf3\x77\x5d\xcd\xd3\xb3\xb3\xb3\x56\xf3\xa4\xcc\xde\xab\xb8\x89\
|
||||||
\xa2\xfc\x9f\xd0\xa8\xc0\xe3\x6f\x3c\x5c\x26\x47\x08\xe9\x72\x9f\
|
\x12\xe5\xff\x84\x46\x05\x1e\x7f\xe3\xe1\x32\x39\x41\x20\x5c\xee\
|
||||||
\x06\x4c\xc5\xa2\x66\xe4\x29\xa6\x27\xb1\xfb\x43\x72\x4c\xae\xc8\
|
\x53\xc5\x64\x2c\x6a\x46\x9e\x62\x7a\x12\xbb\x3f\x20\x47\xe4\x92\
|
||||||
\x11\xa8\xeb\x66\x89\xac\xe4\x1c\x71\x71\xb6\x16\x69\x31\xa3\xc5\
|
\x1c\x82\xba\x6e\x96\xc8\x4a\xce\x11\x17\xa7\x6b\x91\x16\x33\x5a\
|
||||||
\xad\x95\x16\x45\xdd\x17\xf9\xfa\x6b\xe7\xbe\x58\xf9\xe1\x81\x65\
|
\xdc\x5a\x69\x51\xd4\x7d\x91\xaf\xbf\x76\xee\x8b\x95\x1f\x1e\x58\
|
||||||
\xe5\xe5\x2b\x3e\x62\xbe\x3e\x0c\xbd\x05\x12\x33\x7f\x03\x9b\x9b\
|
\x56\x5e\xbe\xe6\x23\xe6\xeb\xc3\xd0\x5b\x20\x31\xf3\x37\xb0\xb9\
|
||||||
\x51\x77\x51\x4d\x3e\xdd\x5a\xc4\x87\xcb\x47\x9f\xb6\x5e\x82\x54\
|
\x19\x75\xe7\xd5\xe4\xd3\xad\x45\x7c\xb8\x7c\x74\xbd\xf5\x12\xa4\
|
||||||
\x6d\x6f\x14\x38\xf0\x97\xc5\x40\x0b\xf2\xe6\xe6\xf2\xcf\x8d\xf0\
|
\x6a\x7b\xa3\xc0\x81\xbf\x2c\x06\x5a\x90\x37\x37\x97\x7f\x6e\x02\
|
||||||
\x40\x69\xf9\x4e\xa5\x91\xc7\x7c\x59\x9b\xcf\xfa\x3b\x59\xbb\x12\
|
\x0f\x94\x96\xef\x54\x1a\x79\xcc\x97\xb5\xf9\xac\xbf\x93\xb5\x2b\
|
||||||
\x57\x71\x01\x67\xd1\x4f\x60\xd6\x45\x17\xd8\x68\xe1\x88\xa9\x76\
|
\x71\x15\x17\x70\x16\xfd\x04\x66\x5d\x74\x81\x8d\x16\x8e\x98\x6a\
|
||||||
\x2e\xe6\x65\xf4\x27\xbe\x63\x0c\xb8\x60\x48\x03\x9d\x19\x4a\x49\
|
\xe7\x62\x5e\x46\x7f\xe2\x3b\xc6\x80\x53\x43\xaa\x74\x66\x28\x25\
|
||||||
\x10\xb2\xc8\xe1\xde\x37\x6c\x6d\xcf\xb7\xb8\xbc\xdf\x87\x9d\x22\
|
\x2a\x64\x91\x83\xbd\x6f\xd8\xda\x9e\x6f\x71\x79\xbf\x0f\x3b\x45\
|
||||||
\x94\xe3\xe6\xd0\x83\xfd\xa2\x4e\x4e\x31\x1d\x86\x5b\xcc\x40\x32\
|
\x28\xc7\xcd\xa1\x07\xfb\x45\x9d\x9c\x62\x3a\x0c\xb7\x98\x4a\x30\
|
||||||
\x7d\xe8\x85\x2a\xa2\x00\xb0\x12\x7b\xc6\x9c\x53\x5c\x8d\x65\x08\
|
\x7d\xe8\x85\x4a\x22\x01\xb0\x12\x7b\xc6\x9c\x53\x5c\x8d\x65\x08\
|
||||||
\xde\x1f\x00\x39\x04\x2c\x8d\x22\xeb\x47\x02\x93\xb5\xb9\x22\x0f\
|
\xde\x1f\x00\x39\x28\x96\x46\x91\xf5\x23\x81\xc9\xda\x5c\x91\x87\
|
||||||
\x53\x8e\x1f\x0b\x46\x39\x5d\xbf\x1f\x2b\x88\x44\xde\x4e\x17\x65\
|
\x29\xc7\x8f\x05\xa3\x9c\xac\xdf\x8f\xa5\x22\x91\xb7\xd3\x45\x59\
|
||||||
\xe9\xa2\xb3\x72\xaa\x68\x41\x86\xd7\xc2\x84\x18\x6c\x41\x8c\x2c\
|
\xba\xe8\xb4\x9c\x2a\x5a\x90\xe1\xb5\x30\x21\x06\x5b\x10\x23\x0b\
|
||||||
\xd8\x70\xaf\x7a\x7e\x40\xfd\xef\x20\x2a\xc3\x35\x31\xe3\xe9\x43\
|
\x36\xdc\xab\x9e\x1f\x50\xff\x3b\x88\xca\x70\x4d\xcc\x78\xfa\xd0\
|
||||||
\x37\xb8\x3c\x4a\xdf\x4b\xe4\xce\x6c\xef\xd5\xee\x6d\x67\xd2\xa1\
|
\x0d\x2e\x8f\xd4\xf7\x12\xb9\x33\xdb\x7b\xb5\x7b\xdb\x99\x74\x68\
|
||||||
\x55\x83\x97\x1b\xa7\x17\x12\xdf\x96\x8a\x87\xa2\x06\x58\xbe\x23\
|
\xd5\xe0\xe5\xc6\xe9\x85\xc4\xb7\xa5\xe2\xa1\xa8\x01\x96\xef\xc8\
|
||||||
\x67\x67\x80\xad\x7a\xb3\xbb\xe0\x66\xa7\xc7\x09\xc8\x3e\xe0\x7b\
|
\xd9\x19\x60\xab\xde\xec\x2e\xb8\xd9\xe9\x71\x02\xb2\x0f\xf8\xde\
|
||||||
\x13\x6f\x16\x5c\x3e\xc7\x28\xeb\x5e\x41\x9c\xa5\x7e\x77\xf6\x35\
|
\xc4\x9b\x05\x97\xcf\x31\xca\xba\x57\x10\x67\xa9\xdf\x9d\x7d\xcd\
|
||||||
\x47\xfb\x81\xd8\x0c\x21\x74\xb8\xf7\x1e\xe0\xa5\x3e\xda\x5d\x34\
|
\xd1\x7e\x20\x36\x43\x08\x1d\xec\x7d\x00\x78\xa9\x8f\x76\x17\x8d\
|
||||||
\xf6\xa6\x9a\x38\x43\x34\xc0\x9e\xfc\x39\x11\xc1\xf3\x17\x92\x53\
|
\xbd\x29\x27\xce\x10\x0d\xb0\x27\x7f\x4e\x02\xf5\xe2\xa5\xe0\xd4\
|
||||||
\xcf\xfc\xc4\x54\xa6\x70\x20\x15\x4c\xbd\x74\x53\x45\x7d\x15\xb6\
|
\x33\x3f\x31\x95\x29\x1c\x48\xaa\xa9\x97\x6e\x2a\xa9\x2f\xc3\x96\
|
||||||
\xb4\x25\x4c\xf2\xbe\xf9\xb9\x07\xf0\x98\x5f\x23\xe1\x8b\xb0\x19\
|
\xb6\x84\x09\xde\x37\x3f\xf7\x00\x1e\xf3\x6b\x14\xf8\x41\xd8\x0c\
|
||||||
\x02\x49\xfa\x74\xc4\xbd\x69\xd6\xb8\x07\xef\x98\x77\xcb\xf0\xdb\
|
\x81\x24\x7d\x3a\xe2\xde\x34\x6b\xdc\x67\xef\x99\x77\xcb\xf0\xdb\
|
||||||
\xc0\x07\x51\xe7\xe6\x25\x0d\xaa\x36\x2c\xa9\x01\x66\x2f\xe3\xfd\
|
\xc0\xcf\xa2\xce\xcd\x4b\x1a\x54\x6d\x58\x52\x03\xcc\x5e\xc6\xfb\
|
||||||
\x67\x2f\x85\xe7\x9a\xe7\x4a\x92\x19\x70\x8c\xad\xfa\x7a\x6a\x59\
|
\xcf\x5f\x05\x9e\x6b\x9e\x2b\x49\x66\xc0\x31\xb6\xea\xeb\xa9\x65\
|
||||||
\x49\x6f\xb8\x68\x4b\xe5\x7c\xd5\x2e\x89\x02\x27\xfc\x32\x7d\x7a\
|
\x25\xbd\xe1\xa2\x2d\x95\xf3\x55\xbb\x24\x0a\x9c\xf0\xcb\xf4\xe9\
|
||||||
\xcb\xde\xe3\x1f\xc9\xb9\xd1\xd8\xc3\x4f\xc1\xaa\x21\x63\x95\x0a\
|
\x2d\x7b\x8f\x7f\x24\xe7\x46\x63\x0f\x3f\x05\x2b\x87\x8c\x55\x2a\
|
||||||
\xbb\x7c\xfd\xb8\x60\x22\x3b\x05\xb9\x12\x0f\xc5\x1b\xee\xb1\xeb\
|
\xec\xf2\xf5\xe3\x82\x89\xec\x14\xe4\x4a\x3c\x14\x6f\xb9\xc7\xae\
|
||||||
\xa1\x10\x20\x63\x1f\x28\x97\x3e\xd4\x39\xa6\x6e\x91\xd1\xcd\xfd\
|
\x86\x41\x00\x32\xf6\x81\x72\xe9\x43\x9d\x63\xea\x16\x19\xdd\xdc\
|
||||||
\xa2\x46\xf7\xf1\x51\x3e\x82\x4a\xe1\xa7\x78\xc0\xc9\x4d\x53\xbf\
|
\x2f\x6a\x74\x1f\x1d\xe6\x23\xa8\x14\x7e\x8a\x07\x9c\xdc\x34\xf5\
|
||||||
\xbd\x9f\x54\x67\xb4\x39\xe8\x4f\x30\x49\x6d\xf8\x0d\xab\xf0\xbc\
|
\xdb\xfb\x49\x75\x46\x9b\x83\xfe\x04\x93\xd4\x86\xdf\xb0\x0a\xcf\
|
||||||
\x56\x31\x06\x29\x27\x34\x0d\x54\x3b\xa1\x39\x47\x68\x16\xb8\xf3\
|
\x6b\x15\x63\x90\x72\x42\xd3\x40\xb5\x13\x9a\xd9\x42\xb3\x55\xd1\
|
||||||
\x36\x43\x68\x96\x8f\x82\x3c\xa1\xa3\xf1\x73\xf2\x81\x51\x17\x04\
|
\x49\xc1\x12\x97\x19\x7e\x37\xd9\x93\xa9\x83\x53\x51\x3a\x25\xbe\
|
||||||
\x1a\x95\x52\xdc\x19\x73\x62\x13\x4f\x96\xac\xec\x5c\x09\x1f\x99\
|
\x6c\x93\x22\x34\x79\x31\x72\x8d\x97\x7c\x8e\x05\x1f\x71\xcc\xad\
|
||||||
\xef\x92\x6e\x2a\x55\x96\x3b\xd3\xf0\x4a\x04\xe4\xb4\xbe\x23\x15\
|
\x94\xe1\xbd\x84\x18\x04\x35\xaf\xcc\xee\x41\xd4\x44\x49\x6f\x41\
|
||||||
\x38\xfc\x79\xbd\xc3\x5f\xd6\x37\xfc\x35\x97\x0e\xec\x0c\x6a\xc4\
|
\x87\x63\x46\x47\x25\x77\xb4\x61\xee\xb7\x06\xe8\x7a\x06\xd0\x7a\
|
||||||
\xbf\x85\xa0\xc6\x25\xb0\x10\xd4\xb8\x0a\x5d\x10\x2d\xc3\x3a\x17\
|
\xbe\xde\x2d\x19\x0e\x1b\x1f\x75\x47\xf2\x99\x76\x42\x81\x6b\x9e\
|
||||||
\xc1\x00\x50\xe3\x1a\x18\x00\x6a\x5c\x82\x97\xd4\xf9\xa1\xea\x5e\
|
\x33\xec\x84\xf2\x81\xbf\x27\x74\x34\x7e\x41\x3e\x02\x85\x82\x0e\
|
||||||
\x86\x08\x88\x1a\x97\x22\x02\xa2\xd4\x72\xd4\x6e\xaa\x94\xf4\xf3\
|
\xa7\x42\x04\x77\xc6\x82\xde\xc4\xc3\x54\x2b\x3b\x4a\xc5\x47\xe6\
|
||||||
\x37\xf3\x93\x64\xe6\x5b\x2b\xdf\xa0\x15\x77\xa8\x17\xf3\xdd\x18\
|
\x53\xbc\x9b\x4a\x95\xe5\x8e\xf1\xbc\x0e\x14\x39\xa9\xef\x14\x11\
|
||||||
\x9f\x56\x6c\x27\xb5\x89\xe6\xca\xaa\xbe\x02\x1d\xbf\x80\x41\xf4\
|
\x0e\x7f\x56\xef\xf0\x17\xf5\x0d\x7f\xc5\x85\x03\x9b\xe1\x1a\xf1\
|
||||||
\x8d\xbf\x2b\xc4\x84\xf5\x6c\xd9\x13\x2f\xb0\xe1\x89\x23\x89\x4a\
|
\x6f\x21\xa8\x71\x09\x2c\x04\x35\xae\x42\x17\x44\xcb\xb0\xce\x45\
|
||||||
\x46\x6e\x2d\xf2\x0e\x49\xb8\x4d\x86\x5e\x3d\xd6\x0f\x0e\xf0\x96\
|
\x30\x00\xd4\xb8\x06\x06\x80\x1a\x97\xe0\x15\x75\x7e\xc8\xba\x97\
|
||||||
\x5d\x73\x26\x06\x7b\x7c\xdf\xfd\x0d\x6f\x6b\xf7\x5d\x2a\xcb\x5c\
|
\x21\x02\xa2\xc6\xa5\x88\x80\x28\xb5\x1c\xb5\x9b\x2a\x25\x43\x5b\
|
||||||
\x28\x5d\xcc\x0a\x4b\x2c\xe0\xdf\xd1\x14\xfb\x00\x88\x26\x4f\xe3\
|
\xcd\xfc\xbc\xb0\xf9\xd6\xca\x37\x68\xc5\x1d\xea\xc5\xdc\x95\xc6\
|
||||||
\xb8\xad\xf1\xac\xeb\x97\x79\x21\xb2\x2d\x91\x40\x25\xc5\xcf\xb2\
|
\x8d\x1b\x73\x1e\x6c\xa2\xb9\xb2\xaa\x0f\x9f\xc7\xef\x1c\x09\xfa\
|
||||||
\xdf\xbc\x7e\xe1\xe9\xdc\x4d\xd8\x59\x77\xbf\xbd\x25\x40\x68\xf8\
|
\xc6\xc5\x1b\x62\xc2\x3a\x73\xed\x21\x2f\xd8\xe3\xc7\x91\x44\x05\
|
||||||
\x08\x3c\x24\x9c\xca\x25\xcf\x02\x3f\x53\xfe\x61\xbd\x9d\x9f\x69\
|
\x23\xb7\x16\x79\x07\x24\xf4\x0c\x41\xaf\x1e\xeb\x2b\xdc\x7f\x70\
|
||||||
\xad\x7e\xa6\x05\xe9\xcd\x5b\xed\x67\x7a\x87\x47\x1c\xf0\xee\x33\
|
\x73\x0c\x0c\x7b\xfc\xd0\xfd\x0d\x3f\x50\xe0\xbb\x54\x94\xb9\x43\
|
||||||
\x0c\x97\x28\x7b\xee\x81\x82\xaa\x91\xcc\x09\x84\x9c\xe2\x45\x8b\
|
\xbd\x98\x15\x96\x58\xc0\xbf\xa3\x29\xf6\x11\x10\x4d\x9e\xc6\x71\
|
||||||
\x81\xfd\xbc\x33\x32\x09\xe2\x45\xc5\x0b\x9f\x78\xc1\xf3\xb1\xe1\
|
\x5b\xe3\xf1\xee\x2f\xf3\xa2\xc2\x5b\x22\x81\x4a\x8a\x9f\x65\x3f\
|
||||||
\x9c\x27\x83\xe0\x39\x3a\xad\xf0\xee\xe5\x28\x75\x26\x8c\xc3\xb8\
|
\xf3\xfe\xd2\xd3\xe9\xca\xb0\xb5\xef\x7e\x7b\x07\xbb\x69\x85\x8f\
|
||||||
\x2e\x73\xd1\x83\x85\x2a\x29\x14\x99\x36\x86\x03\xcd\x40\x5d\xd9\
|
\xc0\x43\x81\x53\xb9\xe4\x59\xe0\x5a\xcd\x3f\x9f\xba\x73\xad\xae\
|
||||||
\x5e\xd6\xf3\x2d\x1b\x3b\x18\x92\xc0\xa6\xea\xa7\x72\x32\x39\x59\
|
\xd5\xb5\xba\x20\xa3\x7f\xab\x5d\xab\xef\xf1\x54\x0f\x5e\xf7\x87\
|
||||||
\x99\xe8\x2b\x6a\x17\x6b\x14\x6b\x61\xe5\xf7\x2c\x20\x66\x4e\x7a\
|
\x11\x42\x69\x8f\xfa\x50\x50\x35\x82\x39\x2a\x10\x53\xbc\x5b\x54\
|
||||||
\x5d\xed\x9f\xed\x93\x11\x95\x03\xee\x5f\xed\x37\x9b\xfb\x98\x6b\
|
\xd9\x2f\x9a\x23\x93\x20\x5e\x64\xbc\xf0\x89\xa7\x5e\x8c\x0d\xe7\
|
||||||
\xd4\x1e\xf3\xfb\x11\x1d\x87\xc9\x52\x9d\x3f\x3f\xe9\xe7\x37\x52\
|
\x3c\x19\xa8\x17\xe8\xa7\xc5\xeb\xc6\xa3\x6c\xb1\x30\xf4\xe8\xba\
|
||||||
\x8c\x3e\x82\xb1\xd2\x15\x13\x89\xc9\x35\xa9\x56\xf0\x9e\x33\x51\
|
\xcc\x45\xa7\x2d\xaa\xa4\x50\x64\x5a\xbf\x19\x34\x03\x75\x65\x7b\
|
||||||
\x81\x18\x99\x11\x95\x86\x24\x5e\x62\xa0\xd4\xec\xda\xd1\xdc\x1a\
|
\x59\x8f\x1b\xcb\x0e\x86\x24\xb0\xa9\xfa\xa9\x9c\x4c\x4e\x56\x26\
|
||||||
\xe3\x54\xc0\x9f\x2e\xd7\x4d\x40\xb2\x33\xdf\x55\x9d\xcf\xdf\xf5\
|
\xfa\x8a\xda\xc5\x1a\xc5\x5a\x58\xf9\x3d\x8b\x01\x9b\xc3\x8d\x97\
|
||||||
\x7b\x20\xea\x6c\xc1\x9e\xe1\x26\x74\x7d\x61\x0f\x0d\xec\xe0\x15\
|
\xfb\xa7\xfb\x64\x44\xc5\x80\xfb\x97\xfb\xcd\xe6\x3e\xa6\xd7\xb5\
|
||||||
\xa7\x9e\x18\x1c\x0e\x91\xb9\x74\x85\x46\x40\x7a\xdc\x7c\x40\xae\
|
\xc7\xfc\x7e\x44\xc7\x61\x7e\x60\xe7\xcf\x6b\xfd\xfc\x56\x04\xa3\
|
||||||
\xf1\x53\x4c\x2f\x27\x41\xa0\xcd\x9a\x0c\x40\x3e\x4d\xd4\x30\xac\
|
\x4f\x60\xac\x74\x83\x89\xc0\x7c\xb2\x54\x2b\x78\xcf\x99\x48\x15\
|
||||||
\x9f\x07\x8c\x01\x56\x95\x83\x24\x25\xc0\x32\xa1\x79\x88\xbb\x79\
|
\x8c\xcc\x88\x52\x43\x12\x2f\x31\x50\x6a\x76\xed\x68\x6e\x8d\x71\
|
||||||
\x20\x61\x6f\x2b\x03\xcb\xa6\xcc\x64\x23\x68\x56\xb9\x16\x50\x16\
|
\x2a\xe0\x4f\x97\xeb\x26\x20\xd9\x99\xef\xca\xce\xe7\xef\xfa\x3d\
|
||||||
\xad\xd7\xc3\x45\x5d\x0f\x58\xf6\xb8\x7e\x36\x8a\xa2\xda\x35\xe1\
|
\x10\x75\xb6\x60\xcf\x70\x13\xba\xbe\xb0\x87\x06\x76\xf0\x9a\x53\
|
||||||
\xc8\xec\x76\xe6\x00\x33\xab\x5d\x0b\x30\x61\x56\x41\x36\x30\x51\
|
\x2f\x18\x1c\x0c\x91\xb9\x74\x85\x46\x40\x7a\xdc\x7c\x40\xae\xf0\
|
||||||
\xed\x5a\x80\x49\x64\x80\x65\x43\x94\x6a\x52\x1e\xac\x64\x01\xf6\
|
\xeb\x63\xaf\x26\x4a\x69\xb3\x26\x03\x90\xeb\x89\x1c\x86\xf5\xf3\
|
||||||
\xd4\x96\x4c\x69\x41\xaa\xb4\xc8\x05\xdd\xeb\x33\x93\x9b\x6a\x66\
|
\x80\x31\xc0\xca\x72\x90\xa4\x04\x58\x26\x34\x0f\x71\x37\x0f\x24\
|
||||||
\x31\x7b\x36\xa3\x2a\x00\x00\xfa\xce\xb8\xf4\x05\x03\xe9\xbe\x1d\
|
\xec\x6d\x65\x60\xd9\x2c\xb1\x6c\x04\xcd\x2a\xd7\x02\xca\xa2\xf5\
|
||||||
\x17\xad\x93\x81\x4f\xbd\x8e\xe3\xe1\xa1\x47\xf7\x29\x9e\xb3\xc4\
|
\x7a\xb8\xa8\xeb\x01\xcb\x46\x36\xb2\x51\x14\xd5\xae\x09\x47\x66\
|
||||||
\x1d\x8c\x29\xd5\x2d\xc0\x04\x60\xfc\x36\xde\x57\xea\x28\x79\xbb\
|
\xb7\x33\x07\x98\x59\xed\x5a\x80\x09\x13\x69\xb2\x81\x89\x6a\xd7\
|
||||||
\x31\x6b\x62\xba\xf4\x44\xd0\x01\x35\xf8\xda\x9c\xea\x9c\xf5\x89\
|
\x02\x4c\x22\xe9\x31\x1b\xa2\x54\x93\xf2\x60\x25\x0b\xb0\xa7\xb6\
|
||||||
\xc5\x06\x23\xf8\xe5\x06\xab\x91\xf0\x37\x09\xa6\x63\x34\x35\xf5\
|
\x60\x52\x0b\x52\xa9\x45\x2e\xe8\x5e\x9f\x99\x74\x6c\x33\x8b\xd9\
|
||||||
\xf4\x12\x61\x8f\xf6\x7d\xe7\x12\x00\xbe\x0f\x1f\xa7\x9d\xe3\xf3\
|
\xb3\x19\x55\x02\x00\xd0\x77\xc6\x3d\x47\x98\x3b\xe2\xdb\x71\xd1\
|
||||||
\xcb\x76\x63\x1a\xaa\x33\x7c\xfb\x61\x47\x2e\xc3\xaf\xcd\x68\xc3\
|
\x3a\x19\xf8\xd4\xeb\x38\x1e\x9e\xf3\x75\x9f\xe2\xd1\x62\xdc\xc1\
|
||||||
\x38\xdd\xdb\x49\xf3\x3c\xd9\xdd\x45\x33\xab\x3b\xf3\x53\xd9\xa5\
|
\x98\x52\xdd\x02\x4c\x00\xc6\x6f\xe3\x7d\xa5\x6e\x4f\x68\x37\x66\
|
||||||
\x49\xa0\x76\xad\x98\x9e\x1d\x9f\xad\x16\xc7\x88\xd3\x04\x8e\x8f\
|
\x4d\x4c\x97\x5e\xa0\x3a\xa0\x06\xdf\x98\x83\xcc\xb3\x3e\xb1\xd8\
|
||||||
\xcb\xe0\xf8\xf4\xbc\x99\xea\xee\xa4\x32\x1c\x9f\xac\x0e\xc7\x67\
|
\x60\x04\x3f\x56\x62\x35\x12\xfe\x26\x6a\x3a\x46\x53\x53\x4f\x2f\
|
||||||
\xd5\xe2\xf8\x2c\x49\x78\xad\xf3\xa3\x55\xe2\xb8\x75\xde\xda\x40\
|
\x11\xf6\x68\xdf\x77\x2e\x00\xe0\xfb\xf0\x71\xda\x39\x3a\xbb\x68\
|
||||||
\x1c\x87\xd7\xca\x57\x8c\xd9\xd6\x4a\x31\xdb\x3c\x5b\x1b\x66\x97\
|
\x37\xa6\xa1\x3a\xc3\xb7\x1f\x76\xe4\x32\xfc\xc0\x92\x36\x8c\xd3\
|
||||||
\x97\x10\xe1\x0d\x28\xd5\x62\xf6\xf4\x22\xc9\xc8\x67\xa7\x65\x30\
|
\xbd\x1d\x37\xcf\x92\xdd\x9d\x37\xb3\xba\x33\x3f\xa5\x5d\x9a\x04\
|
||||||
\x7b\x7c\x7a\xb2\x05\xb2\x37\xbc\xe3\xa1\x5a\xcc\x1e\x1f\xa7\x30\
|
\x6a\xd7\x8a\xe9\xd9\x89\xf1\x6a\x71\x8c\x38\x4d\xe0\xf8\xa8\x0c\
|
||||||
\x7b\xbe\x4a\x9a\xad\x12\xb3\xe7\xe5\x25\x6e\x74\x4f\x76\xb5\x48\
|
\x8e\x4f\xce\x9a\xa9\xee\x8e\x2b\xc3\xf1\xf1\xea\x70\x7c\x5a\x2d\
|
||||||
\x6e\xa6\xe8\xb7\x75\x59\x4a\x32\x9c\xa0\xbf\x26\xd1\x5d\xa6\x9a\
|
\x8e\x4f\x93\x84\xd7\x3a\x3b\x5c\x25\x8e\x5b\x67\xad\x0d\xc4\x71\
|
||||||
\xdc\x14\xdb\x21\x76\xe7\x57\xc5\xd6\x43\xda\x42\x2b\x25\x25\x5a\
|
\xf8\x25\x85\x8a\x31\xdb\x5a\x29\x66\x9b\xa7\x6b\xc3\xec\xf2\x12\
|
||||||
\xad\xb3\xc7\x18\x23\xf3\xb1\x1c\x7f\x84\xfa\x76\x63\xc2\x3b\x7b\
|
\x22\xbc\xf4\xa7\x5a\xcc\x9e\x9c\x27\x19\xf9\xf4\xa4\x0c\x66\x8f\
|
||||||
\xff\x07\xbf\xef\x72\xe5\
|
\x4e\x8e\xb7\x40\xf6\x86\xd7\x9a\x54\x8b\xd9\xa3\xa3\x14\x66\xcf\
|
||||||
|
\x56\x49\xb3\x55\x62\xf6\xac\xbc\xc4\x8d\xae\x86\xaf\x16\xc9\xcd\
|
||||||
|
\x14\xfd\xb6\x2e\x4a\x49\x86\x63\xf4\xd7\x24\xba\xcb\x54\x93\x9b\
|
||||||
|
\x62\x3b\xc4\xae\xb9\xab\xd8\x7a\x48\x5b\x68\xa5\xa4\x44\xab\x75\
|
||||||
|
\xfa\x18\x63\x64\x3e\x96\xe3\x8f\x50\xdf\x6e\x4c\x78\x67\xef\xff\
|
||||||
|
\x40\xba\x52\xd7\
|
||||||
\x00\x00\x07\xb5\
|
\x00\x00\x07\xb5\
|
||||||
\x00\
|
\x00\
|
||||||
\x00\x1a\x6e\x78\x9c\xed\x58\x5d\x6f\xe3\xb8\x15\x7d\xcf\xaf\x50\
|
\x00\x1a\x6e\x78\x9c\xed\x58\x5d\x6f\xe3\xb8\x15\x7d\xcf\xaf\x50\
|
||||||
|
@ -52924,60 +52929,60 @@ qt_resource_struct = "\
|
||||||
\x00\x00\x00\x64\x00\x00\x00\x00\x00\x01\x00\x00\x01\x64\
|
\x00\x00\x00\x64\x00\x00\x00\x00\x00\x01\x00\x00\x01\x64\
|
||||||
\x00\x00\x00\x96\x00\x00\x00\x00\x00\x01\x00\x00\x04\xc4\
|
\x00\x00\x00\x96\x00\x00\x00\x00\x00\x01\x00\x00\x04\xc4\
|
||||||
\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x01\x00\x00\x03\x12\
|
\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x01\x00\x00\x03\x12\
|
||||||
\x00\x00\x06\xce\x00\x01\x00\x00\x00\x01\x00\x0a\xf7\xe1\
|
\x00\x00\x06\xce\x00\x01\x00\x00\x00\x01\x00\x0a\xf8\x2f\
|
||||||
\x00\x00\x04\x7c\x00\x00\x00\x00\x00\x01\x00\x0a\x54\xca\
|
\x00\x00\x04\x7c\x00\x00\x00\x00\x00\x01\x00\x0a\x55\x18\
|
||||||
\x00\x00\x09\x04\x00\x01\x00\x00\x00\x01\x00\x0b\xbc\x53\
|
\x00\x00\x09\x04\x00\x01\x00\x00\x00\x01\x00\x0b\xbc\xa1\
|
||||||
\x00\x00\x0b\x6c\x00\x01\x00\x00\x00\x01\x00\x0c\x8c\xef\
|
\x00\x00\x0b\x6c\x00\x01\x00\x00\x00\x01\x00\x0c\x8d\x3d\
|
||||||
\x00\x00\x05\x86\x00\x01\x00\x00\x00\x01\x00\x0a\x94\x75\
|
\x00\x00\x05\x86\x00\x01\x00\x00\x00\x01\x00\x0a\x94\xc3\
|
||||||
\x00\x00\x07\x16\x00\x00\x00\x00\x00\x01\x00\x0b\x15\x2b\
|
\x00\x00\x07\x16\x00\x00\x00\x00\x00\x01\x00\x0b\x15\x79\
|
||||||
\x00\x00\x08\x2a\x00\x01\x00\x00\x00\x01\x00\x0b\x7d\xd9\
|
\x00\x00\x08\x2a\x00\x01\x00\x00\x00\x01\x00\x0b\x7e\x27\
|
||||||
\x00\x00\x07\x8a\x00\x00\x00\x00\x00\x01\x00\x0b\x3e\xfa\
|
\x00\x00\x07\x8a\x00\x00\x00\x00\x00\x01\x00\x0b\x3f\x48\
|
||||||
\x00\x00\x09\x9e\x00\x01\x00\x00\x00\x01\x00\x0b\xfc\xf4\
|
\x00\x00\x09\x9e\x00\x01\x00\x00\x00\x01\x00\x0b\xfd\x42\
|
||||||
\x00\x00\x0b\xbc\x00\x01\x00\x00\x00\x01\x00\x0c\xa9\x13\
|
\x00\x00\x0b\xbc\x00\x01\x00\x00\x00\x01\x00\x0c\xa9\x61\
|
||||||
\x00\x00\x04\xc2\x00\x01\x00\x00\x00\x01\x00\x0a\x6d\xec\
|
\x00\x00\x04\xc2\x00\x01\x00\x00\x00\x01\x00\x0a\x6e\x3a\
|
||||||
\x00\x00\x08\x50\x00\x01\x00\x00\x00\x01\x00\x0b\x83\x9d\
|
\x00\x00\x08\x50\x00\x01\x00\x00\x00\x01\x00\x0b\x83\xeb\
|
||||||
\x00\x00\x06\xf0\x00\x00\x00\x00\x00\x01\x00\x0b\x02\x95\
|
\x00\x00\x06\xf0\x00\x00\x00\x00\x00\x01\x00\x0b\x02\xe3\
|
||||||
\x00\x00\x04\xe6\x00\x01\x00\x00\x00\x01\x00\x0a\x73\x6b\
|
\x00\x00\x04\xe6\x00\x01\x00\x00\x00\x01\x00\x0a\x73\xb9\
|
||||||
\x00\x00\x07\x5e\x00\x01\x00\x00\x00\x01\x00\x0b\x2d\xf0\
|
\x00\x00\x07\x5e\x00\x01\x00\x00\x00\x01\x00\x0b\x2e\x3e\
|
||||||
\x00\x00\x04\x9e\x00\x01\x00\x00\x00\x01\x00\x0a\x63\x80\
|
\x00\x00\x04\x9e\x00\x01\x00\x00\x00\x01\x00\x0a\x63\xce\
|
||||||
\x00\x00\x0a\xf6\x00\x00\x00\x00\x00\x01\x00\x0c\x6f\x1b\
|
\x00\x00\x0a\xf6\x00\x00\x00\x00\x00\x01\x00\x0c\x6f\x69\
|
||||||
\x00\x00\x03\xfc\x00\x01\x00\x00\x00\x01\x00\x0a\x2f\x38\
|
\x00\x00\x03\xfc\x00\x01\x00\x00\x00\x01\x00\x0a\x2f\x86\
|
||||||
\x00\x00\x05\xd6\x00\x01\x00\x00\x00\x01\x00\x0a\xaf\x94\
|
\x00\x00\x05\xd6\x00\x01\x00\x00\x00\x01\x00\x0a\xaf\xe2\
|
||||||
\x00\x00\x0a\xae\x00\x01\x00\x00\x00\x01\x00\x0c\x57\xec\
|
\x00\x00\x0a\xae\x00\x01\x00\x00\x00\x01\x00\x0c\x58\x3a\
|
||||||
\x00\x00\x0a\xd0\x00\x01\x00\x00\x00\x01\x00\x0c\x65\x87\
|
\x00\x00\x0a\xd0\x00\x01\x00\x00\x00\x01\x00\x0c\x65\xd5\
|
||||||
\x00\x00\x05\xb4\x00\x00\x00\x00\x00\x01\x00\x0a\x9d\x7b\
|
\x00\x00\x05\xb4\x00\x00\x00\x00\x00\x01\x00\x0a\x9d\xc9\
|
||||||
\x00\x00\x03\xca\x00\x01\x00\x00\x00\x01\x00\x0a\x27\x7f\
|
\x00\x00\x03\xca\x00\x01\x00\x00\x00\x01\x00\x0a\x27\xcd\
|
||||||
\x00\x00\x08\xba\x00\x01\x00\x00\x00\x01\x00\x0b\xa5\x29\
|
\x00\x00\x08\xba\x00\x01\x00\x00\x00\x01\x00\x0b\xa5\x77\
|
||||||
\x00\x00\x09\xf8\x00\x00\x00\x00\x00\x01\x00\x0c\x0d\x3c\
|
\x00\x00\x09\xf8\x00\x00\x00\x00\x00\x01\x00\x0c\x0d\x8a\
|
||||||
\x00\x00\x06\x2a\x00\x01\x00\x00\x00\x01\x00\x0a\xc1\x04\
|
\x00\x00\x06\x2a\x00\x01\x00\x00\x00\x01\x00\x0a\xc1\x52\
|
||||||
\x00\x00\x0a\x1c\x00\x00\x00\x00\x00\x01\x00\x0c\x23\xef\
|
\x00\x00\x0a\x1c\x00\x00\x00\x00\x00\x01\x00\x0c\x24\x3d\
|
||||||
\x00\x00\x07\xe4\x00\x00\x00\x00\x00\x01\x00\x0b\x56\xad\
|
\x00\x00\x07\xe4\x00\x00\x00\x00\x00\x01\x00\x0b\x56\xfb\
|
||||||
\x00\x00\x05\x38\x00\x01\x00\x00\x00\x01\x00\x0a\x83\x6b\
|
\x00\x00\x05\x38\x00\x01\x00\x00\x00\x01\x00\x0a\x83\xb9\
|
||||||
\x00\x00\x0b\x8c\x00\x00\x00\x00\x00\x01\x00\x0c\x97\x9d\
|
\x00\x00\x0b\x8c\x00\x00\x00\x00\x00\x01\x00\x0c\x97\xeb\
|
||||||
\x00\x00\x06\x84\x00\x00\x00\x00\x00\x01\x00\x0a\xd8\x43\
|
\x00\x00\x06\x84\x00\x00\x00\x00\x00\x01\x00\x0a\xd8\x91\
|
||||||
\x00\x00\x04\x28\x00\x00\x00\x00\x00\x01\x00\x0a\x37\x3f\
|
\x00\x00\x04\x28\x00\x00\x00\x00\x00\x01\x00\x0a\x37\x8d\
|
||||||
\x00\x00\x0b\xec\x00\x00\x00\x00\x00\x01\x00\x0c\xb4\xec\
|
\x00\x00\x0b\xec\x00\x00\x00\x00\x00\x01\x00\x0c\xb5\x3a\
|
||||||
\x00\x00\x0a\x64\x00\x00\x00\x00\x00\x01\x00\x0c\x41\x76\
|
\x00\x00\x0a\x64\x00\x00\x00\x00\x00\x01\x00\x0c\x41\xc4\
|
||||||
\x00\x00\x04\x4c\x00\x01\x00\x00\x00\x01\x00\x0a\x4c\x5f\
|
\x00\x00\x04\x4c\x00\x01\x00\x00\x00\x01\x00\x0a\x4c\xad\
|
||||||
\x00\x00\x0a\x8c\x00\x01\x00\x00\x00\x01\x00\x0c\x50\x9d\
|
\x00\x00\x0a\x8c\x00\x01\x00\x00\x00\x01\x00\x0c\x50\xeb\
|
||||||
\x00\x00\x09\x26\x00\x01\x00\x00\x00\x01\x00\x0b\xc4\xfc\
|
\x00\x00\x09\x26\x00\x01\x00\x00\x00\x01\x00\x0b\xc5\x4a\
|
||||||
\x00\x00\x0b\x1c\x00\x01\x00\x00\x00\x01\x00\x0c\x77\xa8\
|
\x00\x00\x0b\x1c\x00\x01\x00\x00\x00\x01\x00\x0c\x77\xf6\
|
||||||
\x00\x00\x06\xac\x00\x01\x00\x00\x00\x01\x00\x0a\xea\x82\
|
\x00\x00\x06\xac\x00\x01\x00\x00\x00\x01\x00\x0a\xea\xd0\
|
||||||
\x00\x00\x07\xbc\x00\x01\x00\x00\x00\x01\x00\x0b\x4c\xfc\
|
\x00\x00\x07\xbc\x00\x01\x00\x00\x00\x01\x00\x0b\x4d\x4a\
|
||||||
\x00\x00\x09\x7c\x00\x00\x00\x00\x00\x01\x00\x0b\xe8\x63\
|
\x00\x00\x09\x7c\x00\x00\x00\x00\x00\x01\x00\x0b\xe8\xb1\
|
||||||
\x00\x00\x05\x5c\x00\x01\x00\x00\x00\x01\x00\x0a\x8a\x34\
|
\x00\x00\x05\x5c\x00\x01\x00\x00\x00\x01\x00\x0a\x8a\x82\
|
||||||
\x00\x00\x08\x0a\x00\x00\x00\x00\x00\x01\x00\x0b\x68\x65\
|
\x00\x00\x08\x0a\x00\x00\x00\x00\x00\x01\x00\x0b\x68\xb3\
|
||||||
\x00\x00\x06\x0a\x00\x01\x00\x00\x00\x01\x00\x0a\xbb\x85\
|
\x00\x00\x06\x0a\x00\x01\x00\x00\x00\x01\x00\x0a\xbb\xd3\
|
||||||
\x00\x00\x09\xc8\x00\x01\x00\x00\x00\x01\x00\x0c\x03\x69\
|
\x00\x00\x09\xc8\x00\x01\x00\x00\x00\x01\x00\x0c\x03\xb7\
|
||||||
\x00\x00\x08\x92\x00\x01\x00\x00\x00\x01\x00\x0b\x99\xb7\
|
\x00\x00\x08\x92\x00\x01\x00\x00\x00\x01\x00\x0b\x9a\x05\
|
||||||
\x00\x00\x08\xdc\x00\x01\x00\x00\x00\x01\x00\x0b\xac\x7d\
|
\x00\x00\x08\xdc\x00\x01\x00\x00\x00\x01\x00\x0b\xac\xcb\
|
||||||
\x00\x00\x0b\x42\x00\x01\x00\x00\x00\x01\x00\x0c\x82\x6d\
|
\x00\x00\x0b\x42\x00\x01\x00\x00\x00\x01\x00\x0c\x82\xbb\
|
||||||
\x00\x00\x0a\x40\x00\x01\x00\x00\x00\x01\x00\x0c\x36\xc6\
|
\x00\x00\x0a\x40\x00\x01\x00\x00\x00\x01\x00\x0c\x37\x14\
|
||||||
\x00\x00\x05\x08\x00\x01\x00\x00\x00\x01\x00\x0a\x7b\x49\
|
\x00\x00\x05\x08\x00\x01\x00\x00\x00\x01\x00\x0a\x7b\x97\
|
||||||
\x00\x00\x08\x72\x00\x00\x00\x00\x00\x01\x00\x0b\x89\xe5\
|
\x00\x00\x08\x72\x00\x00\x00\x00\x00\x01\x00\x0b\x8a\x33\
|
||||||
\x00\x00\x06\x58\x00\x00\x00\x00\x00\x01\x00\x0a\xc8\xe9\
|
\x00\x00\x06\x58\x00\x00\x00\x00\x00\x01\x00\x0a\xc9\x37\
|
||||||
\x00\x00\x07\x3e\x00\x01\x00\x00\x00\x01\x00\x0b\x24\x7c\
|
\x00\x00\x07\x3e\x00\x01\x00\x00\x00\x01\x00\x0b\x24\xca\
|
||||||
\x00\x00\x09\x4a\x00\x00\x00\x00\x00\x01\x00\x0b\xcc\x4d\
|
\x00\x00\x09\x4a\x00\x00\x00\x00\x00\x01\x00\x0b\xcc\x9b\
|
||||||
\x00\x00\x03\x76\x00\x01\x00\x00\x00\x01\x00\x0a\x0d\xd7\
|
\x00\x00\x03\x76\x00\x01\x00\x00\x00\x01\x00\x0a\x0d\xd7\
|
||||||
\x00\x00\x03\xa2\x00\x01\x00\x00\x00\x01\x00\x0a\x17\x44\
|
\x00\x00\x03\xa2\x00\x01\x00\x00\x00\x01\x00\x0a\x17\x44\
|
||||||
"
|
"
|
||||||
|
|
|
@ -1021,6 +1021,26 @@ such as "Arial:Bold"</string>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_22">
|
||||||
|
<item>
|
||||||
|
<widget class="Gui::PrefCheckBox" name="gui::prefcheckbox_13">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>When this is checked, the Draft tools will create Part primitives instead of Draft objects, when available.</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Use Part Primitives</string>
|
||||||
|
</property>
|
||||||
|
<property name="prefEntry" stdset="0">
|
||||||
|
<cstring>UsePartPrimitives</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="prefPath" stdset="0">
|
||||||
|
<cstring>Mod/Draft</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_14">
|
<layout class="QHBoxLayout" name="horizontalLayout_14">
|
||||||
<item>
|
<item>
|
||||||
|
|
|
@ -1250,7 +1250,7 @@ def getWire(wire,nospline=False):
|
||||||
v1 = edge.Vertexes[0].Point
|
v1 = edge.Vertexes[0].Point
|
||||||
if len(edge.Vertexes) < 2:
|
if len(edge.Vertexes) < 2:
|
||||||
points.append((v1.x,v1.y,v1.z,None,None,0.0))
|
points.append((v1.x,v1.y,v1.z,None,None,0.0))
|
||||||
elif (isinstance(edge.Curve,Part.Circle)):
|
elif DraftGeomUtils.geomType(edge) == "Circle":
|
||||||
mp = DraftGeomUtils.findMidpoint(edge)
|
mp = DraftGeomUtils.findMidpoint(edge)
|
||||||
v2 = edge.Vertexes[-1].Point
|
v2 = edge.Vertexes[-1].Point
|
||||||
c = edge.Curve.Center
|
c = edge.Curve.Center
|
||||||
|
@ -1278,7 +1278,7 @@ def getWire(wire,nospline=False):
|
||||||
if not DraftGeomUtils.isClockwise(edge):
|
if not DraftGeomUtils.isClockwise(edge):
|
||||||
bul = -bul
|
bul = -bul
|
||||||
points.append((v1.x,v1.y,v1.z,None,None,bul))
|
points.append((v1.x,v1.y,v1.z,None,None,bul))
|
||||||
elif (isinstance(edge.Curve,Part.BSplineCurve)) and (not nospline):
|
elif (DraftGeomUtils.geomType(edge) == "BSplineCurve") and (not nospline):
|
||||||
spline = getSplineSegs(edge)
|
spline = getSplineSegs(edge)
|
||||||
spline.pop()
|
spline.pop()
|
||||||
for p in spline:
|
for p in spline:
|
||||||
|
@ -1303,7 +1303,7 @@ def writeShape(ob,dxfobject,nospline=False):
|
||||||
for wire in ob.Shape.Wires: # polylines
|
for wire in ob.Shape.Wires: # polylines
|
||||||
for e in wire.Edges:
|
for e in wire.Edges:
|
||||||
processededges.append(e.hashCode())
|
processededges.append(e.hashCode())
|
||||||
if (len(wire.Edges) == 1) and isinstance(wire.Edges[0].Curve,Part.Circle):
|
if (len(wire.Edges) == 1) and (DraftGeomUtils.geomType(wire.Edges[0]) == "Circle"):
|
||||||
center, radius, ang1, ang2 = getArcData(wire.Edges[0])
|
center, radius, ang1, ang2 = getArcData(wire.Edges[0])
|
||||||
if len(wire.Edges[0].Vertexes) == 1: # circle
|
if len(wire.Edges[0].Vertexes) == 1: # circle
|
||||||
dxfobject.append(dxfLibrary.Circle(center, radius,
|
dxfobject.append(dxfLibrary.Circle(center, radius,
|
||||||
|
@ -1323,7 +1323,7 @@ def writeShape(ob,dxfobject,nospline=False):
|
||||||
if not(e.hashCode() in processededges): loneedges.append(e)
|
if not(e.hashCode() in processededges): loneedges.append(e)
|
||||||
# print "lone edges ",loneedges
|
# print "lone edges ",loneedges
|
||||||
for edge in loneedges:
|
for edge in loneedges:
|
||||||
if (isinstance(edge.Curve,Part.BSplineCurve)) and ((not nospline) or (len(edge.Vertexes) == 1)): # splines
|
if (DraftGeomUtils.geomType(edge) == "BSplineCurve") and ((not nospline) or (len(edge.Vertexes) == 1)): # splines
|
||||||
points = []
|
points = []
|
||||||
spline = getSplineSegs(edge)
|
spline = getSplineSegs(edge)
|
||||||
for p in spline:
|
for p in spline:
|
||||||
|
@ -1331,7 +1331,7 @@ def writeShape(ob,dxfobject,nospline=False):
|
||||||
dxfobject.append(dxfLibrary.PolyLine(points, [0.0,0.0,0.0],
|
dxfobject.append(dxfLibrary.PolyLine(points, [0.0,0.0,0.0],
|
||||||
0, color=getACI(ob),
|
0, color=getACI(ob),
|
||||||
layer=getGroup(ob,exportList)))
|
layer=getGroup(ob,exportList)))
|
||||||
elif isinstance(edge.Curve,Part.Circle): # curves
|
elif DraftGeomUtils.geomType(edge) == "Circle": # curves
|
||||||
center, radius, ang1, ang2 = getArcData(edge)
|
center, radius, ang1, ang2 = getArcData(edge)
|
||||||
if len(edge.Vertexes) == 1: # circles
|
if len(edge.Vertexes) == 1: # circles
|
||||||
dxfobject.append(dxfLibrary.Circle(center, radius,
|
dxfobject.append(dxfLibrary.Circle(center, radius,
|
||||||
|
|
|
@ -257,13 +257,13 @@ def export(exportList,filename):
|
||||||
oca.write("# edges\r\n")
|
oca.write("# edges\r\n")
|
||||||
count = 1
|
count = 1
|
||||||
for e in edges:
|
for e in edges:
|
||||||
if isinstance(e.Curve,Part.Line):
|
if DraftGeomUtils.geomType(e) == "Line"):
|
||||||
oca.write("L"+str(count)+"=")
|
oca.write("L"+str(count)+"=")
|
||||||
oca.write(writepoint(e.Vertexes[0].Point))
|
oca.write(writepoint(e.Vertexes[0].Point))
|
||||||
oca.write(" ")
|
oca.write(" ")
|
||||||
oca.write(writepoint(e.Vertexes[-1].Point))
|
oca.write(writepoint(e.Vertexes[-1].Point))
|
||||||
oca.write("\r\n")
|
oca.write("\r\n")
|
||||||
elif isinstance(e.Curve,Part.Circle):
|
elif DraftGeomUtils.geomType(e) == "Circle"):
|
||||||
if (len(e.Vertexes) > 1):
|
if (len(e.Vertexes) > 1):
|
||||||
oca.write("C"+str(count)+"=ARC ")
|
oca.write("C"+str(count)+"=ARC ")
|
||||||
oca.write(writepoint(e.Vertexes[0].Point))
|
oca.write(writepoint(e.Vertexes[0].Point))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user