Серия «Создание аддонов для FreeCAD»

12

Создание аддонов для FreeCAD. Урок 3. Создание 3D-объектов: параметрический бокс

Урок 3. Создание 3D-объектов: параметрический бокс

Цель урока: научиться создавать твёрдые тела (коробки, цилиндры) через Python, понять структуру документа FreeCAD и сделать аддон, который строит параметрическую деталь.


🧱 Часть 1. Как устроен документ в FreeCAD?

Прежде чем создавать объекты, важно понять иерархию данных в FreeCAD:

  • Document — это открытый файл (.FCStd). Всё, что вы создаёте, находится внутри документа.

  • Object — это параметрический объект: коробка, цилиндр, эскиз и т.д.

  • Shape — это геометрическое тело (B-Rep), которое можно визуализировать.

💡 Вы всегда работаете в контексте активного документа.

Как получить текущий документ?

doc = FreeCAD.ActiveDocument

doc = FreeCAD.ActiveDocument

Если документа нет — создайте новый:

doc = FreeCAD.newDocument("MyDesign")

doc = FreeCAD.newDocument("MyDesign")


📦 Часть 2. Создание коробки (Box) через Python

Самый простой 3D-объект в FreeCAD — это Part::Box.

Пример кода:

Что происходит здесь?

  1. doc.addObject("Part::Box", "MyBox")
    → создаёт новый объект типа Box с именем "MyBox"

  2. У объекта есть параметрические свойства: Length, Width, Height

  3. doc.recompute()
    → перестраивает модель (обязательно после изменения параметров!)

🔸 Все размеры — в миллиметрах (по умолчанию в FreeCAD).


🛠 Часть 3. Аддон: «Параметрический бокс»

Теперь создадим аддон, который создаёт коробку с заданными размерами.

Шаг 1. Создайте папку

.../Mod/ParamBoxAddon/

Шаг 2. Файл InitGui.py

Шаг 3. Файл param_box_workbench.py

код: https://github.com/hypo69/1001-python-ru/blob/master/ru/arti...


▶️ Шаг 4. Проверка работы

  1. Сохраните файлы

  2. Перезапустите FreeCAD

  3. Выберите рабочую среду «Parametric Box»

  4. Нажмите кнопку «Create Box»

✅ Должен появиться серый параллелепипед в 3D-окне.

Проверьте параметричность!

  1. В дереве проекта (Model) дважды кликните по MyParamBox

  2. В панели Data измените, например, Length на 50

  3. Нажмите Enter → модель автоматически обновится!

Это и есть параметрическое моделирование.


🔍 Часть 4. Другие базовые объекты

Вы можете создавать не только коробки. Вот несколько примеров:

Цилиндр

Сфера

Конус

💡 Все эти объекты находятся в модуле Part, который встроен в FreeCAD.


🧪 Практическое задание

  1. Измените аддон так, чтобы он создавал цилиндр, а не коробку.

  2. Сделайте так, чтобы при создании объект получал уникальное имя (например, Box_1, Box_2...), если объект с таким именем уже есть.

  3. Добавьте вторую команду — «Create Cylinder» — в ту же рабочую среду.

Подсказка для уникального имени:


💡 Советы по отладке

  • Всегда вызывайте doc.recompute() после изменения параметров.

  • Используйте FreeCAD.Console.PrintMessage("Текст\n") для отладки (сообщения появятся в Report View).

  • Проверяйте, существует ли документ перед работой с ним.


▶️ Что дальше?

В Уроке 4 мы:

  • Научимся создавать графический интерфейс (GUI) с полями ввода.

  • Сделаем окно, где пользователь вводит длину, ширину и высоту.

  • И по нажатию кнопки — строится бокс с этими параметрами.

Это уже будет настоящий инструмент, а не просто демонстрация.

Показать полностью 9
7

Создание аддонов для FreeCAD. Урок 2. Ваш первый аддон: «Hello World»

Цель урока: создать простой аддон, который добавляет новую рабочую среду с кнопкой, и при нажатии показывает сообщение.


Дисклеймер. На pikabu нет редактора кода, поэтому код картинками, но в конце я дам ссылку на github, откуда можно будет скопировать блоки кода.


📁 Шаг 1. Подготовка папки аддона

Убедитесь, что у вас есть папка:

.../FreeCAD/Mod/HelloWorldAddon/

Если нет — создайте её.

💡 Имя папки важно: оно должно совпадать с именем модуля в коде.
Мы будем использовать HelloWorldAddon.

Внутри этой папки создайте два файла:

❗ Не используйте пробелы или кириллицу в именах файлов и папок!


📄 Шаг 2. Файл InitGui.py — точка входа

Этот файл автоматически запускается FreeCAD при старте, если лежит в папке аддона.

Откройте его в редакторе и вставьте следующий код:

🔍 Что делает этот код?

  1. Импортирует нашу рабочую среду из файла hello_workbench.py

  2. Регистрирует её в интерфейсе FreeCAD через FreeCADGui.addWorkbench()

