Идея небольшой утилитки

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
aaleksander
Мастер
Сообщения: 577
Зарегистрирован: 23 авг 2013, 18:04
Репутация: 118
Откуда: г. Ухта
Контактная информация:

Re: Идея небольшой утилитки

Сообщение aaleksander »

Nick писал(а):А в чем проблема с дугами? Там вроде не так сложно все...
Изначально так исторически сложилось.
Трудность начинается, когда перемычка на дугу попадает.

А по спирали - это даже не наклонное врезание, а вообще: по всему контуру с постепенным заглублением?
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Идея небольшой утилитки

Сообщение Nick »

Да, с добавлением траектории (чтобы замкнуть контур или возвращением назад - если контур не замкнут.

Для замкнутого я даже сделал на Gкоде, но вот на разомкнутом застопорился.... уж слишком это Gкод разворачивать на Gкоде :).

А в чем проблема с перемычкой на дуге? Надо просто сделать функцию разбиения дуги на две. Там пара строчек.
Кстати, в Gcodetools есть много всяких функций для работы с дугами и кривыми - там несколько классов - arc, line и общий - biarc.
aaleksander
Мастер
Сообщения: 577
Зарегистрирован: 23 авг 2013, 18:04
Репутация: 118
Откуда: г. Ухта
Контактная информация:

Re: Идея небольшой утилитки

Сообщение aaleksander »

Проблемы с дугами и перемычками нет. Надо сесть и сделать. Но ведь все работает... зачем трогать :beer_blow: К тому же там не просто на две дуги разбить: перемычка может "занять" часть дуги (тогда бьем на две части), может оказаться в серединке дуги (уже на три участка: дуга-перемычка-дуга), плюс всякие граничные значения. Короче, я еще могу двадцать причин найти, чтобы не делать :lol:
И еще: изначально просто хотел писать УП на работе, за виндой. И затевал все это ради визуализатора, чтобы обходиться без EMC. А визуализатор все равно дугу на отрезки разбивает.
Так что вот.
Хотел еще сказать, что штука полезна для параметрических программ.
Вчера писал программу для ящичка с шиповыми соединяниями. Из ламината.
Ввел в начале параметры: радиус фрезы, толщина ламината (размер шипа от него зависит), величину подрезки углов.
Если окажется, что шипы не влазят, я просто поменяю одну переменную и можно заново запускать.

У меня уже есть программы для вырезания коробочек, заглушки для труб, сейчас вот ящички дописываю. Вставляешь заготовку, вводишь параметры - и готово. Главное - не забыть заготовку на стол положить.
aaleksander
Мастер
Сообщения: 577
Зарегистрирован: 23 авг 2013, 18:04
Репутация: 118
Откуда: г. Ухта
Контактная информация:

Re: Идея небольшой утилитки

Сообщение aaleksander »

Сделал примитивный оффсет (есть глюки, неточности, но нетерпелось похвастаться).
Ща пойду в гараж испытывать :tongue:

Код: Выделить всё

# -*- coding: utf-8 -*-

from py2gcode import *

str = ' тут строка из InkScape'
t = SvgTrajectory(str)

#создаем траектории-оффсеты
o = Offset(t, 1.5) #оффсет наружу
o2 = Offset(t, -1.5) #оффсет внутрь

preview2D([t, o, o2], 5, options={'hideRef': True}) #смотрим траектории в 2Д

def f():
    G0(0, 200, 5)
    c = Strategy()
    c.mill(o, x=0, y=0, options={'z': -10})
    G0(Z=5)
    c.mill(o2, x=0, y=0, options={'z': -10})
    G0(Z=5)
    c.mill(t, x=0, y=0, options={'z': -10})

preview(f)
Вложения
01.PNG (2899 просмотров) <a class='original' href='./download/file.php?id=25280&sid=7bed850eb8ed3840162f5c3fffc3cff5&mode=view' target=_blank>Загрузить оригинал (26.47 КБ)</a>
02.PNG (2899 просмотров) <a class='original' href='./download/file.php?id=25281&sid=7bed850eb8ed3840162f5c3fffc3cff5&mode=view' target=_blank>Загрузить оригинал (20.95 КБ)</a>
aaleksander
Мастер
Сообщения: 577
Зарегистрирован: 23 авг 2013, 18:04
Репутация: 118
Откуда: г. Ухта
Контактная информация:

Re: Идея небольшой утилитки

Сообщение aaleksander »

