Полная история FreeCAD. От личной идеи до первого признания…
Глава 1. Инженер, решивший сделать шаг в пустоту
Январь 2001 года. Юрген Ригель, немецкий инженер, работающий над проектами для Daimler, садится за компьютер и начинает писать код. Никто не давал ему задание, никто не выделял бюджет, никто не ждал результат (да и он сам пожалуй тоже). Просто он решает, что пришло время попробовать сделать то, чего в открытом мире ещё никто не сделал: конструктор параметрических САПР.

Юрген Ригель - папа FreeCAD
Почему именно тогда? Потому что совпали три вещи.
Во-первых, Ригель уже два года работал с OpenCascade — мощным геометрическим ядром, которое он использовал в проекте под названием QSpect. К концу той работы он стал главным разработчиком ПО в этом проекте и «многое узнал о 3D и программировании САПР», как он сам позже напишет на форуме.
Во-вторых, он видел перед собой Catia V5 — один из самых совершенных инженерных продуктов того времени — и отчётливо понимал, какой должна быть правильная САПР.
А в-третьих, и это, наверное, самое главное, OpenCASCADE, ранее известное как коммерческое ядро Cas.CADE, только что открыло исходный код. Строить трёхмерную САПР с нуля — это объём работы, сопоставимый с созданием операционной системы. Но если у вас уже есть готовое ядро, способное выполнять сложнейшие геометрические расчёты, задача становится просто очень сложной вместо нерешаемой.
И вот Ригель пишет: «Cas.CADE стал открытым исходным кодом незадолго до этого, поэтому казалось подходящим моментом, чтобы попробовать двигаться в пустующем в то время пространстве САПР с открытым исходным кодом». Он называет свой проект GOM — Graphical Object Modeler, графический объектный моделировщик. Звучит не очень вдохновляюще, но сам Ригель честно признаётся: «Я очень плох в придумывании названий».
Тогда же он принимает три ключевых архитектурных решения, которые предопределят судьбу будущего FreeCAD на десятилетия вперёд. Во-первых, он берёт за основу ядро OpenCASCADE (C++ библиотеки для геометрических расчётов). Во-вторых, для интерфейса выбирает Qt — мощный и кроссплатформенный фреймворк. А в-третьих, решает использовать Python в качестве языка для скриптинга и расширения.
Это последнее решение окажется судьбоносным, хотя в тот момент никто этого ещё не понимает.

