Разработка Gcodetools - плагин Inkscape для экспорта в Gкод

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.

Следующее направление разработки

Можно выбрать до 5 вариантов ответа

 
 
Результаты голосования

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

Разработка Gcodetools - плагин Inkscape для экспорта в Gкод

Сообщение Nick »

Разработка Gcodetools

Screenshot-output.ngc - AXIS-4.png (183890 просмотров) <a class='original' href='./download/file.php?id=348&mode=view' target=_blank>Загрузить оригинал (31.64 КБ)</a>
Эта ветка посвящена разработке Gcodetools, плагина для векторного редактора Inkscape, позволяющего конвертировать кривые из Inkscape в Gкод, используя круговую и линейную интерполяцию.

Описание работы, установка, помошь и уроки по плагину можно найти в теме: Gcodetools - plug-in Inkscape для экспорта в Gcode

На данный момент ведется работа над Gcodetools 1.7

Что мы хотим увидеть в новой версии:
  • Улучшение расширения для плазменной резки
  • Добавление дополнительных опций экспорта:
  • Улучшение функции обработки площади
  • Угол заглубления
  • Расширение для сверловки

Требуются

  • Тестеры
  • Разработчики
  • Помощь в технических аспектах по работе станков и обработке материалов
  • Новые идеи

Последняя версия

Исходный код находится на launchpad.net. Получить последнюю версию при помощи bazaar можно так:

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

bzr branch lp:gcodetools
Последнюю версию можно загрузить через web-интерфейс: http://bazaar.launchpad.net/~gcodetools ... lope/files

Установка

1. Загрузите последнюю ревизию, из указанных выше мест.
2. Выполните "python create_inx.py" в директории с загруженными файлами.
3. Скопируйте все созданные файлы с расширением *.inx и файл gcodetools-dev.py в каталог:
Linux: /usr/share/inkscape/extensions/ и перезапустите inkscape
Windows: Program Files\Inkscape\share\extensions\
4. Перезапустите Inkscape

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

Re: Разработка Gcodetools - плагин Inkscape для экспорта в G

Сообщение Nick »

Хммм какая ревизия? Только что проверил - работает ....


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

Re: Разработка Gcodetools - плагин Inkscape для экспорта в G

Сообщение Nick »

Я понял в чем дело !!!
Просто новые контуры оказываются под закрашенным :) ! Они никуда не деваются!
Аватара пользователя
dormouse
Мастер
Сообщения: 334
Зарегистрирован: 27 фев 2010, 09:55
Репутация: 15
Заслуга: Developer
Контактная информация:

Re: Разработка Gcodetools - плагин Inkscape для экспорта в G

Сообщение dormouse »

Ухаха! и вправду не удаляются. видно слишком перетрудился.
Много мы за последнюю неделю осилили. Теперь есть Area Artefacts и dxfpoints + не отваливается с ошибкой на "неправильных" контурах. Поздравления!

todo: сможем сделать всё-таки "гарантированное удаление" для контуров, чей bbox за пределами bbox исходного контура для положительных Area offset radius, сделать?

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

Re: Разработка Gcodetools - плагин Inkscape для экспорта в G

Сообщение Nick »

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

PS завтра постараюсь написать ...
Аватара пользователя
dormouse
Мастер
Сообщения: 334
Зарегистрирован: 27 фев 2010, 09:55
Репутация: 15
Заслуга: Developer
Контактная информация:

Re: Разработка Gcodetools - плагин Inkscape для экспорта в G

Сообщение dormouse »

Я же говорил - если баунды НЕ ПЕРЕСЕКАЮТСЯ, то это ГАРАНТИРОВАННО глюк. а честное пересечение/касание делать сложно, да и ненужно. Возможны очень и очень экзотические варианты. Суть задумки в том что выделяя стрелками при проставленной птичке "автоудаление гарантированного глюка" эти ошмётки будут удалены.

Так же когда-то в светлом будущем нас ждёт свой оффсет или (возможно) lib2geom http://lib2geom.sourceforge.net/ уже всё делает "как надо".

Кстати, прочтено? http://linuxgraphics.ru/articles.php?article_id=48
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Разработка Gcodetools - плагин Inkscape для экспорта в G

Сообщение Nick »

Не, не прочтено....

По поводу lib2geom:
What is py2geom
it is a python lib that provides 2geom functionality. in other words: python bindings to 2geom. it has not been released in binaries yet, so you have to build them yourself from source or read on below...
Я про нее уже читал, когда делал собственный офсет. Как вариант - покапать их исходники и выдрать офсет и пересечения... Эх, GNU дает много возможностей легально тырить код :).


