# boltgen Генератор параметрического крепёжа со сравнительной базой и STEP-библиотекой. Self-contained Python-решение — ** без КОМПАСА и других CAD-систем**: каталог изделий и генерация 3D-моделей в **STEP** через [CadQuery](https://github.com/CadQuery/cadquery). ## Что делает Создаёт: - **Каталог** (`catalog.json`) с параметрами изделий — обозначение, стандарт, материал, атрибуты, имя STEP-модели. - **STEP-модели** (`out/*.step`) — параметрическая геометрия болтов, гаек, шайб. ## Установить ```bash pip install cadquery # тяжёлый пакет (OCP/OCCT), ставится ~1-2 мин pip install -e . ``` ## Применение ### Сгенерировать одну деталь ```bash boltgen bolt-gen M10 40 --dir out boltgen nut-gen M12 --dir out boltgen washer-gen M8 --dir out ``` ### Сгенерировать всё семейство ```bash boltgen gen-all --dir out --catalog catalog.json ``` Получается ~48 изделий: - **Болты** ГОСТ 7805-70 — M6, M8, M10, M12, M16, M20, M24 × 20..120 мм (34 шт). - **Гайки** ГОСТ 5915-70 — M6..M24 (7 шт). - **Шайбы** ГОСТ 11371-78 — M6..M24 (7 шт). ### Просмотр каталога ```bash boltgen list --catalog catalog.json boltgen show bolt_M10_40 --catalog catalog.json ``` ## Каталог (JSON-схема) ```json { "id": "bolt_M10_40", "designation": "Болт M10x40 ГОСТ 7805-70", "type": "bolt", "category": "Крепёж", "standard": "ГОСТ 7805-70", "material": "Сталь 8.8", "model_file": "bolt_M10_40.step", "attributes": { "диаметр": "10", "длина": 40, "шаг_резьбы": 1.5, "размер_под_ключ": 16.0, "высота_головки": 6.4 } } ``` ## API ```python from boltgen import PortableCatalog, get_bolt cat = PortableCatalog("catalog.json", models_dir="out") rec = cat.add_bolt(get_bolt("M12", 45)) print(rec.designation, rec.model_file) cat.save() ``` ## Структура ``` boltgen/ ├── pyproject.toml ├── boltgen/ │ ├── standard.py # ГОСТ/ISO размеры, спецификации │ ├── model.py # генерация 3D → STEP │ ├── catalog.py # каталог (JSON) │ └── cli.py # CLI ├── tests/ ├── out/ # STEP-модели └── catalog.json ``` ## Тесты ```bash python -m pytest ```