Пишем свои макросы в PowerMill - начало

Опубликовано Master 10.03.2021 0 Комментарии Изучаем PowerMill,

 

Здравствуйте, всем))

Сегодня продолжим изучение знакомство с макросами в PowerMill.

И так, гораздо более мощным способом создания макросов станет собственно ручное его написание.

Макросы позволяют:

  • Создавать выражения.

  • Использовать выражения, чтобы контролировать поток макросов.

  • Использовать ряд реляционных и логических операторов.

  • Оценивать выражения.

  • Присваивать значения для переменных и параметров, используя операции присваивания.

В меню Помощь > Переменные > Справка > Functions вы найдете список всех стандартных функций, которые вы можете использовать в макросах.

 

 

Команды для макросов

Во время интерактивного использования PowerMILL, каждое нажатие пункта меню или ввод данных в диалогах, посылает команды в программу. Эти команды необходимо добавить в файл макроса, чтобы управлять PowerMILL-ом через макрос.

Следующий пример покажет как:

  • Найти команды PowerMILL для добавления их в макрос.

  • Разместить их в текстовом редакторе, например в WordPad.

  • Отобразить макрос в Проводнике Чтобы создать макрос

 

 

  1. На панели меню выберите Вид > Панели инструментов > Командное окно, чтобы открыть командное окно.

  2. Выберите Инструменты > Включить эхо на панели меню, чтобы отображать в командном окне выполняемые команды.

 

 

 

3.Для того чтобы увидеть команды, необходимые для  вычисления заготовки:

  1. Нажимаем кнопку Заготовка на Главной  панели инструментов.

  2. Откроется диалог Заготовка, нажмите Вычислить, и затем нажмите Принять

 

 

Сами команды выводятся в квадратных скобках. На символы \r не обращаем внимание. Необходимые команды это: FORM BLOCK, EDIT BLOCK RESET и BLOCK ACCEPT.

 

 

4. Откройте WordPad, и введите в нём эти команды.

Команды не чувствительны к регистру. То есть FORM BLOCK тоже самое что и Form Block и тоже самое что и foRm bLock.

5. Сохраните этот файл как iniblock.mac. Макрос добавится в дерево макросов.

 

 Подробнее в прошлой статье. Вот здесь.

 

 

 

Добавление комментариев к макросу

 

Рекомендуем сразу взять за правило оставлять комментарий перед каждым макросом или командой. Так вы не запутаетесь в своем же коде и сможете быстрее находить нужную строку. Комментарий – это текстовая строка, которая не влияет на работу макроса, но может помочь другим понять макрос, при его исследовании.

Комментарии начинаются с //. Каждая строка комментируется по "новой" независимо от пунктуации.

Например:

// Этот макрос импортирует модель, создаёт заготовку

// и шаровую фрезу.

Также хорошим правилом будет добавление комментариев, объясняющих, что будет делать каждый раздел макроса. Это может быть очевидным при написании макроса, но впоследствии могут возникнуть трудности с пониманием. Хорошим правилом будет и добавление комментариев, описывающих команды, перед самой командой:

// Очистить все черновые границы MACRO Clean 'boundary\Roughing'

Ещё одним способом использования комментариев является временное отключение команд в макросе. При отладке или написании макроса, желательно записывать только один шаг за один раз и перезапускать макрос после каждого изменения.

Если макрос содержит длительные расчёты, или пересоздание траекторий, вам возможно захочется временно закомментировать предыдущие части макроса, пока будут проверяться следующие части. Например:

// Импортировать шаблон траектории

// IMPORT TEMPLATE ENTITY TOOLPATH "Drilling/Drilling.ptf"

 

 

Пример создания  макроса

Следующий пример покажет, как использовать язык макропрограммирования PowerMILL для создания макроса, который выведет слова из песни-считалки

10 green bottles sitting on the wall 10 green bottles sitting on the wall

And if 1 green bottle should accidentally fall There will be 9 green bottles sitting on the wall

9 green bottles sitting on the wall 9 green bottles sitting on the wall

And if 1 green bottle should accidentally fall There will be 8 green bottles sitting on the wall

И так далее до последнего четверостишья:

1 green bottle sitting on the wall 1 green bottle sitting on the wall

