Merge branch 'master' of ssh://free-cad.git.sourceforge.net/gitroot/free-cad/free-cad

This commit is contained in:
wmayer
2013-04-08 12:55:14 +02:00
4 changed files with 51 additions and 16 deletions

View File

@@ -136,6 +136,12 @@ def removeComponents(objectsList,host=None):
elif o.Base.Support.Name == host.Name:
FreeCAD.Console.PrintMessage(str(translate("Arch","removing sketch support to avoid cross-referencing")))
o.Base.Support = None
elif o.Base.ExternalGeometry:
for i in range(len(o.Base.ExternalGeometry)):
if o.Base.ExternalGeometry[i][0].Name == host.Name:
o.Base.delExternal(i)
FreeCAD.Console.PrintMessage(str(translate("Arch","removing sketch support to avoid cross-referencing")))
break
host.Subtractions = s
else:
for o in objectsList:
@@ -165,6 +171,26 @@ def removeComponents(objectsList,host=None):
a.remove(o)
h.Objects = a
def fixWindow(obj):
'''fixWindow(object): Fixes non-DAG problems in windows
by removing supports and external geometry from underlying sketches'''
if Draft.getType(obj) == "Window":
if obj.Base:
if hasattr(obj.Base,"Support"):
if obj.Base.Support:
if isinstance(o.Base.Support,tuple):
if obj.Base.Support[0]:
FreeCAD.Console.PrintMessage(str(translate("Arch","removing sketch support to avoid cross-referencing")))
obj.Base.Support = None
elif obj.Base.Support:
FreeCAD.Console.PrintMessage(str(translate("Arch","removing sketch support to avoid cross-referencing")))
obj.Base.Support = None
if hasattr(obj.Base,"ExternalGeometry"):
if obj.Base.ExternalGeometry:
for i in range(len(obj.Base.ExternalGeometry)):
obj.Base.delExternal(0)
FreeCAD.Console.PrintMessage(str(translate("Arch","removing sketch external references to avoid cross-referencing")))
def copyProperties(obj1,obj2):
'''copyProperties(obj1,obj2): Copies properties values from obj1 to obj2,
when that property exists in both objects'''

View File

@@ -976,10 +976,13 @@ class DraftToolBar:
self.toggleradius(-1)
elif txt.endsWith("x"):
self.constrain("x")
self.displayPoint()
elif txt.endsWith("y"):
self.constrain("y")
self.displayPoint()
elif txt.endsWith("z"):
self.constrain("z")
self.constrain("z")
self.displayPoint()
elif txt.endsWith("c"):
if self.closeButton.isVisible():
self.closeLine()
@@ -1033,32 +1036,37 @@ class DraftToolBar:
self.textline -= 1
self.textValue.setText(self.textbuffer[self.textline])
def displayPoint(self, point, last=None, plane=None, mask=None):
def displayPoint(self, point=None, last=None, plane=None, mask=None):
"this function displays the passed coords in the x, y, and z widgets"
if (not self.taskmode) or self.isTaskOn:
# get coords to display
dp = point
if self.relativeMode and (last != None):
if plane:
dp = plane.getLocalRot(FreeCAD.Vector(point.x-last.x, point.y-last.y, point.z-last.z))
else:
dp = FreeCAD.Vector(point.x-last.x, point.y-last.y, point.z-last.z)
dp = None
if point:
dp = point
if self.relativeMode and (last != None):
if plane:
dp = plane.getLocalRot(FreeCAD.Vector(point.x-last.x, point.y-last.y, point.z-last.z))
else:
dp = FreeCAD.Vector(point.x-last.x, point.y-last.y, point.z-last.z)
# set widgets
if self.mask in ['y','z']:
self.xValue.setText("0.00")
else:
self.xValue.setText("%.2f" % dp.x)
if dp:
self.xValue.setText("%.2f" % dp.x)
if self.mask in ['x','z']:
self.yValue.setText("0.00")
else:
self.yValue.setText("%.2f" % dp.y)
if dp:
self.yValue.setText("%.2f" % dp.y)
if self.mask in ['x','y']:
self.zValue.setText("0.00")
else:
self.zValue.setText("%.2f" % dp.z)
if dp:
self.zValue.setText("%.2f" % dp.z)
# set masks
if (mask == "x") or (self.mask == "x"):

View File

@@ -2984,8 +2984,8 @@ class Edit(Modifier):
elif arg["Key"] == "c":
self.finish(closed=True)
elif arg["Type"] == "SoLocation2Event": #mouse movement detection
self.point,ctrlPoint,info = getPoint(self,arg)
if self.editing != None:
self.point,ctrlPoint,info = getPoint(self,arg)
self.trackers[self.editing].set(self.point)
self.update(self.trackers[self.editing].get())
elif arg["Type"] == "SoMouseButtonEvent":
@@ -3000,8 +3000,9 @@ class Edit(Modifier):
self.pos = arg["Position"]
self.addPoint(self.point)
elif self.ui.delButton.isChecked():
if 'EditNode' in sel.SubElementNames[0]:
self.delPoint(int(sel.SubElementNames[0][8:]))
if sel.SubElementNames:
if 'EditNode' in sel.SubElementNames[0]:
self.delPoint(int(sel.SubElementNames[0][8:]))
elif 'EditNode' in sel.SubElementNames[0]:
self.ui.pointUi()
self.ui.isRelative.show()