Дополнительные python модули

From FreeCAD Documentation
Revision as of 16:22, 22 February 2011 by Psi13art (talk | contribs) (Created page with 'Рython интерпритатор внутри FreeCAD может быть легко расширен, добавлением новых модулей к установлен…')
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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

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

Примечание: один из следующих модулей, Pivy полностью интегрирован в пакет установки FreeCAD, а PyQt4 также интегрирован в пакет установки на Windows.

PyQt4

Домашняя страница: http://www.riverbankcomputing.co.uk/pyqt

PyQt (версия 4) это библиотека python привязок которая позволяет вашим программам получить доступ, создать или изменить Qt интерфейсы. Поскольку интерфейс FreeCAD построен с помощью Qt, установленный в вашей системе PyQt4 позволит python программам внутри FreeCAD получить доступ к интефейсу, изменять его части, создавать новые виджеты или собирать информацию о частях интерфеса.

PyQt выпущен под несколькими лицензями , так же как и Qt. Резюмируя, есть комерческая и свободная GPL версия. Если вы хотите использовать в комерческих (закрытый код) программах, вам необходимо преобрести коммерческую лицензию, в противном случае вы можете просто установить и использовать свободную GPL версию.

Установка

Перед установкой PyQt4, вам очевидно необходима установленная и работающее python окружение.

Linux

Самы простой способэто установить PyQt4 с помощью менеджера пакетов вашего дистрибутива. в Debian/Ubuntu системах, этот пакет в основном называется python-qt4, тогда как в системах основанных на RPM он называется pyqt4. Необходимые зависимости (Qt и SIP) будут удовлетворены автоматически.

Windows

Скачайте программу отсюда. Вам нужно будет установить библиотеки Qt и SIP перед установкой pyqt4 (будет описано).

Использование

После установки, вы можете проверить, все ли работает, набрав в консоли FreeCAD:

import PyQt4

Чтобы получить оступ к FreeCAD интерфейсу, введите:

from PyQt4 import QtCore,QtGui
app = QtGui.qApp
FreeCADWindow = app.activeWindow()

Теперь вы можете изучать интерфейс с помощью команды dir() . Вы можете добавлять новые элементы, такие как пользовательские виджеты, такими командами как:

FreeCADWindow.addDockWidget(QtCore.Qt.RghtDockWidgetArea,my_custom_widget)

Документация

Больше учебников по pyQt4 (в том числе от том как использовать в python интерфейс построенный с помощью Qt Designer):

http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/classes.html - фициальное руководство по PyQt4 API

http://www.rkblog.rk.edu.pl/w/p/introduction-pyqt4/ - простенькое введение

http://www.zetcode.com/tutorials/pyqt4/ - очень полный и подробный учебник

Руководства на русском, можно найти в ссылка на страницы PyQt в википедии, там же


Pivy

Домашняя страница: http://pivy.coin3d.org/

Pivy это библиотека привязок к coin для python, оффициально поддерживаимая coin. Сам Coin это набор инструментов для построения 3D приложения с OpenGL. Это инструментарий который использует FreeCAD чтобы отрисовывать 3d Сцены на экране. Установка Pivy в вашу систему позволит python программа получить доступ к древу сцен FreeCAD , рисовать новые объекты на сцене и использовать широкий спектр доступных Coin инструментов для чертежных(рисовательных) операций. Coin основан на открытом языке описания сцен Inventor. Pivy используется в эскизном модуле FreeCAD (в также в полный(готовый) модуль), так что он нужен если вы хотите использовать любой инструмент из этих модулей.

Важно знать что FreeCAD использует coin только для представления объектов на экране, он отделен от задания объектов. Это означает что pivy не будет изменять существующие объекты, не создавать действительные FreeCAD объекты. Но он может быть использован для создания временных видов и временных часте, вроде осей, сеток, манипуляторов, вспомогательной геометрии и.т.д...

Pivy, так же как и Coin, выпущен по лицензией GPL.

Установка

Debian & Ubuntu

Начиная с Debian Squeeze и Ubuntu Lucid, pivy стал доступен напрямую через официальные репозитории, экономя ваше время. В то же время вы можете скачать один из пакетов что мы сделали (для debian и ubuntu karmic) доступных на странице Загрузок , или скомпилировать их самостоятельно.

Лучший способ скомпилировать pivy просто вытянуть debian пакет с исходными кодами для pivy и сделать пакет с помощью debuild. Это тот же исходный код что и на оффициальном сайте pivy , но люди debian исправили несколько ошибок. Он также хорошо компилируется в ubuntu karmic из: http://packages.debian.org/squeeze/python-pivy (скачайте .orig.gz и .diff.gz файл, распокуйте оба, добавте .diff к исходному коду: перейдите к каталогу с распакованными кодами pivy , и примените .diff патч:

patch -p1 < ../pivy_0.5.0~svn765-2.diff

затем

debuild

теперь у вас есть правильно собраный pivy в оффициально устанавливаемых пакетах. Теперь, просто установите пакет с помощью gdebi.

Другие linux дистрибутивы

Сперва получите код из официального репозитория проекта:

svn co https://svn.coin3d.org/repos/Pivy/trunk Pivy 

