Third Party Libraries/ru

Обзор
Эти библиотеки не изменились в проекте FreeCAD. Они используются, в основном без изменений как динамические библиотеки (*.so или *.dll). Если их необходимо их изменение или нужен класс оболочка(wrapper class), тогда код оболочки или измененный код библиотеки помещается в пакет базовой установки FreeCAD. The used libraries are:

Рассмотрим используемый Набор библиотек вместо загрузки и установки всего по вашему усмотрению.

Python
Версия: 2.5 или выше

Лицензия: Python 2.5 license

Вы можете использовать исходники или бинарники из http://www.python.org/ или в качестве альтернативы использовать ActiveState Python от http://www.activestate.com/ хотя немножко сложно получить отладочные библиотеки от ActiveState.

Python 2 became obsolete in 2019. Further development of FreeCAD will use exclusively Python 3; compatibility with Python 2 won't be explicitly added, so old workbenches and macros that use that version will have to be migrated or they may stop working.

Описание
Python является основным языком сценариев и используются во всем приложении. Например:


 * Реализация сценариев для тестирования на:
 * утечки памяти
 * обеспечить предоставление функциональности после изменений
 * проверки после сборки
 * испытаний тестового покрытия
 * Макросы и запись макросов
 * Реализация логики приложения для стандартных пакетов
 * Реализация цельных Инструментариев
 * Динамическая загрузка пакетов
 * Реализация правил проектирования (Инженерия знаний)
 * Выполнение некоторых модных Internet фишек, как групповая работа и PDM
 * И так далее ...

Особенно используется динамическая загрузка пакетов в Python, для загрузки во время выполнения дополнительной функциональности или инструментария, необходимых для актуальных задач. Для ближайшего рассмотрения Python см: www.python.org Вы можете спросить, почему Python? Есть несколько причин: До сих пор я использовал различные языки сценариев в моей профессиональной жизни: Python более OO(Объектно Ориентирован) чем Perl и Tcl, его код не беспорядочен как в Perl и VB. Java не является языком сценариев, в первую очередь потому что её трудно (или невозможно) встроить. Python отлично задокументирован, его просто встраивать и расширять. Он также хорошо протестирован и обладает сильным влиянием в open source сообществе.
 * Perl
 * Tcl/Tk
 * VB
 * Java

Благодарности
Благодарим Guido van Rossum и множество людей что сделали Python таким успешным!

OpenCasCade
Версия: 5.2 и выше

Лицензия: OCTPL

OCC это полнофункциональное CAD Ядро. Первоначально, оно разрабатывалось французской компанией Matra Datavision для приложений Strim (Styler) и Euclid Quantum позже его код открыли. Это действительно огромная библиотека сделавшая создание свободного CAD приложения - возможным, в первую очередь, предоставив некоторые пакеты которые трудно или невозможно было реализовать как проект с открытым исходным кодом:
 * Полностью STEP совместимое геометрическое ядро
 * Топологические модели данных и все необходимые функции для работы с ними (отрезать, слить, вытянуть, и так далее. . . )
 * Стандартные процессоры Импорта- / Экспорта в STEP, IGES, VRML
 * 3D и 2D просмотрщики с поддержкой выбора(выделения)
 * Структуры данных документа и проекта с поддержкой сохранения и восстановления, внешне связанных документов, перечитывания истории проектирования (параметрическое моделирование) и средство для загрузки новых типов данных как динамически расширяемых пакетов

Чтобы узнать больше о OpenCasCade посмотрите странице OpenCasCade или http://www.opencascade.org.

Qt
Версия: 4.1.x или выше

Лицензия: GPL v2.0/v3.0 или коммерческая (для Версии 4.5 он также LPGL v2.1)

Я не думаю, что нужно много рассказывать о Qt. Это один из наиболее часто используемых инструментальных средств графического интерфейса в проектах с открытым исходным кодом.Для меня главным в использовании Qt является Qt Designer, и возможность загрузить целый диалоговых окон, как (XML) ресурсов и включение специализированных виджетов. В CAx приложениях взаимодействие с пользователем и диалоговые окна на сегодняшний день являются большей частью кода и хорошее проектирование диалогов очень важно для простого расширения FreeCAD новой функциональностью. Дополнительную информацию и очень качественную online документацию вы можете найти на http://www.qtsoftware.com.

Shiboken and Pyside
Shiboken (Shi bō ken, 死某剣) is the Python binding generator that Qt for Python uses to create the PySide module, in other words, is the system we use to expose the Qt C++ API to Python.

The name Shiboken2 and PySide2 make reference to the Qt 5 compatibility, since the previous versions (without the 2) refer to Qt 4. Read more about Shiboken and Pyside on Qt for Python wiki page

Coin3D
Версия: 2.0 и выше

Лицензия: GPL v2.0 или коммерческая

Coin это высокоуровневая библиотека 3D графики с C++ API. Coin использует структуры данных в виде древа сцен для отображения графики в реальном времени, подходит для большинства в основном научных и инженерных приложений визуализации.

Coin портирован на широкий спектр платформ: любая UNIX / Linux / *BSD платформа, все операционные системы Microsoft Windows, и Mac OS X.

Coin построен на стандарте-индустрии OpenGL библиотеки в режиме немедленного рендеринга, и добавляет абстракции для высокоуровневых примитивов, обеспечивает 3D интерактивность, очень повышает удобство и производительность программиста, и содержит много сложных функций оптимизации для быстрого рендеринга, которые являются прозрачными для прикладного программиста.

Coin основан на SGI Open Inventor API. Open Inventor, для тех кто не знаком с ним, уже давно стал стандартом де-факто графической билиотеки для 3D визуализации и програмного обеспечения для визуального моделирования в научном и инженерном сообществе. Она доказала это в теченнии 10 лет, как зрелый вклад в качестве основного строительного блока в тысячи крупномасштабных инженерных приложений по всему миру.

Мы будем использовать OpenInventor как 3D просмотрщик в FreeCAD потому что OpenCasCade просмотрщик (AIS и Graphics3D) имеют серьёзные ограничения и узкие места в производительности, особенно когда речь заходит о крупномасштабном инженерном отображении. Всякие вещи, вроде текстур или объемного рендеринга на самом деле не поддерживаются, и так далее ....

Так Версия 2.0 Coin использует различные модели лицензирования. Это больше не LGPL. Они используют GPL для проектов с открытым исходным кодом и коммерческую лицензию для закрытого исходного кода. Это означает, что если вы хотите продать вашу работу основанную на FreeCAD (модули расширений) вам нужно приобрести лицензию на Coin!

SoQt
Версия: 1.2.0 или выше

Лицензия: GPL v2.0 или коммерческая

SoQt это Inventor привязки к Qt Gui Toolkit. К сожалению это больше не LGPL так что мы должны удалить её из кодовой базы FreeCAD и связать её как библиотеку. Он имеет ту же модель лицензирования, что и coin. И вы должны скомпилировать его с вашей версией Qt.

SoQt is no longer used in FreeCAD, it was replaced by Quarter which is a more recent binding.

Quarter
Version: 1.0 or higher

Quarter is a new Coin3d binding to the Qt toolkit. A version of it is included in the source code of FreeCAD.

Xerces-C++
Версия: 2.7.0 или выше

Лицензия: Apache Software License Версия 2.0

Xerces-C++ синтаксический анализатор XML написанный на портируемом подмножестве C++. Xerces-C++ позволяет вашему приложению легко читать и записывать XML данные. Динамическая библиотека предназначена для анализа, генерации, обработки и проверки XML документов.

Xerces-C++ привержен XML 1.0 рекомендациям и многим связанным с ним стандартам (смотри Будущие возможности).

Анализатор обеспечивает высокую производительность, модульность и масштабируемость. Исходный код, образцы и API документация предоставляются с анализатором. Приняты меры, для переносимости, чтобы сделать минимальным использованием шаблонов, нет RTTI, и минимальное использование # ifdefs.

Анализатор используется для сохранения и восстановления параметров в FreeCAD.

Zlib
Версия: 1.x.x

Лицензия: zlib License

zlib разработан для свободного, универсального, юридически неизрасходованного - то есть, не отнесенного к какому-либо патенту - библиотека сжатия данных без потерь для использования практически на любом оборудовании и операционной системе. zlib формат данных самопереносимый между платформами. В отличие от метода сжатия LZW используемого в Unix compress(1) и GIF формата изображений, метод сжатия используемый в настоящее время в zlib по существу, никогда не расширяет данные. (LZW может удвоить или утроить размер файла в крайних случаях.) память требуемая zlib не зависит от входных данных и может быть уменьшена, при необходимости, в таких расходах на сжатие.

Boost
Версия: 1.33.x

Лицензия: Boost Software License - Версия 1.0

Boost C++ библиотеки это коллекция рецензируемых библиотек, с открытым исходным кодом, они расширяют функциональные возможности C++. Библиотеки лицензируется на условиях Boost Software License, которая позволяет использовать Boost с проектами как с открытым так и с закрытым исходным кодом. Многие основатели Boost входят в комитет стандартизации C++ и несколько Boost библиотек приняты для включения в Technical Report 1 о C++0x.

Библиотеки направлены на широкий круг пользователей C++ и прикладных областей. Они варьируются от универсальных библиотек вроде SmartPtr, до ОС Абстракций как FileSystem, библиотеки направленные в первую очередь на разработчиков библиотек и продвинутых C++ пользователей, таких как MPL.

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

Смотри: http://www.boost.org/ для подробностей.

libarea
Version: N/A

License: New BSD (BSD 3-Clause)

Area is a piece of software created by Dan Heeks for HeeksCNC. It is employed as a library for generation of CAM related operations in the Path Workbench.

LibPack
LibPack это удобный пакет со всеми вашими библиотеками упакованными вместе. Он в настоящее время доступен для платформы Windows на странице Загрузок ! Если вы работаете в Linux вам не нужен LibPack, вы должны использовать репозитории пакетов вашего дистрибутива Linux..

FreeCADLibs7.x Изменения

 * Используется QT 4.5.x и Coin 3.1.x
 * добавлена Eigen библиотека шаблонов для Robot
 * SMESH экспериментально