Draft: small fixes
This commit is contained in:
parent
14562ba540
commit
4e9412c0ae
|
@ -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
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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':
|
||||
|
|
Loading…
Reference in New Issue
Block a user