Files
OpenClaw Coder 591aa57bd5 boltgen v0.1.0: генератор крепёжа со сравнительной базой и STEP-библиотекой
Self-contained Python-решение (без КОМПАСА):
- Генерация 3D-моделей болтов/гаек/шайб → STEP через CadQuery
- Каталог изделий: обозначение, стандарт, материал, модель, атрибуты
- CLI: bolt-gen / nut-gen / washer-gen / gen-all / list / show
- Стандарты: ГОСТ 7805-70, ГОСТ 5915-70, ГОСТ 11371-78
- 93 модели (73 болта + 7 гаек + 7 шайб), 30/30 тестов PASS
2026-11-07 01:35:03 +10:00

2.7 KiB
Raw Permalink Blame History

boltgen

Генератор параметрического крепёжа со сравнительной базой и STEP-библиотекой.

Self-contained Python-решение — ** без КОМПАСА и других CAD-систем**: каталог изделий и генерация 3D-моделей в STEP через CadQuery.

Что делает

Создаёт:

  • Каталог (catalog.json) с параметрами изделий — обозначение, стандарт, материал, атрибуты, имя STEP-модели.
  • STEP-модели (out/*.step) — параметрическая геометрия болтов, гаек, шайб.

Установить

pip install cadquery      # тяжёлый пакет (OCP/OCCT), ставится ~1-2 мин
pip install -e .

Применение

Сгенерировать одну деталь

boltgen bolt-gen M10 40 --dir out
boltgen nut-gen M12 --dir out
boltgen washer-gen M8 --dir out

Сгенерировать всё семейство

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 шт).

Просмотр каталога

boltgen list --catalog catalog.json
boltgen show bolt_M10_40 --catalog catalog.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

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

Тесты

python -m pytest