+13

Работа со скриптами в Micromine Origin & Beyond

VVolobuev (Moderator (RUS)) 11 months ago in Micromine / Scripting updated by Илья (Moderator (RUS)) 3 months ago 6

Всем здравствуйте!

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

Здесь Вы можете ознакомиться с руководством по подготовке Micromine к работе со скриптами, в котором описано как настроить Micromine для запуска скриптов. Для работы с большинством скриптов необходимо иметь установленный Python, руководство по его установке находится здесь.

Если у вас уже есть базовые знания языка программирования Python и вы хотите написать скрипт сами, можете воспользоваться нашим мануалом.

Когда будете делиться скриптами с участниками нашего форума, обязательно указывайте сведения о своём творении:

Версия Python
Версия Micromine
Пакетируемость

Image 3635Python упрощает жизнь)

+9

Нарезать солид по заданному объему

Добрый день!

В нашем чате Майкромайн в телеграмме( https://t.me/microminechat ) был вопрос:

Как разделить каркас на равные части по объему. При этом задать угол плоскости, по которой буду резать каркас? 

Стандартным функционалом автоматически данную задачу не решить, поэтому был написан скрипт, которым я хочу с вами поделиться. Инструкция как запустить скрипт и сам скрипт в архиве. Если будут вопросы, пожелания по даработке, пишите.

Разделение каркаса по объемам.rar

Скрипт использует следующий подход:

1. Указанный каркас разбивается на более мелкие срезы, мощность которых мы задаем в предела от 0.1м до 10м. 

Для определения направления плоскости можно использовать Ортогональные плоскости (План, На север , на Запад) или можно задать Азимут падения и Угол падения плоскости, а также координату точки отсчета для Неортогональных плоскостей.

Image 3902

Image 3901

2. Далее последовательно складываются объемы срезов пока не будет достигнут заданный целевой объем. Как только целевой объем достигнут, срезам приваривается уникальный номер в атрибут Code, и для последующих срезов расчет накопленного объемов начинается с начала и так последовательно по всем срезам.

Данный алгоритм не позволяет идеально нарезать каркасы на заданный объем, но чем меньше срез, тем ближе к целевому значению, но увеличивается время работы скрипта.

Также сделана обратная проверка, для максимального приближения к целевому значению. Например, сложив первые три среза мы получаем объем 999 при целевом 1000, так как 999<1000 необходимо добавить еще срез, но при добавлении получаем объем 1100. Логичнее будет оставить 999, так как он ближе к целевому значению.

Каркасы срезов  сохраняются во временный файл slice.tridb в паке Разделение каркаса по объемам.


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

Image 3903


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

C Уважением,

Илья


+6

Пример автоматизации расчета фактических потерь и разубоживания на подземных горных работах

Илья (Moderator (RUS)) 1 month ago in Micromine / Scripting updated 1 month ago 0

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

Исходные данные для подсчета основных показателей:

  1. Каркас камеры (проект)
  2. Каркас камеры (съемка сканером)
  3. Каркасы фактических горных выработок
  4. Каркас рудного тела с вырезанными отработанными (заложенными) камерами
  5. Каркас груза, который остался в камере.

Image 4039

Показатели, которые необходимо определить:

  • Фактические потери П (%)
  • Фактическое разубоживание Р (%)
  • Объем каркаса камеры Vк3)
  • Объем каркаса потерь Vп3)
  • Объем каркаса разубоживания Vр3)
  • Объем каркаса горных выработок Vг.в. 3)
  • Объем каркаса груза Vг 3)
  • Объем груза в целике Vг.ц. 3)

Image 4040

  • Объем под закладку Vзакл. 3)

Image 4049

Vобщий – Объем общего каркаса(выработки, камера, груз)

Для расчета потерь (П) и разубоживания (Р) используются следующие формулы:

Image 4041

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

Для запуска скрипта необходимо:

  1. Установить Python 3.8
  2. Установить библиотеку Pyside2
  3. Скопируйте папку Расчет потери и разубоживание в проект
  4. Открыть и запустить файл Start.py

Image 4042

В открывшемся окне на вкладке Ввод выбираем исходные каркасы, указываем имя камеры и задаем объемный вес руды и породы.

Image 4043

На вкладке Вывод укажите путь к итоговому отчету и нажмите Запустить.

Image 4044

После завершения работы скрипта закройте его и у Вас откроет отчет.

Image 4045

Также будут созданы и загружены в визекс итоговые каркасы.

Image 4046

Cкрипт и исходные данные можете скачать ниже:

Расчет потери и разубоживание.rar

Илья

+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


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


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

Илья

+5

Выбрать точки с помощью стринга

Всем здравствуйте!


Быть может, кому-то будет полезен скрипт, о котором пойдет речь в этом посте.


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

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

Image 205


Запускаете скрипт, выбираете файл точек и файл стринга и нажимаете ОК.


Image 206


В результате будет создан (имя созданного файла образуется из старого с добавлением в конце _cut) и загружен в Vizex файл точек, которые находятся внутри полигона:


Image 207


Если вы хотите оставить точки вне полигона, то надо поставить галочку Вне полигона и проделать те же самые операции. Скрипт находится по ссылке Выбрать точки стрингом.py, для его работы необходим также файл mmfiles.py, который должен находиться в той же папке, что и скрипт Выбрать точки стрингом (в папке проекта).


Примечание: данный скрипт работает только в плане

+4

Скрипт для разбиения файла по полю

Добрый день.

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

Так выглядит окно скрипта:

Image 628

На ввод надо указать исходный файл, который вы желаете разделить и указать столбец в Поле, в котором хранятся те самые уникальные значения.
На вывод выбирается директория, в которую будут записаны получившиеся файлы. В поле Префикс нужно указать имя файла, которое будет стоять в названии файла перед порядковым номером. Пример: Префикс = Блок_, в результате получатся файлы Блок_1, Блок_2 и т.д.

Дополнительные возможности:
В случае, если вы разбивали файл стрингов или точек, то вы можете сразу загрузить их в Визекс после того, как скрипт завершит разбиение. Для этого надо поставить галочку у поля Автозагрузка, указать все поля и после нажатия на ОК, скрипт загрузит все созданные файлы в Micromine.

Желаю всем успехов!

Сам скрипт находится тут: GUI - Разделить файл по полю.py

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

+3

Экспорт набора каркасов из TDB в MDB

Pavel Yakovlev (Moderator (RUS)) 10 years ago in Micromine / Scripting updated by byury 8 years ago 1

Всем доброго времени суток!


Вашему вниманию предлагается скрипт в двух вариациях для экспорта набора каркасов из TDB в MDB. Для работы скрипта необходимо иметь установленный модуль для работы с базами данных: pyodbc-3.0.6.win32-py3.3.exe (устанавливать в директорию, где установлен Python).

1. Export TDB-MDB GUI.py - с графических интерфейсом.

После запуска появится окно следующее окно:


Image 110


Далее вы выбираете файл TDB (можно двойным кликом по полю ввода), и вводите или выбираете файл MDB. Нажимаете ОК, и все каркасы, находящиеся в TDB, будут экспортированы. В случае незаполненных полей скрипт выдаст сообщение об ошибке:


Image 111


2. Export TDB-MDB.py

Данный скрипт не имеет графического интерфейса. Для его работы, необходимо вручную прописать в окне скрипта имена файлов (без расширения!). Далее запустить скрипт, после чего начнется экспорт каркасов.


Image 112


Примечание. Для корректной работы скрипта файлы TDB должны обязательно лежать в корне папки проекта.

Если будут возникать какие-то вопросы, спрашивайте. Совсем скоро на форуме будут появляться и другие скрипты.
+3

Скрипт для расчета среднего значения по пробам

И снова здравствуйте!

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

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

Image 631

Скрипт предельно простой, но тем не менее я опишу, что он принимет на вход, и что получается на выходе. На ввод вы указываете файл опробования и выбираете из выпадающего списка имя столбца, в котором у вас хранится название пробы. Для примера файла, который показан выше, таким столбцом является столбец SAMPLE.

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

Желаю всем хорошего дня!

Сам скрипт можно скачать тут: GUI - Расчет среднего значения по пробам.py

