Этот материал является вольным переводом английской справки по созданию постпроцессоров – система GPP Cimatron. Когда-то, еще в эпоху Cimatron IT я на скорую руку перевел данное руководство для собственных нужд. С тех пор прошло достаточно много времени, про Cimatron IT уже почти забыли, теперь царствует CimatronE и GPP2. Но постпроцессоры GPP еще используются. И вот разбирая старые записи был обнаружен этот документ. Я его чуть доработал и выкладываю здесь, может кому пригодиться.
Для того чтобы у вас в программе отображался необходимый постпроцессор, в вашей системе должны быть созданы три файла с одинаковым именем, но с разными расширениями: def, dex и exf. Имя файла будет отображаться в программе как название постпроцессора. Например: 2m43.def; 2m43.dex и 2m43.exf.
Файлы располагаются в папке [C:\Cimatron\CimatronE_100]\Program\IT\var\post. При назначении имен файлов лучше придерживаться формата: максимум 6 символов в латинской кодировке.
1.Файл с расширением def отвечает за описание форматов типов данных, основных параметров и ограничений станка, такие как символ разделителя дробной части, количество цифр целой/дробной части, коды для различных манипуляций и перемещений и пр.
2. Файл с расширением exf представляет из себя текстовый файл в котором программируется специальными командами вид выходного файла с кодами ЧПУ непосредственно для вашего станка.
3. Файл с расширением dex получается после компилирования файла exf.
Ниже рассмотрим более подробно работу с данными файлами.
(это мы будем работать с файлом с расширением def)
Важное примечание: создать файл с нуля это большая проблема, поэтому скопируйте уже существующий файл и измените его имя на устраивающее вас.
С Панели Управления из вкладки NC запустите утилиту Post Definition. В открывшемся окне отображаются имеющиеся у вас постпроцессоры (утилита может отобразить до 70 постпроцессоров). Подведите курсор (мышкой не получиться) к нужному вам постпроцессору и нажмите клавишу Enter. Нажатие клавиши Esc приведет к выходу из программы.
Далее вам необходимо пройтись по всем пунктам меню и установить необходимые параметры.
Примечание: Все переменные, которые имеют линейные единицы измерения, указываются в миллиметрах. Для преобразования в другие единицы измерения зайдите в раздел 2. PROGRAMMING MODE AND UNIT (Режим программирования и Ед.измерения) и в пункте 5 введите масштабный коэффициент для линейных единиц измерения.
Итак, ответы на вопросы…
Общие замечания: Величины в угловых скобках < > - это значения по умолчанию. Если имеется множественный выбор, то значения разделены запятыми, первое значение – значение по умолчанию. Если в угловых скобках нет значения, то значение не обязательно. Используя клавиши управления курсором вы можете перейти на другой вопрос не изменяя значения текущего. Клавиша TAB позволяет менять значение. В символьных пунктах могут использоваться кавычки " " для включения пробелов в код. У вас на экране отображаются текущие установленные значения.
1. TAPE INFORMATION (Информация о ленте)
Примечание: раньше программы выводились на так называемые перфоленты – это такая бумажная лента на которой каждый символ представлен комбинацией дырочек. В данном случае этот пункт можно трактовать с небольшой натяжкой как ограничение на длину программы.
Когда будет достигнуто максимальное количество блоков или достигнута максимальная длина ленты во время выполнения лента будет автоматически разрезана и появиться соответствующее сообщение. Лента не режется внутри строки.
1. Maximum no. of blocks in tape |
< > |
2. Maximum tape length (in meters) |
<60.0> |
3. Subroutines in separate files |
<YES,NO> |
Вот пример деления длинной программы на файлы и соответствующего сообщения:
2. PROGRAMMING MODE AND UNIT (Режим программирования и Ед.измерения)
Пункты 1 – 4 только для справки, реально значения не имеют. Каждое линейное значение (X, Y, Z, I, J, K) умножается на масштабный коэффициент из пункта 5.
1. Programming mode |
<ABSOLUTE,INCREMENTAL,BOTH> |
2. Code for absolute coordinates |
<G90> |
3. Code for incremental coordinates |
<G91> |
4. Length unit of measurement |
<METRIC,INCHES,BOTH> |
5. Factor for length units |
<1.0> |
6. Tool Start Point |
<TP HOME, 1ST PROC HOME> |
7. Coordinate orientation |
<MACSYS, 1st PROC, CUR PROC> |
Примечание:
6. Начальная точка инструмента: если выбрано TP HOME, то в качестве начальной точки инструмента будет
выбраны X_HOME, Y_HOME и Z_HOME. Если выбрано значение 1ST PROC HOME то координаты примут значения начальной точки процедуры.
7. Ориентация координат: если заданно 1st PROC то ориентация координат будет соответствовать ориентации координат в самой первой
процедуре. Если заданно CUR PROC то ориентация координат будет такой же как TP LIST.
Пример ниже иллюстрирует ввод масштабного коэффициента равного 0,1. Оригинальный способ масштабирования траектории…
3. FORMATS (Форматы типов переменных)
Имеется 18 типов переменных. Каждый тип имеет формат включающий 12 параметров по умолчанию. Если значение параметра подразумевает ответ YES (ДА) или NO (НЕТ), то 0- это NO (НЕТ), а 1 – это YES (ДА). Тильда (~) представляет собой любой символ кроме пробела. Пробел (пустое значение) указывает на то, что никакой символ или значение не будет вставляться в заданную позицию.
Примечание: По техническим причинам (чей косяк теперь никто не узнает) перепутаны значения форматов 11 и 12, то есть 11-я позиция соответствует формату 12, а 12-ая позиция – формату 11.
Существует также Символьный тип переменных. Он может назначаться вместо указанных здесь типов. Он не определяется в DFPOST, т.к. он имеет модальный статус по умолчанию (проще говоря, он не нуждается в специальном определении). Переменная символьного типа может содержать до 20 символов.
User_1 и User_10 – определяемый пользователем формат типа.
1. Coordinates |
<430000~-.101> |
2. Angles |
<430000~-.101> |
3. Feed |
<5 1001~~ 101> |
4. Spindle_speed |
<5 1001~~.101> |
5. Dwell |
<430000~~.101> |
6. Sequencing |
<5 1001~~ 101> |
7. Tool |
<4 0000~~.001> |
8. User_1 |
<430000~-.001> |
9. User_2 |
<430000~-.101> |
10. User_3 |
<430000~-.101> |
11. User_4 |
<430000~-.101> |
12. User_5 |
<430000~-.101> |
13. User_6 |
<430000~-.101> |
14. User_7 |
<430000~-.101> |
15. User_8 |
<430000~-.101> |
16. User_9 |
<430000~-.101> |
17. User_10 |
<430000~-.101> |
18. Real |
<355511~-.100> |
Позже при программировании в файле EXF вы можете создавать переменные с определенным здесь типом.
3.1 Format Options (Параметры формата)
1. Max. digits for integer part |
<4> |
2. Max. digits for fractional part |
<3> |
3. Min. digits for integer part |
<0> |
4. Min. digits for fractional part |
<0> |
5. Leading zeroes |
<NO,YES> |
6. Trailing zeroes |
<NO,YES> |
7. Character for the + sign |
< > |
8. Character for the - sign |
<-> |
9. Character for decimal point |
<.> |
10. Use decimal pt. for whole numbers? |
<YES,NO> |
11. Representation of value 0 |
<0> |
12. Modal value ? |
<YES,NO> |
Примечание:
Максимальное число цифр для целой и для дробной части должно быть меньше или равно 9. Для формата типа
Real (18 тип) максимальное количество цифр для целой и дробной части равно 14 и минимальное количество цифр целой и дробной части
равно 1 и эти настройки неизменны, т.е. данные параметры установленные здесь для типа Real значения не имеют.
Но все другие параметры имеют значения и для типа Real.
Рекомендуется определить формат типа REAL так: ….,YES,YES,_,.,YES,0.0,NO
Максимальное количество цифр:
целая часть – при превышении максимума число не создается и
выдаст сообщение об ошибке;
дробная часть – число цифр после десятичной точки.
Минимальное количество цифр:
Все места в которых нет цифр ( не '0') заполняются пробелами.
Ведущие/конечные нули:
Если параметр установлен на YES то взамен упомянутых выше пробелов будут записаны нули;
Хотя возможно определить переменную с 18 цифрами, только первые 14 ненулевые цифры значимы. Пример: Число 012345678.123456789 будет представлено как 12345678.123457.
Числа INTEGER должны быть определены с установкой YES для конечных нулей.
Что значит переменная Модальная/Немодальная объясняется здесь.
Ниже приведен пример определения переменных в файле EXF с предопределенными типами:
4. POSITIONING CODES (Код позиционирования)
1. Code for A axis |
<A> |
2. Code for B axis |
<B> |
3. Code for C axis |
<C> |
Пункт не используется в текущих версия. Поэтому не рассматриваем его.
5. MESSAGES AND INSERTS (Сообщения)
1. Max no. of messages |
< > |
2. Max no. of characters in messages |
<75> |
6. MACHINE PARAMETERS (Параметры станка)
Тут все понятно и без пояснений.
1. Code for clockwise spin |
<M3> |
2. Code for counterclockwise spin |
<M4> |
3. Code for spin stop |
<M5> |
4. Code for flood on |
<M7> |
5. Code for mist on |
<M8> |
6. Code for air on |
<M10> |
7. Code for through on |
<M11> |
8. Code for coolant off |
<M9> |
9. Cutter compensation off |
<G40> |
10. Cutter compensation left |
<G41> |
11. Cutter compensation right |
<G42> |
7. LINEAR MOTION (Линейные перемещения)
При достижении максимальных значений заданных в пунктах 3-6 будет выдано предупреждение, но обработка не будет прервана. Пункты 7-10 используются для расчета предполагаемого времени обработки в минутах в файлах отчета.
1. Code for rapid motion (FAST) |
<G0> |
2. Code for cutting/feed motion |
<G1> |
3. Maximum length of movement |
< > |
4. Maximum X dimension for part |
<10000.0> |
5. Maximum Y dimension for part |
<500.0> |
6. Maximum Z dimension for part |
<500.0> |
7. Machine speed for rapid motion in X (mm/m) |
<8000.0> |
8. Machine speed for rapid motion in Y (mm/m) |
<8000.0> |
9. Machine speed for rapid motion in Z (mm/m) |
<5000.0> |
10. Machine speed for table positioning (rpm) |
<11.0> |
11. User speed for rapid motion (MAX FEED) |
<YES,NO> |
12. User speed for rapid motion (MAX FEED) |
<15000.0> |
Примечание: Если в 11 пункте установлено значение YES, то:
1. в постпроцессоре преобразуются все ускоренные перемещения (G0) в перемещения с подачей (G1);
2. в появившемся пункте 12 вы можете задать значение скорости ускоренных перемещений (MAX FEED) устраивающей именно вас.
8. CIRCULAR MOTION (Круговые перемещения)
Если в пункте 3 установлено значение YES (ДА), то дуга делится на меньшие дуги, которые не пересекают границы квадранта (например, окружность разобьется на 4 дуги).
1. Code for clockwise motion is |
<G02> |
2. Code for counterclockwise is |
<G03> |
3. Angles limited to quadrant? |
<YES,NO> |
4. Tolerance for linear approximation is |
<0.1> |
5. Min. segments for linear approximation is |
<4> |
9. NURBS MOTION (Перемещения NURBS)
1. Code for nurbs motion |
<G6.2> |
2. Knot normal factor |
<YES,NO> |
3. Knot normal factor is |
<10000> |
4. Linear approximation |
<YES,NO> |
5. Tolerance for linear approximation |
<0.01> |
Примечание: если желаемый диапазон узлов лежит между 0 и 8, Коэф.нормали узлов: YES, значение коэф.:8000.
Если вы желаете получить вывод программы в линейных перемещениях, то установите Линейную аппроксимацию на YES и задайте допуск аппроксимации.
10. CANNED CYCLES (Предопределенные циклы)
В данном разделе вы можете задать код для специальных циклов предопределенных в вашей стойке ЧПУ на станке.
1. Code for high speed peck |
<G73> |
2. Code for left hand tapping |
<G74> |
3. Code for fine boring |
<G76> |
4. Code for spot drill |
<G81> |
5. Code for counter boring |
<G82> |
6. Code for deep hole peck |
<G83> |
7. Code for tapping |
<G84> |
8. Code for boring |
<G85> |
9. Code for boring + spindle stop |
<G86> |
10. Code for back boring |
<G87> |
11. Code for boring + dwell + manual out |
<G88>> |
12. Code for boring + dwell + feed |
<G89> |
13. Code for retract to initial point |
<G98>> |
14. Code for retract to clearance |
<G99> |
11. OUTPUT FILES (Выводимые файлы)
Здесь вы можете задать, какие еще дополнительные файлы кроме файла с кодами ЧПУ будут создаваться системой.
1. Tools file |
<YES,NO> |
2. Origins file |
<YES,NO> |
3. Messages file |
<YES,NO> |
4. Cycles file |
<YES,NO> |
5. PRINT1 file extension |
<pr1> |
6. PRINT2 file extension |
<pr2> |
7. PRINT3 file extension |
<pr3> |
8. PRINT4 file extension |
<pr4> |
9. PRINT5 file extension |
<pr5> |
10. PRINT6 file extension |
<pr6> |
11. PRINT7 file extension |
<pr7> |
12. PRINT8 file extension |
<pr8> |
13. PRINT9 file extension |
<pr9>> |
14. PRINT10 file extension |
<pr10> |
15. Run script file after Post? |
<NO/YES> |
Примечание: Если параметр ‘Messages file’ установлен на NO, то команда "PRINT” в файле EXF будет выдавать сообщения на экран, и файл сообщений создан не будет.Если в качестве расширения файлов PRINT1…10 вместо pr1…10 заданны пробелы то доп. файлы создаваться не будут даже при использовании команды PRINT1…10 в файле EXF.
12. POSTPR/EXTPST INTERFACE (Интерфейс POSTPR/EXTPST)
1. Ask for machine zero? |
<NO/MACSYS/1st ORIGIN> |
2. Ask for UCS order? |
<NO/YES> |
3. Ask to save a session? |
<NO/YES> |
4. Ask to send files to screen? |
<NO/YES> |
Пункты 3 и 4 в CimatronE значения не имеют.
Это вид окна при ‘Ask for machine zero?’ заданное как ‘NO’:
Это вид окна при ‘Ask for machine zero?’ заданное как ‘MACSYS’:
Это вид окна при ‘Ask for machine zero?’ заданное как ‘1st ORIGIN’
Это вид окна при ‘Ask for machine zero?’ заданное как ‘MACSYS’ и ' Ask for UCS order?’ установленным на YES.
После установки всех параметров нажмите ESC, на открывшейся странице установите параметр ‘Replace it?’ на значение YES и нажмите сочетание клавиш Ctrl+z для сохранения изменений и затем нажмите клавишу Enter для закрытия утилиты.
(теперь мы будем работать с файлом с расширением exf)
В данном файле программируется с помощью спец.языка, тот вид файла с кодами ЧПУ который нам необходим. Кроме того, вы можете вызвать до 50 внешних программ. Данный файл представляет собой текстовый файл с расширением exf. Вы можете создать файл с нуля или скопировать и переименовать имеющийся. Имя файла должно состоять не больше чем из шести латинских символов или цифр. Имя файла должно совпадать с именем файла с расширением def. Редактирование файла производиться простым текстовым редактором (не надо использовать редакторы типа Microsoft Word и ему подобные, используйте Блокнот).
После редактирования POST файла его надо откомпилировать (при корректном файле с расширением def). Для этого вызовите утилиту GPP и на запрос введите имя файла без расширения. Если компиляция пройдет нормально окошко примет вид:
Если в тексте файла обнаружатся ошибки, то выдастся соответствующее сообщение:
Надо будет исправить ошибки и повторить процедуру.
По корректному завершению в директории постпроцессоров должен появиться третий файл с нашим именем, но с расширением dex. Теперь все готово к созданию программ для станков ЧПУ.
Теперь более подробно рассмотрим структуру POST файла…
Первый раздел файла содержит определение различных переменных и их типов. Помните, мы определяли форматы типов на этапе создания DFPOST файла (файл с расширением def). В общем, надо определить все используемые переменные в самом начале файла, до его основной части.
Основная часть (тело) файла состоит из блоков, содержащих выполняемые утверждения (команды). Эти блоки отвечают за формирование строк траектории инструмента в конечном файле. Вы можете самостоятельно задать выполняемые утверждения (команды) в любом блоке и тем самым получать файл с кодами в том виде, который вас устроит. Это позволяет использовать постпроцессирование не только для создания кодов ЧПУ, но и для других специфичных целей.
Вы можете использовать строки с комментариями в POST файле, для облегчения понимания своих действий в будущем. Строки комментария отделяется символом * (звездочка) и они игнорируются при компиляции.
Пример типичной структуры файла приведен ниже:
Имена, порядок появления в файле и основная структура блоков установлена в системе Cimaton NC. Приведем список системных блоков (по алфавиту):
Блок | Описание |
AXIS CHANGE: |
Команды выполняться если изменилось количество осей обработки. Пример: Первая процедура Ruled_5X, а вторая PROFILE_2D. |
BEGINNING OF PROC: |
Команды выполняться в начале каждой процедуры. |
BEGINNING OF SUB: |
Команды выполняться в начале каждой подпрограммы. |
BEGINNING OF TAPE: |
Команды выполняться в начале каждой ленты или файла с кодами ЧПУ. |
BEGINNING OF TLPATH: |
Команды выполняться в начале каждой траектории инструмента |
CIRCULAR MOTION: |
Команды будут выполняться во время движения инструмента по радиусу. |
CONSTANT SPEED: |
Команды будут выполняться во время движения инструмента по радиусу, только для токарного станка. |
COOLANT: |
Команды будут выполняться, если изменились параметры охлаждения. |
CUTTER COMPENSATION: |
Команды выполняться при изменении компенсации инструмента. |
CYCLE: |
Команды будут выполняться если встретились циклы сверления. Примечание: Переменные цикла Сверления, которые не были определены используя опцию DRILL CYCLES в процедуре DRILL (Сверление) в CimatronE NC, не будут установлены (определены). |
DWELL: |
Команды выполняться при изменении задержки. |
END OF FILE: |
Команды выполняться в конце файла с программой. |
END OF PROC: |
Команды выполняться в конце каждой процедуры. |
END OF SUB: |
Команды выполняться в конце каждой подпрограммы |
END OF TAPE: |
Команды выполняться в конце ленты. |
END OF TOOL PATH: |
Команды выполняться в конце каждой траектории инструмента. |
FEED: |
Команды выполняться при изменении подачи. |
GROOVE CYCLE: |
Команды выполняться при цикле канавки |
INSERT WITH(SEQUENCING): |
Как ни пытался понять, что это значит, но так и не понял. |
LINEAR MOTION: |
Команды будут выполняться во время линейного движения инструмента. |
MESSAGE: |
Команды будут выполняться при встрече сообщения в траектории. |
NIBBLE: |
Команды будут выполняться при встрече сообщения в траектории, но если это сообщение не о
смене инструмента. |
NURBS MOTION: |
Команды будут выполняться во время nurbs (сплайнового) движения инструмента. |
ORIGIN CHANGE: |
Команды будут выполняться при смене начала. |
SPIN: |
Команды будут выполняться при изменении скорости или направления вращения шпинделя. |
START STRING:* |
Команды будут выполняться перед началом строки с линейным перемещением. |
START THREAD: |
Команды будут выполняться перед началом нарезания резьбы. |
STOP POINTS: |
Команды будут выполняться в STOP POINT (Точке останова). |
SUBROUTINE CALL: |
Команды будут выполняться при вызове подпрограммы |
SUBROUTINE RETURN: |
Команды будут выполняться при возврате в основную программы из подпрограммы. |
THREAD CANNED CYCLE: |
Команды будут выполняться во время цикла нарезки резьбы |
THREAD CYCLE: |
Команды будут выполняться во время простого цикла нарезки резьбы |
THREAD STEP: |
Также как выше, только для токарного станка. |
TOOL CHANGE: |
Команды будут выполняться при смене инструмента. |
TOOL CHANGE MESSAGE: |
При смене инструмента система сгенерирует сообщение о смене инструмента и/или определенное пользователем сообщение, и оно будет выведено командой OUTPUT. |
TRANSFORMATION: |
Перемещения из данного блока будут вызваны при новых трансформациях. |
WIRE: |
Команды будут выполняться в проволочной резке, когда заправлена проволока. |
Z SURFACE: |
Команды будут выполняться при изменении уровня сверления |
Кроме указанных блоков вы можете определить собственные блоки, так называемые ‘Блоки определенные пользователем’. Они описываются ниже.
По мере чтения строк из Траектории инструмента становиться доступным соответствующий блок. Команды в этом блоке выполняются используя данные траектории инструмента, для получения значений системных переменных и переменных определенных пользователем.
Логику процесса можно попробовать понять распечатав программный файл постпроцессора exf и файл траектории инструмента (TP_LIST) и сопоставив их.
Файл TP_LIST создается командой Утилиты ЧПУ -> Список Тр. Созданный файл распологается по умолчанию в папке [C:\Cimatron\CimatronE_100]\Data\NcLogFiles
В примере, приведенном ниже, TOOL CHANGE является именем блока. Следующие две строки – это тело блока, которое может быть изменено вами. Команды OUTPUT и SET_ON будут объяснены позже.
Пример: TOOL CHANGE:
OUTPUT ! "T" CURR_TOOL "M66";
SET_ON ALL_VAR;
Полный список системных блоков и переменных, связанных с каждым блоком можно посмотреть здесь.
Имена блоков служат разделителями между различными командами. В строке записывается только имя блока, при условии что не используются классификаторы и сразу за именем должен следовать символ : (двоеточие). Программа не чувствительна к регистру написания имен. Хотя позиция строк следующих за именем блока не влияет на выполнение программы, рекомендуется делать отступы для удобочитаемости текста
Классификаторы позволяют уточнить критерий выполнения команд в блоке. Например в приведенном ниже примере команда ‘Keep Cutcom_off;’ в блоке ‘Cutter Compensation:’ будет выполнена только если компенсация Выкл.(Off) на момент выполнения блока.
Пример: Cutter Compensation: Coff:
Keep Cutcom_off;
Одноименные блоки с различными классификаторами могут использоваться в программе свободно. Классификатор должен стоять в той же строке что и имя блока, после имени блока и заканчиваться двоеточием.
Доступные классификаторы приведены ниже:
Блок | Классификатор | Условие выполнения |
BEGINNING OF TAPE: |
aftercut: |
Лента была слишком длинная и была разрезана. Срабатывает перед началом нового сегмента ленты, но не перед началом первого сегмента. |
CIRCULAR MOTION: |
tangretr: |
Касательный отход при круговом движении |
ctangappr: |
Касательный подход при круговом движении |
|
CUTTER COMPENSATION: |
coff: |
Компенсация инструмента выключена |
CYCLE: |
off: |
Цикл сверления выключен |
on: |
Цикл сверления включен с отходом в пл.безопасности |
|
toinit: |
Цикл сверления включен с отходом в начальную плоск. |
|
END OF TAPE: |
beforecut: |
Лента была слишком длинная и была разрезана. Срабатывает после конца сегмента ленты, но не в последнем сегменте. |
LINEAR MOTION: |
3d: |
Линейное перемещение параллельно оси Z |
fast3d: |
Линейное перемещение параллельно оси Z на максимальной скорости |
|
fast: |
Линейное перемещение на максимальной скорости |
|
fastfull3d: |
Линейное перемещение на максимальной скорости, которое затрагивает координаты X, Y и Z. |
|
full3d: |
Линейное перемещение, которое затрагивает координаты X, Y и Z. |
|
nibbling: |
Линейное перемещение при NIBBLING установленном на 'on' (это для Вырубки) |
|
normappr: |
Линейное движение - Подход к контуру по нормали |
|
normretr: |
Линейное движение - Отход от контура по нормали |
|
tangappr: |
Линейное движение - движение перед касательным подходом к контуру. |
|
ltangretr: |
Линейное движение - движение после касательного подхода к контуру. |
|
NURBS MOTION: |
3d: |
Линейное перемещение параллельно оси Z |
fast3d: |
Линейное перемещение параллельно оси Z на максимальной скорости |
|
THREAD CANNED CYCLE: |
finish: |
Выполняются финишная обработка |
spring: |
Выполняются спиральные движения инструмента |
|
TOOL CHANGE: |
first: |
Первая смена инструмента |
last: |
Последняя смена инструмента |
|
WIRE: |
no: |
Перемещения при отрезанной проволоки (Только для проволочной электроэрозии) |
Z SURFACE: |
lower: |
Изменение в Z к более низкому уровню (только для перемещений сверления) |
Команды в блоке с классификатором будут выполнены, если будет выполнено условие, накладываемое данным классификатором. Чтобы гарантировать выполнение команд блока, даже в случае если ни одно из условий классификатора не встречено, рекомендуем включать в программу тот же блок, но без классификатора, как в примере приведенном ниже. Команда KEEP объясняется здесь.
Пример: CUTTER COMPENSATION: Coff:
KEEP Cutcom_off;
CUTTER COMPENSATION:
KEEP Cutcom_on;
Вы можете создать собственные блоки. Имя блока должно присваиваться используя правила синтаксиса системных блоков (имя должно располагаться на отдельной строке и заканчиваться двоеточием). Затем при выполнении постпроцессора, если в траектории встретиться имя данного блока, то выполняться команды заданные в блоке. Имя блока можно вставить в траекторию посредствам вставки сообщения.
Пример: MyBlock:
OUTPUT "Example of output" ;
Признаться у меня не получилось заставить заработать блоки, определенные пользователем.