OpenSCAD User Manual/The OpenSCAD User Interface

User Interface

The User Interface (UI) has the usual menus along the top of the Window; File, Edit, View, Window, and Help to which is added the Design Menu.

Main Window showing a script that has generated the OpenSCAD logo. The three panes are numbered for reference in the text

The application starts with three sections, or panes, showing in the window:

  1. The Model Viewing Pane
  2. The Console Pane
  3. A Text Editor Tab

The rest of the sections in the UI may be shown by enabling them using the Window Menu.

Note: In the following sections menu items that have hot keys defined show the key press in parentheses, as in Design > Preview (F5)

Window Panes Common Features

the header of the console pane in the OpenSCAD UI
showing the header of the console pane

Each pane of the UI may be moved, extracted to its own window, and closed using the icons on the pane's header.

Click and Drag in the header bar to move a pane to any edge of the window and it will dock to that side, if there is already another pane docked there the one being dragged will become a tabbed window with the existing one.

Clicking the double window icon makes the pane into a separate window and the X icon, of course, closes it.

Model Viewing Pane

The model generated by the script is previewed in the viewing area and, optionally, will be automatically updated with each change in the script. This pane is actually the main window for the application so it has the menu bar permanently and the other panes dock at its edges.

The preview may be manually refreshed using menu Design > Preview (F5). To see the fully rendered model Design > Render (F6) may be used.

icon to toggle axes symbol in the model viewing pane
toggle axes symbol, dark

The View menu has several options for showing or hiding features of the Viewing Pane. For example, the Show Axes (Ctrl+2) menu item shows an indicator for the coordinate axes can be enabled.

More information about the Model View Icon-bar functions is available.

The view of the model is manipulated using the mouse and specific keys:

Action Operation Description
Centre of Rotation double Left Click click on an axis line, or the surface of a model to set
Ctrl|[3} Show Crosshair
rotating the view Left Click and Drag up and down tilts the view up and down.
Side to side spins the view around the Z-axis.
Left Double-click to set the centre of rotation.
Shift + Left Click and Drag side to side rotates the view around an axis from the origin to the view point.
Up and down work as Left Click an Drag
moving the viewing area Right Click and Drag moves the viewing area, left, right, up, and down
zooming Rolling the the mouse wheel (if available)
Shift+ Middle Click and Drag up and down zooms
Shift+ Right Click and Drag up and down zooms
Plus and Minus keys + and -
Square Brackets Ctrl+[ and Ctrl+]
Reset Rotation Ctrl+0 short cut to menu View > Diagonal
Reset All Ctrl+⇧ Shift+0 short cut to menu View > Center

Console Output Pane

This pane is where status information about graphics processing, and feedback messages from a running script are displayed.

During rendering a progress-bar is displayed at the bottom of the console, along with a button to cancel it.

A render can be cancel using the X button at the end of the progress bar.
A render can be cancel using the X button at the end of the progress bar.

Text Editor Tabs

Each open script file is shown in its own tab in the text editor pane.

screen shot of the Editor panel showing Find and Replace panel
Editor panel showing Find and Replace panel

It has the standard features:

  • text search & replace
  • syntax highlighting
  • comment/ un-comment lines of text
  • file reload to revert all edits in a session
  • color schemes (selected in Preferences)
  • code/text snippet insertion (templates)
  • font size control
  • interactive number modifications

Editor Templates

The editor has a facility for pasting in blocks of text or snippets of code to assist when writing code. These text items are called Templates and are inserted into the script at the cursor position. Right Mouse click to see the context action menu, select the Insert Template item, and then double click template you want.

Templates are simple JSON files with a single top level definition. For example, a template for if-then-else could be:

{
   "key" : "if-then-else",
   "content" : "if(^~^) \n\t;\nelse\n\t;"
}

Note the special symbol, "^~^", in the template. That marks where to leave the text cursor after it is pasted in. This is what it will look like:

if() 
  ;
else
  ;

with the text cursor between the parentheses, just after "if", ready to put in the conditional expression.

Using and creating templates is covered in more dept on the UI Advanced Features page

Font Size Control

When hovering over an editor tab, or floating window, rolling the mouse wheel, while holding the Control Key down, will increase, or decrease the font size, effectively zooming in an out.

Zooming in and out in the Model View Pane is done the same way.

Interactive Number Modifications

When the cursor to the right of a digit in a number it can be incremented or decremented using the arrow keys or by rolling the mouse wheel.

right adjacent to a digit
Alt+Down Arrow decrement
Alt+Up Arrow increment

The left and right arrows also have a role in interactive change

left of a number
Alt+Left Arrow to add digits to the left
right of a number
Alt+RightArrow will add a decimal point and one fraction digit per tap

Further details on Interactive Modification are covered on the Advanced Page

Animation Control Pane

The Animate option adds an animation bar to the lower edge of the screen. As soon as FPS and Steps are set (reasonable values to begin with are 10 and 100, respectively), the current Time is incremented by 1/Steps, FPS times per second, until it reaches 1, when it wraps back to 0.

screen shot of the animation pane of the OpenSCAD User Interface window.
Animation pane of the OpenSCAD User Interface window.

Every time Time is changed, the program is re-evaluated with the variable $t set to the current time. Read more about how $t is used in section Other_Language_Features.

A more complete description of Animation is on the Advanced UI page

The Rest of the UI Elements