Страница 2 из 9

Re: MyGUI

Добавлено: 09 дек 2012, 13:42
nkp
ошибка отступа(питон очень ревностно следит за отступами):
(для просмотра содержимого нажмите на ссылку)
Рабочий стол 1(001).jpg (4168 просмотров) <a class='original' href='./download/file.php?id=10000&sid=689227e58d1c3f3ca42d18118326c040&mode=view' target=_blank>Загрузить оригинал (252.17 КБ)</a>

Re: MyGUI

Добавлено: 09 дек 2012, 13:57
vmarkiv
Все равно , при откорректированой axis и
С версией
nkp писал(а):то модуль rev.py такой:
и версией вставки файла из сообщ 545 ошибки такие Print file information:

Can not find -sec LINUXCNC -var NML_FILE -num 1
Can not find -sec EMC -var NML_FILE -num 1
File "rev.py", line 2
import hal, time,linuxcnc
^
IndentationError: unexpected indent
core_stepper.hal:54: python exited without becoming ready
9886
PID TTY STAT TIME COMMAND
Stopping realtime threads
Unloading hal components

Re: MyGUI

Добавлено: 09 дек 2012, 13:59
vmarkiv
файл

Re: MyGUI

Добавлено: 09 дек 2012, 14:06
nkp
теперь запускаем любую (свою) конфигурацию
( EDM1 в топку)
пробовал в Sherline3Axis

Re: MyGUI

Добавлено: 09 дек 2012, 14:23
vmarkiv
Играми с форматом rev.py удалось запустить приложение , СПАСИБО

Re: MyGUI

Добавлено: 09 дек 2012, 14:29
vmarkiv
НО , на линейных перемещениях возвращается по траектории , а на круговых напрямик в начало кола

Re: MyGUI

Добавлено: 09 дек 2012, 15:14
nkp
да это будет работать только так
(дуги делать линейными перемещениями)
-------------
дальше будем углубляться в емс - может что поуниверсальней наваяем ;)

Re: MyGUI

Добавлено: 09 дек 2012, 15:23
vmarkiv
В Mach3 также не смогли сделать правильный отьезд по кривой , на машинах плазменной резки я заставляю операторов создавать рисунки в NURBS , при преобразованиях получается линейно-кусочная аппроксимация и все работает на УРА . NPK , спасибо за работу

Re: MyGUI

Добавлено: 09 дек 2012, 15:24
nkp
вообще,по поводу отхода в связке емс- EDM вариантов в голове много
самый оптимальный для себя вижу в написании постпроцессора для емс
и тогда все вопросы снимутся
постпроцессор на лету будет обрабатывать ж-код , так что лишних телодвижений делать не придется

Re: MyGUI

Добавлено: 09 дек 2012, 15:26
nkp
vmarkiv писал(а):В Mach3 также не смогли сделать правильный отьезд по кривой
а мы постараемся все таки сделать! :) :

Re: MyGUI

Добавлено: 09 дек 2012, 15:31
vmarkiv
nkp писал(а):вообще,по поводу отхода в связке емс- EDM вариантов в голове много
самый оптимальный для себя вижу в написании постпроцессора для емс
и тогда все вопросы снимутся
постпроцессор на лету будет обрабатывать ж-код , так что лишних телодвижений делать не придется
В постпроцессоре для SheetCam я использую только G1
nkp писал(а):
vmarkiv писал(а):В Mach3 также не смогли сделать правильный отьезд по кривой
а мы постараемся все таки сделать! :) :
И это правильно !!!

Re: LinuxCNC реверс Gкода

Добавлено: 09 дек 2012, 23:45
Nick
Nkp, так в данном случае реверс Gкода делается или нет? Или просто каждый раз при достижении конца строки выполняется предыдущая строка?

Re: LinuxCNC реверс Gкода

Добавлено: 09 дек 2012, 23:52
nkp
Nick писал(а):Или просто каждый раз при достижении конца строки выполняется предыдущая строка?
да - нажимаем первую кнопку - стоп ,выполнить предыдущую строку
нажимаем вторую кнопку - стоп ,выполнить следующую строку
(может тема не точно названа ?? :) переименуем...)

Re: LinuxCNC реверс Gкода

Добавлено: 10 дек 2012, 00:32
Nick
Т.е. просто выполняем пошагово предыдущие строки и это для линейной интерполяции равносильно реверсу?

Re: LinuxCNC реверс Gкода

Добавлено: 10 дек 2012, 00:53
nkp
Nick писал(а):Т.е. просто выполняем пошагово предыдущие строки и это для линейной интерполяции равносильно реверсу?
ну да ;)

Re: LinuxCNC реверс Gкода

Добавлено: 10 дек 2012, 10:34
Nick
Т.е. для дуг нам не хватает только координат центров?

Re: LinuxCNC реверс Gкода

Добавлено: 10 дек 2012, 10:58
nkp
Nick писал(а):Т.е. для дуг нам не хватает только координат центров?
в принципе - да
но решить это можно (наверно)только встроенным в скрипт постпроцессором
который будет выполнять налету несколько функций:
1.парсить код на предмет содержания строк(ведь не кождая строка есть содержательный для движения кадр)
2.прописывать закомментированные дополнительные строки для отхода (касаемо дуг)
3. дополнительные параметры(например скорость подачи,для EDM вкл-выкл напряжение на электроде ,и т.д.)
в общем нужно попробовать "поиграться" с включением-выключением set_block_delete.

