OpenClaw Coder
5ff5993d98
feat(P4): extend tests, coverage config, build license fix, tasks.md
...
CI / quality (push) Canceled after 0s
CI / test (3.10) (push) Canceled after 0s
CI / test (3.11) (push) Canceled after 0s
CI / test (3.12) (push) Canceled after 0s
CI / build-check (push) Canceled after 0s
- geometry: property guard hex nut across-flats (regression guard)
- gui tests: rewrite to ASCII + cover _type_name/_mass helper paths
- coverage: source=fastengen, omit gui.py (UI headless); total 87%
- build: license-files for setuptools, sdist+wheel OK
- tasks.md: P4 recorded
2026-11-11 17:12:54 +10:00
OpenClaw Coder
e407d59b13
chore(P4): ruff lint, coverage/CI, README overhaul
...
CI / quality (push) Canceled after 0s
CI / test (3.10) (push) Canceled after 0s
CI / test (3.11) (push) Canceled after 0s
CI / test (3.12) (push) Canceled after 0s
CI / build-check (push) Canceled after 0s
- ruff profile in pyproject (E/W/F/I/B/RUF); clean src/ + tests/
- remove dead code: threaded_len/s/d/coat/first_rec_for_size, self.cat in gui
- 59 public re-exports added to __all__ (sorted)
- renamed l->ln (E741), zip(strict=True), split long lines, [*list, x] (RUF005)
- CI: quality job (ruff), test runs tests/ -k 'not gen_all' w/ coverage
- README rewritten (commands, API modules, tests/lint/coverage, CI)
- docs/tasks.md: P4 recorded
- 136 passed, 3 deselected (regen); ruff: all checks passed
2026-11-11 16:30:07 +10:00
OpenClaw Coder
0df78cf3c9
test(geometry): property-based guards for extended families
...
CI / test (3.10) (push) Canceled after 0s
CI / test (3.11) (push) Canceled after 0s
CI / test (3.12) (push) Canceled after 0s
CI / build-check (push) Canceled after 0s
- stud_long / self_tacker_gost positive volume (regressions)
- hex bolt head across-flats == S (GOST) — direct guard against the
polygon(6,r) geometry regression
139 passed in ~242s (full suite incl. 661 STEP regen).
2026-11-11 15:05:03 +10:00
OpenClaw Coder
477fbb5f30
feat(kompas): КОМПАС (.con) converter + CLI; packaging test
...
CI / test (3.10) (push) Canceled after 0s
CI / test (3.11) (push) Canceled after 0s
CI / test (3.12) (push) Canceled after 0s
CI / build-check (push) Canceled after 0s
- src/fastengen/kompas.py: build/save_document() produce KOMPAS .con XML
(GOST, OKPД2 by product type, product params, model STEP ref);
convert_step_to_kompas_template() for STEP->KOMPAS import container.
- cli.py: 'fastengen kompas --output dir' exports all catalog products as .con.
- tests/test_kompas.py (5): OKPД2 by type, valid XML, save roundtrip,
default OKPД2, end-to-end CLI export.
- tests/test_packaging.py: pyproject.toml metadata parseable (3.11 tomllib
or 3.10 fallback).
- docs/tasks.md: kompas + packaging recorded.
2026-11-11 13:30:07 +10:00
OpenClaw Coder
d220064bc2
feat(validate): GOST dimension validation of STEP models against nominal sizes
...
CI / test (3.10) (push) Canceled after 0s
CI / test (3.11) (push) Canceled after 0s
CI / test (3.12) (push) Canceled after 0s
CI / build-check (push) Canceled after 0s
- src/fastengen/validate_geom.py: validate_model(path) reads STEP via OCC,
uses cq.Shape.BoundingBox(), checks key dims (across-flats S, outer D,
head/height k) against GOST tables within 4% tolerance.
- Insight: hexagon bbox min planar extent = across-flats, max = across-corners.
- DimensionResult (.ok/.failed/.checks) + validate_dir(models_dir).
- tests/test_validate_geom.py: 30 tests, all sizes match GOST, reject wrong S.
2026-11-11 13:17:24 +10:00
OpenClaw Coder
76db9827e6
feat(gui): tkinter catalog viewer — list products, per-item STEP mass, regen, vedomost export
...
CI / test (3.10) (push) Canceled after 0s
CI / test (3.11) (push) Canceled after 0s
CI / test (3.12) (push) Canceled after 0s
CI / build-check (push) Canceled after 0s
- src/fastengen/gui.py: MainWindow (tkinter, stdlib) lists catalog filtered by type,
shows geometry-derived mass per item (mass_for_rec), regenerates STEP on double-click,
exports vedomost md/csv/txt to chosen path. run_gui() auto-creates empty catalog.
- cli.py: 'fastengen gui --catalog cat.json --dir models' subcommand.
- tests/test_gui.py: _type_name filter + record selection logic (no display needed).
2026-11-11 12:50:23 +10:00
OpenClaw Coder
74bc4b0135
fix(geometry): correct hexagon across-flats (polygon r=2S/sqrt3); add STEP-volume mass calc + vedomost mass column
...
CI / test (3.10) (push) Canceled after 0s
CI / test (3.11) (push) Canceled after 0s
CI / test (3.12) (push) Canceled after 0s
CI / build-check (push) Canceled after 0s
- Hexagonal heads: polygon(6,r) across-flats = r*sqrt3/2, so use r=2S/sqrt3 for across-flats=S (was S/2 / S/sqrt3, ~13-25% undersized). 8 sites fixed.
- New module mass.py: STEP volume via BRepGProp.VolumeProperties_s * density (GOST 24705), per material.
- vedomost.build() computes 'Mass,г' from real geometry via --dir models path; add vedomost --dir flag.
- tests/test_mass.py: 4 tests (nut M12 ~21.7g, bolt M12x60 ~70g, washer>0, density default 7.85).
2026-11-11 12:40:44 +10:00
OpenClaw Coder
6f7697efd6
feat(vedomost): автозаполнение графов ведомости по ГОСТ 2.119
...
CI / test (3.10) (push) Canceled after 0s
CI / test (3.11) (push) Canceled after 0s
CI / test (3.12) (push) Canceled after 0s
CI / build-check (push) Canceled after 0s
- ОКПД2 автоматически по типу изделия (Болт/Гайка/Шайба/Шпилька/Саморез/Винт)
- поле product_type для ведомости ВЗ (элементы)
- render_markdown_full: таблица со всеми графами ГОСТ 2.119 (ОКПД2, масса)
- CLI: опция --full для полной спецификации
- CLI: unicode-safe source (no em-dash in code) - парсится на Python 3.10
- тесты: +3 (ОКПД2 автозаполнение, product_type, full render) -> 10 всего
2026-11-11 11:37:46 +10:00
OpenClaw Coder
c1cd093a38
feat(vedomost): ведомость изделий по ГОСТ 2.119 — md/csv/txt/xlsx
...
CI / test (3.10) (push) Canceled after 0s
CI / test (3.11) (push) Canceled after 0s
CI / test (3.12) (push) Canceled after 0s
CI / build-check (push) Canceled after 0s
- src/fastengen/vedomost.py: Vedomost (группировка по наименование/ГОСТ/материал),
render_markdown/csv/txt, write_xlsx (openpyxl, опционально)
- CLI: subcommand 'vedomost --format md|csv|txt|xlsx --output PATH'
- tests/test_vedomost.py: 7 тестов, все прошли
- fix vedomost: размер парсится из кириллической М/ D10 / 6x80
- fix cli.py: модуль-документация была без закрывающих triple-quote -> SyntaxError на '—',
из-за чего все CLI-тесты падали; восстановлены """
2026-11-11 10:08:47 +10:00
OpenClaw Coder
5fa3ac70de
catalog: замкнуть API — add_all_extended, add_washer_l/bolt_set; уникальные id и имени STEP для подтипов
...
CI / test (3.10) (push) Canceled after 0s
CI / test (3.11) (push) Canceled after 0s
CI / test (3.12) (push) Canceled after 0s
CI / build-check (push) Canceled after 0s
- add_all_extended(): генерация всех семейств (базовые + 10 расширенных по ГОСТ)
- catalog.add_washer_l / add_bolt_set: увеличенные шайбы ГОСТ 11372 и винты-набронники ГОСТ 1170
- CLI: gen-all-extended, washer-l-gen, bolt-set-gen; все *-gen теперь сохраняют запись в каталог (_save_and_show)
- model_filename + from_spec: уникальный id/файл на подтип (nut_high, washer_grever, washer_large и т.д.) — устранена коллизия id/файлов
- тесты: покрытие новых подтипов и save-to-catalog
2026-11-11 09:40:45 +10:00
OpenClaw Coder
05ca0e1872
Repos: package renamed boltgen -> FastenGen (0.2.0)
...
CI / test (3.10) (push) Canceled after 0s
CI / test (3.11) (push) Canceled after 0s
CI / test (3.12) (push) Canceled after 0s
CI / build-check (push) Canceled after 0s
Переименование пакета и репозитория:
- имя пакета boltgen -> fastengen (src/fastengen)
- имя пакета в pyproject: FastenGen 0.2.0, entry-point fastengen/fasten-gen
- обновления в __init__, standard, catalog, cli, README, CI workflow
- входной бинарник CLI теперь fastengen
Полный тестовый набор: 77 passed
2026-11-11 08:14:53 +10:00
OpenClaw Coder
1dc52fb16b
boltgen: add GOST standards catalog extension (nuts/washers/studs/screws)
...
CI / test (3.10) (push) Canceled after 0s
CI / test (3.11) (push) Canceled after 0s
CI / test (3.12) (push) Canceled after 0s
CI / build-check (push) Canceled after 0s
Расширение каталогаboltgen новыми типами крепёжа по ГОСТ:
- Bolt (повышенная точность А): ГОСТ 7802-70
- Гайки: высокие ГОСТ 5916-70, барашковые ГОСТ 11889-76, пружинные ГОСТ 11394-74
- Шайбы: гровер ГОСТ 6402-70, стопорные с лапками ГОСТ 13463-77
- Шпильки: ГОСТ 25709-84
- Саморезы: ГОСТ Р 51472-99
- Винты потайные шестигранные: ГОСТ 1149-80
Для каждого добавлены: data-таблица размеров, Spec-класс, get_* валидатор,
iter_* итератор, _*_params (product_params), model_filename, build_*/*generate_*
в model.py, add_* в catalog.py и подкоманда CLI. Все генераторы валидируются
STEP-экспортом (объёмы сходятся). Тесты: +9 в test_specs.py (итого 77 passed).
Решена проблема revolve в этой сборке CadQuery 2.7: revolve(360.0) без
axisStart/axisEnd (данные оси падали с TypeError), для шпильки/конуса применён
revolve вокруг дефолтной оси Z.
2026-11-11 00:01:07 +10:00
OpenClaw Coder
811ec2c141
boltgen: fix stale test_models.py reference in test_specs docstring
2026-11-10 10:11:01 +10:00
OpenClaw Coder
95cfecd965
boltgen: GOST 1759.0-87 designation (strength class + coating Zn/Od/An/Ni); collapse duplicate designation helpers; add strength_class/coating to specs
2026-11-08 12:56:04 +10:00
OpenClaw Coder
0945496611
boltgen: expand bolts/nuts/washers to M27/M30; fix count assertions (167 bolts, 9 nuts, 9 washers)
2026-11-08 05:02:40 +10:00
OpenClaw Coder
ec0540ad38
boltgen: property-based geometry tests + CI (cadquery)
2026-11-07 02:56:52 +10:00
OpenClaw Coder
6d614ac9ae
boltgen: standalone spec tests (cadquery-free); lazy cadquery import
...
- tests/test_specs.py: 19 tests за спецификации/каталог без импорта cadquery
- model.py: cadquery теперь опционален (try/except), чтобы слой spec/каталога
работал на хостах без cadquery (standalone-тесты)
- pip install cadquery 2.7.0 через Tsinghua mirror
Полный suite: 48/48. 93 модели экспортированы (bolt 79, nut 7, washer 7).
2026-11-07 02:40:08 +10:00
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