Fixed #0000681 - Bugs in Draft BSplines

This commit is contained in:
Yorik van Havre 2012-04-24 21:53:27 -03:00
parent 2ae1a1a72c
commit 7e560942c9
3 changed files with 48 additions and 42 deletions

View File

@ -1774,6 +1774,7 @@ class _ViewProviderDimension:
obj.Proxy = self
obj.FontSize=getParam("textheight")
obj.FontName=getParam("textfont")
obj.DisplayModes = ["2D","3D"]
obj.ExtLines=0.3
obj.Override = ''
@ -1827,6 +1828,7 @@ class _ViewProviderDimension:
return p1,p2,p3,p4,tbase,norm,rot
def attach(self, obj):
obj.DisplayMode = ["2D","3D"]
self.Object = obj.Object
p1,p2,p3,p4,tbase,norm,rot = self.calcGeom(obj.Object)
self.color = coin.SoBaseColor()
@ -1922,29 +1924,30 @@ class _ViewProviderDimension:
text = text.replace("dim",dtext)
else:
text = dtext
self.text.string = self.text3d.string = text
self.textpos.rotation = coin.SbRotation(rot[0],rot[1],rot[2],rot[3])
self.textpos.translation.setValue([tbase.x,tbase.y,tbase.z])
if obj.ViewObject.DisplayMode == "2D":
self.coords.point.setValues([[p1.x,p1.y,p1.z],
[p2.x,p2.y,p2.z],
[p3.x,p3.y,p3.z],
[p4.x,p4.y,p4.z]])
self.line.numVertices.setValues([4])
else:
ts = (len(text)*obj.ViewObject.FontSize)/4
rm = ((p3.sub(p2)).Length/2)-ts
p2a = p2.add(fcvec.scaleTo(p3.sub(p2),rm))
p2b = p3.add(fcvec.scaleTo(p2.sub(p3),rm))
self.coords.point.setValues([[p1.x,p1.y,p1.z],
[p2.x,p2.y,p2.z],
[p2a.x,p2a.y,p2a.z],
[p2b.x,p2b.y,p2b.z],
[p3.x,p3.y,p3.z],
[p4.x,p4.y,p4.z]])
self.line.numVertices.setValues([3,3])
self.coord1.point.setValue((p2.x,p2.y,p2.z))
self.coord2.point.setValue((p3.x,p3.y,p3.z))
if hasattr(self,"text"):
self.text.string = self.text3d.string = text
self.textpos.rotation = coin.SbRotation(rot[0],rot[1],rot[2],rot[3])
self.textpos.translation.setValue([tbase.x,tbase.y,tbase.z])
if obj.ViewObject.DisplayMode == "2D":
self.coords.point.setValues([[p1.x,p1.y,p1.z],
[p2.x,p2.y,p2.z],
[p3.x,p3.y,p3.z],
[p4.x,p4.y,p4.z]])
self.line.numVertices.setValues([4])
else:
ts = (len(text)*obj.ViewObject.FontSize)/4
rm = ((p3.sub(p2)).Length/2)-ts
p2a = p2.add(fcvec.scaleTo(p3.sub(p2),rm))
p2b = p3.add(fcvec.scaleTo(p2.sub(p3),rm))
self.coords.point.setValues([[p1.x,p1.y,p1.z],
[p2.x,p2.y,p2.z],
[p2a.x,p2a.y,p2a.z],
[p2b.x,p2b.y,p2b.z],
[p3.x,p3.y,p3.z],
[p4.x,p4.y,p4.z]])
self.line.numVertices.setValues([3,3])
self.coord1.point.setValue((p2.x,p2.y,p2.z))
self.coord2.point.setValue((p3.x,p3.y,p3.z))
def onChanged(self, vp, prop):
if prop == "FontSize":
@ -1961,9 +1964,7 @@ class _ViewProviderDimension:
self.updateData(vp.Object, None)
def getDisplayModes(self,obj):
modes=[]
modes.extend(["2D","3D"])
return modes
return ["2D","3D"]
def getDefaultDisplayMode(self):
return "2D"
@ -2279,13 +2280,14 @@ class _Rectangle:
class _ViewProviderRectangle(_ViewProviderDraft):
"A View Provider for the Rectangle object"
def __init__(self, obj):
_ViewProviderDraft.__init__(self,obj)
def __init__(self, vobj):
_ViewProviderDraft.__init__(self,vobj)
obj.addProperty("App::PropertyFile","TextureImage",
"Base","Uses an image as a texture map")
def attach(self,obj):
def attach(self,vobj):
self.texture = None
self.Object = vobj.Object
def onChanged(self, vp, prop):
if prop == "TextureImage":
@ -2613,7 +2615,8 @@ class _ViewProviderBSpline(_ViewProviderDraft):
if prop == "Points":
if obj.Points:
p = obj.Points[-1]
self.coords.point.setValue((p.x,p.y,p.z))
if hasattr(self,"coords"):
self.coords.point.setValue((p.x,p.y,p.z))
return
def onChanged(self, vp, prop):

View File

@ -309,7 +309,7 @@ class DraftToolBar:
self.radiusValue.setText("0.00")
self.isRelative = self._checkbox("isRelative",self.layout,checked=True)
self.hasFill = self._checkbox("hasFill",self.layout,checked=self.fillmode)
self.continueCmd = self._checkbox("continueCmd",self.layout,checked=False)
self.continueCmd = self._checkbox("continueCmd",self.layout,checked=self.continueMode)
self.occOffset = self._checkbox("occOffset",self.layout,checked=False)
self.undoButton = self._pushbutton("undoButton", self.layout, icon='Draft_Rotate')
self.finishButton = self._pushbutton("finishButton", self.layout, icon='Draft_Finish')
@ -341,7 +341,7 @@ class DraftToolBar:
QtCore.QObject.connect(self.radiusValue,QtCore.SIGNAL("returnPressed()"),self.validatePoint)
QtCore.QObject.connect(self.textValue,QtCore.SIGNAL("textChanged(QString)"),self.storeCurrentText)
QtCore.QObject.connect(self.textValue,QtCore.SIGNAL("returnPressed()"),self.sendText)
QtCore.QObject.connect(self.textValue,QtCore.SIGNAL("escaped()"),self.finish)
QtCore.QObject.connect(self.textValue,QtCore.SIGNAL("escaped()"),self.escape)
QtCore.QObject.connect(self.textValue,QtCore.SIGNAL("down()"),self.sendText)
QtCore.QObject.connect(self.textValue,QtCore.SIGNAL("up()"),self.lineUp)
QtCore.QObject.connect(self.zValue,QtCore.SIGNAL("returnPressed()"),self.xValue.setFocus)
@ -361,13 +361,13 @@ class DraftToolBar:
QtCore.QObject.connect(self.hasFill,QtCore.SIGNAL("stateChanged(int)"),self.setFill)
QtCore.QObject.connect(self.currentViewButton,QtCore.SIGNAL("clicked()"),self.selectCurrentView)
QtCore.QObject.connect(self.resetPlaneButton,QtCore.SIGNAL("clicked()"),self.selectResetPlane)
QtCore.QObject.connect(self.xValue,QtCore.SIGNAL("escaped()"),self.finish)
QtCore.QObject.connect(self.xValue,QtCore.SIGNAL("escaped()"),self.escape)
QtCore.QObject.connect(self.xValue,QtCore.SIGNAL("undo()"),self.undoSegment)
QtCore.QObject.connect(self.yValue,QtCore.SIGNAL("escaped()"),self.finish)
QtCore.QObject.connect(self.yValue,QtCore.SIGNAL("escaped()"),self.escape)
QtCore.QObject.connect(self.yValue,QtCore.SIGNAL("undo()"),self.undoSegment)
QtCore.QObject.connect(self.zValue,QtCore.SIGNAL("escaped()"),self.finish)
QtCore.QObject.connect(self.zValue,QtCore.SIGNAL("escaped()"),self.escape)
QtCore.QObject.connect(self.zValue,QtCore.SIGNAL("undo()"),self.undoSegment)
QtCore.QObject.connect(self.radiusValue,QtCore.SIGNAL("escaped()"),self.finish)
QtCore.QObject.connect(self.radiusValue,QtCore.SIGNAL("escaped()"),self.escape)
QtCore.QObject.connect(self.baseWidget,QtCore.SIGNAL("resized()"),self.relocate)
QtCore.QObject.connect(self.baseWidget,QtCore.SIGNAL("retranslate()"),self.retranslateUi)
@ -860,6 +860,11 @@ class DraftToolBar:
self.cancel()
self.cancel = None
def escape(self):
"escapes the current command"
self.continueMode = False
self.finish()
def closeLine(self):
"close button action"
self.sourceCmd.finish(True)

View File

@ -422,7 +422,7 @@ class Line(Creator):
self.linetrack.finalize()
self.constraintrack.finalize()
Creator.finish(self)
if cont and self.ui:
if self.ui:
if self.ui.continueMode:
self.Activated()
@ -618,7 +618,7 @@ class BSpline(Line):
self.bsplinetrack.finalize()
self.constraintrack.finalize()
Creator.finish(self)
if cont and self.ui:
if self.ui:
if self.ui.continueMode:
self.Activated()
@ -706,7 +706,7 @@ class Rectangle(Creator):
if self.ui:
self.rect.off()
self.rect.finalize()
if cont and self.ui:
if self.ui:
if self.ui.continueMode:
self.Activated()
@ -807,7 +807,7 @@ class Arc(Creator):
self.constraintrack.finalize()
self.arctrack.finalize()
self.doc.recompute()
if cont and self.ui:
if self.ui:
if self.ui.continueMode:
self.Activated()
@ -1121,7 +1121,6 @@ class Polygon(Creator):
self.constraintrack.finalize()
self.arctrack.finalize()
self.doc.recompute()
if cont and self.ui:
if self.ui.continueMode:
self.Activated()
@ -1301,7 +1300,6 @@ class Text(Creator):
Creator.finish(self)
if self.ui:
del self.dialog
if cont and self.ui:
if self.ui.continueMode:
self.Activated()