Ps new revision
мааааленький фикс...

------------

Ревизия 87

Потихоньку начал разработку офсета. Для начала - пересечение кривых.
Аватара пользователя
dormouse
Мастер
Сообщения: 334
Зарегистрирован: 27 фев 2010, 09:55
Репутация: 15
Заслуга: Developer
Контактная информация:

Re: Разработка Gcodetools - плагин Inkscape для экспорта в G

Сообщение dormouse »

todo fixes:
1. Engraving +опция "снаружи/внутри контура" по аналогии с +- значением у Area offset radius
[исправлено в rev88] 2. Engraving теперь всегда рисует свои траектории
[исправлено в rev88] 3. DXFpoints/draw arrow - ошибка в стилях
4. непонятно почему появляющаяся ошибка tool for layer 'None'. надо очень внимательно изучить что её вызывает и начать избегать её. С большим трудом сумел повторить её. Файл SVG в аттаче. В нём не работают все наши алгоритмы из-за ошибки в функции set_tool (последняя строка).

todo new:
1. Заглубление фрезы, которая режет только боком хорошо:
пусть надо врезаться на 10мм и шаг depth step у нас 1.5мм(глубже за раз фреза не может сверлить, но может 25мм боком брать). Тогда копируем n первых сегментов исходной кривой так, что суммарная длина этих сегментов больше некоторой "длины входа" у инструмента (типичная "длина входа"=0.8*диаметр фрезы). Для этой кривой делаем цикл из

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

generate_gcode(self, new_curve, layer, depth)
где depth меняется от depth_start до depth_end с шагом 1.5, после этого уже идёт целая кривая сразу с глубиной end

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

generate_gcode(self, new_curve, layer, depth_end)
В последнем релизе это цикл в p-t-g, строки 1366

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

for step in range( 0,  int(math.ceil( abs( (self.Zcoordinates[layer][1]-self.Zcoordinates[layer][0])/self.tools[layer][0]["depth step"] )) ) ):
Zpos = max(self.Zcoordinates[layer][1], self.Zcoordinates[layer][0] - abs(self.tools[layer][0]["depth step"]*(step+1)))
gcode += self.generate_gcode(curve, layer, Zpos)
Предлагается реорганизовать весь цикл p-t-g. Сейчас он набирает все кривые текущего слоя в один массив "p" и после применяет разом на желаемую глубину весь слой. Надо иначе. внешний цикл по "боковой глубине съёма zstep_side", каждое его исполнение начинать с выборки кривой new_curve шагами по zstep_pen вплоть до полной глубины или zend (что раньше наступит).

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

for curve in curves
   new_curve=get_curve_penetration_head(curve, penetration_length)
   for depth=zstart to zend step=zstep_side
       for depth_pen=depth to (zend or depth_pen+zstep_pen) step zstep_pen
          g+=gcode(new_curve,depth_pen) 
       g+gcode(curve,depth)
2. добавить перенос результатов Area,engraving,ptg,dxfpoints на новые слои (в виде опции). Иначе нереально всё качественно выделять

P.S. Втулки готовы. в них с одной стороны плотно входит обычная фреза для 8мм фрезера.

Свой оффсет

пришёл к выводу, что свой оффсет мы можем сделать по сгенерированному результату работы biarc от ptg. Эта задача решается, насколько я могу судить намного легче. Желаемая точность будет, imho, достигнута.
Вложения
tool for layer NONE.svg
(23.93 КБ) 781 скачивание
gcodetools.side.zip
Тестовый файл svg и вывод ngc для пробы нового метода заглубления.
(27.14 КБ) 446 скачиваний
Аватара пользователя
dormouse
Мастер
Сообщения: 334
Зарегистрирован: 27 фев 2010, 09:55
Репутация: 15
Заслуга: Developer
Контактная информация:

Re: Разработка Gcodetools - плагин Inkscape для экспорта в G

Сообщение dormouse »

Как впечатления от path-to-gcode в таком режиме?
Идея в том, чтобы переписать curve_deepen(curve,length). Она должна выдавать начальный сегмент длиной=достаточной длине для инструмента для заглубления. Сейчас она очень жёстко обходится с curve - выдирает первый кусочек и замыкает =)

feed_jobs(zstart,zend,feedside,feeddown,delta): строит список "заданий по глубине" для коротких кривых и полных

