Страница 3 из 7
Re: Идея небольшой утилитки
Добавлено: 10 янв 2014, 11:25
aaleksander
Nick писал(а):Я смотрю, много тестовых коробочек наделал

Это следы дебагга
Сначало пытался с наскоку все эти припуски угадать. Потом плюнул, переписал все функции, чтоб на вход диаметр фрезы поступал и за пол-часа "написАл" правильные коробочки.
Сейчас занимаюсь мета-траекториями, это еще интереснее будет. Для ленивых ЧПУшников.
Re: Идея небольшой утилитки
Добавлено: 13 янв 2014, 17:59
aaleksander
Добавил мета-траектории.
Что это такое?
Представьте, что есть доска, в нее вбиты гвозди (не до конца, шляпки торчат). Натягиваем на все это дело резинку, получаем замкнутый контур.
Гвозди могут быть разного диаметра.
Вот такой код, превращается в такую картинку (у метатраекторий есть отдельный просмотрищик)
Код: Выделить всё
# -*- coding: utf-8 -*-
from py2gcode import *
v = Meta()
#добавляем вершины
v.point(60, 10, 10)
v.point(110, 100, 10)
v.point(60, 190, 10)
v.point(40, 100, 30)
v.show(3) #предварительный просмотр траектории
def f():
G0(0, 0, 5)
G0(Z = 5)
z = -3
while z > -10:
v.to_gcode(z) #экспортируем мета-траекторию в GCode на глубине z
z -= 2
preview(f)
А вот так выглядит сама траектория (я сделал погружение по Z, чтобы было понятно, где-какие оси):
Если мы вдруг захотим сделать впадинку, то для этого нужно указать отрицательный радиус.
Изменям в программе список вершин:
Код: Выделить всё
v.point(60, 10, 10)
v.point(80, 80, -10) #радиус отрицательный, значит "резинка" обойдет его с другой стороны
v.point(110, 100, 10)
v.point(60, 190, 10)
v.point(40, 100, 30)
И получаем такую траекторию:
Можно указывать вершины без радиуса, тогда это будет просто точка.
Вершины нужно указывать по часовой стрелке.
Вся эта прелесть доступна на
Гитхабе
Жду замечаний, идей и хотелок

Re: Идея небольшой утилитки
Добавлено: 13 янв 2014, 22:45
nkp
aaleksander писал(а):есть доска, в нее вбиты гвозди (не до конца, шляпки торчат). Натягиваем на все это дело резинку,
э-ээ... а фрез за резинку не будет задевать при обработке?
=================
подумалось - как со стороны
народа пользователя просчитать коодинаты "шляпок" ,чтоб получить задуманную траекторию...
ведь в голове есть некая форма , и допустим надо определенно скруглить углы...
а тут
ну может я просто не могу смоделировать задачу ,где подобное будет оправдано востребовано...

