
git-subtree-dir: CadQuery/Libs/cadquery-lib git-subtree-mainline:cbe50efeab
git-subtree-split:146ecd589b
126 lines
5.1 KiB
Python
126 lines
5.1 KiB
Python
"""
|
|
Tests basic workplane functionality
|
|
"""
|
|
#core modules
|
|
|
|
#my modules
|
|
from cadquery import *
|
|
from tests import BaseTest,toTuple
|
|
|
|
xAxis_ = Vector(1, 0, 0)
|
|
yAxis_ = Vector(0, 1, 0)
|
|
zAxis_ = Vector(0, 0, 1)
|
|
xInvAxis_ = Vector(-1, 0, 0)
|
|
yInvAxis_ = Vector(0, -1, 0)
|
|
zInvAxis_ = Vector(0, 0, -1)
|
|
|
|
class TestWorkplanes(BaseTest):
|
|
|
|
def testYZPlaneOrigins(self):
|
|
#xy plane-- with origin at x=0.25
|
|
base = Vector(0.25,0,0)
|
|
p = Plane(base, Vector(0,1,0), Vector(1,0,0))
|
|
|
|
#origin is always (0,0,0) in local coordinates
|
|
self.assertTupleAlmostEquals((0,0,0), p.toLocalCoords(p.origin).toTuple() ,2 )
|
|
|
|
#(0,0,0) is always the original base in global coordinates
|
|
self.assertTupleAlmostEquals(base.toTuple(), p.toWorldCoords((0,0)).toTuple() ,2 )
|
|
|
|
def testXYPlaneOrigins(self):
|
|
base = Vector(0,0,0.25)
|
|
p = Plane(base, Vector(1,0,0), Vector(0,0,1))
|
|
|
|
#origin is always (0,0,0) in local coordinates
|
|
self.assertTupleAlmostEquals((0,0,0), p.toLocalCoords(p.origin).toTuple() ,2 )
|
|
|
|
#(0,0,0) is always the original base in global coordinates
|
|
self.assertTupleAlmostEquals(toTuple(base), p.toWorldCoords((0,0)).toTuple() ,2 )
|
|
|
|
def testXZPlaneOrigins(self):
|
|
base = Vector(0,0.25,0)
|
|
p = Plane(base, Vector(0,0,1), Vector(0,1,0))
|
|
|
|
#(0,0,0) is always the original base in global coordinates
|
|
self.assertTupleAlmostEquals(toTuple(base), p.toWorldCoords((0,0)).toTuple() ,2 )
|
|
|
|
#origin is always (0,0,0) in local coordinates
|
|
self.assertTupleAlmostEquals((0,0,0), p.toLocalCoords(p.origin).toTuple() ,2 )
|
|
|
|
def testPlaneBasics(self):
|
|
p = Plane.XY()
|
|
#local to world
|
|
self.assertTupleAlmostEquals((1.0,1.0,0),p.toWorldCoords((1,1)).toTuple(),2 )
|
|
self.assertTupleAlmostEquals((-1.0,-1.0,0), p.toWorldCoords((-1,-1)).toTuple(),2 )
|
|
|
|
#world to local
|
|
self.assertTupleAlmostEquals((-1.0,-1.0), p.toLocalCoords(Vector(-1,-1,0)).toTuple() ,2 )
|
|
self.assertTupleAlmostEquals((1.0,1.0), p.toLocalCoords(Vector(1,1,0)).toTuple() ,2 )
|
|
|
|
p = Plane.YZ()
|
|
self.assertTupleAlmostEquals((0,1.0,1.0),p.toWorldCoords((1,1)).toTuple() ,2 )
|
|
|
|
#world to local
|
|
self.assertTupleAlmostEquals((1.0,1.0), p.toLocalCoords(Vector(0,1,1)).toTuple() ,2 )
|
|
|
|
p = Plane.XZ()
|
|
r = p.toWorldCoords((1,1)).toTuple()
|
|
self.assertTupleAlmostEquals((1.0,0.0,1.0),r ,2 )
|
|
|
|
#world to local
|
|
self.assertTupleAlmostEquals((1.0,1.0), p.toLocalCoords(Vector(1,0,1)).toTuple() ,2 )
|
|
|
|
def testOffsetPlanes(self):
|
|
"Tests that a plane offset from the origin works ok too"
|
|
p = Plane.XY(origin=(10.0,10.0,0))
|
|
|
|
|
|
self.assertTupleAlmostEquals((11.0,11.0,0.0),p.toWorldCoords((1.0,1.0)).toTuple(),2 )
|
|
self.assertTupleAlmostEquals((2.0,2.0), p.toLocalCoords(Vector(12.0,12.0,0)).toTuple() ,2 )
|
|
|
|
#TODO test these offsets in the other dimensions too
|
|
p = Plane.YZ(origin=(0,2,2))
|
|
self.assertTupleAlmostEquals((0.0,5.0,5.0), p.toWorldCoords((3.0,3.0)).toTuple() ,2 )
|
|
self.assertTupleAlmostEquals((10,10.0,0.0), p.toLocalCoords(Vector(0.0,12.0,12.0)).toTuple() ,2 )
|
|
|
|
p = Plane.XZ(origin=(2,0,2))
|
|
r = p.toWorldCoords((1.0,1.0)).toTuple()
|
|
self.assertTupleAlmostEquals((3.0,0.0,3.0),r ,2 )
|
|
self.assertTupleAlmostEquals((10.0,10.0), p.toLocalCoords(Vector(12.0,0.0,12.0)).toTuple() ,2 )
|
|
|
|
def testXYPlaneBasics(self):
|
|
p = Plane.named('XY')
|
|
self.assertTupleAlmostEquals(p.zDir.toTuple(), zAxis_.toTuple(), 4)
|
|
self.assertTupleAlmostEquals(p.xDir.toTuple(), xAxis_.toTuple(), 4)
|
|
self.assertTupleAlmostEquals(p.yDir.toTuple(), yAxis_.toTuple(), 4)
|
|
|
|
def testYZPlaneBasics(self):
|
|
p = Plane.named('YZ')
|
|
self.assertTupleAlmostEquals(p.zDir.toTuple(), xAxis_.toTuple(), 4)
|
|
self.assertTupleAlmostEquals(p.xDir.toTuple(), yAxis_.toTuple(), 4)
|
|
self.assertTupleAlmostEquals(p.yDir.toTuple(), zAxis_.toTuple(), 4)
|
|
|
|
def testZXPlaneBasics(self):
|
|
p = Plane.named('ZX')
|
|
self.assertTupleAlmostEquals(p.zDir.toTuple(), yAxis_.toTuple(), 4)
|
|
self.assertTupleAlmostEquals(p.xDir.toTuple(), zAxis_.toTuple(), 4)
|
|
self.assertTupleAlmostEquals(p.yDir.toTuple(), xAxis_.toTuple(), 4)
|
|
|
|
def testXZPlaneBasics(self):
|
|
p = Plane.named('XZ')
|
|
self.assertTupleAlmostEquals(p.zDir.toTuple(), yInvAxis_.toTuple(), 4)
|
|
self.assertTupleAlmostEquals(p.xDir.toTuple(), xAxis_.toTuple(), 4)
|
|
self.assertTupleAlmostEquals(p.yDir.toTuple(), zAxis_.toTuple(), 4)
|
|
|
|
def testYXPlaneBasics(self):
|
|
p = Plane.named('YX')
|
|
self.assertTupleAlmostEquals(p.zDir.toTuple(), zInvAxis_.toTuple(), 4)
|
|
self.assertTupleAlmostEquals(p.xDir.toTuple(), yAxis_.toTuple(), 4)
|
|
self.assertTupleAlmostEquals(p.yDir.toTuple(), xAxis_.toTuple(), 4)
|
|
|
|
def testZYPlaneBasics(self):
|
|
p = Plane.named('ZY')
|
|
self.assertTupleAlmostEquals(p.zDir.toTuple(), xInvAxis_.toTuple(), 4)
|
|
self.assertTupleAlmostEquals(p.xDir.toTuple(), zAxis_.toTuple(), 4)
|
|
self.assertTupleAlmostEquals(p.yDir.toTuple(), yAxis_.toTuple(), 4)
|