Дополнительные python модули
Р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.