LinuxCNC Features - набор мастеров для LinuxCNC

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

LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение Nick »

Снимок-features.ngc - AXIS 2.6.0-pre0-4385-g9c95855 on LinuxCNC-HAL-SIM-AXIS.png (216008 просмотров) <a class='original' href='./download/file.php?id=15468&mode=view' target=_blank>Загрузить оригинал (153.61 КБ)</a>
Как некоторые уже заметили я пропал на недельку. И пропадал я не зря. Наконец-то решил сделать достойную замену ngcgui.
LinuxCNC Features это тулкит для создания "мастеров". Точнее это тулкит самих "мастеров". В общем и целом LinuxCNC Features работает схоже с ngcgui, но с некоторыми отличиями. Честно говоря, с ngcgui я до конца так и не разобрался, поэтому это я считаю, что он работает схоже :freak:. (Название Features взято от кнопки в ngcgui - add feature.)
В wiki cnc-club добавлена страница о LinuxCNC Features, давайте вместе ее наполнять документацией, видео и прочими полезными материалами.
http://cnc-club.ru/wiki/index.php/LinuxCNC_Features

Текущий статус разработки

  • Дописать обработки.
  • Отловить баги :freak: .
Возможности (для просмотра содержимого нажмите на ссылку)
Что может LinuxCNC Features:
  1. Добавлять features - простые обработки
  2. Менять их порядок
  3. Группировать обработки
  4. Делать линейные и круговые массивы
  5. Встраиваться в axis LinuxCNC или работать как отдельной приложение
  6. Просматривать резултьтат в axis в редиме реального времени
  7. Сохранять шаблоны обработок
Это только пока :).
Скриншоты (для просмотра содержимого нажмите на ссылку)
Пара примеров обработки, созданной за 20 сек:
LinuxCNC-Features1.png (216297 просмотров) <a class='original' href='./download/file.php?id=14825&mode=view' target=_blank>Загрузить оригинал (158.39 КБ)</a>
LinuxCNC-Features.png (216297 просмотров) <a class='original' href='./download/file.php?id=14826&mode=view' target=_blank>Загрузить оригинал (166.41 КБ)</a>

Скрины предыдущих версий

Саме начало
LinuxCNC Features.png (216301 просмотр) <a class='original' href='./download/file.php?id=14824&mode=view' target=_blank>Загрузить оригинал (68.04 КБ)</a>
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение Nick »

хммм.... запакуй всю папку с конфигами и скинь сюда...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение Serg »

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

--- linuxcnc-features/subroutines/get-offsets.ngc.orig	2014-02-23 22:14:22.557585437 +0400
+++ linuxcnc-features/subroutines/get-offsets.ngc	2014-02-23 22:14:36.275723231 +0400
@@ -76,7 +76,7 @@
 #<_get_offsets_w> = 0
 #<_get_offsets_r> = 0
 O<get-offsets> SUB
-	O<get-offsets-if> IF [5210 EQ 1] (Add 92 offset) (In #[5201+#5220*20], 5201 because #5220 starts from 1)
+	O<get-offsets-if> IF [#5210 EQ 1] (Add 92 offset) (In #[5201+#5220*20], 5201 because #5220 starts from 1)
 		#<_get_offsets_x> = [#[5201+#5220*20] + #5201]
 		#<_get_offsets_y> = [#[5202+#5220*20] + #5212]
 		#<_get_offsets_z> = [#[5203+#5220*20] + #5213]
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
going
Мастер
Сообщения: 523
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение going »

В версии 2.5.3 файлик /usr/share/glade3/catalogs/hal_python.xml выглядит совсем по другому.

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

<glade-catalog name="gladevcp" library="gladepython" supports="libglade,gtkbuilder"
domain="glade-3" depends="gtk+">
 <init-function>glade_python_init</init-function>

 <glade-widget-classes>
   <glade-widget-class name="HAL_HBox" generic-name="hal_hbox" title="HAL_HBox"/>
   <glade-widget-class name="HAL_Table" generic-name="hal_table" title="HAL_table"/>
   <glade-widget-class name="HAL_ComboBox" generic-name="hal_combobox" title="HAL_ComboBox"/>
   <glade-widget-class name="HAL_Button" generic-name="hal_button" title="HAL_Button"/>
   <glade-widget-class name="HAL_CheckButton" generic-name="hal_checkbutton" title="HAL_CheckButton"/>
   <glade-widget-class name="HAL_SpinButton" generic-name="hal_spinbutton" title="HAL_SpinButton"/>
   <glade-widget-class name="HAL_ToggleButton" generic-name="hal_togglebutton" title="HAL_ToggleButton"/>
   <glade-widget-class name="HAL_RadioButton" generic-name="hal_radiobutton" title="HAL_RadioButton"/>
   <glade-widget-class name="HAL_HScale" generic-name="hal_hscale" title="HAL_HScale"/>
   <glade-widget-class name="HAL_VScale" generic-name="hal_vscale" title="HAL_VScale"/>
   <glade-widget-class name="HAL_ProgressBar" generic-name="hal_progressbar" title="HAL_ProgressBar"/>
   <glade-widget-class name="HAL_LED" generic-name="hal_led" title="HAL LED">
    <properties>
        <property id="led_blink_rate" optional="True" save-always='True'/>
        <property id="pick_color_on"  optional="True"/>
        <property id="pick_color_off" optional="True"/>
    </properties>
    </glade-widget-class>
    <glade-widget-class name="HAL_Label" generic-name="hal_label" title="HAL Label"/>
   <glade-widget-class name="HAL_HBar" generic-name="hal_hbar" title="HAL HBar"/>
   <glade-widget-class name="HAL_VBar" generic-name="hal_vbar" title="HAL VBar"/>
    <glade-widget-class name="HAL_Gremlin" generic-name="hal_gremlin" title="HAL Gremlin"/>
    <glade-widget-class name="HAL_Meter" generic-name="hal_meter" title="HAL Meter"/>
    <glade-widget-class name="HAL_Graph" generic-name="hal_graph" title="HAL Graph"/>

    <!-- Actions -->
    <glade-widget-class name="EMC_Action_ESTOP" generic-name="hal_action_estop" title="EMC Action ESTOP" icon-name='gtk-stop'/>
    <glade-widget-class name="EMC_Action_ESTOP_RESET" generic-name="hal_action_estop_reset" title="EMC Action ESTOP RESET" icon-name='gtk-stop'/>
    <glade-widget-class name="EMC_Action_ON" generic-name="hal_action_on" title="EMC Action ON" icon-name='gtk-connect'/>
    <glade-widget-class name="EMC_Action_OFF" generic-name="hal_action_off" title="EMC Action OFF" icon-name='gtk-disconnect'/>
    <glade-widget-class name="EMC_Action_Run" generic-name="hal_action_run" title="EMC Action Run" icon-name='gtk-media-play-ltr'/>
    <glade-widget-class name="EMC_Action_Step" generic-name="hal_action_run" title="EMC Action Step" icon-name='gtk-media-next-ltr'/>
    <glade-widget-class name="EMC_Action_Pause" generic-name="hal_action_run" title="EMC Action Pause" icon-name='gtk-media-pause'/>
    <glade-widget-class name="EMC_Action_Resume" generic-name="hal_action_run" title="EMC Action Resume" icon-name='gtk-media-pause'/>
    <glade-widget-class name="EMC_Action_Stop" generic-name="hal_action_stop" title="EMC Action Stop" icon-name='gtk-media-stop'/>
    <glade-widget-class name="EMC_Action_MDI" generic-name="hal_action_mdi" title="EMC Action MDI" icon-name='gtk-execute'/>
    <glade-widget-class name="EMC_Action_Home" generic-name="hal_action_home" title="EMC Action Home" icon-name='gtk-home'/>
    <glade-widget-class name="EMC_Action_Unhome" generic-name="hal_action_unhome" title="EMC Action Unhome" icon-name='gtk-home'/>

    <glade-widget-class name="EMC_ToggleAction_ESTOP" generic-name="hal_toggleaction_estop" title="EMC ToggleAction ESTOP" icon-name='gtk-stop'/>
    <glade-widget-class name="EMC_ToggleAction_Power" generic-name="hal_toggleaction_power" title="EMC ToggleAction Power" icon-name='gtk-disconnect'/>
    <glade-widget-class name="EMC_ToggleAction_Run" generic-name="hal_toggleaction_run" title="EMC ToggleAction Run" icon-name='gtk-media-play-ltr'/>
    <glade-widget-class name="EMC_ToggleAction_Stop" generic-name="hal_toggleaction_stop" title="EMC ToggleAction Stop" icon-name='gtk-media-stop'/>
    <glade-widget-class name="EMC_ToggleAction_Pause" generic-name="hal_toggleaction_pause" title="EMC ToggleAction Pause" icon-name='gtk-media-pause'/>
    <glade-widget-class name="EMC_ToggleAction_MDI" generic-name="hal_toggleaction_mdi" title="EMC ToggleAction MDI" icon-name='gtk-execute'/>

    <glade-widget-class name="EMC_RadioAction_ESTOP" generic-name="hal_radioaction_estop" title="EMC RadioAction ESTOP" icon-name='gtk-stop'/>
    <glade-widget-class name="EMC_RadioAction_ESTOP_RESET" generic-name="hal_radioaction_estop_reset" title="EMC RadioAction ESTOP RESET" icon-name='gtk-stop'/>
    <glade-widget-class name="EMC_RadioAction_ON" generic-name="hal_radioaction_on" title="EMC RadioAction ON" icon-name='gtk-connect'/>
    <glade-widget-class name="EMC_RadioAction_OFF" generic-name="hal_radioaction_off" title="EMC RadioAction OFF" icon-name='gtk-disconnect'/>

    <glade-widget-class name="EMC_Stat" generic-name="hal_stat" title="EMC Stat" icon-name='gtk-properties' toplevel='yes'/>
    <glade-widget-class name="EMC_FileChooserDialog" generic-name="hal_filechooserdialog" title="EMC FileChooserDialog"/>
    <glade-widget-class name="EMC_FileChooserButton" generic-name="hal_filechooserbutton" title="EMC FileChooserButton"/>
    <glade-widget-class name="EMC_Action_Open" generic-name="hal_action_open" title="EMC Action Open" icon-name='gtk-open'/>
    <glade-widget-class name="EMC_Action_Reload" generic-name="hal_action_reload" title="EMC Action Reload" icon-name='gtk-refresh'/>
    <glade-widget-class name="EMC_Action_Save" generic-name="hal_action_save" title="EMC Action Save" icon-name='gtk-save'/>
    <glade-widget-class name="EMC_Action_SaveAs" generic-name="hal_action_saveas" title="EMC Action Save As" icon-name='gtk-save-as'/>
    <glade-widget-class name="EMC_SourceView" generic-name="hal_sourceview" title="EMC SourceView"/>
    <glade-widget-class name="EMC_MDIHistory" generic-name="hal_mdihistory" title="EMC MDIHistory"/>
 </glade-widget-classes>
   
 <glade-widget-group name="python" title="HAL Python">
   <glade-widget-class-ref name="HAL_HBox"/>
   <glade-widget-class-ref name="HAL_Table"/>
   <glade-widget-class-ref name="HAL_LED"/>
   <glade-widget-class-ref name="HAL_ComboBox"/>
   <glade-widget-class-ref name="HAL_Button"/>
   <glade-widget-class-ref name="HAL_SpinButton"/>
   <glade-widget-class-ref name="HAL_CheckButton"/>
   <glade-widget-class-ref name="HAL_ToggleButton"/>
   <glade-widget-class-ref name="HAL_RadioButton"/>
   <glade-widget-class-ref name="HAL_HScale"/>
   <glade-widget-class-ref name="HAL_VScale"/>
   <glade-widget-class-ref name="HAL_ProgressBar"/>
   <glade-widget-class-ref name="HAL_Label"/>
   <glade-widget-class-ref name="HAL_HBar"/>
   <glade-widget-class-ref name="HAL_VBar"/>
   <glade-widget-class-ref name="HAL_Gremlin"/>
   <glade-widget-class-ref name="HAL_Meter"/>
   <glade-widget-class-ref name="HAL_Graph"/>

   <glade-widget-class-ref name="EMC_Stat"/>

   <glade-widget-class-ref name="EMC_FileChooserDialog"/>
   <glade-widget-class-ref name="EMC_FileChooserButton"/>

   <glade-widget-class-ref name="EMC_SourceView"/>
   <glade-widget-class-ref name="EMC_MDIHistory"/>
 </glade-widget-group>
 <glade-widget-group name="python" title="EMC Actions">
   <glade-widget-class-ref name="EMC_Action_ESTOP"/>
   <glade-widget-class-ref name="EMC_Action_ESTOP_RESET"/>
   <glade-widget-class-ref name="EMC_Action_ON"/>
   <glade-widget-class-ref name="EMC_Action_OFF"/>
   <glade-widget-class-ref name="EMC_Action_Run"/>
   <glade-widget-class-ref name="EMC_Action_Step"/>
   <glade-widget-class-ref name="EMC_Action_Pause"/>
   <glade-widget-class-ref name="EMC_Action_Resume"/>
   <glade-widget-class-ref name="EMC_Action_Stop"/>
   <glade-widget-class-ref name="EMC_Action_MDI"/>
   <glade-widget-class-ref name="EMC_Action_Home"/>
   <glade-widget-class-ref name="EMC_Action_Unhome"/>

   <glade-widget-class-ref name="EMC_ToggleAction_ESTOP"/>
   <glade-widget-class-ref name="EMC_ToggleAction_Power"/>
   <glade-widget-class-ref name="EMC_ToggleAction_Run"/>
   <glade-widget-class-ref name="EMC_ToggleAction_Stop"/>
   <glade-widget-class-ref name="EMC_ToggleAction_Pause"/>
   <glade-widget-class-ref name="EMC_ToggleAction_MDI"/>

   <glade-widget-class-ref name="EMC_RadioAction_ESTOP"/>
   <glade-widget-class-ref name="EMC_RadioAction_ESTOP_RESET"/>
   <glade-widget-class-ref name="EMC_RadioAction_ON"/>
   <glade-widget-class-ref name="EMC_RadioAction_OFF"/>

   <glade-widget-class-ref name="EMC_Action_Open"/>
   <glade-widget-class-ref name="EMC_Action_Reload"/>
   <glade-widget-class-ref name="EMC_Action_Save"/>
   <glade-widget-class-ref name="EMC_Action_SaveAs"/>
 </glade-widget-group>
</glade-catalog>
Значит только для 2.6.0 будет работать?
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение Nick »

Может и будет... нужно сделать не дословно, а по смыслу.

Главное, чтобы в 2.5 работали поименованные переменные... можешь сразу проверить выполнить такой Gкод:

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

(DEBUG, #<_x>) 
Должно вывести текущую координату по X.
Аватара пользователя
going
Мастер
Сообщения: 523
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение going »

Nick писал(а):Может и будет... нужно сделать не дословно, а по смыслу.

Главное, чтобы в 2.5 работали поименованные переменные... можешь сразу проверить выполнить такой Gкод:
Смогу только вечером попробовать.

Перечитал тему в выходные. Проникся.
#255 Сообщение Nick » 26 июл 2013, 23:07
Пока вы все тут думаете, запостил тему на chipmaker, будем еще народ подтягивать :)
http://www.chipmaker.ru/topic/114602/pa ... p__1858663

Решил написать скрипт установки. Дошёл до исправления файлов Гладе, но .... пока ошибки при запуске features. В теме раньше они уже опубликованы.
UAVpilot частично их исправил. Я применил его патчи. Но .... такое впечатление что в Гладе не все есть и не все зависимости удовлетворены.
Например используется библиотека ,которая в зависимостях искейпа, какая не понял просто его установил.

Nick ты писал, что всё вертится в Гладе .......а выложити пожалуйста уже исправленные файлы Гладе. Для примера. И отличается ли твой файл features.py от того что в git

У меня товарищ из другого города попросил установить LinuxCNC. У него фрезер 3х. Работает. Радуется. Увидел видео на cipmaker.ru и загорелся.
Пожалуйста реальный тестер с телефонной обратной связью. Но он больше ДОС пользователь. Ездить туда не очень удобно. Поэтому и хочу автоматизировать процесс установки.
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение Nick »

going писал(а):Nick ты писал, что всё вертится в Гладе .......а выложити пожалуйста уже исправленные файлы Гладе. Для примера. И отличается ли твой файл features.py от того что в git
.... какие файлы? форма рисуется через glade_vcp, а он похоже использует glade...
Нет не отличается - я git использую как хранилище и файлообменник, обычно сразу делаю push :freak: поэтому некоторые верисии могту быть не рабочими.
going писал(а): Но он больше ДОС пользователь. Ездить туда не очень удобно. Поэтому и хочу автоматизировать процесс установки.
Интеренет у него есть? Можно по ssh к нему залезть...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение Serg »

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

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение Nick »

Вопрос!
Как можно интегрировать сторонние инструменты в features. Скажем ту же утилитку aaleksanderа Идея небольшой утилитки #1.

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

Может у кого-нибудь есть идеи?

Это я к тому, что очень не хочется делать заглубление по спирале на Gкоде - там слишком все хитро получается... а заглубление по спирали нужно...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение Serg »

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

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение aaleksander »

Nick писал(а):С другой стороны теряется гибкость - многие параметры задаются параметрами Gкода, выражениями и прочими хитростями.
Приведи пример. Так-то параметры в виде словаря можно оформить и запихать туда все, что угодно.

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

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение Nick »

UAVpilot писал(а):Перед запуском слить все параметры в файлик и скормить его этой утилите (например с помощью скрипта-врапера)
Перед запуском чего?
просто параметр может иметь вид, скажем:
[#<depth> + 24]
aaleksander писал(а):Приведи пример. Так-то параметры в виде словаря можно оформить и запихать туда все, что угодно.
Может сделать интерпретатор команд Г-кода EMC, который будет "разворачивать" программу в набор обычных команд?
мм... у меня сейчас нет компа с рабочим Features, UAVpilot, можешь сделать на features Gкод простой многозаходной обработки скажем квадратика?
aaleksander
Мастер
Сообщения: 577
Зарегистрирован: 23 авг 2013, 18:04
Репутация: 118
Откуда: г. Ухта
Контактная информация:

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение aaleksander »

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

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение aaleksander »

Я что-то сразу на спираль зациклился. А тут же идея пошире.
Если Features будет "рулить" сторонней утилитой, то не вижу проблем. Утилита просто отдает G-код и делай с ним дальше, что хочешь.
Основная проблема - интерфейс для этой утилиты. Тупо брать из файла готовый шаблон?
Да! У тебя просто появится новая фишка (моя библиотека, например), у которой будет один параметр - имя py-файла.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение Serg »

Nick писал(а):Перед запуском чего?
просто параметр может иметь вид, скажем:
[#<depth> + 24]
перед запуском сторонней утилиты
Nick писал(а):мм... у меня сейчас нет компа с рабочим Features, UAVpilot, можешь сделать на features Gкод простой многозаходной обработки скажем квадратика?
Легко! Сделал вот так:
rect.xml
(5.51 КБ) 932 скачивания
Получил вот это: :wik:

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

Traceback (most recent call last):
  File "./features.py", line 905, in refresh
    f.write(self.to_gcode())
  File "./features.py", line 887, in to_gcode
    g,d =  self.refresh_recursive(iter)
  File "./features.py", line 866, in refresh_recursive
    gcode += f.process(f.attr["call"]) 
  File "./features.py", line 328, in process
    s = re.sub(r"(?ims)(<exec>(.*?)</exec>)", exec_callback, s)
  File "/usr/lib/python2.7/re.py", line 151, in sub
    return _compile(pattern, flags).sub(repl, string, count)
  File "./features.py", line 310, in exec_callback
    exec(s) in {"self":self}
  File "<string>", line 4
    g10 += "R[%s/2]"%(self.get_param_value("d"))  else ""
                                                     ^
SyntaxError: invalid syntax
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
aaleksander
Мастер
Сообщения: 577
Зарегистрирован: 23 авг 2013, 18:04
Репутация: 118
Откуда: г. Ухта
Контактная информация:

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение aaleksander »

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

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение Nick »

UAVpilot писал(а):перед запуском сторонней утилиты
для этого надо распарсить весь код целиком до места вызова этой утилиты... может можно как-то заставить интерпретатор linuxcnc это все сделать?...
вроде кажется все реальным, кроме того, что утилита будет менять Gкод...

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

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение aaleksander »

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

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение Nick »

Надо определиться, что первично: features или сторонняя библиотека.
Ну можно сделать враппер, как говорит UAVpilot, который по m100 схавает код, выделит нужное, запихнет в стороннюю библиотеку и пихнет назад ее вывод... и тогда все будут равны :)
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение Serg »

Nick писал(а):Хотя! а если сделаем так: в Gкоде делаем вызов сторонней команды через M100, со всеми вытекающими параметрами. Утилита берет на вход файл и место вызова, замеяет его на свой вывод и потом !внимание! говорит linuxcnc обновить Gкод! В итоге за несколько итераций можем получить чистый код без вызовов...
Как думаете, сработает?
Я ровно это и предложил, только про способ вызова не уточнял. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Ответить

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