Re: Идея небольшой утилитки
Добавлено: 14 янв 2014, 07:43
aaleksander
Ну народ же как-то считает дуги и отрезки, которые их продолжают.
Мы с Ником обсуждали, чем я могу помочь feturesам.
Помочь я не могу по причине отсутствия линукса где-бы-то-нибыло, кроме гаража.
Но из моей либы можно взять формулы.
Например, он предложил реализовать вот такую штуку:
вот код с моей библиотекой (всего четыре гвоздя: два тонких по краям и два толстых, один с отрицательным радиусом (для просмотра содержимого нажмите на ссылку)Код: Выделить всё
# -*- coding: utf-8 -*-
from py2gcode import *
v = Meta()
v.point(30, 100, 10)
v.point(100, 100, 80)
v.point(100, 30, 10)
v.point(100, 100, -60)
#v.show(5)
def f():
G0(0, 0, 5)
G0(Z = 5)
z = -3
while z > -10:
v.to_gcode(z)
z -= 2
preview(f)
При этом, если мы хотим изменить радиусы, не надо пересчитывать абсолютно все координаты и углы: просто измени одно число в списке "гвоздей".
Еще Ник просил вот это:
Но твою мысль я понял. Нужно сделать дополнительный параметр "режим скругления". Займусь.
Re: Идея небольшой утилитки
Добавлено: 16 янв 2014, 18:04
aaleksander
Сделал скругление углов. Действительно - мега-полезная штука.
По-быстрому набросал несколько контуров (по 1-2 минуты на каждый).
На скринах пример программы и что она выдает.
P.S. подскажите, где почитать про алгоритмы выборки площади?
Думаю, это будет следующим этапом.
Re: Идея небольшой утилитки
Добавлено: 16 янв 2014, 18:09
tooshka
aaleksander писал(а):Сделал скругление углов. Действительно - мега-полезная штука.
А сопряжение линии и окружности или двух дуг?
Re: Идея небольшой утилитки
Добавлено: 16 янв 2014, 18:17
aaleksander
tooshka писал(а):aaleksander писал(а):Сделал скругление углов. Действительно - мега-полезная штука.
А сопряжение линии и окружности или двух дуг?
Напрямую пока нет, только через промежуточную точку.
Мета-траектории - это не полноценная чертилка. Просто удобный способ задать траекторию для некоторых случаев с логичным алгоритмом и ожидаемым результатом (помните: гвозди и резинка

). Для всего остального есть стандартные команды.
Но все равно, буду благодарен, если мне накидают реальных примеров из практики. Возможно, это подтолкнет меня к новым идеям.
Re: Идея небольшой утилитки
Добавлено: 16 янв 2014, 18:24
tooshka
Скорее всего в Жкоде нереализуемо вот тут с Ником обсуждали чуть.
http://cnc-club.ru/forum/viewtopic.php? ... 4&start=40
Re: Идея небольшой утилитки
Добавлено: 16 янв 2014, 19:21
aaleksander
Понял идею. Данная хотелка не укладывается в идеологию мета-траекторий. Но никто не мешает придумать какую-нибудь другую блабла-траекторию с другими алгоритмами построения. А там уже вижу задачу объединения разных траекторий и т.д.
Но для начала надо сделать сами дуги. У меня ж пока все строится из G0 и G1. Хотя я на своем станке особой разницы не заметил: пилит одинаково.
Re: Идея небольшой утилитки
Добавлено: 17 янв 2014, 10:14
Nick
aaleksander писал(а):P.S. подскажите, где почитать про алгоритмы выборки площади?
Думаю, это будет следующим этапом.
Зигзаг или спиралькой... Оффестами лучше не заморачивайся - очень сложно и без глюков не работает.
Да, еще очень востребованная фича - заглубление под углом! (и перемычки, чтобы потом деталь не улетала)
Re: Идея небольшой утилитки
Добавлено: 17 янв 2014, 10:59
aaleksander
А где почитать можно? В основном пока интересует обычная обрезка за/в/по контуру.
P.S. темку можно повыше перенести, в общий раздел ПО. Под виндой нормально работает.
Re: Идея небольшой утилитки
Добавлено: 17 янв 2014, 11:08
Nick
aaleksander писал(а):P.S. темку можно повыше перенести, в общий раздел ПО. Под виндой нормально работает.
Пока такого раздела нет... можно перенести в один из раздеов Lin/Win и оставить ссылку во втором разделе.
aaleksander писал(а):А где почитать можно? В основном пока интересует обычная обрезка за/в/по контуру.
Почитать... хммм. по что почитать про заглубление или зигзаги?
Заглубление - там все просто, вместо того, чтобы входить прямо под углом 90 градусов заходят под другим углом. Многие фрезы не могут заглубляться под углом 90 градусов. Плюс придется чуть продлить траекторию, чтобы дорезать заглубление до конца. основные параметры - угол заглубления и скорость.
Перемычки - на последних проходах фрезу приподнимают, чтобы оставались перемычки и деталь не улетала.
Про зигзаг... типо такого:
http://www.cnc-club.ru/forum/viewtopic. ... %2A#p13193
Re: Идея небольшой утилитки
Добавлено: 17 янв 2014, 11:21
aaleksander
Nick писал(а):
aaleksander писал(а):А где почитать можно? В основном пока интересует обычная обрезка за/в/по контуру.
Почитать... хммм. по что почитать про заглубление или зигзаги?
Заглубление - там все просто, вместо того, чтобы входить прямо под углом 90 градусов заходят под другим углом. Многие фрезы не могут заглубляться под углом 90 градусов. Плюс придется чуть продлить траекторию, чтобы дорезать заглубление до конца. основные параметры - угол заглубления и скорость.
Перемычки - на последних проходах фрезу приподнимают, чтобы оставались перемычки и деталь не улетала.
Про зигзаг... типо такого:
http://www.cnc-club.ru/forum/viewtopic. ... %2A#p13193
Что это такое, я знаю. Мне бы алгоритмы.
Буду думать.
Re: Идея небольшой утилитки
Добавлено: 17 янв 2014, 12:32
aaleksander
Nick писал(а):
Зигзаг или спиралькой... Оффестами лучше не заморачивайся - очень сложно и без глюков не работает.
Оффсетами - это в смысле рекурсивное построение эквидистантных контуров?
Re: Идея небольшой утилитки
Добавлено: 21 янв 2014, 11:37
Nick
aaleksander писал(а):Оффсетами - это в смысле рекурсивное построение эквидистантных контуров?
Ага, они самые. Тебе литературы подкинуть по ним? (но на английском)...
Re: Идея небольшой утилитки
Добавлено: 21 янв 2014, 13:40
aaleksander
Давай, гляну.
Но пока кажется, что не осилю. Точнее трудоемкость реализации перевесит неудобство обхождения без них.
Пока все устраивает. Задумался о шрифтах.
Re: Идея небольшой утилитки
Добавлено: 23 янв 2014, 13:37
aaleksander
А можно ли LinuxCNC настроить входные файлы так, чтобы он компилировал и сразу выполнял?
Например, увидел расширение cpp - запустил компиляцию, выполнил, взял из stdout гкод?
А то меня от динамической типизации питона выворачивает с непривычки.
Re: Идея небольшой утилитки
Добавлено: 23 янв 2014, 15:11
Serg
make тебе поможет.
Re: Идея небольшой утилитки
Добавлено: 23 янв 2014, 17:07
Nick
aaleksander писал(а):Например, увидел расширение cpp - запустил компиляцию, выполнил, взял из stdout гкод?
Так тоже самое, что и с питоном - надо фильтр настроить.
(что-то типо такого
http://cnc-club.ru/forum/viewtopic.php? ... TER#p61529)
Re: Идея небольшой утилитки
Добавлено: 02 фев 2014, 12:27
nkp
с сишными исходниками поступаем так:
в ini в секцию [FILTER] (если такой нет - добавляем):
Код: Выделить всё
[FILTER]
PROGRAM_EXTENSION = .sh Script Bash
sh = bash
а уже в самом скрипте пропишем запуск gcc с последующим запуском программы:
Код: Выделить всё
#!bin/bash
gcc /home/nkp/emc2-dev-80db2a2/nc_files/45.c -o 45
./45
сам исходник :
Код: Выделить всё
#include <stdio.h>
int main (void)
{
puts ("G1 F300 X10\nM2");
return 0;
}
в итоге: