calibration_focale.sh 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. #!/bin/bash
  2. #fonction appelée en cas de paramètres non valide ou de l'option -h
  3. usage()
  4. {
  5. # "$(basename "${0}") pour gérer les espaces
  6. echo "$(basename "${0}") description"
  7. echo ''
  8. echo "Ce script permet de générer un fichier gcode"
  9. echo "afin de trouver la bonne distance focale du laser"
  10. echo "ce script n'est utile que sur les imprimantes 3D puisqu'on joue sur l'axe Z"
  11. echo ""
  12. echo "Le fichier gcode en sortie utilisera des coordonées relatives."
  13. echo ""
  14. echo "La procédure est la suivante :"
  15. echo "-connaitre grossièrement la distance focale"
  16. echo "-placer la tête de l'imprimante 3D en buté sur l'objet à graver"
  17. echo "-exécuter le fichier gcode"
  18. echo ""
  19. echo "Détail des options"
  20. echo -e "-m\thauteur relative minimale en mm"
  21. echo -e "-M\thauteur relative maximale en mm"
  22. echo -e "-p\tpas entre deux hauteurs en mm"
  23. }
  24. readonly VERSION='1.0'
  25. #affiche la version du script
  26. version()
  27. {
  28. echo "$(basename "${0}") : ${VERSION}"
  29. echo ''
  30. }
  31. verification()
  32. {
  33. if [ -z $1 ]
  34. then
  35. echo "la variable $2 n'a pas été précisée, la valeur par défaut est $3"
  36. VALEUR=$3
  37. else
  38. re='^[0-9]+([.][0-9]+)?$'
  39. if ! [[ $1 =~ $re ]]
  40. then
  41. echo "l'argument $2 n'est pas un nombre"
  42. usage
  43. exit 25
  44. else
  45. VALEUR=$1
  46. fi
  47. fi
  48. }
  49. #boucle pour la gestion des options
  50. #s: signifie qu'un paramètre est attendu
  51. #hV signifie que ces options existent mais ne prennent pas de paramètre
  52. while getopts "m:M:p:hV" OPT
  53. do
  54. case "$OPT" in
  55. h)
  56. usage
  57. exit 0
  58. ;;
  59. V)
  60. version
  61. exit 0
  62. ;;
  63. m)
  64. H_MIN=${OPTARG}
  65. ;;
  66. M)
  67. H_MAX=${OPTARG}
  68. ;;
  69. p)
  70. PAS=${OPTARG}
  71. ;;
  72. *)
  73. #ce point est atteint lorsqu'une option inexistante est demandée
  74. echo "parametres non valide"
  75. usage
  76. exit 1
  77. ;;
  78. esac
  79. done
  80. verification "$H_MIN" "hauteur minimale" 2
  81. H_MIN=$VALEUR
  82. echo -e "hauteur minimale=$H_MIN"
  83. verification "$H_MAX" "hauteur maximale" 7
  84. H_MAX=$VALEUR
  85. echo -e "hauteur maximale=$H_MAX"
  86. verification "$PAS" "pas" 0.1
  87. PAS=$VALEUR
  88. echo -e "pas=$PAS"
  89. echo "\$fn = 30;valeur=\"0\";translate([0, 1, 0]){text(valeur, size=3);}" > temp.scad
  90. echo -e "G91\nG21\nG0 Z $H_MIN" > sortie.gcode
  91. echo -e "G1 F2000\n" >> sortie.gcode
  92. for i in `seq $H_MIN $PAS $H_MAX`
  93. do
  94. openscad -o temp.dxf -D 'valeur="'$i'"' temp.scad
  95. dxf2gcode temp.dxf -q -e "${i}.gcode"
  96. #numérotation de la ligne
  97. cat $i.gcode >> sortie.gcode
  98. #trçage d'une ligne
  99. echo -e "\nM400\nM106 P1 S255\nG1 X 20" >> sortie.gcode
  100. #retour au point de départ
  101. echo -e "M400\nM106 P1 S0\nG1 X -20" >> sortie.gcode
  102. #déplacement pour la nouvelle hauteur
  103. echo -e ";changement de hauteur\nG1 X 0 Y 5 Z $PAS\n" >> sortie.gcode
  104. rm $i.gcode
  105. done
  106. rm temp.scad
  107. rm temp.dxf
  108. exit 0