Vote for a similar topic

Работа со скриптами в Micromine Origin & Beyond
Всем здравствуйте!
Использование скриптов в ГГИС Micromine для решения производственных задач стало носить массовый характер. Скрипты очень удобны, так как позволяют существенно расширить функционал Micromine. С каждым годом идей для скриптов и их самих становится всё больше. Для того, чтобы пользователям было проще находить уже готовые решения или создавать свои собственные была создана эта тема.
Здесь Вы можете ознакомиться с руководством по подготовке Micromine к работе со скриптами, в котором описано как настроить Micromine для запуска скриптов. Для работы с большинством скриптов необходимо иметь установленный Python, руководство по его установке находится здесь.
Если у вас уже есть базовые знания языка программирования Python и вы хотите написать скрипт сами, можете воспользоваться нашим мануалом.
Когда будете делиться скриптами с участниками нашего форума, обязательно указывайте сведения о своём творении:
Версия Python | |
Версия Micromine | |
Пакетируемость |
Python упрощает жизнь)

Построение осевых линий
Добрый день, коллеги!
В процессе моделирования возникла необходимость в автоматизации построения осевых линий каркасов и расчета элементов залегания по ним с дальнейшим использованием данных при динамическом поиске. Подробности применения подробно расписаны Евгением здесь https://forum.micromine.com/communities/12/topics/2304-uskorennyij-metod-postroeniya-i-vyichisleniya-elementov-zaleganiya
С целью автоматизации был написан скрипт, который по исходному каркасу строит осевые линии (горизонтальные и вертикальные вкрест простирания) с заданным интервалом сечений, а также рассчитывает элементы залегания. Возможно кому-то понадобятся осевые линии и для других целей.
Хочу поделится наработками, строго не судите первый подобный опыт в Python, возможны ошибки при запуске, но Windows он вам точно не снесёт)
Прилагаю две версии
- Яндекс.Диск - готовый к запуску скрипт с уже запакованными предустановленными библиотеками и интерпретатором Python - 274 МБ
- create_centerline.zip - скрипт без предустановленных библиотек (requirements.txt в наличии) - 2 МБ
- README.pdf - небольшая пояснительная записка по скрипту
Буду рад обратной связи, комментариям по ошибкам и недочетам.
P.S. после распаковки архива в корневой папке проекта сам скрипт запускается через main.py

