Finished implementing RFE 510 - Arch Axes

Arch axes are now printable on a Drawing sheet with the Draft tool
This commit is contained in:
Yorik van Havre 2012-03-13 11:41:04 -03:00
parent 8fdc39df93
commit 2a23bd13ce
2 changed files with 42 additions and 4 deletions

View File

@ -102,16 +102,14 @@ class _ViewProviderAxis:
def __init__(self,vobj): def __init__(self,vobj):
vobj.addProperty("App::PropertyLength","BubbleSize","Base", "The size of the axis bubbles") vobj.addProperty("App::PropertyLength","BubbleSize","Base", "The size of the axis bubbles")
vobj.addProperty("App::PropertyEnumeration","NumerationStyle","Base", "The numeration style") vobj.addProperty("App::PropertyEnumeration","NumerationStyle","Base", "The numeration style")
vobj.addProperty("App::PropertyEnumeration","DrawStyle","Base", "The representation style")
vobj.NumerationStyle = ["1,2,3","01,02,03","001,002,003","A,B,C","a,b,c","I,II,III","L0,L1,L2"] vobj.NumerationStyle = ["1,2,3","01,02,03","001,002,003","A,B,C","a,b,c","I,II,III","L0,L1,L2"]
vobj.DrawStyle = ["solid","dotted","dashed","dashdot"]
vobj.Proxy = self vobj.Proxy = self
self.Object = vobj.Object self.Object = vobj.Object
self.ViewObject = vobj self.ViewObject = vobj
vobj.BubbleSize = .1 vobj.BubbleSize = .1
vobj.LineWidth = 1 vobj.LineWidth = 1
vobj.LineColor = (0.13,0.15,0.37) vobj.LineColor = (0.13,0.15,0.37)
vobj.DrawStyle = "dashdot" vobj.DrawStyle = "Dashdot"
def getIcon(self): def getIcon(self):
return ":/icons/Arch_Axis_Tree.svg" return ":/icons/Arch_Axis_Tree.svg"
@ -203,7 +201,7 @@ class _ViewProviderAxis:
self.bubbles.addChild(li) self.bubbles.addChild(li)
st = coin.SoSeparator() st = coin.SoSeparator()
tr = coin.SoTransform() tr = coin.SoTransform()
tr.translation.setValue((center.x,center.y,center.z)) tr.translation.setValue((center.x,center.y-rad/4,center.z))
fo = coin.SoFont() fo = coin.SoFont()
fo.name = "Arial,Sans" fo.name = "Arial,Sans"
fo.size = rad*100 fo.size = rad*100

View File

@ -1227,6 +1227,46 @@ def getSVG(obj,modifier=100,textmodifier=100,linestyle="continuous",fillstyle="s
svg += '<tspan>'+l+'</tspan>\n' svg += '<tspan>'+l+'</tspan>\n'
svg += '</text>\n' svg += '</text>\n'
elif getType(obj) == "Axis":
"returns the SVG representation of an Arch Axis system"
color = getrgb(obj.ViewObject.LineColor)
# setting linetype
if linestyle == "dashed":
lorig = "0.09,0.05"
elif linestyle == "dashdotted":
lorig = "0.09,0.05,0.02,0.05"
elif linestyle == "dotted":
lorig = "0.02,0.02"
else:
lorig = "none"
name = obj.Name
stroke = getrgb(obj.ViewObject.LineColor)
width = obj.ViewObject.LineWidth/modifier
fill = 'none'
invpl = obj.Placement.inverse()
n = 0
for e in obj.Shape.Edges:
lstyle = lorig
svg += getPath([e])
p1 = invpl.multVec(e.Vertexes[0].Point)
p2 = invpl.multVec(e.Vertexes[1].Point)
dv = p2.sub(p1)
dv.normalize()
rad = obj.ViewObject.BubbleSize
center = p2.add(dv.scale(rad,rad,rad))
lstyle = "none"
svg += getCircle(Part.makeCircle(rad,center))
svg += '<text fill="' + color + '" '
svg += 'font-size="' + str(rad) + '" '
svg += 'style="text-anchor:middle;'
svg += 'text-align:center;'
svg += 'font-family: Arial,sans;" '
svg += 'transform="translate(' + str(center.x+rad/4) + ',' + str(center.y-rad/3) + ') '
svg += 'scale(1,-1)"> '
svg += '<tspan>' + obj.ViewObject.Proxy.getNumber(n) + '</tspan>\n'
svg += '</text>\n'
n += 1
elif obj.isDerivedFrom('Part::Feature'): elif obj.isDerivedFrom('Part::Feature'):
if obj.Shape.isNull(): return '' if obj.Shape.isNull(): return ''
color = getrgb(obj.ViewObject.LineColor) color = getrgb(obj.ViewObject.LineColor)