Графити бот и блок управления EggBot
Графити бот и блок управления EggBot
После пуска EggBot, решил приспособить блок управления от EggBot к графити боту (http://hektor.ch), который давно хотел повторить.
Nick, пожалуйста помоги, напиши расширение для Inkscape, которое позволяет выполнять печать. Возможно можно адаптировать решение из этой темы Graffiti-cnc Треугольная система координат.
В сети нашел только этот, возможно поможет.
И еще EBBCommands.
http://hektor.ch/Work/In+a+Beautiful+Pl ... Place.mov/
Nick, пожалуйста помоги, напиши расширение для Inkscape, которое позволяет выполнять печать. Возможно можно адаптировать решение из этой темы Graffiti-cnc Треугольная система координат.
В сети нашел только этот, возможно поможет.
И еще EBBCommands.
http://hektor.ch/Work/In+a+Beautiful+Pl ... Place.mov/
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Графити бот и блок управления EggBot
О, прототип оказывается есть. Да, на нем имеет смысл делать все эти преобразования из Graffiti.
Вот, что мне нужно - нужен пример входного файла для eggbot. Он умеет управлять сразу двумя осями? Т.е. может ли он выполнять что-то вроде G00 X-- Y--?
Вот, что мне нужно - нужен пример входного файла для eggbot. Он умеет управлять сразу двумя осями? Т.е. может ли он выполнять что-то вроде G00 X-- Y--?
Re: Графити бот и блок управления EggBot
Команды отправляются как на COM порт (физически это виртуальный USB COM порт), формат команд посмотри EBBCommands. После выполнения команды приходит ответ 'ok'.
Насколько я понял G00 X-- Y-- тождественна команда:
Желательно чтобы команды отправлялись из Inkscape, подобно оригинальному расширению EggBot Control.
Насколько я понял G00 X-- Y-- тождественна команда:
Код: Выделить всё
The "SM" Command (stepper motor move)
Format: "SM,<duration>,<axis1>,<axis2><CR>"
<duration> is a value from 1 to 65,535 and is in milliseconds. It represents the total length of time you want this move to take.
<axis1> and <axis2> are values from -32,767 to +32,767 and represent the number of steps for each motor to take in <duration> milliseconds.
If both <axis1> and <axis2> are zero, then a delay of <duration> ms is executed. <axis2> is an optional value, and if it is not included in the command, zero steps are assumed for axis 2.
Use this command to make the motors draw a straight line at constant velocity. The maximum speed that the EBB can generate is 25,000 steps/s. It is helpful to use this command with zeros for both <axis> parameters after moving the pen up or down to give it time to finish moving before starting the next motor move.
Example: "SM,1000,250,-766"
Return Packet: "OK"
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Графити бот и блок управления EggBot
Ага, тогда все, что нужно - сделать Gкод при помощи inkscape и дописать простенький процессор, который переводи команды типа
G01 в "SM,<duration>,<axis1>,<axis2><CR>"
Хотя, похоже придется парсить Gкод, т.к. в этом SM команды задаются в относительных координатах. И еще надо как-то скорость пересчитывать.
G01 в "SM,<duration>,<axis1>,<axis2><CR>"
Хотя, похоже придется парсить Gкод, т.к. в этом SM команды задаются в относительных координатах. И еще надо как-то скорость пересчитывать.
Re: Графити бот и блок управления EggBot
Во вложении орининальное расширение, может будет полезно. Там на python все написано.
В папке "serial" - работа с COM портом.
В папке "serial" - работа с COM портом.
- Вложения
-
- Eggbot2.2.1.zip
- (188.95 КБ) 597 скачиваний
Re: Графити бот и блок управления EggBot
А зачем такие сложности? Может посмотреть как это сделано в оригинальном расширении и добавить функцию преобразования одной системы координат в другую, или там все намного сложнее?Nick писал(а):Хотя, похоже придется парсить Gкод, т.к. в этом SM команды задаются в относительных координатах. И еще надо как-то скорость пересчитывать.
Насколько я понял вот функция отвечающая за печать, но я не силен в python.
Код: Выделить всё
def plotToEggBot( self ):
'''Perform the actual plotting, if selected in the interface:'''
#parse the svg data as a series of line segments and send each segment to be plotted
if self.serialPort is None:
return
if self.options.startCentered and ( not self.getDocProps() ):
# Cannot handle the document's dimensions!!!
inkex.errormsg( gettext.gettext(
'The document to be plotted has invalid dimensions. ' +
'The dimensions must be unitless or have units of pixels (px) or ' +
'percentages (%). Document dimensions may be set in Inkscape with ' +
'File > Document Properties' ) )
return
# Viewbox handling
# Also ignores the preserveAspectRatio attribute
viewbox = self.svg.get( 'viewBox' )
if viewbox:
vinfo = viewbox.strip().replace( ',', ' ' ).split( ' ' )
if ( vinfo[2] != 0 ) and ( vinfo[3] != 0 ):
sx = self.svgWidth / float( vinfo[2] )
sy = self.svgHeight / float( vinfo[3] )
self.svgTransform = parseTransform( 'scale(%f,%f) translate(%f,%f)' % (sx, sy, -float( vinfo[0] ), -float( vinfo[1] ) ) )
self.ServoSetup()
# Ensure that the engraver is turned off for the time being
# It will be turned back on when the first non-virtual pen-down occurs
if self.options.engraving:
self.engraverOff()
if bDebug:
self.debugOut = open( DEBUG_OUTPUT_FILE, 'w' )
if bDrawPenUpLines:
self.debugOut.write( 'IN;SP1;' )
else:
self.debugOut.write( 'IN;PD;' )
try:
# wrap everything in a try so we can for sure close the serial port
#self.recursivelyTraverseSvg(self.document.getroot())
self.penDownActivatesEngraver = True
self.recursivelyTraverseSvg( self.svg, self.svgTransform )
self.penUp() #Always end with pen-up
# Logically, we want to turn the engraver off here as well,
# but we put that in our finally clause instead
# self.engraverOff()
# return to home, if returnToHome = True
if ( ( not self.bStopped ) and self.options.returnToHome and ( self.ptFirst ) ):
self.fX = self.ptFirst[0]
self.fY = self.ptFirst[1]
#self.penUp()
self.nodeCount = self.nodeTarget # enablesfpx return-to-home only option
self.plotLineAndTime()
#inkex.errormsg('Final node count: ' + str(self.svgNodeCount)) #Node Count - Debug option
if ( not self.bStopped ):
self.svgLayer = 0
self.svgNodeCount = 0
self.svgLastPath = 0
self.svgLastPathNC = 0
self.svgTotalDeltaX = 0
self.svgTotalDeltaY = 0
finally:
# We may have had an exception and lost the serial port...
self.penDownActivatesEngraver = False
if ( not ( self.serialPort is None ) ) and ( self.options.engraving ):
self.engraverOff()
Re: Графити бот и блок управления EggBot
Еще как вариант, может трансформировать сам рисунок перед печатью.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Графити бот и блок управления EggBot
Насколько я понял, вот эта функция делает расчет вывода...2cme писал(а):self.plotLineAndTime()
В пасинге в принципе ничего особо сложного нет... попробую сегодня вечером накатать...
Краткая инструкция по пользованию Graffiti:
- Вложения
-
- gcodetools graffiti.svg
- (222.29 КБ) 1018 скачиваний
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Графити бот и блок управления EggBot
А вот и скриптик:
Пользовать его так:
python gcode-eggbot-converter.py graffiti.ngc
где graffiti.ngc - выход graffiti от gcodetools.
На выхде появится файл graffiti.ngc.egg, который будет содержать команды в формате EggBot. Останется только построчно скормить его в com.
PS в начале скрипта есть три переменные задающие масштаб:
scale_x = 100 # (steps per 1 unit)
scale_y = 100 # (steps per 1 unit)
scale_f = 1. # (1 = (Feed) mm/min )
Пользовать его так:
python gcode-eggbot-converter.py graffiti.ngc
где graffiti.ngc - выход graffiti от gcodetools.
На выхде появится файл graffiti.ngc.egg, который будет содержать команды в формате EggBot. Останется только построчно скормить его в com.
PS в начале скрипта есть три переменные задающие масштаб:
scale_x = 100 # (steps per 1 unit)
scale_y = 100 # (steps per 1 unit)
scale_f = 1. # (1 = (Feed) mm/min )
- Вложения
-
- gcode-eggbot-converter.py.tar.gz
- (719 байт) 754 скачивания
Re: Графити бот и блок управления EggBot
Не получается создать graffiti.ngc.
Открыл файл gcodetools graffiti.svg, запустил Graffiti (gcodetools 1.7), нажал применить:
Открыл файл gcodetools graffiti.svg, запустил Graffiti (gcodetools 1.7), нажал применить:
Код: Выделить всё
Warning! Tool has parameter that default tool has not ('Lift knife at corner ':'0.0')
Warning! There are some paths in the root of document, but not in any layer! Using Bottom-most layer for them.
No paths are selected! Trying to work on all available paths.
Traceback (most recent call last):
File "gcodetools.py", line 6749, in <module>
gcodetools.affect()
...
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Графити бот и блок управления EggBot
А дальше что в ошибке?
Блин совсем забыл сегодня пофиксил несколько багов в gcodetools-dev, т.к. с прошлой версией он выдавал ошибки. Но забыл сделать push в репозиторий на ланчпаде... Завтра вывешу, только бы не забыть...
Блин совсем забыл сегодня пофиксил несколько багов в gcodetools-dev, т.к. с прошлой версией он выдавал ошибки. Но забыл сделать push в репозиторий на ланчпаде... Завтра вывешу, только бы не забыть...
Re: Графити бот и блок управления EggBot
ok, Жду.
На этапе отладки сделаю через PuTTY, а потом можно сделать через Inkscape?Nick писал(а): Останется только построчно скормить его в com.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Графити бот и блок управления EggBot
В принципе - можно будет и через сделать, но сначала лучше отработать схему на макете. Если будет нормально работать, то доведем до ума.
Re: Графити бот и блок управления EggBot
Скачал gcodetools-dev, установил, но почемуто не совсем корректно установилось (рисунки во вложении), в чем я ошибся?
После выполения Graffiti выдало сообщени:
Будут пробывать конвертировать для EggBot.
После выполения Graffiti выдало сообщени:
Код: Выделить всё
Warning! There are some paths in the root of the document, but not in any layer! Using bottom-most layer for them.
No paths are selected! Trying to work on all available paths.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Графити бот и блок управления EggBot
Выполни в консоли python create_inx.py в папке, куда все скачал - тогда создадутся все необходимые формочки расширений.
Когда выберешь контур снизу пишется в каком слое он находится, если там "корень" - значит контур не в слоях, а просто в корне документа.
Лучше всего сделать Файл-Новый и скопировать туда нужные контуры - так можно избежать большинства проблем с svg полученными со стороны.
Ты svg в чем-то другом создавал?2cme писал(а):Warning! There are some paths in the root of the document, but not in any layer! Using bottom-most layer for them.
Когда выберешь контур снизу пишется в каком слое он находится, если там "корень" - значит контур не в слоях, а просто в корне документа.
Лучше всего сделать Файл-Новый и скопировать туда нужные контуры - так можно избежать большинства проблем с svg полученными со стороны.
Re: Графити бот и блок управления EggBot
Nick, пожалуйста сделай файл-заготовку, в который достаточно будет скопировать рисунок.Nick писал(а):Лучше всего сделать Файл-Новый и скопировать туда нужные контуры - так можно избежать большинства проблем с svg полученными со стороны.
Ок, понял (;Nick писал(а):Выполни в консоли python create_inx.py в папке, куда все скачал - тогда создадутся все необходимые формочки расширений.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Графити бот и блок управления EggBot
Да там просто все. Открываешь Graffiti в нем Orientation Points, выбираешь Graffiti point и два раза применить. Появятся два маркера, перетаскиваешь их на нужные места. Потом открываешь вкладку Graffiti и жмешь применить. Все.
ЗЫ в этом сообщении есть svg Графити бот и блок управления EggBot #8
ЗЫ в этом сообщении есть svg Графити бот и блок управления EggBot #8
Re: Графити бот и блок управления EggBot
Я через PuTTY команды выполняю сформированые gcode-eggbot-converter.py, очень утомительно. Nick пожалуйста сделай чтобы можно было из программы автоматом их отправлять. А также по возможнсть опцию выбора режима микрошага.Nick писал(а):В принципе - можно будет и через сделать, но сначала лучше отработать схему на макете. Если будет нормально работать, то доведем до ума.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Графити бот и блок управления EggBot
Надо Gcodetools и Eggbot как-то скрестить...
А как оно вообще хоть что-то рисует или нет?
А как оно вообще хоть что-то рисует или нет?
Re: Графити бот и блок управления EggBot
Вот что получается при прямой печати из расширения EggBot (это без преобразования Graffiti):
- Вложения
-
- 1234.svg
- (14.95 КБ) 669 скачиваний
Последний раз редактировалось 2cme 21 июл 2012, 20:20, всего редактировалось 1 раз.

