Pip-Boy inspired phone holder built around the PINE64 PinePhone
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
1.4 KiB

  1. include <export.scad>
  2. // dependency: https://github.com/revarbat/BOSL
  3. include <BOSL/constants.scad>
  4. use <BOSL/transforms.scad>
  5. use <BOSL/shapes.scad>
  6. use <BOSL/masks.scad>
  7. use <BOSL/sliders.scad>
  8. use <specs_platform.scad>
  9. use <specs_strap.scad>
  10. use <strap_common.scad>
  11. use <platform_common.scad>
  12. // DEBUG:
  13. //validation = 1;
  14. //xray = 1;
  15. // PROP >>
  16. module prop_arm() {
  17. $fn=$preview ? 10 : 30;
  18. arm_size=[200, 55, 40];
  19. color("gray")
  20. down(arm_size.z/2) {
  21. cuboid(arm_size, fillet=16, edges=EDGES_X_ALL);
  22. left(arm_size.x*0.6) scale([1, 1, 0.8]) yrot(90) cylinder(d1=arm_size.y*1.4, d2=arm_size.y*0.95, h=arm_size.x/2);
  23. }
  24. }
  25. module model_prop_arm() {
  26. if (is_not_export()) down(3) prop_arm();
  27. }
  28. // <<<
  29. // Blocks:
  30. module platform(base) {
  31. size=get_platform_size();
  32. top=!base;
  33. up(top?size.z:0)
  34. color(top?"Olive":"YellowGreen")
  35. cube(size, center=true);
  36. module strap_connectors() {
  37. down(size.z/2) foreach_platform_strap_connector() {
  38. link_connector_pin();
  39. }
  40. }
  41. if (base) {
  42. strap_connectors();
  43. }
  44. }
  45. // Models:
  46. module model_platform_harness() {
  47. platform(base=false);
  48. }
  49. module model_platform_strap() {
  50. platform(base=true);
  51. }
  52. // Export:
  53. if (is_model(MODEL_PLATFORM_HARNESS)) model_platform_harness();
  54. if (is_model(MODEL_PLATFORM_STRAP)) model_platform_strap();
  55. if (is_model(MODEL_DEMO)) model_prop_arm();