Draft: small fixes

This commit is contained in:
Yorik van Havre 2012-07-17 19:57:52 -03:00
parent 14562ba540
commit 4e9412c0ae
3 changed files with 251 additions and 229 deletions

View File

@ -21,7 +21,7 @@
#* *
#***************************************************************************
import FreeCAD,FreeCADGui,Draft,math,DraftVecUtils
import FreeCAD,FreeCADGui,Draft,math,DraftVecUtils,ArchCommands
from FreeCAD import Vector
from PyQt4 import QtCore, QtGui
from pivy import coin

View File

@ -333,10 +333,15 @@ class SelectPlane(DraftTool):
sel = FreeCADGui.Selection.getSelectionEx()
if len(sel) == 1:
sel = sel[0]
if sel.HasSubObjects:
self.ui = FreeCADGui.draftToolBar
if Draft.getType(sel.Object) == "Axis":
plane.alignToEdges(sel.Object.Shape.Edges)
self.display(plane.axis)
self.finish()
return
elif sel.HasSubObjects:
if len(sel.SubElementNames) == 1:
if "Face" in sel.SubElementNames[0]:
self.ui = FreeCADGui.draftToolBar
plane.alignToFace(sel.SubObjects[0], self.offset)
self.display(plane.axis)
self.finish()

View File

@ -146,6 +146,23 @@ class plane:
else:
return False
def alignToEdges(self,edges):
# use a list of edges to find a plane position
if len(edges) > 2:
return False
# for axes systems, we suppose the 2 first edges are parallel
# ??? TODO: exclude other cases first
v1 = edges[0].Vertexes[-1].Point.sub(edges[0].Vertexes[0].Point)
v2 = edges[1].Vertexes[0].Point.sub(edges[0].Vertexes[0].Point)
v3 = v1.cross(v2)
v1.normalize()
v2.normalize()
v3.normalize()
print v1,v2,v3
self.u = v1
self.v = v2
self.axis = v3
def alignToFace(self, shape, offset=0):
# Set face to the unique selected face, if found
if shape.ShapeType == 'Face':