Convert Figma logo to code with AI

horizon-eda logohorizon

Horizon is a free EDA package

1,177
87
1,177
158

Top Related Projects

This is an active mirror of the KiCad development branch, which is hosted at GitLab (updated every time something is pushed). Pull requests on GitHub are not accepted or watched.

A powerful, innovative and intuitive EDA suite for everyone!

Fritzing desktop application

Quick Overview

Horizon EDA is an open-source Electronic Design Automation (EDA) tool for designing printed circuit boards (PCBs). It offers a modern, user-friendly interface with advanced features for schematic capture, PCB layout, and 3D visualization, aiming to streamline the electronic design process for hobbyists and professionals alike.

Pros

  • Intuitive and modern user interface
  • Integrated 3D viewer for PCB visualization
  • Powerful scripting capabilities using Python
  • Comprehensive library management system

Cons

  • Steeper learning curve compared to some other EDA tools
  • Smaller community and ecosystem compared to more established alternatives
  • Limited support for certain advanced features found in commercial EDA software
  • Occasional stability issues reported by some users

Getting Started

To get started with Horizon EDA:

  1. Install Horizon EDA:

    # For Ubuntu/Debian
    sudo add-apt-repository ppa:horizon-eda/ppa
    sudo apt update
    sudo apt install horizon-eda
    
  2. Launch Horizon EDA:

    horizon-eda
    
  3. Create a new project:

    • Click "New Project" in the welcome screen
    • Choose a project name and location
    • Select a template or start from scratch
  4. Begin designing your schematic and PCB layout using the intuitive interface and tools provided by Horizon EDA.

For more detailed instructions and documentation, visit the official Horizon EDA website and GitHub repository.

Competitor Comparisons

This is an active mirror of the KiCad development branch, which is hosted at GitLab (updated every time something is pushed). Pull requests on GitHub are not accepted or watched.

Pros of KiCad

  • Larger community and more extensive documentation
  • Wider range of features and tools for complex PCB designs
  • Better integration with external libraries and plugins

Cons of KiCad

  • Steeper learning curve for beginners
  • Less modern user interface compared to Horizon
  • Slower performance for large, complex designs

Code Comparison

KiCad (C++):