Нарезать солид по заданному объему
Добрый день!
В нашем чате Майкромайн в телеграмме( https://t.me/microminechat ) был вопрос:
Как разделить каркас на равные части по объему. При этом задать угол плоскости, по которой буду резать каркас?
Стандартным функционалом автоматически данную задачу не решить, поэтому был написан скрипт, которым я хочу с вами поделиться. Инструкция как запустить скрипт и сам скрипт в архиве. Если будут вопросы, пожелания по даработке, пишите.
Разделение каркаса по объемам.rar
Скрипт использует следующий подход:
1. Указанный каркас разбивается на более мелкие срезы, мощность которых мы задаем в предела от 0.1м до 10м.
Для определения направления плоскости можно использовать Ортогональные плоскости (План, На север , на Запад) или можно задать Азимут падения и Угол падения плоскости, а также координату точки отсчета для Неортогональных плоскостей.
2. Далее последовательно складываются объемы срезов пока не будет достигнут заданный целевой объем. Как только целевой объем достигнут, срезам приваривается уникальный номер в атрибут Code, и для последующих срезов расчет накопленного объемов начинается с начала и так последовательно по всем срезам.
Данный алгоритм не позволяет идеально нарезать каркасы на заданный объем, но чем меньше срез, тем ближе к целевому значению, но увеличивается время работы скрипта.
Также сделана обратная проверка, для максимального приближения к целевому значению. Например, сложив первые три среза мы получаем объем 999 при целевом 1000, так как 999<1000 необходимо добавить еще срез, но при добавлении получаем объем 1100. Логичнее будет оставить 999, так как он ближе к целевому значению.
Каркасы срезов сохраняются во временный файл slice.tridb в паке Разделение каркаса по объемам.
3. Третьим шагом каркасы объединяются по присвоенному коду и загружаются в визекс с чередующей раскраской.
Надеюсь эта информация вам будет полезна.
C Уважением,
Илья

Пример автоматизации расчета фактических потерь и разубоживания на подземных горных работах
Ниже пойдет речь о практическом примере автоматизации с помощью скрипта, который позволил упростить процесс расчета фактических потерь и разубоживания по очистным камерам. Так как каждое предприятие использует свои методы расчета, все приведенные формулы и показатели носят чисто информационный характер и не могут быть использованы как руководство к действию.
Исходные данные для подсчета основных показателей:
- Каркас камеры (проект)
- Каркас камеры (съемка сканером)
- Каркасы фактических горных выработок
- Каркас рудного тела с вырезанными отработанными (заложенными) камерами
- Каркас груза, который остался в камере.
Показатели, которые необходимо определить:
- Фактические потери П (%)
- Фактическое разубоживание Р (%)
- Объем каркаса камеры Vк (м3)
- Объем каркаса потерь Vп (м3)
- Объем каркаса разубоживания Vр (м3)
- Объем каркаса горных выработок Vг.в. (м3)
- Объем каркаса груза Vг (м3)
- Объем груза в целике Vг.ц. (м3)
- Объем под закладку Vзакл. (м3)
Vобщий – Объем общего каркаса(выработки, камера, груз)
Для расчета потерь (П) и разубоживания (Р) используются следующие формулы:
С помощью функций пересечения каркасов мы можем получить все необходимые показатели, чтобы подставить их в формулы для расчетов, но это отнимало у специалиста много времени. Поэтому был написан скрипт, который производит все необходимые операции по пересечению каркасов, достает из них объемы и подставляет в формулы и выводит все необходимые показатели в виде отчета.
Для запуска скрипта необходимо:
- Установить Python 3.8
- Установить библиотеку Pyside2
- Скопируйте папку Расчет потери и разубоживание в проект
- Открыть и запустить файл Start.py
В открывшемся окне на вкладке Ввод выбираем исходные каркасы, указываем имя камеры и задаем объемный вес руды и породы.
На вкладке Вывод укажите путь к итоговому отчету и нажмите Запустить.
После завершения работы скрипта закройте его и у Вас откроет отчет.
Также будут созданы и загружены в визекс итоговые каркасы.
Cкрипт и исходные данные можете скачать ниже:
Расчет потери и разубоживание.rar
Илья

Вложенные макросы
Добрый день!
Сегодня рассмотрим ситуацию, когда у Вас есть макрос и в нем используется функция, которая работает n-ое количество раз. Параметр n не постоянен и Вам приходится каждый раз добавлять или удалять строки в макросе.
Например, это может быть функция интерполяции содержаний в БМ для каждого каркаса рудного тела отдельно, когда количество каркасов изменяется или построение проектных каркасов выработок с разным сечением, где количество выработок также не постоянно и другие различные задачи.
Чтобы не добавлять новые строки в макросе, можно использовать «Вложенные макросы». Суть заключается в том, что макрос запускает другой макрос, который меняется в зависимости от условий.
Рассмотрим такой макрос на примере построения проектных каркасов горных выработок с разными сечениями и изменяюшимся количеством выработок:
Исходные данные:
1. Файл осевых линий с разными параметрами сечения в свойствах линий.
2. Пустой макрос для создания нового макроса, в который будет записываться информация.
Описание мароса:
1. Cоздаем @Исполняющий макрос на основании шаблона. Именно этот макрос будет в дальнейшем изменяться от условий.
2. Используя функцию генератор отчётов, создадим отчет из файла осевых линий . В этом файле будут все имена горных выработок и их параметры сечения. Дальше эти параметры будут использоваться для построения каркаса.
3. Чтобы итоговый tridb файл при запуске макроса очищался и имел необходимые атрибуты, сделаем копию tridb на основании шаблона.
4. Далее нам необходимо перенести информацию в исполняющий макрос из отчета по осевым линиям. Сделать это можно через функцию Объединить. Также предварительно необходимо создать форму для функции, которая будет использоваться в исполняющем макросе.
Исполняющий макрос примет вид:
5. Последним шагом необходимо запустить Исполняющий макрос внутри внутри нашего макроса..
В итоге запустив этот макрос мы построим каркасы по всем осевым линиям, и даже если количество выработок поменяется, нам не придется переделывать макрос.
Надеюсь информация Вам будет полезна.
Илья

Выбрать точки с помощью стринга
Всем здравствуйте!
Быть может, кому-то будет полезен скрипт, о котором пойдет речь в этом посте.
Скрипт позволяет выбрать точки, находящиеся внутри нарисованного вами полигона или вне него, так как удалять вручную все ненужные точки при большом наборе данных может оказаться трудоемкой и нудной работой.
Пусть у вас имеются набор точек, и вы желаете оставить те точки, которые попадают внутрь полигона:
Запускаете скрипт, выбираете файл точек и файл стринга и нажимаете ОК.
В результате будет создан (имя созданного файла образуется из старого с добавлением в конце _cut) и загружен в Vizex файл точек, которые находятся внутри полигона:
Если вы хотите оставить точки вне полигона, то надо поставить галочку Вне полигона и проделать те же самые операции. Скрипт находится по ссылке Выбрать точки стрингом.py, для его работы необходим также файл mmfiles.py, который должен находиться в той же папке, что и скрипт Выбрать точки стрингом (в папке проекта).
Примечание: данный скрипт работает только в плане

Автоматическое создания аннотации в виде таблицы по скважине/борозде
Добрый день!
Разберем следующую задачу:
Для создания графики нам необходимо визуализировать информацию вдоль скважины, в Майкромайн для этого есть специальные формы, которые позволяют создать штриховки, метки и прочее для каждого интервала вдоль скважины, но данная задача подразумевает автоматическое создание аннотации в виде таблицы, как показано на Рисунке 1.
Рисунок 1. Аннотация в виде таблицы
Решение:
Для создания такой таблицы в автоматическом режиме был создан скрипт.
Для запуска скрипта необходимо:
1. Установить python 3.8.5 и библиотеку Pyside2, более подробно по этой ссылке.
2. Для интервалов файле опробования предварительно необходимо рассчитать координаты.
3. Скачайте архив (Визуализация данных по скважине) со скриптом и разместите в удобном для Вас месте, лучшее всего скопировать в папку проекта Майкромайн.
4. Откройте (Скриптинг/Скрипты/Открыть) и запустите скрипт Start.py в папке «Визуализация данных по скважине»
Рисунок 2. Запуск скрипта
5. Откроется диалоговое окно, в верхней части которого необходимо выбрать файл опробования, после этого необходимо указать поле с именем скважины и поля координат.
Рисунок 3. Диалоговое окно скрипта
6. Далее нажимаем специальную функцию , после нажатия которой появится возможность выбора скважины.
Рисунок 4. Выбор файла опробования
7. После выбора скважины необходимо нажать на специальную функцию , которая загрузит в таблицу ниже, все столбцы из файла. В столбце Вывод необходимо указать, какие столбцы будут выведены в итоговую таблицу, также у Вас есть возможность указать количество знаков после запятой, для значений в таблице.
Рисунок 5. Определение параметров таблицы
Также будет рассчитана координат первой пробы, относительно этой координаты будет отстроена таблица, при необходимости её можно изменить.
Рисунок 6. Точка отсчета для построения таблицы
8. В нижней части окна укажите коэффициент размера ячейки таблицы. При коэффициенте 1 ячейка таблицы будет размером 3 на 1 метр, при коэффициенте 2 будет 6 на 2 метра.
9. Последним шагом нажмите Запустить. В визекса загрузиться итоговая таблица (Рисунок 1)
Надеюсь скрипт будет Вам полезен. Если будут идеи по доработке данного скрипта, пишите.

Загрузка множества растров из папки с автоматическим сохранением всех форм
Добрый день!
Рассмотрим следующую задачу:
У нас есть несколько папок с привязанными изображениями в Майкромайн, в каждой папке 1000+ растров. Нам необходимо загрузить их все в ММ и сохранить формы.
Решение:
Можно воспользоваться стандартным способом. Для этого необходимо перетащить все изображения в визекс, потом нажать правой кнопкой мыши по любому слою и выбрать Сохранить все формы, после этого 1000+ раз кликнуть ОК. Понятно, что данный способ далек от автоматизации, поэтому ниже предлагается решение средствами Python.
Для запуска скрипта необходимо:
1. Установить Python 3.8.5+. Инструкция по этой ссылке.
2. Открыть файл скрипта (Скриптинг/Открыть)
3. В разделе для изменений указать путь к папки с растрами и расширение.(строка 7 и строка 9)
4. Запустить скрипт
Скрипт работает следующим образом:
1. В указанной директории находит все файлы (в том числе во вложенных папках) с указанным расширением и сохраняет пути в список.
2. По очереди подставляет найденные пути в форму загрузки изображения. Для загрузки используется стандартная форма с файлом привязок Micromine (GRF).
На этом же этапе происходит сохранение формы.
Заголовок формы — Это имя файла.
Папка в формах - Папка из указанного пути.
В моем случаи результат будет выглядеть так:
В формах:
Обработанные растры:
Илья

Скрипт для разбиения файла по полю
Я решил добавить на форум скрипт, являющийся по сути своей утилитой по работе с файлами данных (DAT, STR, RPT). Он позволяет разбить исходный файл по какому-то уникальному значению, поместив каждый получивший набор данных в отдельный файл.
Так выглядит окно скрипта:

На ввод надо указать исходный файл, который вы желаете разделить и указать столбец в Поле, в котором хранятся те самые уникальные значения.
На вывод выбирается директория, в которую будут записаны получившиеся файлы. В поле Префикс нужно указать имя файла, которое будет стоять в названии файла перед порядковым номером. Пример: Префикс = Блок_, в результате получатся файлы Блок_1, Блок_2 и т.д.
Дополнительные возможности:
В случае, если вы разбивали файл стрингов или точек, то вы можете сразу загрузить их в Визекс после того, как скрипт завершит разбиение. Для этого надо поставить галочку у поля Автозагрузка, указать все поля и после нажатия на ОК, скрипт загрузит все созданные файлы в Micromine.
Желаю всем успехов!
Сам скрипт находится тут: GUI - Разделить файл по полю.py
Для запуска скрипта необходимо установить Python на компьютер, на котором вы пытаетесь запустить скрипт, так как он использует графическую оболочку Tkinter, не встроенную в Micromine. Ниже выберите нужную для вас ссылку:
- Micromine 2013 – скачайте Python по ссылке
- Micromine 2014 32bit – скачайте Python по ссылке.
- Micromine 2014 64bit – скачайте Python по ссылке.
- Нежелательно устанавливать несколько из представленных выше версий Python на один компьютер.
- После установки Python нужно перезапустить Micromine, если он был запущен.

Экспорт набора каркасов из TDB в MDB
Всем доброго времени суток!
Вашему вниманию предлагается скрипт в двух вариациях для экспорта набора каркасов из TDB в MDB. Для работы скрипта необходимо иметь установленный модуль для работы с базами данных: pyodbc-3.0.6.win32-py3.3.exe (устанавливать в директорию, где установлен Python).
1. Export TDB-MDB GUI.py - с графических интерфейсом.
2. Export TDB-MDB.pyПосле запуска появится окно следующее окно:
Далее вы выбираете файл TDB (можно двойным кликом по полю ввода), и вводите или выбираете файл MDB. Нажимаете ОК, и все каркасы, находящиеся в TDB, будут экспортированы. В случае незаполненных полей скрипт выдаст сообщение об ошибке:
Если будут возникать какие-то вопросы, спрашивайте. Совсем скоро на форуме будут появляться и другие скрипты.Данный скрипт не имеет графического интерфейса. Для его работы, необходимо вручную прописать в окне скрипта имена файлов (без расширения!). Далее запустить скрипт, после чего начнется экспорт каркасов.
Примечание. Для корректной работы скрипта файлы TDB должны обязательно лежать в корне папки проекта.
Customer support service by UserEcho