⚠️ Обратите внимание:
from HelloWorldAddon.hello_workbench — здесь HelloWorldAddon — это имя папки, а hello_workbench — имя файла без расширения .py.


📄 Шаг 3. Файл hello_workbench.py — логика аддона

Теперь создадим саму рабочую среду.

Вставьте в hello_workbench.py следующий код:

к коду: https://github.com/hypo69/1001-python-ru/blob/master/ru/articles/FreeCAD/2.md#-шаг-3-файл-hello_workbenchpy--логика-аддона

🔍 Разбор кода по частям:

1. Команда (HelloWorldCommand)

  • GetResources() — описывает, как команда выглядит в интерфейсе

  • Activated() — что происходит при нажатии

  • IsActive() — когда кнопка активна (например, только если есть документ)

2. Рабочая среда (HelloWorldWorkbench)

  • Наследуется от FreeCADGui.Workbench

  • Метод Initialize() добавляет команды на панель и в меню

  • GetClassName() говорит FreeCAD: «это Python-рабочая среда»

3. Регистрация

  • FreeCADGui.addCommand() связывает имя "HelloWorldCommand" с классом


▶️ Шаг 4. Запуск и проверка

  1. Сохраните оба файла

  2. Закройте FreeCAD (если был открыт)

  3. Запустите FreeCAD заново

💡 FreeCAD загружает аддоны только при старте, поэтому перезапуск обязателен.

Как проверить, что аддон работает?

  1. В правом нижнем углу FreeCAD нажмите на название текущей рабочей среды (например, «Part Design»)

  2. В выпадающем списке найдите «Hello World» и выберите его

  3. На панели инструментов появится кнопка «Say Hello»

  4. Нажмите её → должно появиться окно с приветствием!

Поздравляем! Вы создали свой первый аддон!


🔍 Шаг 5. Отладка (если что-то не работает)

Если аддон не появился или выдал ошибку:

  1. Откройте Report view:
    View → Panels → Report view

  2. Ищите красные сообщения об ошибках

Частые проблемы:

ПроблемаРешениеModuleNotFoundError: No module named 'HelloWorldAddon'Проверьте имя папки — оно должно быть точно таким же, как в from HelloWorldAddon...Кнопка есть, но ничего не происходитПроверьте, нет ли ошибок в Activated() (например, забыли import QtGui)Аддон не появляется в спискеУбедитесь, что файл называется именно InitGui.py (не initgui.py, не InitGUI.py)Ошибка синтаксисаПроверьте отступы (в Python они важны!) и скобки

💡 Совет: в Windows имена файлов не чувствительны к регистру, но в Linux/macOS — чувствительны. Лучше писать точно: InitGui.py.


🧪 Практическое задание

  1. Измените текст сообщения в Activated() на свой

  2. Попробуйте добавить вторую команду (например, «Say Goodbye»)

  3. Добавьте её в тот же список self.list и проверьте, что появляются две кнопки

Пример второй команды:

class GoodbyeCommand: def GetResources(self): return {"MenuText": "Say Goodbye", "ToolTip": "Bye!"} def Activated(self): QtGui.QMessageBox.information(None, "Bye", "До свидания!") def IsActive(self): return True # Не забудьте зарегистрировать! FreeCADGui.addCommand("GoodbyeCommand", GoodbyeCommand())

И обновите список:

self.list = ["HelloWorldCommand", "GoodbyeCommand"]


▶️ Что дальше?

В Уроке 3 мы:

  • Научимся создавать настоящие 3D-объекты (коробки, цилиндры)

  • Разберёмся, как устроена документная модель FreeCAD

  • Сделаем аддон, который строит параметрическую деталь


  • Понравилось — ставь «+»
    Полезно? Подпишись.

    Так я буду знать, какой контент вам интересен.
    Вопросы можно задавать в комментариях 👇👇👇
    Удачи! 🚀

Статья на github: https://github.com/hypo69/1001-python-ru/blob/master/ru/articles/FreeCAD/2.md#-шаг-3-файл-hello_workbenchpy--логика-аддона

Показать полностью 2
6

Создание аддонов для FreeCAD. Урок 1. Подготовка среды разработки

Цель урока: настроить всё необходимое, чтобы создавать, тестировать и отлаживать аддоны без лишних усилий.


Дисклеймер. На pikabu нет редактора кода, поэтому код картинками, но в конце я дам ссылку на github, откуда можно будет скопировать блоки кода.


🔧 Шаг 1. Убедитесь, что у вас установлен FreeCAD

Требования:

  • FreeCAD версии 0.20 или новее (лучше 1.0+)

  • Работает на Windows, Linux или macOS

👉 Если у вас ещё нет FreeCAD — скачайте его с официального сайта:
🔗 https://www.freecad.org/downloads.php