Затем вам понадобится инструмент называемыйd SWIG для создания C++ кода для Python привязок. Рекомендуется использовать версию SWIG 1.3.25 , не последнюю версию, потому как на данный момент pivy корректно работает только с 1.3.25. Скачайте 1.3.25 tarball с исходными кодамииз http://www.swig.org. Распакуйте и в командной строке (под root-ом):

./configure
make
make install (или checkinstall если вы используете его)

Сборка занимает всего несколько секунд.

После чего отправляйтесь в папку с исходниками pivy и вызовете

python setup.py build 

котороя создает исходные файлы. Вы можете столкнуться при компиляции с ошибкой 'const char*' cannot be converted in a 'char*'. Чтобы исправить это вам необходимо написать 'const' перед следующей строкой(char*). Исправте ещё шесть строк. После чего, установите введея (под root-ом):

python setup.py install (or checkinstall python setup.py install)

Вот и всё, pivy установлен.

Windows

Предполагается использование Visual Studio 2005 или позднии версии вы предется открыть командную строку 'Visual Studio 2005 Command prompt' из меню Tools. Если Python интерпритатор ещё не прописан в системном пути, сделайте это

set PATH=path_to_python_2.5;%PATH%

Чтобы получить работающий pivy вы должны получить последнюю версию исходников из репозитория проекта:

svn co https://svn.coin3d.org/repos/Pivy/trunk Pivy 

Затем вам понадобится инструмент называемыйd SWIG для создания C++ кода для Python привязок. Рекомендуется использовать версию SWIG 1.3.25 , не последнюю версию, потому как на данный момент pivy корректно работает только с 1.3.25. Скачайте 1.3.25 tarball с исходными кодамииз http://www.swig.org. Затем распакуйте его и в командной строке добавте к системному пути

set PATH=path_to_swig_1.3.25;%PATH%

и установите COINDIR на соответсвующий путь

set COINDIR=path_to_coin

В Windows pivy конфигурационный файл нахотится в SoWin вместо SoQt по умолчанию. Мне не удалось найти очевидный способ собрать с SoQt, поэтому я изменил файл непосредственно setup.py. В 200 строке удалите часть 'sowin' : ('gui._sowin', 'sowin-config', 'pivy.gui.') (не удалйте закрывающиеся скобки).

После чего отправляйтесь к исходным кодам pivy и введите команду

python setup.py build 

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

set INCLUDE=%INCLUDE%;path_to_coin_include_dir

если нет заголовочных файлов SoQt на месте , также с заголовками Coin

set INCLUDE=%INCLUDE%;path_to_soqt_include_dir

и в конце Qt заголовочные файлы

set INCLUDE=%INCLUDE%;path_to_qt4\include\Qt

Если вы используете Express Edition версию Visual Studio вы можете получить исключение python keyerror. В этом случае Вам необходимо изменить кое-что в msvccompiler.py расположенный в месте кужа вы установили Python.

шагом марш на 122 строку и замените строку

vsbase = r"Software\Microsoft\VisualStudio\%0.1f" % version

на

vsbase = r"Software\Microsoft\VCExpress\%0.1f" % version

Повторите сборку снова. Если вы получили вторую ошибку, вроде

error: Python was built with Visual Studio 2003;...

вы должны поменять 128 строку

self.set_macro("FrameworkSDKDir", net, "sdkinstallrootv1.1")

на

self.set_macro("FrameworkSDKDir", net, "sdkinstallrootv2.0")

Повторите сборку снова. Если вы опять получили ошибку

error: Python was built with Visual Studio version 8.0, and extensions need to be built with the same version of the compiler, but it isn't installed.

проверте пересеменные окружения DISTUTILS_USE_SDK и MSSDK с помощью

echo %DISTUTILS_USE_SDK%
echo %MSSDK%

Если они еще не установлены, то просто установите например, до 1

set DISTUTILS_USE_SDK=1
set MSSDK=1

Вы можете столкнуться при компиляции с ошибкой 'const char*' cannot be converted in a 'char*'. Чтобы исправить это вам необходимо написать 'const' перед следующей строкой(char*). Исправте ещё шесть строк. После чего, скопируйте созданный pivy каталог, в место где python интрепритатор FreeCAD сможет найти его.

Использование

Чтобы Pivy получил доступ FreeCAD древу сцен сделайте следующие:

from pivy import coin
App.newDocument() # Open a document and a view 
view = Gui.ActiveDocument.ActiveView 
FCSceneGraph = view.getSceneGraph() # returns a pivy Python object that holds a SoSeparator, the main "container" of the Coin scenegraph
FCSceneGraph.addChild(coin.SoCube()) # add a box to scene 

Теперь вы можете изучать FCSceneGraph с помощью команды dir().

Документация

К сожалению сам pivy , ещё не обладает надлежащей документацией, но так как это точный перевод coin на Python, вы можете смело использовать документацию по coin как введение и используя стиль python вместо c++ стиля (например SoFile::getClassTypeId() в pivy будет SoFile.getClassId()):

http://doc.coin3d.org/Coin/classes.html - Руководство по Coin3D API

http://www-evasion.imag.fr/~Francois.Faure/doc/inventorMentor/sgi_html/index.html - The Inventor Mentor - "bible" по языку описания сцены Inventor.

Вы также можете просмотреть в Draft.py файл в папке FreeCAD Mod/Draft , так как там часто используется pivy.

Localisation/ru
Source documentation/ru
Available translations of this page: Template:Se