Expand description
Altium file format library for Rust.
This library provides read/write support for Altium Designer files including:
- SchLib (Schematic symbol library)
- PcbLib (PCB footprint library)
- SchDoc (Schematic document)
- PcbDoc (PCB document)
§Architecture
The library is organized into several modules:
types- Core data types (coordinates, units, layers, parameters)traits- Serialization traits for derive macrosrecords- Record types for schematic and PCB primitivesio- File I/O utilities for CFB formaterror- Error types
§Derive Macros
Record types can be defined using derive macros for automatic serialization:
ⓘ
use altium_format_derive::AltiumRecord;
#[derive(AltiumRecord)]
#[altium(record_id = 2, format = "params")]
pub struct SchPin {
#[altium(flatten)]
pub base: SchGraphicalBase,
#[altium(param = "ELECTRICAL", default)]
pub electrical: PinElectricalType,
#[altium(unknown)]
pub unknown_params: UnknownFields,
}§Quick Start
§Reading a Schematic Library
use altium_format::io::SchLib;
use std::fs::File;
use std::io::BufReader;
let file = File::open("components.SchLib")?;
let lib = SchLib::open(BufReader::new(file))?;
for component in &lib.components {
println!("Component: {}", component.name());
println!(" Pins: {}", component.pin_count());
}§Creating a Footprint
use altium_format::footprint::FootprintBuilder;
use altium_format::records::pcb::PcbPadShape;
let mut builder = FootprintBuilder::new("SOIC-8");
builder.add_dual_row_smd(
4, // pads per side
1.27, // pitch (mm)
5.3, // row spacing (mm)
1.5, // pad width (mm)
0.6, // pad height (mm)
PcbPadShape::Rectangular,
);
let component = builder.build_deterministic(&mut ());§Example
ⓘ
use altium_format::types::{Coord, CoordPoint, ParameterCollection};
// Parse parameters from Altium format
let params = ParameterCollection::from_string("|RECORD=1|NAME=Test|X=100mil|");
let name = params.get("NAME").unwrap().as_str();
let x = params.get("X").unwrap().as_coord_or(Coord::ZERO);Re-exports§
pub use error::AltiumError;pub use error::Result;pub use query::Pattern;pub use query::QueryMatch;pub use query::Selector;pub use query::SelectorEngine;pub use query::SelectorParser;pub use query::query_records;pub use query::query_records_with_doc_name;pub use traits::AltiumRecord;pub use traits::FromBinary;pub use traits::FromParamValue;pub use traits::FromParams;pub use traits::PcbPrimitive;pub use traits::SchPrimitive;pub use traits::ToBinary;pub use traits::ToParamValue;pub use traits::ToParams;pub use tree::BreadthFirstWalker;pub use tree::ParentRef;pub use tree::RecordId;pub use tree::RecordTree;pub use tree::TreeRecord;pub use tree::TreeWalker;pub use types::Color;pub use types::Coord;pub use types::CoordPoint;pub use types::CoordPoint3D;pub use types::CoordRect;pub use types::Layer;pub use types::ParameterCollection;pub use types::ParameterValue;pub use types::Unit;pub use types::UnknownFields;
Modules§
- api
- Multi-layer API for Altium file access.
- dump
- Pretty-printing utilities for dumping Altium file structures.
- edit
- Editing engine for programmatic modification of Altium schematics and PCBs.
- error
- Error types for the Altium library.
- footprint
- Footprint creation and manipulation module.
- format
- Binary format constants and record type identifiers.
- io
- I/O utilities for reading and writing Altium files.
- ops
- High-level operations for Altium file types.
- query
- Query systems for schematic records and documents.
- records
- Record types for Altium schematic and PCB primitives.
- traits
- Core traits for Altium record serialization and deserialization.
- tree
- Tree structure support for Altium record hierarchies.
- types
- Core types for Altium file parsing.
Derive Macros§
- Altium
Base - Derive macro for Altium base types.
- Altium
Enum - Derive macro for Altium enums with integer mapping.
- Altium
Record - Derive macro for Altium record types.