feat: .kc file format — Layer 1 (format registration) #186

Merged
forbes merged 1 commits from feat/kc-file-format-layer1 into main 2026-02-13 19:42:40 +00:00

1 Commits

Author SHA1 Message Date
forbes
723a8c98d5 feat: .kc file format — Layer 1 (format registration)
All checks were successful
Build and Test / build (pull_request) Successful in 42m37s
Register .kc as a recognized file type alongside .FCStd:

C++ changes:
- Document.cpp: checkFileName() accepts .kc extension
- Gui/Document.cpp: Save As and Save Copy dialogs include *.kc
- CommandDoc.cpp: Merge document dialog includes *.kc
- DlgProjectUtility.cpp: Project utility dialog includes *.kc

Python changes:
- FreeCADInit.py: register *.kc in import type system
- kc_format.py: DocumentObserver that preserves silo/ ZIP entries
  across saves (caches before save, re-injects after save)
- InitGui.py: register kc_format observer on startup

Silo integration:
- get_cad_file_path() generates .kc paths for new files
- find_file_by_part_number() finds both .kc and .FCStd, preferring .kc
- search_local_files() lists both .kc and .FCStd files

The .kc format is a superset of .FCStd with a silo/ directory
containing Kindred platform metadata. See docs/KC_SPECIFICATION.md.
2026-02-13 13:39:42 -06:00