openskp Python 1.3.1 (GitHub-only, not on PyPI)
Not published to PyPI - a real, tested, tagged release (531 tests passing, lint clean). Install by pinning this tag:
pip install "openskp[fragments] @ git+https://github.com/iamahsanmehmood/openskp.git@preview-python-v1.3.1#subdirectory=packages/python"
What's new since preview-python-v1.3.0
Real names for named organizational wrappers with no geometry of their own (PR #286) - found via a real FrameBuilder-authored steel-framing file. A wall like "W-2" is often a pure SketchUp group with a real name, wrapping several separately-meshed parts (studs, plates, cladding) rather than having any geometry of its own. Previously such a node never got a local_id, so its real name had nowhere to attach in the Fragments/IFC export - a viewer's tree showed only the wall's category repeated for every wall, never which one was which.
build_scene()/build_instanced_scene()'s name-resolution fallback now tries the definition's own name before falling back to the internal index - skipping SketchUp's own auto-generatedGroup#1/Component#12placeholders, which are no more meaningful than the index itself.- Both carry a new
name_is_generatedflag, so a consumer can tell a real name from a generated placeholder instead of presenting the latter as if it were real data. - The Fragments exporter now tracks any node with a real name as its own item (gets a
local_id, Name, GUID) even with zero geometry of its own.generated_name_guidscarried inModel.metadata, same mechanism aslayer_hidden.
Verified against a real production file and the real @thatopen/fragments runtime, not just this project's own reader.