
FreeCAD
Открытый 3D параметрический CAD моделировщик
Создавайте, изменяйте и автоматизируйте 3D проекты с помощью Python API для машиностроения, архитектуры и промышленного дизайна.
Что такое FreeCAD?
FreeCAD — мощный, открытый 3D‑параметрический CAD‑моделировщик, предназначенный для создания реальных объектов любого размера. Он поддерживает параметрическое моделирование, позволяя пользователям легко изменять конструкции, регулируя параметры в истории модели. Построенный на надёжной архитектуре с использованием OpenCASCADE, Coin3D, Qt и Python, FreeCAD обслуживает механическую инженерию, архитектуру, промышленный дизайн и многое другое. Его гибкий Python API даёт разработчикам и продвинутым пользователям возможность автоматизировать задачи, расширять функциональность и интегрироваться с внешними инструментами. Независимо от того, являетесь ли вы любителем, студентом, инженером или преподавателем, FreeCAD предоставляет профессиональную платформу для 3D‑дизайна без лицензионных расходов.
Основная сила FreeCAD заключается в его способности соединять 2D‑эскизирование и 3D‑моделирование, позволяя пользователям создавать геометрически ограниченные 2D‑профили и вытягивать их в 3D‑элементы. В него включены специализированные рабочие среды для проектирования деталей, сборки, черчения, архитектуры и др. Приложение работает нативно в Windows, macOS и Linux, обеспечивая широкую доступность. Благодаря активной поддержке сообщества, обширной документации и модульной архитектуре плагинов, FreeCAD идеален как для начинающих, так и для опытных специалистов CAD, ищущих прозрачную, настраиваемую и бесплатную альтернативу проприетарным инструментам. Его интеграция с процессами симуляции и производства делает его подходящим для полного жизненного цикла разработки продукта.
Начало работы с FreeCAD
FreeCAD доступен в виде предварительно собранных установщиков для Windows, macOS и Linux на странице последних выпусков. В Linux он часто доступен через менеджер пакетов вашего дистрибутива или центр приложений. Для разработчиков и продвинутых пользователей поддерживается сборка из исходного кода с использованием CMake. Официальное Руководство разработчика предоставляет подробные инструкции по сборке. После установки запустите FreeCAD и исследуйте рабочие места через панель инструментов. Консоль Python и система макросов позволяют автоматизировать и настраивать работу. Для учебных материалов посетите руководство Начало работы на вики FreeCAD.
Установите FreeCAD через менеджер пакетов (Linux) или скачайте
# Ubuntu/Debian
sudo apt install freecad
# macOS (Homebrew)
brew install --cask freecad
# Windows: Download from https://github.com/FreeCAD/FreeCAD/releases/latest
Параметрическое 3D-моделирование с помощью Python API
Параметрический движок моделирования FreeCAD позволяет пользователям определять объекты с редактируемыми параметрами, обеспечивая итерации дизайна простым изменением значений. Python API раскрывает весь стек моделирования, позволяя разработчикам программно создавать сложные геометрии. Используя рабочие среды Part и PartDesign, вы можете генерировать примитивы, выполнять булевы операции, добавлять фаски/скругления и создавать такие функции, как выдавливания, вырезы и вращения — всё через Python. Эта возможность важна для генеративного дизайна, топологической оптимизации и интеграции CAD с симуляциями или производственными процессами. API поддерживает как объектно‑ориентированный, так и функциональный подход, делая его подходящим для скриптов, макросов и полнофункциональных плагинов. Имея доступ к базовому ядру OpenCASCADE, FreeCAD предоставляет профессиональные геометрические операции, сохраняя простоту использования для начинающих.
Создайте параметрический куб и измените его размеры с помощью Python
import FreeCAD as App
import Part
# Create document and object
doc = App.newDocument()
cube = doc.addObject("Part::Box", "Cube")
cube.Length = 10
cube.Width = 20
cube.Height = 30
App.ActiveDocument.recompute()
# Modify dimensions later
cube.Length = 15
App.ActiveDocument.recompute()
Рабочее место 2D-эскизов и черчения
FreeCAD включает мощную среду 2D-эскизирования, интегрированную с конвейером 3D-моделирования. Рабочая среда Sketcher позволяет пользователям рисовать ограниченные геометрией 2D‑профили с использованием линий, дуг, кругов и сплайнов. Ограничения, такие как горизонтальные, вертикальные, параллельные, перпендикулярные и размерные ограничения, обеспечивают точный контроль над геометрией эскиза. После завершения эти эскизы служат основой для 3D‑операций, таких как выдавливание, вращение и лофт. Кроме того, рабочая среда Draft предоставляет инструменты для создания 2D‑векторных чертежей без ограничений, что идеально подходит для архитектурных планов этажей или технических иллюстраций. Рабочая среда Drawing позволяет генерировать ортогональные проекции, разрезы и аннотированные чертежи из 3D‑моделей, поддерживая техническую документацию, соответствующую ISO, с размерами, допусками и спецификациями материалов.
Создайте эскиз, добавьте ограничения и выдавите, чтобы сформировать 3D-элемент
import FreeCAD as App
import Sketcher
import PartDesign
doc = App.newDocument()
Part = doc.addObject("PartDesign::Body")
Sketch = doc.addObject("Sketcher::SketchObject", "Sketch")
Sketch.Placement = App.Placement(App.Vector(0,0,0), App.Rotation(App.Vector(0,0,1),0))
# Add geometry
Sketch.addGeometry(Part.LineSegment(App.Vector(-10,0,0),App.Vector(10,0,0)),False)
Sketch.addGeometry(Part.LineSegment(App.Vector(10,0,0),App.Vector(10,10,0)),False)
Sketch.addGeometry(Part.LineSegment(App.Vector(10,10,0),App.Vector(-10,10,0)),False)
Sketch.addGeometry(Part.LineSegment(App.Vector(-10,10,0),App.Vector(-10,0,0)),False)
# Add constraints
Sketch.addConstraint(Sketcher.Constraint('Coincident',0,2,1,1))
Sketch.addConstraint(Sketcher.Constraint('Coincident',1,2,2,1))
Sketch.addConstraint(Sketcher.Constraint('Coincident',2,2,3,1))
Sketch.addConstraint(Sketcher.Constraint('Coincident',3,2,0,1))
Sketch.addConstraint(Sketcher.Constraint('Horizontal',0))
Sketch.addConstraint(Sketcher.Constraint('Vertical',1))
# Extrude
Pad = doc.addObject("PartDesign::Pad", "Pad")
Pad.Profile = Sketch
Pad.Length = 5
doc.recompute()
Проектирование сборок и решение ограничений
FreeCAD поддерживает моделирование сложных сборок через рабочие среды Assembly4 и Assembly3, позволяя пользователям объединять несколько деталей в функциональные механизмы. Сборки создаются с использованием ограничений, таких как совпадение, параллельность, перпендикулярность, касательность и расстояние, для определения относительных позиций и движений между компонентами. Решатель автоматически обновляет сборку при изменении любой детали или ограничения, обеспечивая целостность проекта. Эта возможность важна для задач машиностроения, таких как зубчатые передачи, соединения и конструкции корпусов. Сборки могут экспортироваться в виде STEP‑файлов для совместной работы с другими САПР, а симуляция движения возможна благодаря интеграции с внешними инструментами, такими как Yade, или пользовательскими скриптами на Python. Параметрическая природа FreeCAD гарантирует, что изменения отдельных деталей автоматически распространяются на сборку, уменьшая необходимость ручных обновлений и минимизируя ошибки.
Создайте простую сборку из двух деталей и примените совпадающее ограничение
import FreeCAD as App
import Assembly4
doc = App.newDocument("Assembly")
# Add parts
Part1 = doc.addObject("Part::Box", "Block1")
Part1.Length, Part1.Width, Part1.Height = 10, 10, 10
Part2 = doc.addObject("Part::Cylinder", "Cylinder1")
Part2.Radius, Part2.Height = 3, 15
# Create assembly
asm = doc.addObject("App::Part", "Assembly")
asm.Type = "Assembly"
asm.addObject(Part1)
asm.addObject(Part2)
# Apply constraint (simplified)
# In practice, use Assembly4's Constraint class for full functionality
App.ActiveDocument.recompute()
Инструменты BIM и архитектурного моделирования
FreeCAD включает специализированные инструменты для моделирования информационных моделей зданий (BIM) и архитектурного проектирования через рабочий стол Arch. Пользователи могут создавать стены, полы, крыши, окна, двери и конструктивные элементы, используя интуитивные параметрические объекты. Эти объекты автоматически обновляются при изменении их параметров, поддерживая итеративный дизайн и соответствие строительным нормам. Рабочий стол поддерживает импорт/экспорт IFC (Industry Foundation Classes), обеспечивая совместимость с отраслевым BIM‑ПО, таким как Revit и Archicad. Такие функции, как планирование участка, настройка энергетического анализа и расчёт материалов, делают FreeCAD подходящим для ранних стадий архитектурного проектирования и документации. Кроме того, рабочие столы Draft и Sketcher бесшовно интегрируются для создания точных планов этажей и фасадов, а рабочий стол Drawing генерирует строительные документы с аннотациями, размерами и графиками.
Создайте стену и добавьте окно с помощью Python API
import FreeCAD as App
import Arch
doc = App.newDocument("Building")
# Create wall
Wall = Arch.makeWall(length=5000, width=200, height=3000)
Wall.Base = Arch.makeSketch([0,0,0], [5000,0,0], [5000,200,0], [0,200,0])
# Create window
Window = Arch.makeWindow(1200, 1500)
Window.Base = Arch.makeSketch([1000,100,0], [2200,100,0], [2200,1600,0], [1000,1600,0])
Window.Host = Wall
App.ActiveDocument.recompute()
