Vote for a similar topic

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

Нарезать солид по заданному объему
Добрый день!
В нашем чате Майкромайн в телеграмме( 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, который должен находиться в той же папке, что и скрипт Выбрать точки стрингом (в папке проекта).
Примечание: данный скрипт работает только в плане

Скрипт для разбиения файла по полю
Я решил добавить на форум скрипт, являющийся по сути своей утилитой по работе с файлами данных (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 должны обязательно лежать в корне папки проекта.

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

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

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

Скрипт для загрузки цветных точек
Начинаю пополнять наш форум готовыми скриптами. Первый скрипт на сегодня - это возможность Micromine загружать в визекс цветные точки.
Входные данные: файл данных, в которых хранятся координаты точек и поля с красным (R), зеленым (П) и синим (B) цветами. Пример файла представлен ниже:

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

Пойдем по порядку.
- Ввод:
- В поле Файл двойным щелчком выбираете файл данных
- Выбираете из выпадающего списка нужные поля координат X, Y, Z и цветов R, G, B.
- Вывод:
- Обязательно надо указать Поле цвета - это должно быть символьное поле, в которое скрипт проставит метку для дальнейшеного создания палитры цветов (просто номер строки)
- Дополнительные опции:
- Поле Разбить файл можно использовать для того, чтобы ускорить процесс загрузки вашего файла. Так как файлы сканирования обычно содержат большое число точек, то процесс загрузки может занять много времени. Для примера скажу, что 362000 цветных точек может загружать более часа. Поэтому введя какое-либо число, вы тем самым указываете количество файлов, на которое разобьется исходный файл. Каждый из этих файл по отдельности загружается быстрее, и время загрузки для тех же 362000 точек может уменьшиться до 15-25 минут. Естественно, у каждого компьютера свои возможности, поэтому не могу обещать, что на вашем компьютере скорость загрузки будет такая же или быстре. Может быть все!
- Функция Группировать палитру цветов позволит вам (прошу прощения за масло масляное) сгруппировать цвета, что в результате уменьшит количество значений в палитре. Эту функцию удобно использовать, когда у вас небольшой разбор цветов. Для файлов, с полным набором цветовой гаммы эта функция никаким образом не ускорит загрузку точек. В случае, когда у вас тысячи точек и три цвета - да, разница будет ощутима.
- Вы так же можете сохранить получившуюся палитру цветов, указав номер и имя формы. Тут важно помнить два момента:
- В случае, если вы вводите существующий номер набора форм, скрипт не спросит у вас разрешения заменить или перезаписать этот набор.
- В этом скрипте нет возможности получить список имеющихся наборов форм, поэтому перед сохранением, убедитесь, что вы вводите верный номер набора, чтобы потом ваши старые данные не потерялись
Пример точек для загрузки: Coloured_Points.DAT
Для запуска скрипта необходимо установить Python на компьютер, на котором вы пытаетесь запустить скрипт, так как он использует графическую оболочку Tkinter, не встроенную в Micromine. Ниже выберите нужную для вас ссылку:
- Micromine 2013 – скачайте Python по ссылке
- Micromine 2014 32bit – скачайте Python по ссылке.
- Micromine 2014 64bit – скачайте Python по ссылке.
- Нежелательно устанавливать несколько из представленных выше версий Python на один компьютер.
- После установки Python нужно перезапустить Micromine, если он был запущен.

Пособие по написанию скриптов в Micromine 2021.5
Здравствуйте. С Новым годом! Скажите, существует ли пособие по написанию скриптов?

Добрый день, Владимир.
В качестве пособия можно использовать данный мануал, также там указаны ссылки на дополнительные мануалы:
https://docs.google.com/document/d/1O_6_LKmlqUabGiaUwxeR2Sb4l0XIsY_6f9vzMW89aZ4/edit#heading=h.6k5lh5k85gsv
https://forum.micromine.com/communities/12/topics/2476-rabota-so-skriptami-v-micromine-origin-beyond
Customer support service by UserEcho