AZJIO |
|
Темы:
48
Сообщения:
591
Участник с: 05 января 2021
|
Некоторое время стало интересно делать посимвольные анализаторы кода. Поэтому один из них css_tidy. Может "сжать" файл удалив лишние пробелы или разжать, а также коррекция, когда разжатый файл просто требует подровнять отступы. Скачать upload.ee, яндекс |
wau |
|
Темы:
170
Сообщения:
1254
Участник с: 11 октября 2013
|
Вот где было бы реально полезно наладить чистку, так это в файлах g-code. Выглядит это примерно так -
Суть в том, что в каждой последующей строке нет нужны повторять то, что задано в предыдущей. Т.е. если - G1 F[#<_pb>] X-1996.033589 Y387.277499 Z16.790000 G1 F[#<_pb>] X-1988.621953 Y394.689134 Z16.790000 G2 F[#<_pb>] I-3.005211 J-34.573228 X-1984.699876 Y394.121083 Z16.790000 то в сокращенном виде это G1 F[#<_pb>] X-1996.033589 Y387.277499 Z16.790000 X-1988.621953 Y394.689134 G2 I-3.005211 J-34.573228 X-1984.699876 Y394.121083 В случае сотен тысяч, а то и нескольких миллионов строк, это имеет значение. Что-то я в сочиненном срипте силами seed делаю (в основном форматирование отступами, числа заменяю переменными и т.п.), но не это. Скрипт запускаю сразу из Geany, как скрипт команды "сборки проекта". |
AZJIO |
|
Темы:
48
Сообщения:
591
Участник с: 05 января 2021
|
wau1. Каков размер файла? 2. Покажи скрипт с seed 3. Сколько времени отрабатывает твой скрипт? Если есть рабочий вариант есть ли смысл что-то менять? |
wau |
|
Темы:
170
Сообщения:
1254
Участник с: 11 октября 2013
|
Мне приходится разбивать файлы из-за их большого размера. Самый большой был ок 40мб 717тыс строк. Он имел множественные фрагменты вида -
Конечно, все это ужасное число строк человек, знающий Питон мог бы заменить одной строкой - https://forum.freecad.org/viewtopic.php?t=89684 Скрипт примитивен, обеспечивает мне читаемость кода вставками табуляций, что дает "сворачивание блоков" в vim & geany (без всяких там типа Электрон), а также замену явно заданных "особых значений" на переменные. Скрипт таков -
Скрипт даже на больших файлах выполняется очень быстро. |
AZJIO |
|
Темы:
48
Сообщения:
591
Участник с: 05 января 2021
|
G1 F[#<_pb>] X-626.921907 Y571.388056 Z3.499990из этих данных я понял, что удалив пробелы в начале строк далее идёт всегда "G" далее идет число от 0 до 9, далее F[....] удаляем его по наличию F и квадратных скобок (если число после G повторяется). Далее до конца строки оставляем как есть. То есть запомнить число после G состоящее из одной цифры и по наличию такого же числа удаляем от G до закрывающей квадратной скобки "]". Всё верно? |
wau |
|
Темы:
170
Сообщения:
1254
Участник с: 11 октября 2013
|
Скажу больше. Точность 6 знаков после запятой явно избыточная, программе, создающей эти строки, даже явно указано - точность до третьего знака. А все равно так. Так что корректное округление тоже существенно снизит вес файла и занимаемое ОЗУ. Вот пробелы\табулции в начале трогать не надо - это для читаемости, структурирования кодов, я их добавляю специально и отдельно. После G всего 4 варианта - 0 - быстрое перемещение 1 - рабочая подача по прямой 2 - рп дугой ЧС 3 - рп дугой прЧС F (скорость движения) в исходном тексте идет с числами, скобки и переменные, взде, где только возможно - это уже результат работы моего скрипта. Обычно вид F100.000000 и т.п. (мм/сек). Числа допустимо оборачивать в прямоугольные скобки, внутри которых могут быть вычисления и переменные - это удобно для адаптации программ под конкретные детали заготовок (число, толщина, ширина и пр) и материалы (от этого зависят скорости подча у F и шаг по высоте Z) |
chronos |
|
Темы:
5
Сообщения:
654
Участник с: 15 марта 2012
|
Это принтер или ЧПУ станок? |
wau |
|
Темы:
170
Сообщения:
1254
Участник с: 11 октября 2013
|
ЧПУ. |
chronos |
|
Темы:
5
Сообщения:
654
Участник с: 15 марта 2012
|
wauЭто тема интересная! Если учесть что подавляющее число станков работает на модулях Siemens, а там WinCE и никак не linux. |
wau |
|
Темы:
170
Сообщения:
1254
Участник с: 11 октября 2013
|
Во "взрослой" промышленности - возможно, и то, думаю, китайское влияние разбавило влияние Сименса. А в других случаях сильно распространено LinuxCNC, опенсорс и пр. Встречается и во "взрослых" решениях, только с другими "мордочками". Но здесь и сейчас мы не о том. Тем не менее, ж-код теоретически стандартизирован. Да, служебные команды тип отступов, смен инструментов и пр. имеют, могут иметь выраженные "фирменно-проприетиарные" отличия, но львиную долю кода представляют собой стандартные команды-указатели "кдуа и как идти с какой скоростью". О них и речь. |