Skip to main content

Module attached

Module attached 

Source
Expand description

The parts on and inside the body: what hangs off a .ork design’s spine.

super::component reads the spine: the stages and the body components stacked in them. Everything else in a design hangs off that trunk, and this module reads it: the tubes, couplers, rings and bulkheads inside a body component, the fins, tube fins, launch lugs and rail buttons on it, and the mass objects, parachutes, streamers and shock cords packed in it.

Three things run through all of them.

  • Where a part sits is an offset along its parent and the end it is measured from, which is Position. OpenRocket writes the end under method on the newer tag name and type on the older one, with the same five words.
  • What a part takes from its parent is an automatic dimension: a coupler’s outer radius is the tube’s bore, a ring’s is too, a ring’s own bore is the motor tube inside it, and a packed part fills whatever room is left. None of that is worked out here: hpr_design::Rocket::layout does it, once, for every reader (Loft lesson L60: Loft resolved these as it walked, so the answer depended on the order the siblings were written in, and a bulkhead inside a coupler came out as NaN).
  • Angles are degrees in the file and radians in hpr-design, which is easy to miss because nothing in the file says so: read as radians, <angleoffset>180</angleoffset> is more than twenty-eight turns instead of half of one. Of the 188 angles in the reference corpus that are not zero, 178 are larger than 2π, so they cannot be radians.

A part this reader cannot give hpr-design an honest shape for is left out with a warning rather than guessed at, so the rest of the design still opens. The guide lists every such rule: OpenRocket .ork design files.

Constants§

ATTACHED_TAGS
Every tag this module knows how to read. A tag outside it belongs to a later milestone, and is tallied by the caller rather than warned about one by one.