Draft: fixed end arrow of lines/wires - fixes #2424

This commit is contained in:
Yorik van Havre 2016-01-30 14:31:32 -02:00
parent 645a83ad32
commit d45abca952

View File

@ -4400,36 +4400,36 @@ class _ViewProviderWire(_ViewProviderDraft):
if hasattr(self,"coords"): if hasattr(self,"coords"):
self.coords.translation.setValue((p.x,p.y,p.z)) self.coords.translation.setValue((p.x,p.y,p.z))
if len(obj.Points) >= 2: if len(obj.Points) >= 2:
v1 = obj.Points[-1].sub(obj.Points[-2]) v1 = obj.Points[-2].sub(obj.Points[-1])
v1.normalize() v1.normalize()
import DraftGeomUtils import DraftGeomUtils
v2 = DraftGeomUtils.getNormal(obj.Shape) v2 = DraftGeomUtils.getNormal(obj.Shape)
v3 = v1.cross(v2) if DraftVecUtils.isNull(v2):
v2 = Vector(0,0,1)
v3 = v1.cross(v2).negative()
q = FreeCAD.Placement(DraftVecUtils.getPlaneRotation(v1,v3,v2)).Rotation.Q q = FreeCAD.Placement(DraftVecUtils.getPlaneRotation(v1,v3,v2)).Rotation.Q
self.coords.rotation.setValue((q[0],q[1],q[2],q[3])) self.coords.rotation.setValue((q[0],q[1],q[2],q[3]))
return return
def onChanged(self, vp, prop): def onChanged(self, vobj, prop):
if prop == "EndArrow": if prop in ["EndArrow","ArrowSize","ArrowType"]:
rn = vp.RootNode rn = vobj.RootNode
if vp.EndArrow:
rn.addChild(self.pt)
self.onChanged(vp,"ArrowSize")
else:
rn.removeChild(self.pt)
elif prop == "ArrowSize":
if hasattr(vp,"ArrowSize"):
s = vp.ArrowSize
else:
s = getParam("arrowsize",0.1)
self.coords.scaleFactor.setValue((s,s,s))
elif prop == "ArrowType":
if hasattr(self,"pt"): if hasattr(self,"pt"):
self.pt.removeChild(self.symbol) if vobj.EndArrow:
s = arrowtypes.index(vp.ArrowType) self.pt.removeChild(self.symbol)
self.symbol = dimSymbol(s) s = arrowtypes.index(vobj.ArrowType)
self.pt.addChild(self.symbol) self.symbol = dimSymbol(s)
_ViewProviderDraft.onChanged(self,vp,prop) self.pt.addChild(self.symbol)
self.updateData(vobj.Object,"Points")
if hasattr(vobj,"ArrowSize"):
s = vobj.ArrowSize
else:
s = getParam("arrowsize",0.1)
self.coords.scaleFactor.setValue((s,s,s))
rn.addChild(self.pt)
else:
rn.removeChild(self.pt)
_ViewProviderDraft.onChanged(self,vobj,prop)
return return
def claimChildren(self): def claimChildren(self):