feeder.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import cadquery as cq
  2. from cadquery.occ_impl.exporters import ExportTypes
  3. from ocp_vscode import show, show_object
  4. twist_dist = 150
  5. shift = 50
  6. down_shift = 10
  7. height = 25
  8. width = 70
  9. thickness = 1
  10. adapter_legth = 25
  11. stopper_cut_length=20
  12. eps=0.1
  13. # Sweep a circle from diameter 2.0 to diameter 1.0 to diameter 2.0 along X axis length 10.0 + 10.0
  14. sweep = (
  15. cq.Workplane("ZX")
  16. .rect(height,width)
  17. .workplane(offset=twist_dist/3)
  18. .center(-down_shift/3, shift/3)
  19. .transformed(rotate=(-30, 0, 0))
  20. .rect(height,width)
  21. .workplane(offset=twist_dist/3)
  22. .center(-down_shift/3, shift/3)
  23. .transformed(rotate=(-30, 0, 0))
  24. .rect(height,width)
  25. .workplane(offset=twist_dist/3)
  26. .center(-down_shift/3, shift/3)
  27. .transformed(rotate=(-30, 0, 0))
  28. .rect(height,width)
  29. .loft()
  30. ).faces("<Y or >X").shell(thickness)
  31. extended = (
  32. sweep.faces(">X")
  33. .extrude(adapter_legth,combine=False)
  34. )
  35. cutextendedtop = extended.faces(">Z").workplane(centerOption="CenterOfBoundBox").rect(adapter_legth,width).cutBlind(until=-thickness-eps)
  36. stopper_wall=cutextendedtop.faces(">X").workplane(centerOption="CenterOfBoundBox").box(width+2*thickness,adapter_legth+2*thickness,thickness,combine=False).edges("|X").fillet(thickness)
  37. stopper_wall=cutextendedtop.union(stopper_wall)
  38. cutout=stopper_wall.faces(">X").workplane(centerOption="CenterOfBoundBox").rect(width-stopper_cut_length,adapter_legth+2*thickness).cutBlind(-thickness-eps)
  39. extended_cut=cutout.faces(">Y").workplane(centerOption="CenterOfBoundBox").circle(10).cutBlind(until=-80)
  40. # Translate the resulting solids so that they do not overlap and display them left to right
  41. show_object(extended_cut)
  42. with open(r"cadquery_files/cell_measure_robot/feeder.step", "w") as fp:
  43. cq.exporters.exportShape(extended, ExportTypes.STEP, fp)