Ещё не зарегистрированный FreeCAD конца 2001 года
Глава 2. Рождение имени и первый анонс
17 марта 2002 года происходит событие, которое можно считать формальным днём рождения FreeCAD. Ригель регистрирует проект на SourceForge под именем FreeCAD. Он пишет: «Я не мог придумать лучшего названия». Забавно, но это имя закрепилось именно потому, что оказалось самым прямым и очевидным: свободная САПР.
Первый релиз выходит 29 октября 2002 года. Это, конечно, не тот FreeCAD, который можно скачать сегодня. Это даже не тот FreeCAD, который можно будет скачать через десять лет. Это сырой прототип, в котором обычный пользователь не смог бы сделать практически ничего полезного. Но он существует. Он компилируется. Он запускается. А для Ригеля этого пока достаточно — он строит мечту.
В 2003 году он выходит на публику. На форуме OpenCascade появляется сообщение: «Привет всем, меня зовут Юрген Ригель, и сегодня я хочу представить проект OpenCasCade — FreeCAD». В том сообщении он описывает, что FreeCAD — это «Open Source CAx RAD на основе OpenCasCade, Qt и Python». Он перечисляет ключевые концепции: запись макросов, рабочие столы (workbenches), возможность работы в режиме сервера и динамически загружаемые расширения.
И в том же сообщении он честно предупреждает: «Хотя программа находится на ранней стадии и ещё не пригодна для использования ни обычными пользователями, ни разработчиками — планируется выпустить первую версию для пользователей в конце 2003 года — я хотел бы получить некоторые отзывы о дизайне и направлении развития». Интерфейс уже почти готов, и теперь, вместе со своим коллегой Вернером Майером, он начинает добавлять первые CAD-функции.
А затем Ригель делает важное уточнение: «FreeCAD можно рассматривать как систему механического проектирования общего назначения, но её первой аудиторией, я думаю, будут разработчики CAx, которым нужен фундамент для своих проектов». Обратите внимание на эту фразу. Изначально Ригель вообще не планировал делать продукт для конечных пользователей. Он делал платформу для разработчиков. FreeCAD должен был стать тем, на чём другие смогут строить свои специализированные САПР.
Именно это понимание многое объясняет в дальнейшей истории FreeCAD. Почему интерфейс долгое время был таким… специфическим? Потому что его делали программисты для программистов. Почему документация хромала? Потому что настоящие пользователи появились позже, когда разработчики уже привыкли общаться друг с другом на форумах на языке патчей и коммитов.
Глава 3. Вернер Майер и подарок судьбы
В апреле 2003 года в жизни FreeCAD происходит важная перемена. Вернер Майер, коллега Ригеля по проекту QSpect, меняет работу и устраивается в компанию Imetric. На первый взгляд — обычная смена работы, но для FreeCAD это оказывается поворотным моментом.
Imetric занимается 3D-сенсорами и активно ищет новую программную платформу для своих систем. Контакт оказывается очень перспективным. «В 2005 году Imetric передала FreeCAD и open-source сообществу большую часть своего Mesh-модуля, и с тех пор использует FreeCAD как основу для своего программного обеспечения для сенсорных систем», — пишет Ригель. А Вернер Майер с этого момента становится одним из самых активных разработчиков FreeCAD.
Неожиданный поворот с передачей Mesh-модуля выглядит щедрым жестом, но на самом деле это была классическая «win-win» ситуация, где совпали интересы компании и нужды молодого проекта. Благодаря переходу на новое место Вернера Майера и возникшему в Imetric запросу на новое ПО, сделка оказалась выгодной для обеих сторон.
На самом деле, никакой «просто щедрости» здесь не было. У компании Imetric был вполне прагматичный и рациональный интерес:
Бизнес-необходимость: Компании требовалось программное обеспечение нового поколения для своих 3D-сенсоров. Своими силами разрабатывать его с нуля было очень долго и дорого.
Поиск надежного фундамента: Встреча с Юргеном Ригелем и FreeCAD открыла для Imetric перспективу. Проект выглядел как готовая основа для их будущего коммерческого продукта.
Взаимовыгодный обмен: У Imetric уже был собственный Mesh-модуль (для работы с сетками, используемый для обработки данных с 3D-сканеров). FreeCAD же на тот момент имел ограниченный функционал в этой области.
Человеческий фактор (ключевой): Вернер Майер, перешедший на работу в Imetric, был лично заинтересован в развитии FreeCAD. Он фактически стал связующим звеном между компанией и проектом, убедив руководство в ценности такого партнерства.
Таким образом, Imetric не просто «пожертвовала» код. Компания сделала инвестицию: передала FreeCAD модуль для получения в ответ готовую, поддерживаемую и развивающуюся платформу под свой коммерческий продукт.
FreeCAD: Проект получил в дар полностью рабочий и отлаженный Mesh-модуль, а также обрел в лице Вернера Майера одного из самых преданных и активных разработчиков в своей истории.
Imetric: Компания получила надежную и бесплатную программную платформу. Это позволило ей сосредоточиться на своей ключевой экспертизе (3D-сканеры, фотограмметрия), не тратя ресурсы на разработку и поддержку базового ПО с нуля.
Решение Imetric было прагматичным и взаимовыгодным. В истории open-source это классический пример того, как встреча коммерческого интереса, личной увлеченности и грамотного стратегического мышления может принести огромную пользу всему сообществу.
Тот же 2005 год приносит ещё одно важное архитектурное решение. Ригель пишет: «После года борьбы я решил отказаться от документального фреймворка OpenCascade и заменить его собственной реализацией. В итоге мы используем только CAD-ядро OpenCascade, а не весь фреймворк».
Для непосвящённых это звучит как техническая мелочь. На самом деле это был очень правильный шаг. OpenCascade предлагал не только геометрическое ядро, но и целую экосистему — включая систему управления документами, то есть то, как именно сохраняются, загружаются и связываются между собой элементы модели. Ригель понял, что эта система негибкая, тяжеловесная и не подходит для того, что он хочет построить. И он переписал её сам.
Это означало, что отныне FreeCAD полностью контролирует структуру своих документов, не зависит от прихотей разработчиков OpenCascade в этой части, и может развивать свою модель данных независимо. Но это также означало много месяцев дополнительной работы для одного (пока ещё одного) человека.
Глава 4. Python как оружие массового поражения
К 2007 году FreeCAD понемногу обрастает плотью. Происходит важный технологический переход — программа переключается на Qt4, что, помимо прочего, меняет лицензионные условия и упрощает жизнь разработчикам. Эту работу в основном делает Вернер Майер.
Но настоящий прорыв случается в 2008 году, когда к проекту присоединяется человек, который вообще не был инженером-программистом по образованию. Йорик ван Хавре — архитектор из Бразилии, пользователь Blender, который давно хотел, чтобы в мире существовала хорошая открытая САПР. Он заходит на форум FreeCAD и пишет: «Я сейчас работаю над модулем для FreeCAD, который добавляет базовую 2D CAD функциональность. FreeCAD всё ещё в очень ранней стадии альфа, и обычный пользователь не сможет с ним много сделать. Но если вы немного знаете Python, вы можете найти это очень интересным».

