+14

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

VVolobuev (Moderator (RUS)) 1 year ago in Micromine / Scripting updated by Илья (Moderator (RUS)) 7 months ago 6

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

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

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

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

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

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

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

+4

MMpy_Получить информацию из столбца с известным названием


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

MMpy_Получить информацию из столбца с извест....py

Первая задача, которую рассмотрим:

У нас есть файл .DAT необходимо получить символьную информацию из столбца с известным именем и сохранить в список только уникальные значения для дальнейшего использования в скрипте.


Решение:

1. Открываем новый скрипт в редактор скриптов  Скриптинг | Новый.

2. Для начала импортируем библиотеку для работы с файлами и структурами Майкромайн

Image 3889

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

Image 3891

MMpy.Project.path() - позволяет указать путь к проету ММ

4. Определяем ID столбца. Первый столбец имеет ID = 0.

Image 3893

5. Определяем количество записей в файле 

Image 3894

6. Используя цикл for и функцию range сделаем перебор значений от 1 до количество записей в файле+1. После каждой итерации цикла получаем значения имени скважины из строки i. 

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

Image 3896

Функция range() возвращает последовательность целых чисел на основе переданных ей аргументов.

Цикл for в Python - это цикл перебора элементов итерируемых объектов.

7. Закрываем файл 

Image 3897

8. Используем функцию print() для вывода списка.

Image 3898

+1

MMpy_Запуск функции Майкромайн с помощью скрипта


Рассмотрим следующую задачу:

У нас есть файл с каркасами . tridb, с помощью скрипта необходимо получить отчет по всем каркасам в этом файле с помощью функции Каркас/ Отчет/ Свойства.


Решение:

  1. Создаем/открываем новый скрипт  в редакторе скриптов (Скриптинг | Новый)
  2. Указываем переменные Путь к фалу каркасов (path_type)  и Путь к файлу отчета (path_report), который будет создан.Image 3906
  3. Используя функцию Скриптинг/Скрипты/Запись преобразуем форму функции Каркас/ Отчет/ Свойства в код.

Порядок действий для записи формы:

  • Включаем функцию Запись

Image 3907

  • Открываем функцию Каркас/ Отчет/ Свойства
  • Заполняем и запускаем форму
  • Отключаем функцию Запись

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

Image 3908

4. Далее создадим функцию report_wireframes()  и укажем два аргумента  path_tridb и path_rpt, которые будет передаваться функции при вызове. В тело функции поместим код, который записали в 3м шаге.

Чтобы запускаемая функция Майкромайн использовала переменные, который будут передаваться в функцию report_wireframes(path_tridbpath_rpt), необходимо изменить записанный код, как показано ниже.

    Image 3909

    Image 3915

    Итоговая функция будет выглядеть следующим образом:

    Image 3912

    5. Далее вызовем функцию и передадим ей переменные:

    Image 3913


    После этого можете запускать скрипт!!!

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


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

    Итоговый скрипт:

    MMpy_Запуск функции Майкромайн с помощью скр....py

    MMpy_Создать новый  файл 


    Рассмотрим следующую задачу:

    Необходимо с помощью скрипта создать новый файл необходимой структуры.


    Решение:

    1. Создаем/открываем новый скрипт в редакторе скриптов (Скриптинг | Новый.)

      2. Импортируем библиотеку для работы с файлами и структурами Майкромайн

      Image 3926

      3. Создаем переменные Имя файла и  Путь, куда файл сохранить.

      Image 3927


      4. Создаем структуру нового  файла 

      Image 3928


      5. Добавляем в структуру необходимые столбцы

      Image 3929

      5. Создаем новый файл

      Image 3930

      6. Запускаем скрипт. Файл будет создан.

      Image 3931

      Итоговый скрипт:

      MMpy_Новый файл.py

      Python_Получить список всех файлов в указанной директории


      Рассмотрим следующую задачу:

      Например, у Вас в определённой директории есть ОЧЕНЬ много файлов .DWG и  необходимо их импортировать в Майкромайн. Чтобы подавать их в функцию импорта  необходимо получить  пути ко всем файла. 

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

      Решение:

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

      Пример кода:

      Image 3969

      Итоговый скрипт:

      Python_Получить список всех файлов в указанн....py