Для запуска скрипта необходимо установить Python на компьютер, на котором вы пытаетесь запустить скрипт, так как он использует графическую оболочку Tkinter, не встроенную в Micromine. Ниже выберите нужную для вас ссылку:
  • Micromine 2013 – скачайте Python по ссылке
  • Micromine 2014 32bit – скачайте Python по ссылке.
  • Micromine 2014 64bit – скачайте Python по ссылке.
Важно:
  • Нежелательно устанавливать несколько из представленных выше версий Python на один компьютер.
  • После установки Python нужно перезапустить Micromine, если он был запущен.
Если возникнут какие-то проблемы с запуском или работой скрипта, обращайтесь.
+3

Скрипт для загрузки цветных точек

Pavel Yakovlev (Moderator (RUS)) 9 years ago in Micromine / Scripting updated 6 years ago 4
Всем скриптовый привет.

Начинаю пополнять наш форум готовыми скриптами. Первый скрипт на сегодня - это возможность Micromine загружать в визекс цветные точки.

Входные данные: файл данных, в которых хранятся координаты точек и поля с красным (R), зеленым (П) и синим (B) цветами. Пример файла представлен ниже:

Image 624

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

Image 625

Пойдем по порядку.
  1. Ввод:
    1. В поле Файл двойным щелчком выбираете файл данных
    2. Выбираете из выпадающего списка нужные поля координат X, Y, Z и цветов R, G, B.
  2. Вывод:
    1. Обязательно надо указать Поле цвета - это должно быть символьное поле, в которое скрипт проставит метку для дальнейшеного создания палитры цветов (просто номер строки)
  3. Дополнительные опции:
    1. Поле Разбить файл можно использовать для того, чтобы ускорить процесс загрузки вашего файла. Так как файлы сканирования обычно содержат большое число точек, то процесс загрузки может занять много времени. Для примера скажу, что 362000 цветных точек может загружать более часа. Поэтому введя какое-либо число, вы тем самым указываете количество файлов, на которое разобьется исходный файл. Каждый из этих файл по отдельности загружается быстрее, и время загрузки для тех же 362000 точек может уменьшиться до 15-25 минут. Естественно, у каждого компьютера свои возможности, поэтому не могу обещать, что на вашем компьютере скорость загрузки будет такая же или быстре. Может быть все!
    2. Функция Группировать палитру цветов позволит вам (прошу прощения за масло масляное) сгруппировать цвета, что в результате уменьшит количество значений в палитре. Эту функцию удобно использовать, когда у вас небольшой разбор цветов. Для файлов, с полным набором цветовой гаммы эта функция никаким образом не ускорит загрузку точек. В случае, когда у вас тысячи точек и три цвета - да, разница будет ощутима.
    3. Вы так же можете сохранить получившуюся палитру цветов, указав номер и имя формы. Тут важно помнить два момента:
      1. В случае, если вы вводите существующий номер набора форм, скрипт не спросит у вас разрешения заменить или перезаписать этот набор.
      2. В этом скрипте нет возможности получить список имеющихся наборов форм, поэтому перед сохранением, убедитесь, что вы вводите верный номер набора, чтобы потом ваши старые данные не потерялись
Сам скрипт находится тут: GUI - Загрузка цветных точек.py
Пример точек для загрузки: Coloured_Points.DAT

Для запуска скрипта необходимо установить Python на компьютер, на котором вы пытаетесь запустить скрипт, так как он использует графическую оболочку Tkinter, не встроенную в Micromine. Ниже выберите нужную для вас ссылку:
  • Micromine 2013 – скачайте Python по ссылке
  • Micromine 2014 32bit – скачайте Python по ссылке.
  • Micromine 2014 64bit – скачайте Python по ссылке.
Важно:
  • Нежелательно устанавливать несколько из представленных выше версий Python на один компьютер.
  • После установки Python нужно перезапустить Micromine, если он был запущен.
Если возникнут какие-то проблемы с запуском или работой скрипта, обращайтесь.
+2

Пособие по написанию скриптов в Micromine 2021.5

Владимир Марков 1 year ago in Micromine / Scripting updated by Stepan (Moderator (RUS)) 5 months ago 2

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

Answer

Добрый день, Владимир.

В качестве пособия можно использовать данный мануал, также там указаны ссылки на дополнительные мануалы:
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