def ocl_sample(operation, chunks): oclSTL = get_oclSTL(operation) op_cutter_type = operation.cutter_type op_cutter_diameter = operation.cutter_diameter op_minz = operation.minz if op_cutter_type == "VCARVE": op_cutter_tip_angle = operation['cutter_tip_angle'] cutter = None cutter_length = 5 if op_cutter_type == 'END': cutter = ocl.CylCutter( (op_cutter_diameter + operation.skin * 2) * 1000, cutter_length) elif op_cutter_type == 'BALLNOSE': cutter = ocl.BallCutter( (op_cutter_diameter + operation.skin * 2) * 1000, cutter_length) elif op_cutter_type == 'VCARVE': cutter = ocl.ConeCutter( (op_cutter_diameter + operation.skin * 2) * 1000, op_cutter_tip_angle, cutter_length) elif op_cutter_type == 'BALLCONE': angle = math.degrees( math.atan((op_cutter_diameter / 2) - operation.ball_radius) / (operation.ball_cone_flute - operation.ball_radius)) print("BallCone angle:" + str(angle)) cutter = ocl.BallConeCutter( (operation.ball_radius + operation.skin) * 2000, (op_cutter_diameter + operation.skin * 2) * 1000, math.radians(angle)) elif op_cutter_type == 'BULLNOSE': cutter = ocl.BullCutter( (op_cutter_diameter + operation.skin * 2) * 1000, operaton.bull_corner_radius * 1000, cutter_length) else: print("Cutter unsupported: {0}\n".format(op_cutter_type)) quit() bdc = ocl.BatchDropCutter() bdc.setSTL(oclSTL) bdc.setCutter(cutter) for chunk in chunks: for coord in chunk.points: bdc.appendPoint( ocl.CLPoint(coord[0] * 1000, coord[1] * 1000, op_minz * 1000)) bdc.run() cl_points = bdc.getCLPoints() return cl_points
def ocl_sample(operation, chunks): oclSTL = get_oclSTL(operation) op_cutter_type = operation.cutter_type op_cutter_diameter = operation.cutter_diameter op_minz = operation.minz op_cutter_tip_angle = math.radians(operation.cutter_tip_angle)/2 if op_cutter_type == "VCARVE": cutter_length = (op_cutter_diameter/math.tan(op_cutter_tip_angle))/2 else: cutter_length = 10 cutter = None if op_cutter_type == 'END': cutter = ocl.CylCutter((op_cutter_diameter + operation.skin * 2) * 1000, cutter_length) elif op_cutter_type == 'BALLNOSE': cutter = ocl.BallCutter((op_cutter_diameter + operation.skin * 2) * 1000, cutter_length) elif op_cutter_type == 'VCARVE': cutter = ocl.ConeCutter((op_cutter_diameter + operation.skin * 2) * 1000, op_cutter_tip_angle, cutter_length) elif op_cutter_type =='CYLCONE': cutter = ocl.CylConeCutter((operation.cylcone_diameter/2+operation.skin)*2000,(op_cutter_diameter + operation.skin * 2) * 1000, op_cutter_tip_angle) elif op_cutter_type == 'BALLCONE': cutter = ocl.BallConeCutter((operation.ball_radius + operation.skin) * 2000, (op_cutter_diameter + operation.skin * 2) * 1000, op_cutter_tip_angle) elif op_cutter_type =='BULLNOSE': cutter = ocl.BullCutter((op_cutter_diameter + operation.skin * 2) * 1000,operation.bull_corner_radius*1000, cutter_length) else: print("Cutter unsupported: {0}\n".format(op_cutter_type)) quit() bdc = ocl.BatchDropCutter() bdc.setSTL(oclSTL) bdc.setCutter(cutter) for chunk in chunks: for coord in chunk.points: bdc.appendPoint(ocl.CLPoint(coord[0] * 1000, coord[1] * 1000, op_minz * 1000)) bdc.run() cl_points = bdc.getCLPoints() return cl_points
myscreen.addActor(camvtk.Line(p1=(a.x, a.y, a.z), p2=(b.x, b.y, b.z))) t = ocl.Triangle(b, c, a) angle = math.pi / 5 diameter = 0.6 length = 25 cutter = ocl.BallCutter(diameter, length) #cutter = ocl.CylCutter(diameter, length) #cutter = ocl.BullCutter(diameter, diameter/4, length) #cutter = ocl.ConeCutter(diameter, angle, length) #cutter = cutter.offsetCutter( 0.1 ) #cutter = ocl.CompCylCutter(diameter, length) #cutter = ocl.CompBallCutter(diameter, length) #cutter = ocl.CylConeCutter(diameter/float(3), diameter, math.pi/float(9)) cutter = ocl.BallConeCutter(diameter / float(3), diameter, math.pi / float(5)) print("cutter= ", cutter) print("length=", cutter.getLength()) print("fiber...") fiberrange = 5 Nmax = 100 yvals = [ float(n - float(Nmax) / 2) / Nmax * fiberrange for n in range(0, Nmax + 1) ] xvals = [ float(n - float(Nmax) / 2) / Nmax * fiberrange for n in range(0, Nmax + 1) ] """