Чтобы понять смысл лучше открыть в EMC прилагаемый в прошлом письме .ngc файл и изучить его в режиме проигрывания. На словах не очень легко.

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

Re: Разработка Gcodetools - плагин Inkscape для экспорта в G

Сообщение Nick »

По поводу порядка обработки птг:
У обоих вариантов есть свои преимущества:
У существующего - лучше выбрасывается стружка (если обрабатывается площадь)
У нового быстрее делается заглубление. Если все равно в каком направлении резать.

По поводу заглубления: нужно написать отдельную функцию penetration(curve, tool) и реализовать заглубление на половину глубины по ходу движения, затем на половину против хода, причем если доходим до конца кривой разворачиваемся в обратную сторону. Главное все завязать на tool penetration_angle. Если нужно могу написать / помочь написать.

Сортировка есть: вобще задача оптимальной сортировки это задача коммивояжера самое простое решение - полный перебор. Тем более у нас чуть-чуть другая задача - у нас вход и выход находятся в разных местах. На данный момент сортировка такая: первый контур выбираем произвольно = самый первый контур, второй - тот у которого начало ближе всего к концу первого и так далее.
4. непонятно почему появляющаяся ошибка tool for layer 'None'. надо очень внимательно изучить что её вызывает и начать избегать её. С большим трудом сумел повторить её. Файл SVG в аттаче. В нём не работают все наши алгоритмы из-за ошибки в функции set_tool (последняя строка).
Какие-то кривые добавляются в корень рисунка - мимо всех слоев. Из-за этого возникает проблема. Нужно отследить.

Оффсет
Чем сложнее делать офсет уже готовой кривой:
1. Гораздо больше сегментов, а сложность оффсета это как минимум n^2, поэтому количество сегментов критично.
2. Пока не реализована возможность редактирования готовых кривых. Как вариант оно вобще не нужно, т.к. ptg дает вменяемые результаты и не глючит.
3. Не универсальность. нужно описывать много особых случаев.
Чем лучше делать оффсет готовой кривой:
1. Точность. По идее это даст геометрическую точность, т.к. офсеты и пересечения окружности и прямой задаются алгебраически однозначно.
добавить перенос результатов Area,engraving,ptg,dxfpoints на новые слои (в виде опции). Иначе нереально всё качественно выделять
Ок можно сделать, только нужно чтобы не ругалось потом что для этих слоев нет инструментов.
Кстати группы можно редактировать как слои - двойной клик по группе и ты в слое Группа.
P.S. Втулки готовы. в них с одной стороны плотно входит обычная фреза для 8мм фрезера.
Ура напиши в личку адрес и удобное время, я вызову курьера.

ЗЫЫЫ реализовал функцию пересечения двух безье вычислительными методами. Нужно теперь разобрать случаи, когда кривые совпадают и написать функцию определения типа точки: пересечение или касание.
Аватара пользователя
dormouse
Мастер
Сообщения: 334
Зарегистрирован: 27 фев 2010, 09:55
Репутация: 15
Заслуга: Developer
Контактная информация:

Re: Разработка Gcodetools - плагин Inkscape для экспорта в G

Сообщение dormouse »

1. Разные соображения

1.1
>P-t-G: ...у нового быстрее делается заглубление. Если все равно в каком направлении резать.
Я что-то не так описал, вероятно. Время горизонтального реза алмазом по мрамору на глубину 2 мм равно времени бокового реза на глубину 12мм. "заход по слоям" (как в приведённом ранее алгоритме) осуществляется на 20мм для D=10мм фрезы шагом depth step=2мм: общая длина=4*20мм+100мм (средняя длина контура)=180мм. Для послойного метода это 5*100=500мм, т.е. в 3 раза больше времени работа займёт!
1.2
>penetration(curve, tool) и реализовать заглубление на половину глубины по ходу движения, затем на половину против хода, причем если доходим до конца кривой разворачиваемся в обратную сторону.
Не для всех материалов возможно идти "по ходу реза". Часто НЕОБХОДИМО резать строго в определённом направлении. Единственная оптимизация, которую я адекватно вижу: вместо подъёма на Zsafe/G00 в начало кривой обходить в обратном направлении с максимальной скоростью в режиме G01, поднявшись на 0.5 мм от высоты реза.
1.3
Задача сортировки уже неплохо решена в пакете networx http://networkx.lanl.gov/reference/algo ... paths.html , но я решил простейший вариант самостоятельно сделать, особенно учитывая его линейность O(n) вместо O(n³) для всех "честных переборов" и возможность раздельных точек входа и выхода. Так же - у меня будет добавлена "точка входа" и неравномерный масштаб по XY (т.е. "предпочтительность" какой-то из осей.).
1.4
Кривые в корень рисунка: надо понять по возможности срочно. Это не даёт реально пользоваться конечному потребителю. Т.е. файл .svg "ломается".
1.5
Оффсет по биарку на мой взгляд весьма привлекателен, т.к. все проверки становятся элементарными: дуга-дуга и дуга-отрезок, т.е. обычные квадратные уравнения вместо интегральных сходимостей. n^2 берётся из фразы "для каждого из n фрагментов проверить пересечения с оставшимися n другими фрагментами кривой" ? Если да, то для 1000 биарк-фрагментов получим всего миллион вычислений, что может оказаться быстрее 50 безье.
Так же мы работаем с реальными материалами => имеем "реальную точность" а не математическую до 15-ого знака. Вполне можно остановиться на delta=0.001 мм и с такой точностью биарк заменит исходную безье.
1.6
Ребята из команды Inkscape предлагают все атрибуты заменить на Inkscape-определённые, чтобы не плодить "новые тэги не по svg-стандарту". Похоже, подобную процедуру надо будет провести для всех наших дополнительных полей

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

