Генерация простого G-кода на скорую руку.

Иногда бывает нужно получить простую траекторию G-кода, но при этом не хочется сильно заморачиваться, с запуском CAD программы, и для таких случаев я нашел вот такой способ: начиная с windows7 в операционной системе появился инструмент под названием PowerShell, эта штука позволяет выполнять различные скрипты, благодаря чему получается простой способ генерации.

Первое с чего нужно начать, это проверить установлен ли модуль powershell, для этого нужно зайти в панель управления компьютером, и найти значек «Программы и компоненты», запустив его появиться окно, где нужно нажать на пункт «Включение/отключение компонентов windows», и удостовериться что установлен флажок:

Когда модуль установлен, то будет доступно выполнение скриптов, файл который будет выполняться имеет расширение «ps1»

Вот пример содержимого файла, который генерирует одну окружность:

# -------------------------------
# Генерация G - кода круга
# -------------------------------

$p1 = "G1 F50 X0 Y0 Z0" + [char]13 + [char]10 # точка старта

$radius = 10;

for ($zz = 0; $zz -lt 361; $zz+=10)
{ 
   $pointX = $radius * [Math]::Cos($zz * ([Math]::PI / 180));
   $pointY = $radius * [Math]::Sin($zz * ([Math]::PI / 180));

   $p1 += "X" + [math]::round($pointX,4) + " Y " + [math]::round($pointY,4) + [char]13 + [char]10

}

# вывод в окно
$p1

# Сохранение в файл
$p1 > z:\out.cnc

Pause

Вот и результат:

А мне требовалось нанести крестики на поверхность стола, вот такой скрипт:

# -------------------------------
# Генерация G - кода "сетка из крестиков"
# -------------------------------

# точка старта, с выкл. лазером, и мощностью 50%
$p1 = "G1 F500 X0 Y0 Z0 m3 s0" + [char]13 + [char]10

# область размещения по оси X
$startValueX = 10;
$stopValueX = 190;
$stepValueX = 10;

# область размещения по оси Y
$startValueY = 10;
$stopValueY = 190;
$stepValueY = 10;

# размер крестика
$sizeCrossX = 5;
$sizeCrossY = 5;

#доп. переменные
$dirValueX = 1;
$dirValueY = 1;

# формирование G-кода

for ($vY = $startValueY; $vY -lt $stopValueY; $vY+=$stepValueY)
{
   for ($vX = $startValueX; $vX -lt $stopValueX; $vX+=$stepValueX)
   {
      if ($dirValueY -eq 1)
      {
         $p1 += "G1 F500 X" + ($vX - ($sizeCrossX/2)) + " Y" + $vY + " S0" + [char]13 + [char]10;
         $p1 += "G1 F500 X" + ($vX + ($sizeCrossX/2)) + " S500" + [char]13 + [char]10;
      }
      else
      {
         $p1 += "G1 F500 X" + ($stopValueX - ($vX - ($sizeCrossX/2))) + " Y" + $vY + " S0" + [char]13 + [char]10;
         $p1 += "G1 F500 X" + ($stopValueX - ($vX + ($sizeCrossX/2))) + " S500" + [char]13 + [char]10;
      }
   }
   $p1 += "S0" + [char]13 + [char]10;

   if ($dirValueY -eq 1)
   {
      $dirValueY = 0;
   }
   else
   {
      $dirValueY = 1;
   }
}

for ($vX = $startValueX; $vX -lt $stopValueX; $vX+=$stepValueX)
{
   for ($vY = $startValueY; $vY -lt $stopValueY; $vY+=$stepValueY)
   {
      if ($dirValueX -eq 1)
      {
         $p1 += "G1 F500 X" + $vX + " Y" + ($vY - ($sizeCrossY/2)) + " S0" + [char]13 + [char]10;
         $p1 += "G1 F500 Y" + ($vY + ($sizeCrossY/2)) + " S500" + [char]13 + [char]10;
      }
      else
      {
         $p1 += "G1 F500 X" + $vX + " Y" + ($stopValueY - ($vY - ($sizeCrossY/2))) + " S0" + [char]13 + [char]10;
         $p1 += "G1 F500 Y" + ($stopValueY - ($vY + ($sizeCrossY/2))) + " S500" + [char]13 + [char]10;
      }
   }
   $p1 += "S0" + [char]13 + [char]10;

   if ($dirValueX -eq 1)
   {
      $dirValueX = 0;
   }
   else
   {
      $dirValueX = 1;
   }
}

$p1 += "M5" + [char]13 + [char]10;

#$p1 #вывод текста в консоль

# Сохранение в файл
$p1 > z:\out.cnc

Pause

Дал следующий результат:

И пример видео работы станка:

Вот пример выравнивания стола, путем фрезеровки стола:

# -------------------------------
# Генерация G - кода "зигзаг"
# -------------------------------

# точка старта
$p1 = "G1 F500 X0 Y0 Z0 m3 s1000" + [char]13 + [char]10

# область размещения по оси X
$startValueX = 0;
$stopValueX = 200;

# область размещения по оси Y
$startValueY = 0;
$stopValueY = 200;
$stepValueY = 10;

#доп. переменные
$dirValueX = 1;

# формирование G-кода
for ($vY = $startValueY; $vY -lt $stopValueY; $vY+=$stepValueY)
{
   if ($dirValueX -eq 1)
   {
      $p1 += "X" + $startValueX + " Y" + $vY + [char]13 + [char]10;
      $p1 += "X" + $stopValueX + [char]13 + [char]10;
   }
   else
   {
      $p1 += "X" + $stopValueX + " Y" + $vY + [char]13 + [char]10;
      $p1 += "X" + $startValueX + [char]13 + [char]10;
   }

   if ($dirValueX -eq 1)
   {
      $dirValueX = 0;
   }
   else
   {
      $dirValueX = 1;
   }
}

$p1 += "M5" + [char]13 + [char]10;

#$p1 #вывод текста в консоль

# Сохранение в файл
$p1 > z:\out.cnc

И вот результат:

!!! Если при попытке выполнить скрипт, появляется ошибка о невозможности запуска, в связи с политикой ОС, то предварительно выполненная команда «Set-ExecutionPolicy Restricted» включит возможность запускать скрипты. 

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

code

Protected with IP Blacklist CloudIP Blacklist Cloud