Skip to main content

AltiumRecord

Derive Macro AltiumRecord 

Source
#[derive(AltiumRecord)]
{
    // Attributes available to this derive:
    #[altium]
}
Expand description

Derive macro for Altium record types.

§Container Attributes

  • #[altium(record_id = N)] - Schematic record type ID
  • #[altium(object_id = Variant)] - PCB object ID enum variant
  • #[altium(format = "params"|"binary"|"both")] - Serialization format

§Field Attributes

  • #[altium(flatten)] - Flatten a base type’s fields
  • #[altium(param = "KEY")] - Map field to parameter key
  • #[altium(param = "KEY", frac = "KEY_FRAC")] - Integer with fractional part
  • #[altium(param = "KEY", default)] - Use Default::default() if missing
  • #[altium(param = "KEY", default = value)] - Use specific default value
  • #[altium(param = "KEY", optional)] - Wrap in Option
  • #[altium(binary, ty = "i32le")] - Binary field type
  • #[altium(binary, coord_point)] - Binary coordinate point
  • #[altium(unknown)] - Store unknown parameters (non-destructive editing)
  • #[altium(unknown_binary)] - Store unknown binary bytes
  • #[altium(skip)] - Skip field entirely

§Example

#[derive(AltiumRecord)]
#[altium(record_id = 2, format = "params")]
pub struct SchPin {
    #[altium(flatten)]
    pub base: SchGraphicalBase,

    #[altium(param = "ELECTRICAL", default)]
    pub electrical: PinElectricalType,

    #[altium(param = "PINLENGTH", frac = "PINLENGTH_FRAC")]
    pub pin_length: Coord,

    #[altium(unknown)]
    pub unknown_params: UnknownFields,
}