Re: LinuxCNC реверс Gкода

Добавлено: 10 дек 2012, 13:29
Lexxa
Может просто писать координаты в буфер, а потом их отработать

Re: LinuxCNC реверс Gкода

Добавлено: 10 дек 2012, 14:39
Nick
В том то и дело, что штатными средствами это не просто.
В данном случае nkp использует маленький хак - просто выполняет программу покадрово, но не с текущего кадра, а с предыдущего. В итоге все изменение получается в несколько строк.

Re: LinuxCNC реверс Gкода

Добавлено: 12 дек 2012, 00:05
nkp
пробы касательно #37:
https://www.youtube.com/watch?v=eTLs89YPtck
еще раз алгоритм:
в функцию открытия ж-кода в emc добавляем ПП
очень примерно такой ;) :
(для просмотра содержимого нажмите на ссылку)

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

#!/usr/bin/python
# -*- coding: utf-8 -*-
import  time
from subprocess import Popen, PIPE

a= Popen('halcmd getp minmax.0.max ', shell=True, stdout=PIPE).stdout.read()
x=int(a)-1
f = open(r'/home/nkp/emc2/nc_files/15.ngc')
lines = f.readlines()
f.close()
f = open(r'/home/nkp/emc2/nc_files/12.ngc','a')
f.write("F60 G20 G61 G17\n")
f.close()
while x>0 :
        if lines[x].find('G2')!=-1  and lines[x-1].find('G1')==-1 : # если текущая строка содержит G2 а предыдущая не содержит G1
                f = open(r'/home/nkp/emc2/nc_files/12.ngc','a')
                r=lines[x]
           a=r.split('R')
           w=a[1]
           z=lines[x-1].replace('G2','G3')
           a=z.split('R')
           ww=a[0]
           f.write(ww+'R'+w)
           x=x-1
           f.close()

        elif lines[x].find('G3')!=-1  and lines[x-1].find('G1')==-1 :# если текущая строка содержит G3 а предыдущая не содержит G1
                f = open(r'/home/nkp/emc2/nc_files/12.ngc','a')
                r=lines[x]
           a=r.split('R')
           w=a[1]
           z=lines[x-1].replace('G3','G2')
           a=z.split('R')
           ww=a[0]
           f.write(ww+'R'+w)
           x=x-1
           f.close()
   elif lines[x].find('G2')!=-1  and lines[x-1].find('G1')!=-1  : # если текущая строка содержит G2 а предыдущая содержит G1
                f = open('/home/nkp/emc2/nc_files/12.ngc','a')
           a=lines[x].split('R')
           w=a[1]
           print w
           r=lines[x-1].replace('G1','G3')
           ww=r.replace ('\n', '')
           print ww
           f.write(ww+'R'+w)
           x=x-1
           f.close()
           
        elif lines[x].find('G3')!=-1 and lines[x-1].find('G1')!=-1 : # если текущая строка содержит G3 а предыдущая содержит G1
                f = open('/home/nkp/emc2/nc_files/12.ngc','a')       # открываем файл на добавление
           a=lines[x].split('R')   # разделяем строку lines[x] по символу 'R' в список
           w=a[1]                  # берем из разделения второй элемент [1] (нумерация с нуля)
           r=lines[x-1].replace('G1','G2') # меняем G1 на G2 в строке lines[x-1] 
           ww=r.replace ('\n', '')  # убираем  в конце перенос строки
           f.write(ww+'R'+w)   # пишем в файл 
           x=x-1
           f.close()
        elif lines[x].find('G1')!=-1  : # если текущая строка содержит G1 
                f = open(r'/home/nkp/emc2/nc_files/12.ngc','a')
           f.write(lines[x])
           x=x-1
           f.close()

        else :
                print x     # проверка отработки условиями всех строк
                x=x-1
                f.close()
                
f = open(r'/home/nkp/emc2/nc_files/12.ngc','a')
f.write("M2")
f.close()
он (в том числе) перед каждым кадром(строкой) с дугой вставляет закомментированный кадр(строку) с отходом
пример из видео:

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

 f50
/g3 x0 y0 r20
g2 x40 y0 r20
m2
а в скрипте добавляем в наши функции обр кнопок:

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

###############################################################################################rev
    def zoomin(event=None):
        c.set_block_delete(0)
	s.poll() 
        c.abort()
	c.wait_complete()
	c.auto(linuxcnc.AUTO_RUN , (s.motion_line-1))

    def zoomout(event=None):
        c.set_block_delete(1)
	s.poll() 
	c.abort()
	c.wait_complete()
	c.auto(linuxcnc.AUTO_RUN , (s.motion_line+1))
##################################################################################################end_rev
то есть при команде реверса мы снимаем комментарии со строк ж-кода
а при "прямом" ходе опять их комментируем
все это касается одной строки , размер перемещения в которой может быть небольшим
но мне кажеться в паре с адаптивной регулировкой подачи даже этого будет достаточно для EDM
(тут нужно проверять практикой)