Вернулся из гаража. Все работает, почти как надо! Есть небольшой глюк в генерации траектории, но на внешний вид это не влияет. Завтра подправлю.
Итак. Фреза 3мм, кукуруза. Ламинат.
Первый блин. Честные оффсеты: +1.5мм, -1.5мм. Есть небольшой зазар.
IMG_20140226_195954.jpg (2892 просмотра) <a class='original' href='./download/file.php?id=25285&sid=7bed850eb8ed3840162f5c3fffc3cff5&mode=view' target=_blank>Загрузить оригинал (466.74 КБ)</a>
Вторая попытка: дырка таже, капелька с оффсетом +1.42мм.
Вложения
IMG_20140226_201633.jpg (2892 просмотра) <a class='original' href='./download/file.php?id=25286&sid=7bed850eb8ed3840162f5c3fffc3cff5&mode=view' target=_blank>Загрузить оригинал (500.24 КБ)</a>
IMG_20140226_201636.jpg (2892 просмотра) <a class='original' href='./download/file.php?id=25287&sid=7bed850eb8ed3840162f5c3fffc3cff5&mode=view' target=_blank>Загрузить оригинал (501.05 КБ)</a>
IMG_20140226_201640.jpg (2892 просмотра) <a class='original' href='./download/file.php?id=25288&sid=7bed850eb8ed3840162f5c3fffc3cff5&mode=view' target=_blank>Загрузить оригинал (525.62 КБ)</a>
IMG_20140226_201645.jpg (2892 просмотра) <a class='original' href='./download/file.php?id=25289&sid=7bed850eb8ed3840162f5c3fffc3cff5&mode=view' target=_blank>Загрузить оригинал (538.87 КБ)</a>
Аватара пользователя
tooshka
Почётный участник
Почётный участник
Сообщения: 1803
Зарегистрирован: 24 окт 2012, 14:26
Репутация: 209
Настоящее имя: Андрей
Откуда: Нижний Новгород
Контактная информация:

Re: Идея небольшой утилитки

Сообщение tooshka »

aaleksander писал(а):Все работает, почти как надо!
А пересечение двух дуг углом вовнутрь? Как получится?
Милая, ты услышь меня
под окном стою со своим я ЧПУ! (Протяжно; с надрывом; форте)
Внимание!!! Чрезмерное увлечение ЧПУ приводит к проблемам в семейных отношениях!
aaleksander
Мастер
Сообщения: 577
Зарегистрирован: 23 авг 2013, 18:04
Репутация: 118
Откуда: г. Ухта
Контактная информация:

Re: Идея небольшой утилитки

Сообщение aaleksander »

Если фреза пролезет - то получится. Но лучше спроектировать траекторию так, чтобы фрезе было "просторно".
Для острых углов обычно стыкуют три и более детали.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Идея небольшой утилитки

Сообщение Nick »

А что будет если контур станет двухсвязным из односвязного?
Т.е. скажем такие оффсеты получатся?

Кто-то мне говорил, что для полигонов есть какая-то открытая библиотека, с готовым офсетом, клипингом и прочими полезными штуками... причем с разобранными всеми особыми случаями...
Вложения
rect3012.png (2870 просмотров) <a class='original' href='./download/file.php?id=25304&sid=7bed850eb8ed3840162f5c3fffc3cff5&mode=view' target=_blank>Загрузить оригинал (85.36 КБ)</a>
aaleksander
Мастер
Сообщения: 577
Зарегистрирован: 23 авг 2013, 18:04
Репутация: 118
Откуда: г. Ухта
Контактная информация:

Re: Идея небольшой утилитки

Сообщение aaleksander »

Nick писал(а):А что будет если контур станет двухсвязным из односвязного?
Т.е. скажем такие оффсеты получатся?
Пока не получаются. Буду думать, как бы похитрее это реализовать.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Идея небольшой утилитки

Сообщение Nick »

Надо поискать готовые библиотеки... должно же что-то такое уже быть реализовано, хотябы для полигонов (без дуг).
aaleksander
Мастер
Сообщения: 577
Зарегистрирован: 23 авг 2013, 18:04
Репутация: 118
Откуда: г. Ухта
Контактная информация:

Re: Идея небольшой утилитки

Сообщение aaleksander »

Nick писал(а):Надо поискать готовые библиотеки... должно же что-то такое уже быть реализовано, хотябы для полигонов (без дуг).
Да там делов на сотню строк. Надо просто сесть и подумать (или подождать, пока припрет :-) )
У меня этот-то оффсет на 85 строк получился.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Идея небольшой утилитки

Сообщение Nick »

Это потому, что у тебя клиппинга нет ;). А с клиппингом все гораздо сложнее, плюс куча особых ситуаций, когда пересекается по линии или схлопывается в ноль...
aaleksander
Мастер
Сообщения: 577
Зарегистрирован: 23 авг 2013, 18:04
Репутация: 118
Откуда: г. Ухта
Контактная информация:

Re: Идея небольшой утилитки

Сообщение aaleksander »

Для всего остального есть АртКам ;-)
Цель разработки не забываем: быстро, просто и гибко.
aaleksander
Мастер
Сообщения: 577
Зарегистрирован: 23 авг 2013, 18:04
Репутация: 118
Откуда: г. Ухта
Контактная информация:

Re: Идея небольшой утилитки

Сообщение aaleksander »

Nick писал(а):Это потому, что у тебя клиппинга нет . А с клиппингом все гораздо сложнее, плюс куча особых ситуаций, когда пересекается по линии или схлопывается в ноль...
Нашел библиотеку. Clipper называется. Портирована на все языки.
Буду прикручивать.
aaleksander
Мастер
Сообщения: 577
Зарегистрирован: 23 авг 2013, 18:04
Репутация: 118
Откуда: г. Ухта
Контактная информация:

