Third Party Libraries/ru

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

Зависимости должны быть установлены в системе перед компиляцией; см. Unix / compile on Linux / Unix, Compile_on_Windows / compile on Windows и Compile_on_MacOS / compile on macOS для большей информации.

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

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

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

Python- это общедоступный универсальный язык сценариев, который широко используется в Linux и программном обеспечении с открытым исходным кодом. В FreeCAD Python используется во время компиляции, а также во время выполнения по-разному. Он используется
 * для написания тестовых сценариев для тестирования на различные условия, такие как утечки памяти, для обеспечения функциональности программного обеспечения после изменений, для проверок после сборки и тестов покрытия тестов,
 * для записи macros и записи макросов,
 * для реализации логики приложений для стандартных пакетов,
 * для реализации вспомогательных инструментов, таких как Addon Manager,
 * для реализации целых рабочих столов, таких как Draft и Arch,
 * для динамической загрузки пакетов,
 * для реализации правил проектирования (knowledge engineering),
 * для создания необычных интернет-взаимодействий, таких как рабочие группы и PDM

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

Python был выбран в качестве языка сценариев для FreeCAD по разным причинам:
 * Он более объектно-ориентирован, чем Perl и Tcl.
 * Код более понятен, чем Perl и Visual Basic.
 * Его проще внедрить в другое приложение, в отличие, скажем, от Java.

Таким образом, Python хорошо документирован, и его легко встраивать и расширять в приложение на C++. Он также хорошо протестирован и пользуется сильной поддержкой сообщества с открытым исходным кодом. Узнайте больше о Python и просмотрите официальную документацию по адресу Python.org.

Boost
Версия: 1.33.x

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

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

Из-за их популярности и стабильности многие библиотеки Boost были приняты для включения в стандарт C++11, и еще больше планируется включить в последующие стандарты C++.

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

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

Лицензия: OCTPL

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

OCCT - это большой и сложный набор библиотек C++, которые обеспечивают функциональность, необходимую для приложения CAD:
 * Полное ядро геометрии, совместимое с STEP.
 * Топологическая модель данных и необходимые функции для работы с фигурами (вырезание, плавление, выдавливание и многие другие).
 * Стандартные процессоры импорта и экспорта для таких файлов, как STEP, IGES, VRML.
 * Просмотрщик 2D и 3D с поддержкой выбора.
 * Структура данных документа и проекта с поддержкой сохранения и восстановления, внешнего связывания документов, пересчета истории проектирования (параметрическое моделирование) и возможностью динамической загрузки новых типов данных в виде пакета расширений.

В разных дистрибутивах Linux существуют две основные версии OpenCascade. Один из них распространяется оригинальными разработчиками; он известен как OCCT и упакован под именами или. Другая версия - "издание сообщества", сокращенное OCE, и обычно встречается с именем. FreeCAD может компилироваться с любой версией, однако с 2016 года FreeCAD рекомендует компилироваться с официальными библиотеками OCCT, а не с официальными библиотеками OCE. Причина в том, что в издании сообщества отсутствуют важные исправления ошибок и функции, которые улучшают использование FreeCAD.

Чтобы узнать больше о 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.

Дополнительная информация о библиотеках Qt и их программной документации доступна по адресу Qt Documentation.

Shiboken2 and Pyside2
Shiboken-это генератор привязки Python, который Qt для Python использует для создания модуля PySide, другими словами, это система, используемая для предоставления API Qt C++ языку Python.

Оригинальные пакеты Shiboken и PySide предназначены для использования с Python 2 и Qt4; поскольку эти две версии считаются устаревшими в 2019 году, пожалуйста, используйте Shiboken2 и PySide2, которые работают с Python 3 и Qt5. Новая разработка FreeCAD выполняется с Python 3 и Qt5, поэтому совместимость с Python 2 и Qt4 не гарантируется после FreeCAD 0.18.

Подробнее о Shiboken и Pyside читайте на Qt для Python.

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

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

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

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

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

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

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

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

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

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

SoQt больше не используется в FreeCAD, он был заменен на Quarter, который является более поздней привязкой Qt.

