Страница 12 из 15
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 07 апр 2012, 14:04
Nick
Извини, что отвечаю поздно, вчера пил вино и решил оставить этот вопрос на сегодня

.
В общем я думаю надо ковырять функцию
Код: Выделить всё
def calculate_angle(a, current_a) :
return min(
[abs(a-current_a%pi2+pi2), a+current_a-current_a%pi2+pi2],
[abs(a-current_a%pi2-pi2), a+current_a-current_a%pi2-pi2],
[abs(a-current_a%pi2), a+current_a-current_a%pi2])[1]
я так понимаю надо убрать -current_a%pi2, т.е. убрать вычитание полных оборотов.
Посмотри, толькл чтобы правильный indent был.
Код: Выделить всё
def calculate_angle(a, current_a) :
return min(
[abs(a-current_a%pi2+pi2), a+current_a+pi2],
[abs(a-current_a%pi2-pi2), a+current_a-pi2],
[abs(a-current_a%pi2), a+current_a])[1]
ЗЫ я тоже пересел на python с php, и несказанно этому рад

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 07 апр 2012, 21:29
NightV
нифига не получается
как ты сказал убрать -current_a%pi2 убирал, а толку 0 потому-что current_a всегда 0 , я так понял он используется только в арках
нагородил огород что мол если а > 3.1 (или наоборот) то в код вставлялась строка компенсации, вроде заработала.
потом попробовал в рисунке повернуть квадрат под 45гр..... в коде получилась фигня...
понял что с прямыми линиями справится и сам ЕМС при включеном WRAPED_ROTARY так-как Gcodetools на прямых не выходит за рамки -+360гр.... попробовал, ИДЕАЛЬНО!!!
тоесть при WRAPED_ROTARY он чхать хотел что у меня +180 или 180, и если последнее положение было -180 а следующее
+90 но он НЕ едет через ноль, а едет к 90 по короткому пути, какбутто уму сказали -270
а вот попробовал теперь круг

выхожу за рамки 360гр...
теперь буду ковырять арки Gcodetools

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 08 апр 2012, 22:45
NightV
неблагодарное это занятие
wrapped_rotary снова преподнес сюрприз... тоесть выявилось неизвестное мне свойство
оказывается для него нет понятия -360 и +360гр, он всегда в позиции от 0-360, а -+ это указание в какую сторону вращаемся до нужного положения
тоесть если указали
40гр - встал в 40
если указали
41 - подвинулся на 1 градус в +
НО если опять указать 40 (по логике чтоб вернулся на 1) он поедет не обратно а в
+ и промотает 359гр
тоесть если хотим чтоб встал обратно в 40 нужно указать
-40
вот так-та.... может кому пригодится данная инфа, а я завязываю с эксперементами

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 09 апр 2012, 12:14
Nick
Попробую вечером разобраться...
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 10 апр 2012, 23:08
NightV
вот такой код получился для компенсации набежавших оборотов
сам понимаеш что wrapped_rotary выключен
Код: Выделить всё
if si[1] == 'end':
if current_a < 0 : a= round(current_a%-pi2,4)
else : a= round(current_a%pi2,4)
if fabs(a) > pi:
a= fabs(a)
a= pi2-a
if fabs(current_a%pi2) > pi: g += "G10 L20 P0 A%s"% degrees(a) + "\n"
g += go_to_safe_distance + tool['gcode after path'] + "\n"
return g
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 10 апр 2012, 23:35
NightV
мучил со спиралью... на выходе набегало до 1200гр... компенсация выставляет до +-180гр (что ближе к 0)
завтра еще помучаю, но на первый взгляд вроде работает
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 11 апр 2012, 01:05
Nick
Я вот что думаю, может сделать код для wrapped, просто добавлять - или + к значению угла? Извиняюсь, что до сих пор не решил проблему. Что-то никак не сесть за нее, все из рук прямо валится....
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 11 апр 2012, 01:45
NightV
я тоже так решил.... вроде даже получилось.. и вот когда попробовал нарисовать спираль, круг и пару разных завитушек понял что "приплыли"

разные закавыки стали вылазить с разных сторон, понял что мне пока не решить проблему настолько координально, нет опыта программирования, да и времени тоже угрохал прилично... решил пойти другим путем и вроде удачно
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 11 апр 2012, 10:26
Nick
А в какой системе координат ты работаешь? C g92 не проще будет?
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 11 апр 2012, 11:53
NightV
мы не ищем легких путей!!!

