+2

Пересечение стрингов

Pavel Yakovlev (Moderator (RUS)) 10 years ago in Micromine / Scripting updated by Артём Дёмин 10 years ago 11

Приветствую!


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


Я нарисовал от руки небольшой пример:


Image 210


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


Image 211


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


Image 212


Скрипт: Пересечение стрингов.py

Необходимые файлы: mmfiles.py


Примечание:

  1. Прошу заметить, что файлы стрингов не обязательно сохранять, если они еще не были сохранены, так как Micromine по умолчанию их сохраняет в файл Без имени.str.
  2. Функция Создать точку на пересечении по умолчанию добавляет точки пересечения в файл стринга, однако скрипт удаляет эти точки оттуда. Так как этот файл так или иначе подвергся изменениям, он будет в окне просмотра помечен звездочкой, но это все тот же файл, поэтому если Micromine спросит: "Сохранить ли изменения в файле Без имени.STR?", то можно смело жать на любой ответ.

Спасибо! Только а как это запустить?....файлы в директории Питона есть, но запуск в ММ скрипта ровным счетом ничего не даёт..какие условия ещё надо бы соблюсти? :-) 

Артем, проверьте, все ли условия у Вас выполнены:

  1. Установлен сам Python: python-3.3.1.msi (желательно в директорию по умолчанию C:\Python33
  2. Файл Пересечение стрингов.py и mmfiles.py лежат в папке Вашего проекта.
  3. Открываете в редакторе скриптов (Ctrl+F11) сам скрипт и запускаете его, нажатием на кнопку . Если будут какие-то ошибки, то они появятся в окне Результат скрипта.
Я обновил ссылку на скрипт, скачайте заново и попробуйте. Если все равно не будет запускаться, обязательно пишите!

Добрый день, Павел! 

Все сделал по пунктам, но выдает такую ошибку:  


<class 'ImportError'>: cannot import name _fix:   File "<string>", line 2, in <module>

  File "C:\Program Files (x86)\Micromine 2013\python\lib\tkinter\__init__.py", line 36, in <module>

    from tkinter import _fix

>>> 


Артем, у Вас не запускается графический интерфейс скрипта...

Такая ошибка может выскочить, если у Вас не установлен Python, или Micromine не видит директорию, в которую он у Вас установлен. Создайте пустой скрипт, напишите в нем следующую строку: print(sys.path), и запустите его. В результате скрипта должно появиться:

['', 'C:\\Program Files (x86)\\Micromine 2013\\python33.zip', 'C:\\Python33\\DLLs', 'C:\\Python33\\lib', 'C:\\Program Files (x86)\\Micromine 2013', 'C:\\Python33', 'C:\\Python33\\lib\\site-packages']

У Вас так?

Сделал,

получилось такое: 

['', 'C:\\Program Files (x86)\\Micromine 2013\\python33.zip', 'C:\\Program Files (x86)\\Micromine 2013\\python\\DLLs', 'C:\\Program Files (x86)\\Micromine 2013\\python\\lib', 'C:\\Program Files (x86)\\Micromine 2013', 'C:\\Program Files (x86)\\Micromine 2013\\python', 'C:\\Program Files (x86)\\Micromine 2013\\python\\lib\\site-packages', 'D:\\ОЗЕРНОВСКОЕ_РП\\', 'D:\\ОЗЕРНОВСКОЕ_РП\\', 'D:\\ОЗЕРНОВСКОЕ_РП\\', 'D:\\ОЗЕРНОВСКОЕ_РП\\', 'D:\\ОЗЕРНОВСКОЕ_РП\\', 'D:\\ОЗЕРНОВСКОЕ_РП\\', 'D:\\ОЗЕРНОВСКОЕ_РП\\', 'D:\\ОЗЕРНОВСКОЕ_РП\\', 'D:\\ОЗЕРНОВСКОЕ_РП\\', 'D:\\ОЗЕРНОВСКОЕ_РП\\', 'D:\\ОЗЕРНОВСКОЕ_РП\\', 'D:\\ОЗЕРНОВСКОЕ_РП\\', 'D:\\ОЗЕРНОВСКОЕ_РП\\']


Где "D:\\ОЗЕРНОВСКОЕ_РП" это пусть к проекту...

Может он должен быть тогда тоже на С?

Нет, проблема в том, что у Вас нет в этом списке директорий 'C:\\Python33\\DLLs', 'C:\\Python33\\lib',  'C:\\Python33', 'C:\\Python33\\lib\\site-packages'. Скачали ли Вы и установили Python (python-3.3.1.msi)? Есть ли у Вас на диске С:\ папка Python33?

:-) 

я все скачал и  установил, так и  есть C:\\Python33',

Micromine после установки Python перезапускали?

Нет, но сейчас перезапустил, и скрипт запустился :-) 

Отлично! Возникнут еще вопросы, спрашивайте.

Хорошо, Спасибо! :-)