Quarter
Версия: 1.0 или выше

"'Лицензия:"' Лицензия BSD 3 пункта

Quarter-это более новая привязка Coin3D к инструментарию Qt. Его версия включена в исходный код FreeCAD, поэтому она компилируется вместе с ним.

Pivy
"'Версия:"' 0.6.3 или выше

"'Лицензия:"' Лицензия BSD 3 пункта

Pivy - это библиотека, которая завёртывает библиотеку Coin3d для использования в Python. Он не нужен для сборки FreeCAD или для его запуска, но он необходим в качестве зависимости во время выполнения Draft Workbench и другими инструментальными средствами, которые используют его внутри, например Arch и BIM.

Если вы не собираетесь использовать эти инструментальные средства, вам не понадобится Pivy.

Ply
"'Версия:"' 3.11 или выше

"'Лицензия:"' Лицензия BSD 3 пункта

Ply-это синтаксический анализатор Python-Lex-Yacc. Он используется в качестве зависимости во время выполнения OpenSCAD Workbench. Если вы не используете этот инструментальное средство, вам может не понадобиться этот пакет.

Для подробной информации см. Ply homepage

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

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

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

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

Eigen3
"'Версия:"' 3.0 или выше

"'Лицензия:"' Начиная с версии 3.1.1, она лицензируется в соответствии с Mozilla Public License 2.0. Более ранние версии были лицензированы в соответствии с GNU Lesser General Public License 3.

Eigen-это библиотека моделей C++ для линейной алгебры: матрицы, векторы, численные решатели и связанные с ними алгоритмы.

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

Eigen используется в FreeCAD для многих векторных операций в 3D-пространстве. Чтобы узнать больше, посетите Eigen homepage.

Zipios++
"'Версия:"' 0.1.5 или выше

"'Лицензия:"' Меньшая Общая публичная лицензия GNU 2.1

Zipios++ - это библиотека C++ для чтения и записи файлов. Доступ к отдельным записям обеспечивается с помощью стандартных потоков ввода-вывода C++. Простая виртуальная файловая система, доступная только для чтения, которая монтирует обычные каталоги и файлы также предоставляются. Структура и общедоступный интерфейс Zipios++ в значительной степени основаны на пакете Java.

Собственный формат файла FreeCAD на самом деле является  файл, в котором хранятся и сжимаются другие типы данных внутри него, такие как файлы BREP и XML. Поэтому Zipios++ используется для сохранения и открытия сжатых архивов, включая файлы FreeCAD.

Копия Zipios++ включена в исходный код FreeCAD, поэтому она компилируется вместе с ним. Если вы хотите использовать внешнюю библиотеку Zipios++, предоставляемую вашей операционной системой, вы можете установить  с помощью.

Zipios++ использует библиотеку Zlib для выполнения фактической распаковки файлов.

Zlib
Версия: 1.0 или выше

Лицензия: zlib лицензия

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

Копия этой библиотеки включена в исходный код FreeCAD, поэтому она компилируется вместе с ней.

libarea
"'Версия:"' 0.0.20140514-1 или выше

"'Лицензия:"' Лицензия BSD 3 пункта

Libarea-это библиотека программного обеспечения для вычисления профилей и карманных операций, которые используются в программном обеспечении для автоматизированного производства (CAM). Он был создан Дэном Хиксом для его проекта HeeksCNC.

Копия библиотеки включена в исходный код Path Workbench, поэтому она компилируется вместе с ним.

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

Если вы работаете под Linux, вам не нужен пакет LibPack, так как вы можете получить зависимости из репозиториев вашего дистрибутива, как указано на странице compile on Unix.

FreeCAD 12.1.2
See the announcement in the forum: New libpacks for Windows with Qt5.12, OCC7.3 and Python 3.6 by apeltauer

Он включает, среди прочего: Boost 1.67, Coin3D 4.0.0 a, Eigen3, Open CASCADE Technology 7.3.0, Python 3.6.8, PySide2, Qt 5.12.1, Salome SMESH, Shiboken2, vtk7, Xerces-C, Zipios++, zlib 1.2.11