Конструктор G-кода и геометрические функции при генерации файла

В процессе разработки программы, и появления новых пользователей, и идей, возникла необходимость при генерации теста с G-кодом, дополнительно использовать различные геометрические функции, которые добавил в версии 3.3.0.33 (данная версия появится в ближайшее время).

Добавлены следующие функции:

  • CreatePoint(X,Y) – создание точки с указанными координатами
  • getAngleFrom2Points(point1, point2) – вычисление угла относительно оси Х, и прямой образованной 2-мя точками
  • GetAngleFrom3Points(point1, point2, point3) – вычисление угла в точке №2
  • GetDistanceBetweenPoints(point1,point2 ) – вычисление дистанции между 2-мя точками
  • GetPointInCircle(centerPoint,radius,angle) – получение точки на окружности

Функция CreatePoint(X,Y)

Позволяет создать новую точку, которую можно в дальнейшем использовать в коде. Создание и её использование, будет приведено ниже в данном описании.

Функция getAngleFrom2Points(point1, point2)

Данная функция получает угол образованный отрезком из 2-х точек и осью X, причем угол увеличивается, в положительную сторону, если направление против часовой стрелки, и в минус, если по часовой стрелке.

Есть следующая особенность, которая заключается в том что после 180 градусов дальше будет -179 градусов, и собственно после -179 далее будет 180 градусов. Это связано с тем что без 3-й точки нет возможности понять что угол может быть более 180 градусов.

Пример позволяющий использовать функцию:

[Enlighter]
FORMAT:SetFormat(“#0.00″,”.”)
FILE: Create()

— начало теста

for indx = 0, DATA.Items.Count – 1, 1 do

primitiv = DATA.Items[indx]

lastPoint = primitiv.Items[0];

FILE:AddLine(“X”..FORMAT:Fd(lastPoint.X).. ” Y”..FORMAT:Fd(lastPoint.Y))

for indxP = 1, primitiv.Items.Count – 1, 1 do
point = primitiv.Items[indxP]

angle = FORMAT:Fd(GEOMETRY:getAngleFrom2Points(lastPoint,point))
FILE:AddLine(“X”..FORMAT:Fd(point.X).. ” Y”..FORMAT:Fd(point.Y) .. ” –(угол: ” .. angle .. “)”)

lastPoint = point
end

FILE: AddLine(” “)
end

— окончание теста
FILE: Save()
[/Enlighter]

В строке №18 пример вычисления угла, и ниже скриншот результата:

Функция GetAngleFrom3Points(point1, point2, point3)

Вычисляет угол в точке №2, образованный 2-мя отрезками:

В коде используется так:

[Enlighter]

angle = FORMAT:Fd(GEOMETRY:getAngleFrom2Points(point1,point2,point3))

[/Enlighter]

Функция GetDistanceBetweenPoints(point1,point2 )

Данная функция вычисляет расстояние между указанными точками, в коде это используется так:

[Enlighter]

FORMAT:SetFormat(“#0.00″,”.”)
FILE: Create()

FILE: AddLine(“// начало теста “)

point1 = GEOMETRY:CreatePoint(0,0)
point2 = GEOMETRY:CreatePoint(10,10.5)

Distance = FORMAT:Fd(GEOMETRY:GetDistanceBetweenPoints(point1,point2))

FILE:AddLine(“расстояние между точками = “..FORMAT:Fd(Distance))

FILE: AddLine(“// окончание теста”)
FILE: Save()

[/Enlighter]

Даёт такой результат:

// начало теста 
 расстояние между точками = 14.50
 // окончание теста

Функция GetPointInCircle(centerPoint,radius,angle)

Применяется если нужно получить точку на окружности, например такой код:

[Enlighter]
FORMAT:SetFormat(“#0.00″,”.”)
FILE: Create()

FILE: AddLine(“// начало теста “)

CenterPoint = GEOMETRY:CreatePoint(0,0)

point1 = GEOMETRY:GetPointInCircle(CenterPoint,10,0)
point2 = GEOMETRY:GetPointInCircle(CenterPoint,10,45)

FILE:AddLine(“точка 1 (“..FORMAT:Fd(point1.X) ..”,”..FORMAT:Fd(point1.Y)..”)”)
FILE:AddLine(“точка 2 (“..FORMAT:Fd(point2.X) ..”,”..FORMAT:Fd(point2.Y)..”)”)

FILE: AddLine(“// окончание теста”)
FILE: Save()
[/Enlighter]

Что даёт такой результат:

// начало теста 
 точка 1 (10.00,0.00)
 точка 2 (7.07,7.07)
 // окончание теста

Создание двухсторонней платы

Понемногу подошел к моменту, когда уже можно показать практически полный цикл создания печатной платы, на ЧПУ станке, с применением лазера для засветки фоторезиста.

Но по прежнему кроме лазера, применяется шпиндель для сверления отверстий, и вырезания контура платы.

И внутри данной записи я разместил видео всего процесса создания платы…

Читать дальше

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

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

Читать дальше

Крошка токарник

Недавно удалось заполучить небольшой токарный станок, который является КЛОНОМ китайского станка “JET-BD 3”, имеющий название “BABY LATHE C0”.

Конечно размер миниатюрности у станка зашкаливал, от того что я раньше видел, он реально такой крошечный, но прикольный.

Выполнять обработку мягких металлов пока не способен, т.к. имеются большие люфты, как в продольной, так и поперечной подаче. Но постепенно я думаю доведу его до ума.

Читать дальше