Your comments

HI Steve,


I am glad it helped.


Pavel

Hi Steve,


Yes, you are right and your pseudo-code looks fine, but it is not completed. Please use this plot_sections.py.

This is an example with some comments that will help you to undestand the code. Probably there is an easier way how to work with plotting but I am not aware of it. The steps are following:

1. Read the section data
2. Focus your data. This is where DisplayLimits is used
3. Create PEL file


To create a PEL you need to create a PEX file first. Micromine does not support now creating PEL files using scripts that is why we need to implement the following workaround:

1. Create a temporary macro

2. Create Plot file

3. Create PEL using the macro specifing just created plot file

4. Remove the macro


The attached script will create PEL files in your project directory. These files for demo:

SECTIONS_TEST.DAT - section file. Save it to ProjectDirectory\SECTIONS

SECTIONS_DEMO.STR - load it in Vizex before running the script.


If anyone can suggest a better approach, that would be good.


Regards,

Pavel

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

Welcome. In addition, PIP becomes problematic when you try to install a package that requires Visual Studio prerequisites (Scott has mention above). The way to avoid these problem it to install wheel files (pip install <wheel_path>). These wheels are already compiled so they can be installed easily.


P.S. Anaconda also has some problems you might encounter (I had them with Pandas and Matplotlib). In case you face these problems, use the following link to download wheels: http://www.lfd.uci.edu/~gohlke/pythonlibs/


Just download the one you need and use command "pip install <wheel_name>" (without quotes).

While working in command line ensure you are working in the directory where the wheel file is stored, then you won't get any issues with package installation.

I also would like to add that for Python 3.5 there is an easier way to install Python with the most popular external modules. The following link is to download Anaconda

https://www.continuum.io/downloads

This is a package with Python distribution and a lot of different external modules (numpy, scipy, matplotlib etc), so you will need to use PIP only for non-included modules.

Здравствуйте. Не видя код, я, конечно, не смогу сказать, возможно его оптимизировать или нет. Если хотите, чтобы я посмотрел, то можете выслать скрипт и, желательно, приложить файлы, которые он использует (блочка и т.д.). Выслать все это можно мне на почту pyakovlev@micromine.com. Общий комментарий: Питон является интерпретируемым языком, поэтому скрипт выполняется значительно дольше, чем аналогичный скомпилированный код. В зависимости от того, что Вы делаете, можно использовать различные сторонние библиотеки, которые находятся в интернете в свободном доступе (например, numpy, pandas, scipy и т.д.). Эти библиотеки уже содержат в себе оптимизированный донельзя код, что значительно ускорит работу скрипта.

"Итерироваться" по строкам сразу не получится, так как ММ не имеет методов, возвращающих для этих целей итерируемых объектов. То, что делаете Вы, это попытка найти минимум из числа, что невозможно, в следствие чего появилась эта ошибка. Таким образом, чтобы найти минимальную координату поля X, необходимо создать для начала список всех значений. Это сделать можно несколькими способами, вот два из них (первый ближе к тому, что Вы делаете, но является менее удобным для данной задачи):


После этого к массиву данных x_coord уже можно применять функцию min.


В Вашем цикле переменная n является объектом MMpy.Point3D (либо координаты блока, либо его размеры), который также не является итерируемым.

Да, конечно, могу. У скриптов есть своя отдельная справка, расположенная на панели инструментов редактора скриптов


или справа


Много вопросов - это хорошо.

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


Там же написано, что функция open принимает четыре входных параметра: путь к файлу блочной модели и поля X, Y, Z.

Комментарии по нему построчно следующие.

  1. Для начала, чтобы открыть блочную модель (или другой майкромайновский файл), необходимо создать объект либо блочной модели, либо файла соответственно. В данном случае в первой строке инициализируется переменная myBM в качестве объекта блочной модели.
  2. Инициализируется переменная myBkickModelFilename, в которой будет храниться путь к блочной модели.
  3. Инициализируются три переменных Xfield, Yfield и Zfield, в которых будут храниться имена полей координат блочной модели
  4. В четвертой строке написан оператор условия, который в случае значения Истина (True) выполняет блок, следующий сразу за условием, или в случае значения Ложь (False), выполняет блок, следующий после ключевого слова else. Функция open возвращается одно из этих значений: если файл открыт успешно, то True, в противном случае False
  5. Данная строка завершает выполнение скрипта c указанным в скобках сообщением для пользователя. В данном случае в роли этого сообщения выступает строка "Error: Problem opening Block Model"
  6. Ключевое слово else, указывающий на начало блока кода, который должен выполниться, если файл блочной модели был успешно открыт.
  7. Встроенная в Python функция print выводит любую информацию в окно вывода скрипта. В данном случае выводится количество строк в файле.
  8. Закрываем файл блочной модели.

Когда в окне вывода скрипта появляется ошибка на С++, то она означает лишь одно - неверные входные параметры у функции (либо их неверное количество, либо неверный тип). В остальном ошибки будут только от Python.

Если у Вас возникнут какие-то дополнительные вопросы, обращайтесь - ответим.