The Genie XML writer's get_section_props (src/ada/cadit/gxml/write/write_sections.py) has no branch for BaseTypes.CIRCULAR. It logs The profile type ... is not yet supported for Genie XML export and returns None; add_sections then skips the <section> element -- but the beam that uses it is still written with section_ref="CIRC100". The export succeeds with one ERROR log line and produces a file that is internally inconsistent; only a later read notices.
Found by the round-trip sweep in #406 (test_gxml_section_round_trip.py), where it is pinned by name as UNSUPPORTED = {BaseTypes.CIRCULAR} and test_circular_is_refused_by_name.
Reproduction
import xml.etree.ElementTree as ET
import ada
a = ada.Assembly("rt") / (ada.Part("P") / ada.Beam("bm", (0, 0, 0), (2, 0, 0), "CIRC100"))
a.to_genie_xml("circ.xml") # succeeds; one ERROR line in the log
print([el.attrib["name"] for el in ET.parse("circ.xml").getroot().findall(".//section")])
# [] -- no <section> written, while the beam still carries section_ref="CIRC100"
ada.from_genie_xml("circ.xml")
# ValueError: The section id "CIRC100" is not found
Expected
One of:
- write it, if GeniE has a representation for a solid round bar (to be checked against a GeniE export rather than assumed); or
- refuse it by name at export time -- fail the export (or at least the beam) with the reason -- rather than write a
section_ref that points at nothing.
Silently writing a dangling reference is the one outcome to avoid. Whichever is chosen, UNSUPPORTED in tests/core/cadit/gxml/test_gxml_section_round_trip.py is self-checking against get_section_props and will fail until it is updated, so the sweep picks CIRCULAR up automatically once it is supported.
🤖 Generated with Claude Code
https://claude.ai/code/session_01Nej3bWxJevs9GkH6tg1WKv
The Genie XML writer's
get_section_props(src/ada/cadit/gxml/write/write_sections.py) has no branch forBaseTypes.CIRCULAR. It logsThe profile type ... is not yet supported for Genie XML exportand returnsNone;add_sectionsthen skips the<section>element -- but the beam that uses it is still written withsection_ref="CIRC100". The export succeeds with one ERROR log line and produces a file that is internally inconsistent; only a later read notices.Found by the round-trip sweep in #406 (
test_gxml_section_round_trip.py), where it is pinned by name asUNSUPPORTED = {BaseTypes.CIRCULAR}andtest_circular_is_refused_by_name.Reproduction
Expected
One of:
section_refthat points at nothing.Silently writing a dangling reference is the one outcome to avoid. Whichever is chosen,
UNSUPPORTEDintests/core/cadit/gxml/test_gxml_section_round_trip.pyis self-checking againstget_section_propsand will fail until it is updated, so the sweep picks CIRCULAR up automatically once it is supported.🤖 Generated with Claude Code
https://claude.ai/code/session_01Nej3bWxJevs9GkH6tg1WKv