Skip to content

stations: stated seam side with a selector, mitred section and offset runs across seams, seam positions of composite curves #263

Description

@GeneralPawz

At a tangent discontinuity of a composite base, the neutral evaluators take the next piece. ElevationLaw::piece_at says "seams belong to the piece that starts there", and the polyline span does the same. ADR 0082 states no rule for stations, so a station that lands exactly on a seam gets an unstated frame. Some consumers need the previous piece's tangent to govern there. One example is IFC4X3 ADD2 8.9.3.48.3.

Needed

  1. A stated seam rule in ADR 0082, plus a seam-side selector on CurveStation / OrientedCurveStation: incoming (previous piece) or outgoing (next piece). The default must be the documented current behaviour, so existing results don't change.
  2. Mitred runs across seams: SectionsAtStations, OpenSectionsAtStations and OffsetByStations runs that cross a seam get a mitre. That means the bisector plane of the incoming and outgoing tangents (IFC 8.8.3.35.1 is one consumer rule), not a section in one side's frame. A seam whose mitre degenerates (near-reversal) is refused with a typed error.
  3. Seam positions without evaluating: a query that returns the seam parameters / arc lengths of a composite or relation curve from stored data, exactly where the data is exact. Today a consumer cannot place stations on a plain composite base without evaluating it, so it refuses all of them.

Done when

  • ADR 0082 states the seam rule, and every station evaluator follows it.
  • Stations on a seam give the incoming or outgoing frame as selected, with tests at G1 and non-G1 seams.
  • Section and offset runs across a non-G1 seam are mitred, with a test that the cross-section lies in the bisector plane.
  • Seam positions can be read for composite and relation curves, with typed refusal for any curve whose seams cannot be located exactly.

Consumer: openbimrs/ifc#346.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

needs-triageFiled but not yet accepted, sized, or scheduled

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions