+5

Вложенные макросы

Илья (Moderator (RUS)) 2 months ago in Micromine / Scripting updated 2 months ago 2

Добрый день!

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

Например, это может быть функция интерполяции содержаний в БМ для каждого каркаса рудного тела отдельно, когда количество каркасов изменяется или построение проектных каркасов выработок с разным сечением, где количество выработок также не постоянно и другие различные задачи.

Чтобы не добавлять новые строки в макросе, можно использовать «Вложенные макросы». Суть заключается в том, что макрос запускает другой макрос, который меняется в зависимости от условий.

Рассмотрим такой макрос на примере построения проектных каркасов горных выработок с разными сечениями и изменяюшимся количеством выработок:

Исходные данные:

1. Файл осевых линий с разными параметрами сечения в свойствах линий.

Image 4000

2. Пустой макрос для создания нового макроса, в который будет записываться информация.

Image 4001

Описание мароса: 

1. Cоздаем @Исполняющий макрос на основании шаблона. Именно этот макрос будет в дальнейшем изменяться от условий.

Image 4002

2. Используя функцию генератор отчётов, создадим отчет из файла осевых линий . В этом файле будут все имена горных выработок и их параметры сечения. Дальше эти параметры будут использоваться для построения каркаса.

Image 4003

3. Чтобы итоговый tridb файл при запуске макроса очищался и имел необходимые атрибуты, сделаем копию tridb на основании шаблона. 

Image 4004

4. Далее нам необходимо перенести информацию в исполняющий макрос из отчета по осевым линиям. Сделать это можно через функцию Объединить. Также предварительно необходимо создать форму для функции, которая будет использоваться в исполняющем макросе. 

Image 4005


Исполняющий макрос примет вид:

Image 4006

5. Последним шагом необходимо запустить Исполняющий макрос внутри внутри нашего макроса..

Image 4007


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


Надеюсь информация Вам будет полезна.

Илья

Не лишним было бы приложить файл макроса и исходные данные.

+1

Прикладываю проект с макросом и данными:

Вложенные макросы.zip