void SCH_EDIT_FRAME::OnOpenPcbnew( wxCommandEvent& event )
{
    PROJECT* project = &Prj();
    wxFileName fn = Prj().AbsolutePath( m_CurrentSheet->GetScreen()->GetFileName() );
    fn.SetExt( KiCadPcbFileExtension );
    wxString fullPath = fn.GetFullPath();

Horizon (C++):

void Core::set_property(ObjectType type, const UUID &uu, ObjectProperty::ID property, const PropertyValue &value)
{
    auto object = get_object(type, uu);
    object->set_property(property, value);
    set_needs_save();

Both projects use C++ for their core functionality, but Horizon's codebase appears more modern and streamlined. KiCad's code reflects its longer history and broader feature set, while Horizon's code suggests a more focused and efficient approach to EDA software development.

A powerful, innovative and intuitive EDA suite for everyone!

Pros of LibrePCB

  • Cross-platform compatibility (Windows, macOS, Linux)
  • User-friendly interface with intuitive design tools
  • Extensive library management system

Cons of LibrePCB

  • Smaller community and fewer resources compared to Horizon
  • Limited advanced features for complex designs

Code Comparison

LibrePCB:

void Board::addDevice(const Uuid& deviceUuid, const Point& position,
                      const Angle& rotation, bool mirror) {
  Q_ASSERT(!mIsAddedToProject);
  std::shared_ptr<Device> device = std::make_shared<Device>(*this, Uuid::createRandom());
  device->setLibDevice(mProject.getLibrary().getDevice(deviceUuid));
  device->setPosition(position);
  device->setRotation(rotation);
  device->setMirrored(mirror);
  mDevices.append(device);
}

Horizon:

void Core::add_part(const UUID &entity_uuid, const Coordi &c)
{
    auto part = project.insert_part(entity_uuid, c);
    part->smashed = smash_on_add;
    if (part->smashed) {
        part->smash();
    }
    set_needs_save();
}

Both projects use C++ and implement similar functionality for adding components to a board, but Horizon's code appears more concise.

Fritzing desktop application

Pros of Fritzing

  • More beginner-friendly with an intuitive drag-and-drop interface
  • Larger community and parts library, making it easier to find components
  • Better documentation and tutorials for new users

Cons of Fritzing

  • Less precise and professional-grade compared to Horizon
  • Limited advanced features for complex PCB design
  • Slower performance, especially with larger projects

Code Comparison

Fritzing (C++):

void ItemBase::mousePressEvent(QGraphicsSceneMouseEvent *event) {
    if (m_spaceBarWasPressed) {
        event->ignore();
        return;
    }
    m_dragItem = this;
    m_dragStartPos = pos();
    m_dragStartScenePos = event->scenePos();
}

Horizon (C++):

void CanvasGL::pan_gesture_begin(const GdkEventPan *event)
{
    if (pan_dragging)
        return;
    pan_dragging = true;
    pan_pointer_pos_orig = {(float)event->x, (float)event->y};
    pan_center_orig = center;
}

Both projects use C++ for their core functionality, but Horizon's codebase appears more modern and optimized for performance. Fritzing's code focuses on user interaction, while Horizon's emphasizes precise control and efficiency in handling complex PCB designs.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Horizon EDA

Horizon EDA is an Electronic Design Automation package supporting an integrated end-to-end workflow for printed circuit board design including parts management and schematic entry.

See the docs for an overview of horizon's top features.

Wanna chat about the project? Join #horizon-eda on libera.chat

collage

Features for users so far

  • Complete design flow from schematic entry to gerber export
  • Sane library management
  • Unified editor for everything from symbol to board
  • Netlist-aware schematic editor
  • KiCad's awesome interactive router
  • Lag- and glitch-free rendering
  • Rule-based DRC
  • Hierarchical schematics
  • Undo/redo
  • Copy/paste for some objects
  • Builds and runs on Linux and Windows

Features for developers

  • Written in modern C++, legacy-free codebase!
  • Uses JSON as on-disk format
  • Uses Gtkmm3 for GUI
  • OpenGL 3 accelerated rendering
  • Everything is referenced by UUIDs

Getting Started

See the the docs.

Included third-party software

Directory in 3rd_partyProjectVersionURLLicense
nlohmannJSON for Modern C++3.10.3https://github.com/nlohmann/json/MIT
clipperClipper6.4.2http://www.angusj.com/delphi/clipper.phpBoost
polypartitionpolypartition7bdffb428b2b19ad1c43aa44c714dcc104177e84https://github.com/ivanfratric/polypartition/MIT
poly2tripoly2trid949f3cd6f85b20728af0bdc454b090226068c73https://github.com/jhasse/poly2tri3-Clause BSD
dxflibdxflib3.26.4https://qcad.org/en/90-dxflibGPLv2
alphanumThe Alphanum Algorithm1.3http://www.davekoelle.com/alphanum.htmlMIT
delaunatorDelaunator C++6f2879967bc96a9bcdbacf418e560e9f2e170acehttps://github.com/abellgithub/delaunator-cppMIT
footagfootag99116328abe8f53e71831b446d35e93ee7128ef3https://github.com/endofexclusive/footagGPLv3
routerKiCad router6.0.4https://gitlab.com/kicad/code/kicad/-/tree/6.0.4/pcbnew/routerGPLv3
sexprKiCad s-expression parser6.0.4https://gitlab.com/kicad/code/kicad/-/tree/6.0.4/libs/sexprGPLv3
catch2Catch23.0.1https://github.com/catchorg/Catch2/releases/tag/v3.0.1Boost
range-v3range-v30.12.0https://github.com/ericniebler/range-v3/releases/tag/0.12.0Boost