FreeCAD из 2008 года на Ubuntu
Ван Хавре пишет свой модуль целиком на Python — не на C++, как основное ядро FreeCAD, а именно на скриптовом языке. Это был смелый эксперимент. До этого момента в FreeCAD не было способа создавать 2D-геометрию через графический интерфейс. Draft Module, который он разрабатывал, должен был это изменить.
И это сработало. Новый верстак Draft доказал, что интеграция с Python — это не просто игрушка для дизайнеров, а вполне-себе полноценный механизм расширения возможностей FreeCAD. Ван Хавре не только создал инструмент, но и показал всему немногочисленному на тот момент сообществу, что любой пользователь, знакомый с Python, может добавлять в FreeCAD новые функции, не трогая сложное C++ ядро.
Со временем ван Хавре становится не просто разработчиком одного модуля. Он расширяет документацию FreeCAD, создаёт множество иконок для интерфейса и фактически становится «арт-директором» проекта, определяя его визуальный стиль. Архитектор, пришедший из Blender, оказывается тем, кто придаёт FreeCAD лицо.

Йорик ван Хавре представляет FreeCAD на FISL 16 в 2015 году
Глава 5. Годы в тени: медленный рост и первые плоды
2009 год. FreeCAD принимают в официальные репозитории Debian. Это важный момент — дистрибутив, который славится своей строгостью к качеству и лицензионной чистоте ПО, считает FreeCAD достойным включения. Годом позже его добавляют в Ubuntu. Теперь любой пользователь Linux может установить FreeCAD одной командой из официального центра приложений.
Пользователи начинают приходить. Совсем не толпами — пока что это в основном энтузиасты, разработчики, любопытные студенты. Но сообщество растёт. Появляются первые руководства, первые видеоуроки. Кто-то начинает использовать FreeCAD для 3D-печати — в то время как раз набирающей популярность технологии. Кто-то пробует проектировать простые механические детали.
Но главное. Бесплатность и склонность к экспериментам подавляющего числа линуксоидов позволяют новому ПО хоть как-то заявить о себе, пускай и в почти изолированной среде пользователей.

FreeCAD 0.1
Но программа всё ещё очень сырая. Интерфейс нелогичный, функции разбросаны по разным верстакам (workbenches) без внятной системы, документация отрывочна. И главное — есть одна фундаментальная проблема, которая делает жизнь пользователя настоящим адом, если он пытается создавать сложные параметрические модели.
Эта проблема называется «топологическое именование» (Topological Naming Problem, TNP)

FreeCAD 0.12
Глава 6. Проклятие TNP: почему FreeCAD ломал модели
Вы строите модель. Сначала рисуете эскиз — простой прямоугольник. Выдавливаете его — получаете параллелепипед. На одной из граней этого параллелепипеда рисуете новый эскиз — круг. Вырезаете цилиндрическое отверстие. Всё работает. Потом вы решаете изменить исходный эскиз: вместо прямоугольника 10х20 мм сделать 12х18 мм. И тут случается катастрофа.
Второй эскиз, который был привязан к конкретной грани первого тела, теперь не знает, куда ему прикрепляться. Потому что после изменения исходных размеров грань, к которой он был привязан, могла изменить свой внутренний идентификатор. Программа не может найти эту грань. Модель ломается.
Это и есть TNP. В профессиональных САПР с этим борются сложными патентованными алгоритмами, которые отслеживают историю изменений и стараются сохранять ссылки даже при изменении топологии. В FreeCAD долгое время этой проблемы просто… не решали. Потому что её решение требует либо очень умных алгоритмов, либо полной перестройки архитектуры программы, либо больших денег.
Но самое печальное в TNP то, что он проявляется не всегда и не в конкретных случаях. Если вы проектируете простую деталь из двух-трёх операций — вы его можете вообще не заметить. Если вы создаёте сложную параметрическую модель с десятками зависимостей — TNP превращает процесс в кошмар. Вы меняете один параметр, и вся модель рассыпается, как карточный домик. Вы сидите и пытаетесь понять, что пошло не так. А ответ прост: программа просто потеряла ссылки на геометрические элементы.
Эта проблема станет главным тормозом развития FreeCAD на следующие пятнадцать лет.
Она будет отпугивать профессионалов, которые не могут позволить себе такую нестабильность в работе. Она станет тем камнем преткновения, который вечно откладывает выход версии 1.0. И только позже в середине 2020-х годов у неё появится реальное решение — но об этом позже.