Выберите:

  • Windows: .exe (установщик) или .7z (portable)

  • Linux: AppImage или пакет из репозитория

  • macOS: .dmg

💡 Совет: для обучения лучше использовать установленную версию (через установщик), так как она стабильнее и проще в настройке.


📁 Шаг 2. Найдите папку для аддонов

FreeCAD ищет пользовательские аддоны в специальной папке Mod.
Путь зависит от вашей ОС и типа установки.

✅ Как найти папку точно?

  1. Запустите FreeCAD.

  2. Откройте Python Console:
    View → Panels → Python console

  3. Введите команды:

> import FreeCAD
> print(FreeCAD.getUserAppDataDir())

  1. Нажмите Enter.

Вы увидите путь, например:

  • Windows (установленная версия):
    C:\Users\ВашеИмя\AppData\Roaming\FreeCAD\

  • Windows (portable):
    D:\FreeCAD\data\

  • Linux:
    /home/ваше_имя/.local/share/FreeCAD/

  • macOS:
    /Users/ваше_имя/Library/Application Support/FreeCAD/

➕ Создайте папку Mod

Внутри этой директории должна быть папка Mod.
Если её нет — создайте вручную.

Пример для Windows:

C:\Users\ВашеИмя\AppData\Roaming\FreeCAD\Mod\

💡 Быстрый способ открыть папку на Windows:
Нажмите Win + R → введите %APPDATA%\FreeCAD → Enter


🖥 Шаг 3. Настройте текстовый редактор (опционально, но очень рекомендуется)

Хотя можно писать код в Блокноте, удобнее использовать редактор с:

  • Подсветкой синтаксиса Python

  • Автодополнением

  • Возможностью запуска скриптов

🔹 Рекомендую: Visual Studio Code (VS Code)

  1. Скачайте и установите: https://code.visualstudio.com/

  2. Установите расширение Python (от Microsoft)

🔹 Как открыть папку аддона в VS Code?

  1. Запустите VS Code

  2. File → Open Folder

  3. Выберите папку Mod (или отдельный аддон внутри неё)

Теперь вы видите структуру проекта и можете редактировать файлы с комфортом.


🛠 Шаг 4. Изучите встроенные инструменты FreeCAD

FreeCAD уже содержит всё, что нужно для разработки.

1. Python Console

  • Меню: View → Panels → Python console

  • Позволяет выполнять команды в реальном времени

  • Пример: введите App.newDocument() → создастся новый документ

2. Report View

  • Меню: View → Panels → Report view

  • Показывает ошибки, предупреждения, логи

  • Обязательно держите открытым при тестировании аддона!

3. Macro Recorder

  • Меню: Macro → Macros...

  • Кнопка Record — записывает ваши действия в Python-код

  • Отличный способ изучить API FreeCAD

💡 Попробуйте:

  1. Нажмите Macro → Start recording

  2. Создайте коробку (Part → Box)

  3. Остановите запись

  4. Откройте макрос — вы увидите реальный код создания объекта.


🧪 Шаг 5. Проверка: создайте тестовую папку

Чтобы убедиться, что всё работает:

  1. В папке Mod создайте подпапку:

    TestAddon

  2. Внутри создайте файл __init__.py (может быть пустым) — это говорит Python, что папка — модуль.

  3. Перезапустите FreeCAD.

  4. Откройте Report view.

Если вы не видите ошибок — значит, FreeCAD успешно сканирует папку Mod.

❗ Если появится ошибка вида ImportError — проверьте:

  • Правильность имени папки (без пробелов и кириллицы)

  • Наличие __init__.py (в новых версиях не всегда обязательно, но безопаснее добавить)


🗂 Структура папки разработчика (итог)

К концу этого урока у вас должна быть такая структура:

И вы знаете:

  • Где лежит Mod

  • Как открыть Python Console и Report View

  • Как использовать Macro Recorder

  • Как настроить VS Code (опционально)


✅ Практическое задание

  1. Найдите папку Mod через FreeCAD.getUserAppDataDir()

  2. Создайте папку MyFirstAddon внутри Mod

  3. Добавьте в неё пустой файл __init__.py

  4. Перезапустите FreeCAD

  5. Убедитесь, что в Report view нет ошибок

🎯 Цель: FreeCAD должен запуститься без ошибок и "увидеть" вашу папку.


▶️ Что дальше?

В Уроке 2 мы создадим рабочий аддон:

  • Добавим кнопку

  • Сделаем, чтобы она что-то делала

  • Научимся регистрировать команды и рабочие среды


    Понравилось — ставь «+»
    Полезно? Подпишись.

    Так я буду знать, какой контент вам интересен.
    Вопросы можно задавать в комментариях 👇👇👇
    Удачи! 🚀

Статья на github: https://github.com/hypo69/1001-python-ru/blob/master/ru/articles/FreeCAD/урок 1. Подготовка среды разработки.md

Показать полностью 1
Отличная работа, все прочитано!