dxfpoint="1"
заменить на
inkscape:dxfpoint="1"
1.8
Я экспериментировал с тем, какие тэги остаются неизменными после разгруппировывания и Shift+Ctrl+C: только id. В него можно вписать без проблем содержимое тэга "inkscape:original". Проблема в том, что тэг id уникальный сквозь весь SVG, поэтому надо делать не просто содержимое 'd', a id+d. Так можно получить уникальность. [всё это нужно для безусловного удаления артефактов]

2. В чём конкретно требуется помощь

2.1
Сделать честную функцию, возвращающую "начальный фрагмент биарк-кривой длиной L" вместо заглушки

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

		def curve_deepen(curve,length):
			out_curve=[]
			if len(curve) > 2: out_curve=[curve[0]]+[curve[1]]+[[curve[1][4],'end',0,0]]
			else:	out_curve=curve
			return out_curve
2.2
разобраться в сути проблем пункта 1.4. Придумать трактовку этого факта и способ борьбы. Моё предложение: переносить на нижний слой все пути "d" безусловно, с выдачей соответствующего Warning'a. Если вообще нижнего слоя нет - создавать.
Для этого функцию check_paths(paths) сделать:
1. Если вообще слоёв нет - создать хотя бы один (для добавления OR,tool_setup)
2. выделить из массива paths только полноценные "d" пути без групп и т.п., без inkscape:dxfpoint, без стрелок, OR, tool и т.п.
3. для всех paths проверить что они в слоях, если кто-то "не в слое вообще", то а)перенести его на нижний (с уведомлением) либо б)применять к нему правила будто он на нижнем слое.
Вложения
penetration_len.jpg (4027 просмотров) <a class='original' href='./download/file.php?id=537&mode=view' target=_blank>Загрузить оригинал (42.32 КБ)</a>
Аватара пользователя
dormouse
Мастер
Сообщения: 334
Зарегистрирован: 27 фев 2010, 09:55
Репутация: 15
Заслуга: Developer
Контактная информация:

Re: Разработка Gcodetools - плагин Inkscape для экспорта в G

Сообщение dormouse »

Список очередных критических багов:
1. Надо в двух местах исправить %f на %0.4f (все координаты XYZIJK и F speed) поскольку другие g-code программы глючат с шестью знаками после запятой
2. Первый default tool добавляется нормально, второй пару глючных тэгов добавляет в tool-табличку , третий уже валит питон. Возможно работает copy-paste вручную табличек на слои
3. dxfpoint:1 изменены на (inkscape:dxfpoint):1, но ещё не читаются
4. хорошо бы реализовать до конца "по человечески" мою функцию заглубления =)
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Разработка Gcodetools - плагин Inkscape для экспорта в G

Сообщение Nick »

Ура! Я дома! Точнее не дома, а пока только до работы добрался, дома буду только вечером.

Из всего прочитанного
Алгоритм заглубления отдаю на откуп тебе, ибо у меня опыта в этом вопросе исчезающе мало. С реализацией конечно помогу :) !
Итак, как я понял нужна функция, которая выдает кусок биарк кривой длинной L.
Вопрос, что делать если длинна всей кривой меньше L?