Заставка FreeCAD 0.14
Глава 7. 2018 год. Версия 0.17 «Roland»: когда всё начало меняться
Шестое апреля 2018 года. Два года прошло с момента выхода предыдущей версии, 0.16. Два года напряжённой работы, 6800 ревизий в исходном коде — для сравнения, это в три с лишним раза больше работы, чем между версиями 0.16 и 0.15.
И вот он выходит, релиз 0.17, посвящённый другу сообщества Роланду Франку, ушедшему из жизни в 2017 году и оставившему после себя множество видеоуроков, которые помогли новичкам освоить FreeCAD.
Как-раз мае-июне 2018 года я экстренно озадачился поиском САПР для быстрого самостоятельного освоения. Перепробовал - Компас, Крео, Инвентор. Фьюжн, Скетчап и Блендер. Тогда ещё не понимал разницы между параметрией, прямым моделированием и скульптингом. Но FreeCAD мне как-то сразу понравился. Версия 0.17 меня как начинающего моделиста устраивала больше чем.
Верстак Part Design был полностью переработан. Появился новый контейнер Body, который собирает в себе цепочку операций, формирующих один цельный объект. Появились построительные объекты — плоскости, прямые, точки, которые можно использовать как стабильный «скелет» модели, не привязываясь напрямую к граням, которые могут исчезнуть при изменении.
Теперь можно было привязываться к геометрии других эскизов напрямую. Появились новые инструменты: натянутые поверхности (Loft), выдавливание по кривой (Sweep), наращивание граней (Thickness).
В эскизах добавили параболы, гиперболы и сплайны. Сплайны были ещё сырыми — ограничения можно было накладывать только на контрольные точки, — но сам факт их появления был важным.
Появился Addon Manager — менеджер дополнений, через который можно было легко устанавливать и обновлять макросы и модули. Интерфейс обзавёлся новым стилем навигации — в стиле Revit, что облегчало переход архитекторам. В нижнем правом углу появился индикатор навигации.
В общем, версия 0.17 стала тем самым порогом, после которого FreeCAD перестал быть просто экспериментальной платформой для разработчиков и превратился в инструмент, с которым мог работать обычный пользователь. Не идеальный, не лишённый проблем, но — рабочий.

Чтобы окончательно понять место FreeCAD в мире трёхмерного моделирования, полезно взглянуть на соседей по цеху.
FreeCAD vs Blender
Это принципиально разные инструменты. Blender — универсальный комбайн для создания 3D-графики, анимации, визуализации. Его сила — в органическом моделировании, скульптинге, симуляциях. FreeCAD — это строгая инженерная САПР, где каждый миллиметр имеет значение, а модель должна быть параметрически управляемой. Если вам нужна красивая картинка или анимация — берите Blender. Если вам нужен рабочий чертёж или деталь для станка с ЧПУ — присмотритесь к FreeCAD.
FreeCAD vs SketchUp
SketchUp обманчиво прост. Его интерфейс интуитивно понятен даже новичку, но за этой простотой скрываются серьёзные ограничения при работе с криволинейными поверхностями и параметрическими зависимостями. Для архитектурных набросков и быстрых эскизов SketchUp хорош, но для инженерного проектирования он не подходит. FreeCAD, напротив, предлагает полный набор параметрических инструментов, но требует времени на освоение.
FreeCAD vs Fusion 360
Самый интересный и показательный дуэт. Fusion 360 от Autodesk — это современная, мощная, интуитивно понятная САПР с облачной синхронизацией, встроенным CAM и генеративным дизайном. Для стартапов и любителей он бесплатен (с ограничениями). Однако у Fusion 360 есть обратная сторона: это проприетарное облачное решение. Ваши модели хранятся на серверах Autodesk. Если компания решит изменить условия лицензирования или закрыть проект — вы потеряете доступ. FreeCAD — это ваш инструмент навсегда, без привязки к облаку и без риска внезапного исчезновения. (что в общем-то уже случилось)
К концу 2018 года FreeCAD прошёл долгий путь. От личного проекта одного инженера до открытой платформы с активным сообществом. От даже не альфа-версии для разработчиков до программы, на которой можно создавать реальные детали. От интерфейса, который пугал одним своим видом, до внятного инструмента с менеджером дополнений и нормальной навигацией.
Впереди были ещё годы работы. Впереди были версии 0.18, 0.19, 0.20, 0.21, 0.22. Впереди был долгий путь к версии 1.0, которая выйдет только в конце 2024 года. Впереди было решение проблемы TNP, появление полноценного сборочного верстака, новые интерфейсы, сотни тысяч строк кода. Но фундамент был заложен именно в эти годы. И те, кто пришёл в сообщество в те времена, помнят FreeCAD таким, каким он был — сырым, нелогичным, капризным, но уже тогда невероятно притягательным для тех, кто ценит свободу и открытость.
Об остальном — в следующей части.
А скачать FreeCAD можно совершенно бесплатно на официальном сайте. Даже регистрация не требуется.