Body generators
Legs and panels (single diagonal, X, K, diamond or Warren bracing), crossarms, a peak, a face copied. The file keeps each generator's inputs, so it can be rebuilt without touching what was made by hand.
Open software for OverHead Lines
Overhead power lines, designed in the open.
Two applications on one engine: OHL-Design for the line (sag and tension, clearances, line layout, drawings) and OHL-Structure for pylons and their loading, with the ohl command line beside them. Written in Rust, free under MPL‑2.0, in pre-alpha.
Pre-alpha and in active development: no feature is finished or approved yet. Every result must be verified by a qualified engineer.
OHL-Design
In active development
3D, plan and profile views share one selection and one weather case. Click a span and its cable, circuit, system and the sag and tension of every weather case are right there.
In active development
Every step is a command applied through the project session, so it can be undone, logged, shared and solved again: only the sections an edit touches are re-solved, with the same result as a full solve.
Several alignments per line, with stationing, offsets and line angles. Structures can be shared between routes, for Y-pylons or parallel routes that rejoin.
Pylons from a library of types, one .ohls file each, chosen in a structure picker with a preview and placed by position, angle and height adjustment. The Replace structure tool puts another type in a structure's place and rewires its wires, asking where wire points do not match.
Suspension, V- and strain strings; sections strung through them with a cable, circuit, electrical system and bundle; jumpers at dead-ends and taps.
Exact catenary, change of state, ruling span or exact equal-H sections, non-linear stress-strain and creep, solved in 3D over every weather case.
Vertical and radial, to the ground, to LiDAR classes, to other lines and other wires, by voltage, with the wind applied in steps.
Load cases, design-code plugins, loads at every attachment point, allowable spans and load trees; each placed structure's loads handed to OHL-Structure for its finite-element analysis.
Plan and profile sheets as SVG, DXF, PDF and PNG; profile exports; exchange through OHL XML, the open XML schema of the line, LandXML, GeoJSON, IFC, KML and more.
In active development
Dockable pages that stay in step: pick a structure in the plan and the 3D view, the profile and the properties follow. Change the weather case and every wire is redrawn.
A wgpu renderer streams terrain, LiDAR, structures and wires in and out by distance, with three levels of detail per layer and a point budget for the survey.
Straightened plan and profile per route, orthophotos and DXF drawings as backgrounds, alignment points edited where you see them.
Move a structure and the shown case re-solves the touched sections as the values change. One command on Apply, one step of undo.
OHL-Structure
In active development
The structure application edits one structure file in a window of its own: x to the right of the line, y ahead, z up. Start it with Edit on a structure in OHL-Design, or open a file on its own. Its detail level is worked out from what the file holds, and rises as you fill it in.
Only the points where insulators hang, the strings and the wire points. A mast and crossarms are drawn to them.
Enough to place the wires, draw the sheets and send the line's loads to the structure.
Joints and members of a lattice, or a pole's outline by height, without sections yet. Generators build legs, panels, crossarms and a peak from a few dimensions; symmetry and member groups help with the rest.
The finite-element analysis needs level 3. Clearances to the structure body are planned.
Every member with a section and a material, and supported joints; for a pole, its material and wall. Members can be truss, frame, cable or tension-only.
For finite-element analysis and for export. Member usage uses Euler buckling; design-code checks of members and joints are planned.
Legs and panels (single diagonal, X, K, diamond or Warren bracing), crossarms, a peak, a face copied. The file keeps each generator's inputs, so it can be rebuilt without touching what was made by hand.
A pole's outline by height, round or polygonal, with its material and wall. Extension pieces and longer legs, taken into the finite-element model of a placed structure that uses them.
OHL-Design computes the forces at each placed structure; load-case recipes say which value, factor and share go on which points or members, wind on members included. A case in which a wire did not solve is marked incomplete, never a pass.
Truss, frame, cable and tension-only members, first order or P-Delta. Joints that no member stiffens in a direction are held and reported; a real mechanism is named with the joints that move. Per-member capacities, effective lengths, angle orientation and a dead-load factor.
Profiles and materials in .ohlsec files, referred to by id, with their computed properties and the widths that take the wind.
A level-3 structure as IFC4, IFC2x3, SAF (xlsx) or CSV tables, with sections and supports, and load cases in IFC4, SAF and CSV. Imports into other programs have not been tried yet.
Planned: code checks of members and joints as plugins, structures and line solved together, clearances to the structure body, level 2 and 3 members on the drawing sheets.
In active development
Rules name a target and the distance to keep. OHL-Design checks each span against them and tells you the lowest clearance, where it is, and which weather case governs it.
Straight under the wire, in a zone with a width and depth you set, or the direct 3D distance. Bundles are checked to the nearest subconductor.
Instead of only the case's full pressure, every pressure from zero up to it, in steps such as 50 Pa, on both sides or one.
Ground surfaces, LiDAR classes picked from the point cloud, other lines and other wires of the same line. Requirements by voltage, as tables or formulas.
Also: envelopes over several weather cases, case pairs between wires, exclusion zones near clamps, galloping ellipses, blowout against the right of way, and vegetation encroachment with growth and fall-in. The clearance windows can load presets that a design-code plugin provides (the plugins in the public code provide none yet), and ohl zones runs the same check without a window.
Counted in the repository in October 2026. Each validation case compares a calculation with a reference value within a stated tolerance. Design-code plugins take every value from your parameter file; no code tables are shipped.
Engineering
In active development
Every calculation is open, documented in the theory manual and traced to its reference. Checks run on demand and never change the model.
Finite-element wire systems with exact catenary elements: suspension, V- and strain strings, bundles, jumpers, 3D blowout, broken spans, point and distributed loads.
Load cases from weather, load factors and wire condition. Plugins that implement the methods of NESC, CSA C22.3, IEC 60826, EN 50341, ASCE MOP 74 and GO 95, with the values from your own copy of the standard. No code tables are shipped; not certified or endorsed by any standards body.
Loads at every attachment, in line and structure axes. Allowable spans, load trees, 3D frame and truss analysis, wood, steel and concrete pole checks, usage reports worst first. A structure whose wires did not solve is reported incomplete.
Survey points and TINs, LAS/LAZ and COPC, point clouds stored in the project with levels of detail, ground classification, as-built wire fitting.
Thermal rating after IEEE 738 and CIGRE, clearance-limited temperature, optimum structure spotting, bill of materials and cost estimate.
Pre-alpha. Engineering results must be verified by a qualified engineer.
In active development
Add a design code, an import format, a terrain reader or a whole project importer as a WebAssembly component, written in any language against a WIT interface. Python covers scripts and reports, and a console runs inside the app.
ohl:plugin, manifest ohl-plugin.toml): a design-code plugin can also provide clearance presets. Plugins built for an older interface must be rebuilt.Plugins distributed as separate files may use any licence.
[plugin]
name = "my-format"
version = "0.1.0"
sdk = "0.3"
tier = "wasm"
entry = "my_format.wasm"
extension-points = ["io"]
[permissions] # denied by default
network = false
filesystem = []
Collaboration
In active development
Host a project and others join it, like players on a game server. Every edit is checked by the server, applied in one order and sent to everyone.
OpenOHL is licensed under the Mozilla Public License 2.0. Each domain is its own crate, so it can be improved, replaced or tested on its own.
An independent implementation built from standards, papers, textbooks and engineering knowledge. No decompiled code, no borrowed file layouts, documentation or UI assets.
ohl validate runs the validation cases, each with a reference value and a tolerance, and fails when one drifts or runs out of time. A full validation report is a goal for 1.0.
Calculations run from the ohl command line and from Python scripts as well as in the applications.
Pre-alpha. Everything on this page is built as a base and in active development; nothing is finished or approved yet. The roadmap lists what each part simplifies or leaves for later.
ohl zones.Members and joints checked by design-code plugins; the interface is agreed first.
The structures' stiffness in the wire solve, then structures and line iterated until both converge.
For pylons at detail levels 2 and 3.
Editing in the web client, cherry-pick, visual diffs in the views, history export for audits.
A stable plugin SDK, a plugin registry, the complete theory manual and validation report, translations.
Two more applications on the same engine, in this order. Neither is started yet.
The foundations of the structures: foundation types and their checks, with the loads that the structure checks give.
Substations: the gantries, busbars and equipment where lines end.
Free and open source. Pick your platform and how you want it.
Your setup
Install Rust (stable) from rustup.rs.
Get the source and start OHL-Design with the synthetic example line:
git clone https://github.com/Gay-Lussac/OpenOHL.git
cd OpenOHL
cargo run --release -p ohl-app -- \
examples/synthetic-line/synthetic-line.ohl.json \
--terrain examples/synthetic-line/synthetic-survey.csv \
--weather examples/synthetic-line/weather-cases.ohlwcFree under MPL-2.0. Pre-alpha: verify every result with a qualified engineer.