It’s not documented, but you can experiment with it by installing Bonsai and creating a new drawing and adding annotations. It’s completely free, open source, and works on any platform so you can dig around to see how everything works. Also happy to give you a tour / screenshare
You’ll see we use IfcDocumentInformation for both drawings and sheets, and IfcDocumentReference to “place” things on sheets. We use IfcAnnotation with a userdefined predefined type - we treat the following as special:
"TEXT_LEADER"
"STAIR_ARROW"
"DIMENSION"
"ANGLE"
"RADIUS"
"DIAMETER"
"ELEVATION"
"SECTION"
"BREAKLINE"
"PLAN_LEVEL"
"SECTION_LEVEL"
"TEXT"
"FALL"
"SLOPE_ANGLE"
"SLOPE_FRACTION"
"SLOPE_PERCENT"
We still use IfcTextLiteral for text with support for alignment and font styles, and use IfcRelAssignsToProduct to associate annotation to an IFC product. The IfcTextLiteral is allowed to use a templating language to reference data of the associated product (so you can have smart tags).
Dimensions, angles, radius, e.g. are just simple 2D lines. We do not currently store explicit visual curve and text styles in IFC, but instead rely on the viewer to interpret it (e.g. the viewer places an arrowhead symbol and measurement in the midpoint of each curve).
Drawing orthogonal section boxes or perspective fustrums are recorded as predefined type DRAWING
(still IfcAnnotation). Annotations associated with that drawing are all in the same IfcGroup with object type of DRAWING.
We also support an SVG (and optional DXF conversion) scale generation of these drawings. CSS is used to perform client-side styling. We’ve found this combo of strength of IFC semantics + CSS styling to be very powerful.
We use a custom Pset to store other metadata like drawing scale, drawing size, and target view. The target view tells the viewer what geometric context to display. It prioritises the target view, and falls back to things like model.
Here is an example of a drawing produced natively in IFC, with all the annotation completely stored in IFC. The styling is performed using CSS.
Here’s another example. Examples are by open source architecture studio OpeningDesign.
Here’s how a viewer might visualise this IFC data: