0000671: Crash with Draft/Put... on sheet with PartDesignExample.FCStd

This commit is contained in:
wmayer 2012-04-16 16:47:09 +02:00
parent 2e3e3f0467
commit bf1f4600fc
5 changed files with 20 additions and 14 deletions

View File

@ -91,7 +91,7 @@ if not FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/").HasGroup("Dra
def translate(context,text):
"convenience function for Qt translator"
return QtGui.QApplication.translate(context, text, None, QtGui.QApplication.UnicodeUTF8).toUtf8()
def msg(text=None,mode=None):
"prints the given message on the FreeCAD status bar"
if not text: FreeCAD.Console.PrintMessage("")
@ -103,6 +103,9 @@ def msg(text=None,mode=None):
else:
FreeCAD.Console.PrintMessage(text)
def get3DView():
return FreeCADGui.ActiveDocument.mdiViewsOfType("Gui::View3DInventor")[0]
def selectObject(arg):
'''this is a scene even handler, to be called from the Draft tools
when they need to select an object'''
@ -1642,7 +1645,7 @@ class Modifier:
return True
else:
return False
def Activated(self,name="None"):
if FreeCAD.activeDraftCommand:
FreeCAD.activeDraftCommand.finish()
@ -1657,7 +1660,7 @@ class Modifier:
self.finish()
else:
FreeCAD.activeDraftCommand = self
self.view = FreeCADGui.ActiveDocument.ActiveView
self.view = get3DView()
self.ui = FreeCADGui.draftToolBar
FreeCADGui.draftToolBar.show()
rot = self.view.getCameraNode().getField("orientation").getValue()

View File

@ -60,10 +60,13 @@ class Tracker:
todo.delay(self._removeSwitch, self.switch)
self.switch = None
def get3DView(self):
return FreeCADGui.ActiveDocument.mdiViewsOfType("Gui::View3DInventor")[0]
def _insertSwitch(self, switch):
'''insert self.switch into the scene graph. Must not be called
from an event handler (or other scene graph traversal).'''
sg=FreeCADGui.ActiveDocument.ActiveView.getSceneGraph()
sg=self.get3DView().getSceneGraph()
if self.ontop:
sg.insertChild(switch,0)
else:
@ -72,7 +75,7 @@ class Tracker:
def _removeSwitch(self, switch):
'''remove self.switch from the scene graph. As with _insertSwitch,
must not be called during scene graph traversal).'''
sg=FreeCADGui.ActiveDocument.ActiveView.getSceneGraph()
sg=self.get3DView().getSceneGraph()
sg.removeChild(switch)
def on(self):
@ -82,7 +85,7 @@ class Tracker:
def off(self):
self.switch.whichChild = -1
self.Visible = False
class snapTracker(Tracker):
"A Snap Mark tracker, used by tools that support snapping"
def __init__(self):
@ -451,8 +454,8 @@ class PlaneTracker(Tracker):
"A working plane tracker"
def __init__(self):
# getting screen distance
p1 = FreeCADGui.ActiveDocument.ActiveView.getPoint((100,100))
p2 = FreeCADGui.ActiveDocument.ActiveView.getPoint((110,100))
p1 = self.get3DView().getPoint((100,100))
p2 = self.get3DView().getPoint((110,100))
bl = (p2.sub(p1)).Length * (Draft.getParam("snapRange")/2)
self.trans = coin.SoTransform()
self.trans.translation.setValue([0,0,0])

View File

@ -1,4 +1,4 @@
import FreeCAD,FreeCADGui
FreeCAD.open(FreeCAD.getResourceDir()+"examples/PartDesignExample.FCStd")
FreeCADGui.SendMsgToActiveView("ViewFit")
FreeCADGui.activeDocument().activeView().viewAxometric()
FreeCADGui.activeDocument().sendMsgToViews("ViewFit")
FreeCADGui.activeDocument().sendMsgToViews("ViewAxo")

View File

@ -1,4 +1,4 @@
import FreeCAD,FreeCADGui
FreeCAD.open(FreeCAD.getResourceDir()+"examples/RobotExample.FCStd")
FreeCADGui.SendMsgToActiveView("ViewFit")
FreeCADGui.activeDocument().activeView().viewAxometric()
FreeCADGui.activeDocument().sendMsgToViews("ViewFit")
FreeCADGui.activeDocument().sendMsgToViews("ViewAxo")

View File

@ -1,4 +1,4 @@
import FreeCAD,FreeCADGui,Part
Part.open(FreeCAD.getResourceDir()+"examples/Schenkel.stp")
FreeCADGui.SendMsgToActiveView("ViewFit")
Gui.activeDocument().activeView().viewAxometric()
FreeCADGui.activeDocument().sendMsgToViews("ViewFit")
FreeCADGui.activeDocument().sendMsgToViews("ViewAxo")