#!/usr/bin/python # -*- coding: utf-8 -*- """ $Id$ Copyright 2008 Lode Leroy This file is part of PyCAM. PyCAM is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. PyCAM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with PyCAM. If not, see <http://www.gnu.org/licenses/>. """ import sys sys.path.insert(0,'.') from pycam.Geometry import * from pycam.Cutters.CylindricalCutter import * from pycam.Gui.Visualization import ShowTestScene if __name__ == "__main__": dir = Point(0,0,-1) #c = CylindricalCutter(1, Point(0,0,6)) c = CylindricalCutter(1, Point(2,0,6)) #c = CylindricalCutter(1, Point(-2.2,0.2,6)) #c = CylindricalCutter(1, Point(-1.7,-0.2,6)) print "c=", c #t = Triangle(Point(-3,0,2), Point(2,2,3), Point(2,-2,4)) #t = Triangle(Point(-2,0,2), Point(2,-1,4), Point(2,1,3)) #t = Triangle(Point(2,0,4), Point(2,-1,2), Point(2,1,2)) #t = Triangle(Point(2,0,4), Point(2,1,2), Point(2,-1,2)) #t = Triangle(Point(-3,0,4), Point(2,2,2), Point(2,-2,2)) t = Triangle(Point(-3,0,2.5), Point(3,0,2.5), Point(0,1,1.5)) print "t=", t if False: print "plane:" (cl_p,ccp_p,cp_p,d_p) = c.intersect_circle_plane(dir,t) print "ccp=", ccp_p print "cp=", cp_p print "cl=", cl_p print "d=", d_p print "triangle:" (cl_t,d_t) = c.intersect_circle_triangle(dir,t) print "cl=", cl_t print "d=", d_t print "point:" (cl_v,ccp_v,cp_v,d_v) = c.intersect_circle_point(dir,t.p1) print "ccp=", ccp_v print "cp=", cp_v print "cl=", cl_v print "d=", d_v l = Line(t.p2,t.p3) print "line:", l (cl_l,ccp_l,cp_l,d_l) = c.intersect_circle_line(dir,l) print "ccp=", ccp_l print "cp=", cp_l print "cl=", cl_l print "d=", d_l print "edge:", l (cl_e,d_e) = c.intersect_circle_edge(dir,l) print "cl=", cl_e print "d=", d_e print "piece:" (cl,d) = c.intersect(dir,t) print "cl=", cl if False: samples = 50 x0 = -5.0 x1 = +5.0 y0 = -5.0 y1 = +5.0 z = 10 dir = Point(0,0,-1) pathlist = [] for i in range(0,samples): x = x0 + i * ((x1-x0) / samples) p = Path() for j in range(0,samples): y = y0 + j * ((y1-y0) / samples) c.moveto(Point(x,y,z)) cl = c.drop(t) if cl: p.append(cl) else: p.append(Point(x,y,0)) pathlist.append(p) c.moveto(Point(x0,y0,z)) ShowTestScene(t, c, pathlist) if True: samples = 50 layers = 10 x0 = -5.0 x1 = +5.0 y0 = -5.0 y1 = +5.0 z0 = 0 z1 = 4 dir = Point(1,0,0) pathlist = [] for i in range(0, layers): z = z1-i*float(z1-z0)/layers for j in range(0,samples): y = y0 + j * ((y1-y0) / samples) p = Point(x0,y,z) c.moveto(p) (cl,l) = c.intersect(dir,t) if cl: p = Path() #p.append(c.center) #p.append(ccp) #p.append(cp) p.append(cl) p.append(cl.sub(dir.mul(l))) pathlist.append(p) c.moveto(Point(x0,y0,z1)) ShowTestScene(t, c, pathlist)