Со слоями:
Можно создавать новый слой с дополнительным параметром "inkscape:gcodetools_result":"1" и в него пихать все результаты, а в get_info() его просто игнорировать.

Скоро будет бооольшой push с офсетом.
Аватара пользователя
dormouse
Мастер
Сообщения: 334
Зарегистрирован: 27 фев 2010, 09:55
Репутация: 15
Заслуга: Developer
Контактная информация:

Re: Разработка Gcodetools - плагин Inkscape для экспорта в G

Сообщение dormouse »

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

Re: Разработка Gcodetools - плагин Inkscape для экспорта в G

Сообщение Nick »

1. А как тогда заглубляться? Может просто разворачиваться в обратную сторону или если кривая замкнутая, то идти на новый заход?
Аватара пользователя
dormouse
Мастер
Сообщения: 334
Зарегистрирован: 27 фев 2010, 09:55
Репутация: 15
Заслуга: Developer
Контактная информация:

Re: Разработка Gcodetools - плагин Inkscape для экспорта в G

Сообщение dormouse »

Надо открыть из аттача (несколько писем назад) отдельную ветку с этой функциональностью (push'a вообще не было). Там вроде был пример результата в G-коде и всё прочее. Лучше открыть пример и посмотреть результат.

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

Re: Разработка Gcodetools - плагин Inkscape для экспорта в G

Сообщение Nick »

Я имел в виду, если кривая короче L (где L = половине необходимой длины заглубления (т.к. нам нужно вернуться в начальную точку)), то можно заглубляться следующим образом:
Вложения
gcode penetration.png (3961 просмотр) <a class='original' href='./download/file.php?id=539&mode=view' target=_blank>Загрузить оригинал (52.54 КБ)</a>
Аватара пользователя
dormouse
Мастер
Сообщения: 334
Зарегистрирован: 27 фев 2010, 09:55
Репутация: 15
Заслуга: Developer
Контактная информация:

Re: Разработка Gcodetools - плагин Inkscape для экспорта в G

Сообщение dormouse »

Мы говорим про 2 разных понятия:
1. фреза без центра с ограничением по боковому резу
2. фреза с ограниченным заглублением "за раз" и неограниченным [боковым] резом.

в случае 1) [резка металла фрезой без середины] можно врезаться "под углом" первые L мм и к концу кривой дописать эти начальные сегменты. В результате не надо тратить время на "туда-сюда", подъёмы/спуски

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

Re: Разработка Gcodetools - плагин Inkscape для экспорта в G

Сообщение Nick »

dormouse писал(а):Мы говорим про 2 разных понятия:
1. фреза без центра с ограничением по боковому резу
2. фреза с ограниченным заглублением "за раз" и неограниченным [боковым] резом.

в случае 1) [резка металла фрезой без середины] можно врезаться "под углом" первые L мм и к концу кривой дописать эти начальные сегменты. В результате не надо тратить время на "туда-сюда", подъёмы/спуски

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

Re: Разработка Gcodetools - плагин Inkscape для экспорта в G

Сообщение Nick »

Ревизия 101



Добавлена функция def biarc_curve_clip_at_l(curve, l, clip_type = "strict"). Которая выдает начальную часть первой подкривой (до первого "end") biarc кривой.
Если clip_type == "strict", то при длине кривой менее l возвращается пустой лист. Если clip_type другой, то при длине кривой менее l возвращается лесенка, если кривая не замкнута и спиралька, если замкнута.

Функцию тестировал только на правильность синтаксиса, т.к. долго придумывать тесты.

ЗЫ Нами пройдена первая сотня ревизий :D !

Аватара пользователя
dormouse
Мастер
Сообщения: 334
Зарегистрирован: 27 фев 2010, 09:55
Репутация: 15
Заслуга: Developer
Контактная информация:

Re: Разработка Gcodetools - плагин Inkscape для экспорта в G

Сообщение dormouse »

Насчет tools library: первый добавляется нормально, второй пару лишних тэгов, третий - вовсе с ошибкой вываливается.
Вложения
rev101-tools-error.png (3950 просмотров) <a class='original' href='./download/file.php?id=541&mode=view' target=_blank>Загрузить оригинал (32.07 КБ)</a>
rev101-offset.png (3945 просмотров) <a class='original' href='./download/file.php?id=542&mode=view' target=_blank>Загрузить оригинал (19.73 КБ)</a>
Последний раз редактировалось dormouse 29 июн 2010, 16:18, всего редактировалось 1 раз.
Ответить

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