Convert Figma logo to code with AI

Ultimaker logoCura

3D printer / slicing GUI built on top of the Uranium framework

6,408
2,115
6,408
3,534

Top Related Projects

G-code generator for 3D printers (RepRap, Makerbot, Ultimaker etc.)

3,418

Open Source toolpath generator for 3D printers

Quick Overview

Ultimaker Cura is an open-source 3D printing slicing application. It prepares 3D models for printing by converting them into instructions (G-code) that 3D printers can understand and execute. Cura offers a user-friendly interface and supports a wide range of 3D printers.

Pros

  • Extensive printer compatibility, supporting many brands and models
  • User-friendly interface with both basic and advanced settings
  • Regular updates and active community support
  • Free and open-source software

Cons

  • Can be resource-intensive on older computers
  • Some advanced features may have a learning curve for beginners
  • Occasional stability issues reported by some users
  • Limited direct CAD integration compared to some commercial alternatives

Code Examples

As Ultimaker Cura is primarily a GUI application for end-users, it doesn't function as a traditional code library. However, it does offer a plugin system for developers to extend its functionality. Here are a few examples of how you might interact with Cura programmatically:

  1. Creating a basic plugin:
from UM.Extension import Extension

class MyExtension(Extension):
    def __init__(self):
        super().__init__()
        self.setMenuName("My Extension")
        self.addMenuItem("Do Something", self.doSomething)

    def doSomething(self):
        print("Extension action performed!")
  1. Accessing scene data:
from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator
from UM.Scene.SceneNode import SceneNode

for node in DepthFirstIterator(self.getController().getScene().getRoot()):
    if isinstance(node, SceneNode) and node.getMeshData():
        print(f"Found mesh: {node.getName()}")
  1. Modifying print settings:
from UM.Application import Application

global_stack = Application.getInstance().getGlobalContainerStack()
extruder_stack = global_stack.extruderList[0]
extruder_stack.setProperty("infill_sparse_density", "value", 50)

Getting Started

To get started with Ultimaker Cura:

  1. Download the latest version from the official website.
  2. Install the application following the instructions for your operating system.
  3. Launch Cura and follow the initial setup wizard to configure your 3D printer.
  4. Import a 3D model file (STL, OBJ, etc.) using File > Open File(s).
  5. Adjust print settings as needed in the right sidebar.
  6. Click "Slice" to generate the G-code.
  7. Save the G-code or send it directly to your printer (if supported).

For developers interested in creating plugins or scripts, refer to the Cura GitHub repository and the plugin documentation.

Competitor Comparisons

G-code generator for 3D printers (RepRap, Makerbot, Ultimaker etc.)

Pros of PrusaSlicer

  • More advanced support generation and customization options
  • Better handling of multi-material printing and color mixing
  • Faster slicing speeds for complex models

Cons of PrusaSlicer

  • Less user-friendly interface for beginners
  • Fewer pre-configured printer profiles compared to Cura
  • Limited integration with third-party plugins and add-ons

Code Comparison

PrusaSlicer (C++):

void GCode::set_extruder(unsigned int extruder_id)
{
    if (m_writer.extruder() == extruder_id)
        return;
    m_writer.set_extruder(extruder_id);
}

Cura (Python):

def setExtruder(self, extruder):
    if self._current_extruder == extruder:
        return
    self._current_extruder = extruder
    self._commands.append("T%d" % extruder)

Both snippets show how the slicers handle extruder changes, with PrusaSlicer using C++ and Cura using Python. PrusaSlicer's implementation is more low-level, while Cura's is more high-level and abstracted.

3,418

Open Source toolpath generator for 3D printers

Pros of Slic3r

  • More customizable and flexible for advanced users
  • Supports a wider range of 3D printers out-of-the-box
  • Faster slicing speed for complex models

Cons of Slic3r

  • Less user-friendly interface, steeper learning curve
  • Fewer built-in profiles for specific printers and materials
  • Less frequent updates and community support

Code Comparison

Slic3r (C++):

void PerimeterGenerator::process_external_surfaces(
    const ExPolygons &surfaces_to_fill,
    const ExtrusionRole role,
    const Flow &flow,
    const double spacing_ratio)
{
    // Implementation details
}

Cura (Python):

def _calculateExtraRetractions(self) -> None:
    for path in self._paths:
        self._calculateExtraRetractionsForPath(path)
    # More implementation details

Both projects use different programming languages, with Slic3r primarily using C++ for core functionality and Cura using Python. This affects performance and development approaches. Slic3r's C++ implementation may offer better performance for complex slicing operations, while Cura's Python codebase might be more accessible for contributors and easier to extend.

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


Badge Issues    Badge PullRequests    Badge Closed

Badge Size    Badge License    Badge Contributors

Badge Test    Badge Conan    Badge Downloads

Logo

Ultimaker Cura

State-of-the-art slicer app to prepare
your 3D models for your 3D printer.

With hundreds of settings & community-managed print profiles,
Ultimaker Cura is sure to lead your next project to a success.

Contribute Printer Profiles? -- Please look here first.
Contribute Translations? -- Please look here first.


Button Building    Button Plugins    Button Machines

Button Report    Button Settings    Button Localize

Button Libraries



Shows cura open on the preview screen with a large benchy model in the center.

OpenSSF Scorecard