Re: Идея небольшой утилитки

Сообщение aaleksander »

aaleksander писал(а):Буду прикручивать.
Прикрутил :sick:
Оффсеты - что надо :hehehe:
Вложения
scr.PNG (2748 просмотров) <a class='original' href='./download/file.php?id=26002&sid=7bed850eb8ed3840162f5c3fffc3cff5&mode=view' target=_blank>Загрузить оригинал (48.2 КБ)</a>
Аватара пользователя
tooshka
Почётный участник
Почётный участник
Сообщения: 1803
Зарегистрирован: 24 окт 2012, 14:26
Репутация: 209
Настоящее имя: Андрей
Откуда: Нижний Новгород
Контактная информация:

Re: Идея небольшой утилитки

Сообщение tooshka »

aaleksander писал(а):Оффсеты - что надо
Какие то артефакты))) на дугах?
Милая, ты услышь меня
под окном стою со своим я ЧПУ! (Протяжно; с надрывом; форте)
Внимание!!! Чрезмерное увлечение ЧПУ приводит к проблемам в семейных отношениях!
aaleksander
Мастер
Сообщения: 577
Зарегистрирован: 23 авг 2013, 18:04
Репутация: 118
Откуда: г. Ухта
Контактная информация:

Re: Идея небольшой утилитки

Сообщение aaleksander »

tooshka писал(а):Какие то артефакты))) на дугах?
Ага. И посмотри, где стрелки: разбегаются куда хотят. А это - начало контура. Туда пойдет фреза после очередного круга-офсета.
Короче, надо свой делат. Мой на данный момент выглядит покруче. Проблемы начинаются, когда контур как-бы "вырождается".
Вот победю, будем всем оффсетам-оффсет :geek:
Вложения
Снимок.PNG (2734 просмотра) <a class='original' href='./download/file.php?id=26022&sid=7bed850eb8ed3840162f5c3fffc3cff5&mode=view' target=_blank>Загрузить оригинал (57.55 КБ)</a>
aaleksander
Мастер
Сообщения: 577
Зарегистрирован: 23 авг 2013, 18:04
Репутация: 118
Откуда: г. Ухта
Контактная информация:

Re: Идея небольшой утилитки

Сообщение aaleksander »

Очередная демонстрация библиотеки.
Приятель попросил нарезать ему мотовильца для продольников на налима.
Вместе написали программу, глядя в EMC. Причем размеры задаются реальные, конечного изделия.
Когда форма его устроила, создал оффсет +3мм и размножил по столу, сколько места хватило.
Мотовильце.py (для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

# -*- coding: utf-8 -*-

from py2gcode import *

def up():
    G0(Z=20)

def mot(xx, yy):
    m = Meta() #мета-траектория. Размеры - конечного изделия
    m.point(0, 0)
    m.point(0, 90)
    m.point(7.5, 90, rounding=7.5)
    m.point(7.5, 150, rounding=7.5)
    m.point(0, 150)

    m.point(0, 240)
    m.point(9, 240)
    m.point(27.5, 240, radius=17.5)
    m.point(55-9, 240)

    m.point(55, 240)
    m.point(55, 150)
    m.point(55-7.5, 150, rounding=7.5)
    m.point(55-7.5, 90, rounding=7.5)
    m.point(55, 90)

    m.point(55, 0)
    m.point(55-9, 0)
    m.point(27.5, 0, radius=17.5)
    m.point(9, 0)

    c = Strategy() #Эта штука умеет резать траектории
    
    o = Offset(m, 3) #создаем новую траекторию-смещение на основе мета-траектории + 3мм
    z = -3
    #Погружаемся по 3мм за проход
    while z > -9:
        c.mill(o, x=xx, y=yy, options={'z': z, 'safeZ': 20}) #режем траекторию-смещение
        z -= 3    

    up() #поднимаем фрезу, чтобы переходить дальше
    
def f():
    for x in xrange(0, 450, 75): #размножаем по столу с шагом 75мм
        mot(x, 0)

export(f)
Вложения
IMG_20140320_210730.jpg (2714 просмотров) <a class='original' href='./download/file.php?id=26075&sid=7bed850eb8ed3840162f5c3fffc3cff5&mode=view' target=_blank>Загрузить оригинал (583.8 КБ)</a>
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Идея небольшой утилитки

Сообщение Nick »

Ды видешь, оффсет просто сделать, а вот решить вырождение контура - сложно... А что там в этом клиппере с клиппингом, не смотрел?
aaleksander
Мастер
Сообщения: 577
Зарегистрирован: 23 авг 2013, 18:04
Репутация: 118
Откуда: г. Ухта
Контактная информация:

Re: Идея небольшой утилитки

Сообщение aaleksander »

Nick писал(а):А что там в этом клиппере с клиппингом, не смотрел?
Нет пока. Но судя по тому, как он вырождает полигоны, будем терять начало контура как минимум.
Да и не могу пока представить, где это может пригодиться.
Ответить

Вернуться в «LinuxCNC»