And if 1 green bottle should accidentally fall There will be 0 green bottles sitting on the wall.

Основные шаги:

  1. Создание основного макроса.

  2. Добавление переменных.

  3. Добавление циклов.

  4. Выполнение макроса с аргументами.

  5. Выбор, производимый в макросе.

  6. Более подробно о функциях в макросе.

  7. Использование оператора SWITCH.

  8. Вывод значений из макроса.

  9. Использование цикла FOREACH в макросе.

  10. Использование массивов в цикле FOREACH.

 

 

 

Создание основного макроса

Самый простой способ вывести и запустить макрос, используя язык программирования PowerMILL.

  1. В текстовом редакторе, таком как WordPad, мы пишем:

PRINT "10 green bottles sitting on the wall" PRINT "10 green bottles sitting on the wall"

PRINT "And if 1 green bottle should accidentally fall" PRINT "There will be 9 green bottles sitting on the wall"

 Команда PRINT позволяет вывести на экран записанное  значение

  1. Сохраните файл как example.mac.

  2. На панели меню выберите Вид > Панели инструментов > Командное окно, чтобы открыть командное окно. Убедитесь, что галочка Инструменты > Включить эхо убрана.

  3. Из контекстного меню Макросы выберите Выполнить. Появится диалог Выберите запускаемый Макрос.

  4. Перейдите в нужную папку, выберите example.mac, и нажмите Открыть. Макрос запустится, и в командном окне отобразится текст, заключённый в двойные кавычки (") в макросе.

 

 

Добавление переменных

Первые две строки в макросе example.mac одинаковые. Чтобы минимизировать повторения (и для более лёгкого управления) хорошо бы записать строку один раз, а затем повторно вызывать её когда она понадобится. Чтобы сделать это, необходимо создать локальную переменную, содержащую текстовую строку.

Можно создавать различные типы переменных в PowerMILL. Для сохранения строки, содержащей текст, необходимо использовать переменную STRING.

  1. Откройте файл example.mac в текстовом редакторе и измените его на:

// Создание переменной, содержащей текст первой строки STRING bottles = "10 green bottles sitting on the wall" PRINT $bottles

PRINT $bottles

PRINT "And if 1 green bottle should accidentally fall" PRINT "There will be 9 green bottles sitting on the wall"

Первая строка – это комментарий, который объясняет  

значение второй строки.

  1. Сохраните файл как example.mac.

  2. В PowerMILL нажмите Выполнить на этом макросе. Командное окно отобразит то же, что и раньше:

 

 

 

 

Обязательно следует выполнять следующие особенности при работе с переменными:

  • Вы должны задать все локальные переменные до того, как они будут использоваться, - в нашем случае

STRING bottles = "10 green bottles sitting on the wall"   задаёт локальную переменную bottles.

  • Переменная bottles является локальной переменной, поэтому она будет использоваться только в макросе, где она задана. Она не является переменной PowerMILL. Если ввести её в командном окне – мы получим ошибку.

  •  После того, как локальная переменная задана, её можно использовать неограниченное число раз в макросе.
  • Можно задать неограниченное число локальных переменных в макросе.

 

 

Добавим цикл

 

Как уже писалось выше, в нашем макросе добавлено две одинаковых строки: PRINT $bottles. Сейчас в этом нет ничего страшного, потому что эти строки спользуются только дважды, но если вы захотите повторить их 5 или 20 раз, будет лучше использовать  цикл.

PowerMILL имеет три оператора циклов:

  • WHILE

  • DO - WHILE

  • FOREACH

 

 

Следующий пример использует оператор WHILE для повторения команды 5 раз.

  1. Откройте макрос example.mac в текстовом редакторе и измените его на:

// Создание переменной, содержащей текст первой строки. STRING bottles = "10 green bottles sitting on the wall"

// Создание переменной для хранения количества раз,

// которые нужно напечатать первую строку.

// В данном случае, 5. INT Count = 5

// Повторение цикла до тех пор, пока Count больше 0

WHILE Count > 0 {

// Вывод строки PRINT $bottles

// Уменьшение счётчика на 1

$Count = Count - 1

}

// Вывод последних двух строк

PRINT "And if 1 green bottle should accidentally fall" PRINT "There will be 9 green bottles sitting on the wall"

 

<

Оставить комментарий