да и как мне кажется, так будет правельней
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 11 апр 2012, 12:12
NightV
G10 L20
P0 если ты помниш, говорит о том что работать в "текущих" системах координат
хотя может ты и прав... компенсация срабатывает только в случае если мы закончили фигуру с разворотом оси больше +-180гр, тоесть срабатывает довольно часто, и использовать G92 как "временную" которая часто меняется более разумно, чем лесть в "общую" систему координат
кстате после тестов может воткнуть ее в пост-процесор в следующем дев-релизе?
очень удобно... теперь даже лого АУДИ (четыре круга подряд) рисуется без отматываний ВООБЩЕ
вот один из кругов
G00 Z 3.0000
G00 X 44.3487 Y 24.7240 A
-90.0009 (Turn knife)
G01 Z -0.6000 F 150.0000(Penetrate)
G02 X 38.7259 Y 11.3402 Z -0.6000 I -18.7400 J -0.0000 F 1500.0000 A -135.5777
G02 X 24.9558 Y 5.7175 Z -0.6000 I -13.7701 J 14.0500 A -180.0017
G02 X 11.1857 Y 11.3402 Z -0.6000 I 0.0000 J 19.6728 A -224.4257
G02 X 5.5629 Y 24.7240 Z -0.6000 I 13.1172 J 13.3838 A -270.0026
G02 X 11.1857 Y 38.1078 Z -0.6000 I 18.7399 J 0.0000 A -315.5794
G02 X 24.9558 Y 43.7306 Z -0.6000 I 13.7701 J -14.0500 A -360.0034
G02 X 38.7259 Y 38.1078 Z -0.6000 I -0.0000 J -19.6728 A -404.4274
G02 X 44.3487 Y 24.7240 Z -0.6000 I -13.1172 J -13.3838 A
-450.0043
G10 L20 P0 A
-90.0002
G00 Z 3.0000
пара микрон не считается

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 11 апр 2012, 12:25
Nick
А ведь точно, наверное проще было бы написать пост процессор...
Тупо шерстить весь Gкод, запоминать параметр A и как только находим строчку конца subpath то добавляем "G92 A%f" %(last_a%2*pi*a_scale)
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 12 апр 2012, 12:55
Nick
Сделал пост-процессор remove_a_turns(ascale=180/pi); т.е. если у тебя ось а в градусах можно просто написать remove_a_turns();.
Надо бы его по-тестировать, для кругов он сработал...
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 13 апр 2012, 17:30
NightV
работает
правда не совсем понял зачем писать "subpath end" а затем его искать
может просто вместо g += "(Subpath end)\n" поставить вызов процедуры
ну.. "хозяин барин" тебе виднее
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 13 апр 2012, 17:58
Nick
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 13 апр 2012, 18:26
NightV
кстате да!!! не меняет!!! я это сразу заметил, спасибо

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 13 апр 2012, 18:29
Nick
Да там всего 1 строчку добавить надо было, почему то мы сравнивали с предыдущим инструментом, но не обновляли его

... Случайно наткнулся

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 17 апр 2012, 19:50
NightV
Коль, почему может делать такие "довороты"?
G03 X 196.7254 Y 314.6251 Z -0.6000 I -243.8849 J -34.6314 F 800.0000 A 103.5985
G02 X 192.4161 Y 337.9218 Z -0.6000 I 211.7077 J 51.2079 A 97.3632
G01 A 94.1789 (Turn Disk)
G03 X 189.5853 Y 369.4030 Z -0.6000 I -940.5768 J -68.7088 A 96.0993
G02 X 188.3027 Y 400.9844 Z -0.6000 I 238.8157 J 25.5154 A 88.5536
G01 A 81.9093 (Turn Disk)
G03 X 189.6031 Y 411.0928 Z -0.6000 I -379.7054 J 53.9828 A 83.4319
G02 X 191.1499 Y 421.2917 Z -0.6000 I 142.8931 J -16.4547 A 79.3219
G02 X 193.6440 Y 431.1601 Z -0.6000 I 81.7999 J -15.4249 A 72.3114
G02 X 197.8360 Y 440.5809 Z -0.6000 I 44.7759 J -14.2806 A 59.7152
G01 A 59.7714 (Turn Disk)
G02 X 201.2108 Y 444.5899 Z -0.6000 I 13.2178 J -7.7020 A 40.0472
G02 X 205.8390 Y 447.0838 Z -0.6000 I 8.3200 J -9.8990 A 16.5888
игры с "Biarc interpolation toleance" и "Maximum splitting depth"
на эти "довороты" не влияют никак

"Minimum arc radius" в нуле
кстате это не "чистый" поворот, это волнистая, плавная линия (бедро тетки из файла), на кругах, спиралях их нет
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 17 апр 2012, 21:13
Nick
Бедра у этой тетки угловатые

.
В инкскейпе все потенциальные углы отображаются ромбиком, гладкие узлы - квадратиком, узлы кривой спиро - кружком. Попробуй выделить узел и понажимать на него с Ctrl.
Вот три скриншота, слева оригинальное бедро тетки, справа копия и скругленный узел, на последнем фото проглядывается угол:
(там сильное увеличение, тонкий контур и я поставил их ближе)
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 17 апр 2012, 21:20
Nick
Минимум arcradius не меняй - EMC2 при дуге с радиусом меньше 0.02мм не работает. Разбиение - это то насколько частей может разбиться один сегмент кривой безье, чтобы увеличить точность. На плавность контура это не влияет, т.е. можешь для декоративного стекла оставить чуть-ли не 0. Но лучше что-то не меньше 2, иначе вот такие контуры будут плохо преобразовываться:
по-очереди разбиения 0,1,2,3,4: