Back to help Table of Contents

## MoI Command Reference

### Bottom toolbar:

File > Open, Save As, New, Import, Export, Open template, Import part
Save
Undo, Redo
Delete
Split / 3D / Top / Front / Right
XYZ / Distance / Angle
Grid Snap, Straight Snap, Object Snap
Options, Help, Full Screen, Browser

### Side pane:

Draw curve
Lines > Line, Polyline
Freeform > Control points, Through points, Sketch
Rect > Corner, Center, 3 pts
Polygon > Center, Edge, Star
Circles > Center, Diam, 3 pts, Tan
Arc > Center, Cont, 3 pts, Tan
Ellipse > Center, Diameter, Corners
More > Point, Helix, Conic
Draw solid
Plane > Corner, Center, 3 pts
Box > Corner, Center, 3 pts
Sphere
Cylinder
Cone
Text
Edit
Join, Separate
Trim
Extend
Show pts, Add pt
Copy, Copy with origin, Paste, Paste part
Hide
Lock
History
View
Reset all
Image
CPlane
Display hidden lines
Select
Sel all
Desel all
Invert
Construct
Boolean > Diff, Union, Isect, Merge
Fillet > Fillet, Chamfer
Offset > Offset, Shell, Inset
Planar
Extrude
Revolve > Revolve, Rail revolve
Loft
Sweep
Blend
NSided
Network
Curve > Project, Isect, Silhou, Iso
Transform
Move
Copy
Rotate > Rotate, Rotate Axis
Scale > Scale, Scale 2D, Scale 1D
Mirror
Array > Grid, Dir, Circular, Curve
Align
Orient > Orient, Line/Line, View/View
Deform > Flow, Twist
SubD
Create > From file
Dim
Horiz
Vert
Aligned
Radius
Angle
Leader
Text
Viewport controls
Area
Zoom
Pan
Rotate
Reset
Additional commands
Incremental save
Rebuild
Flip
Merge
ArrayGem
ExplodeMove
BoundingBox
BoundingBoxCenter
ShrinkTrimmedSrf
Make2D
RemoveDuplicates
Meshing options
Hidden line options
Repeat
Construction lines
Shortcut keys
Edit frame
Properties panel
Object properties dialog
Scene browser
Orientation picker
Drawing on surfaces
Numeric expressions
Multitouch view navigation

File

Open

Opens a file.

MoI supports reading in curve and surface data from 3DM, IGES, STEP, and SAT files. 2D curves can be opened from PDF and AI files, and curves and drafting entities like lines, circles, and arcs can be opened from DXF files.

3DM is considered the "native" file format that supports all MoI data.

A right click on the Open button will perform an Open template operation instead.

Save As

Saves a file to a new file name.

Curves and surfaces can be saved to 3DM, IGES, STEP, and SAT formats. A hidden line drawing can be saved to the PDF, AI, or DXF formats for printing or transfer to 2D illustration or 2D CAD programs. Polygon mesh data can be saved to OBJ, STL, 3DS, LWO, FBX, and SKP formats.

When saving to a polygon mesh format, the Meshing options dialog will be shown to allow adjusting the mesh density.

When saving to a 2D drawing format, the Hidden line options dialog will be shown.

New

Deletes all current model content and resets the current file name to blank.

Import

Import is similar to Open, except the data from the chosen file will be added to the current model instead of replacing the current model.

This could also be described as "Merge" or "Combine" files.

A right click on the Import button will perform an Import part operation which will include an additional step for positioning the imported objects.

Export

Export is similar to Save As, except only the selected objects are written to the file.

This could also be described as "Export selected".

Open template

Open template is performed by right-clicking on the Open button.

When you open a file as a template file, the current file name will remain blank so that it is not so easy to save over top of the template file itself.

If you want to have a template file loaded at every startup of MoI (for example to control the default set of styles or view settings or any other properties stored in files), that can be specified under Options > General > Template file.

Import part

Import part is available by right-clicking on the Import button.

This will merge the chosen file with the current model but has an additional step for adjusting the orientation of the imported part, for example to align it to be perpendicular to an existing surface.

The base origin of the part is defined by the CPlane that was set in the saved file, or the world origin if no custom CPlane had been set.

For more information on how the orient step works, see Orientation picker.

Save

Saves the model using the current file name.

Also see Incremental save for a way to save using incremented version numbers (file01.3dm, file02.3dm, file03.3dm, etc...)

Undo

Reverses the most recent action.

Undo is normally used to reverse edits to objects, but it can also be used to restore the previous selection or visibility state. So for example, if you are building up a selection and accidentally click somewhere and mess it up, use Undo to get your selection back. Selection undo only works for one step back, after that further undos will switch to undoing geometry edits.

Redo

Reapplies the last action that was undone.

Delete

Deletes or removes an object, or certain portions of an object depending on the selection.

If a whole object is selected, that entire object will be deleted.

If faces of a solid are selected, those faces will be removed.

Control points of a curve can be removed with this command.

If all the edges of a trimming boundary (for example, a hole trimmed in a surface) are selected, then delete can be used to remove that trimming boundary and restore the original underlying surface. This is sometimes referred to as "untrimming".

Split / 3D / Top / Front / Right

These tabs on the bottom toolbar control the viewport configuration, switching between the split view or a maximized single view.

Clicking a second time on the Top, Front, or Right tabs will toggle back and forth between the reversed views (Bottom, Back, Left).

You can also right click on an ortho view tab to reverse it.

XYZ / Distance / Angle

These controls in the middle of the bottom toolbar allow for viewing and entering exact numeric data when picking points during a drawing command.

The x,y,z edit box shows the coordinates of the current point under the mouse. The distance edit box shows the distance between the previous picked point and the current point, and the angle box shows the angle of the line formed between the previous picked point and the current point.

Distance constraint can be activated by entering a value in the distance edit box. This will force the next point to be the given distance away from the previous point. This can be used for example when drawing a line to restrict the length of the line to a certain value while allowing it to be oriented freely.

Angle constraint can be activated by entering a value in the angle edit box. This will force the next point to snap to the given angle from the previous point.

If you want to type in an x,y,z coordinate using the keyboard, it is usually not necessary to actually click in the xyz box before typing. Just start typing and your keystrokes will go there automatically.

The x,y,z edit box allows point entry using several different forms:
x,y,z - 3 numbers separated by commas or spaces will use that x,y,z point in world coordinates, or in cplane coordinates when a global cplane has been set.
x,y - 2 numbers will use z as 0
0 - A single 0 character can be used as a shortcut for the origin (0,0,0).
rx,y,z or rx,y - prefix a 3D or 2D coordinate with "r" to make the new point relative to the previous picked point. This can also be used for the first point pick as well, where it will set up an offset distance from the point under the mouse.
wx,y,z or wx,yz or w0 - prefix a coordinate with "w" for it to be taken in world coordinates instead of in the current cplane coordinate system, when a global cplane has been set.
number - a single number other than 0 activates distance constraint, so you can easily type in a distance constraint without needing to click on the distance box.
<number - a < symbol followed by a number activates angle constraint.
dist<angle a distance value followed by a < symbol followed by an angle (for example, 4<45) will plot a polar coordinate relative to the previous point. This can be prefixed with "w" to make the polar coordinate relative to the origin.

The XYZ field can also be used as a mini command line entry for typing in commands. To use it in this way, press the Tab key first to put keyboard focus into this control, then type a name and push Enter. That will launch any command of that name, or select any named objects that match that name. For named object selection you can also include wildcard characters, for example if you have some objects named "upper deck" and "lower deck", you can type in *deck to select both of them.

Grid Snap

Clicking on this button allows toggling grid snap on or off. The button will show with an orange highlight when grid snap is enabled. The size of the grid can be changed under Options > Grid, or on the popup menu that can be launched by clicking the arrow that appears when you move the mouse over this button.

Straight Snap

Clicking on this button toggles straight snap on or off. The button will show with an orange highlight when straight snap is enabled. Different options for straight snap can be set under Options > Snaps. By default the snap angle is set to 90 degrees, and the default can be changed under options. It is also possible to use Angle constraint to define a custom snap angle that stays in effect for just one pick, see XYZ / Distance / Angle above. Snapping to too many angles by default can get in the way of doing freeform drawing, so it can be a good idea to leave the default to 90 and use Angle constraint when necessary to get other angles.

Object Snap

Clicking on this button toggles object snap on or off. The button will show with an orange highlight when object snap is enabled. When you move over this button, an arrow will appear above it, and you can use that to show a menu that allows enabling or disabling specific types of object snaps. It is recommended to leave all the snap types enabled, and instead disable or enable Object Snap completely by clicking on the main button for it. You can also hold down the Alt key when picking points to temporarily suppress object snaps.

Options

Opens the Options dialog which allows for changing various options for how MoI works.

Also see Shortcut keys

Help

Launches the help file. When moving over the help button, you can use the arrow that appears above it to open the About dialog to show version information.

Full Screen

This allows for MoI to switch back and forth from full screen mode (Windows version only). When full screen mode is enabled, MoI's window will expand past the Windows system task bar to give you a larger working area. This button only appears when MoI's window is maximized.

Browser

Clicking on this button will hide or show the Scene Browser pane when the browser is in Adjacent or Opposite position modes.

Draw curve

Lines

Line

Draws a line by specifying the 2 end points.

You can use Straight Snap, Object Snap and Construction lines to assist in placing the line.

Use Distance constraint or Angle constraint to draw a line of a particular length or angle.

You can enable the Both sides option to have the first point taken as the midpoint of the line.

Polyline

Draws a polyline which is a curve made up of multiple joined line segments.

You can use Edit/Separate to break a polyline up into individual lines.

While drawing the polyline, undo can be used to remove the last picked point.

Freeform

Control points

Draw a freeform curve using control points.

The line through the first and second point defines the starting tangent direction of the curve, and the line through the last 2 points defines the ending tangent, so you may want to place the second and second-to-last point with care to control the exact starting or ending direction of the curve

If you want the curve to come to a sharp point, check the "Make corner point" checkbox, or hold down the Ctrl key when clicking.

When drawing the curve, undo can be used to remove the last picked point.

Through points

Draw a freeform curve that is forced to pass through the points that you pick.

This can be useful if you want to force the curve to go through a particular spot, but this can also easily introduce wiggles in the curve. Using control points is generally preferred since it will create a more relaxed curve.

If you want the curve to come to a sharp point, check the "Make corner point" checkbox, or hold down the Ctrl key when clicking.

When drawing the curve, undo can be used to remove the last picked point.

Sketch

Draw a freeform curve using a click, hold down, and drag method like a brush stroke.

The curve will close automatically if your stroke comes nearby the start point.

If you want to draw many sketch curves in a row, use the Repeat checkbox.

Rect

Corner

Draw a rectangle by specifying the 2 corner points.

Move the mouse near a 45 degree angle to get a square snap.

Options are available for entering a specific width and/or height. For quick keyboard entry of width or height, it is not necessary to actually click anywhere. Just start typing and your keystrokes will go to the width box, and push Tab to move to the height box. Press Enter when you are finished with the height.

Checking the "Rounded corners" option will allow you to specify a radius for the corners of the rectangle after the 2 corners have been picked.

Center

Draw a rectangle by specifying the center and a corner point.

Options are the same as Rect Corner above.

3 pts

Draw a rectangle using 3 points, with 2 points for one edge and then a 3rd point for the width.

When picking the 3rd point, Square snaps are available to form an exact square.

Other options are the same as Rect Corner above.

Polygon

Center

Draw a polygon from a center and radius point.

Distance constraint can be used to specify an exact radius.

The Circumscribed option controls whether the polygon is contained inside the radius, or whether it is positioned to the outside of the radius.

Edge

Draw a polygon by specifying 2 points along the polygon's edge.

Distance constraint can be used to control the length of the edge.

Star

Draw a star shaped polygon by center and radius points.

Style:Auto will draw one using the classic proportions. Switching to Style:Custom allows specifying a third point to define the inside radius.

Circles

Center

Draw a circle by center and radius.

Click on the Radius label with the small arrow to switch between entering radius or diameter.

The Vertical checkbox will flip the circle 90 degrees to point vertically up from the plane.

Diam

Draw a circle by specifying 2 diameter points.

The Vertical checkbox will flip the circle 90 degrees to point vertically up from the plane.

3 pts

Draw a circle by specifying 3 points on the circumference.

Tan

Draw a circle tangent to existing curves.

The first 2 points must be picked snapped on to existing curves.

After the first 2 points are placed, you can either enter a radius value, pick a point for the circle to pass through, or pick a point snapped on to another curve to make a circle tangent to all 3 curves.

Arc

Center

Draw an arc by center point, start point, and angle.

The Elliptical option can be checked to create an elliptical arc that passes directly through the final picked point.

Cont

Draw an arc that continues tangent from the end of an existing curve.

The first picked point should be nearby the end of an existing curve

3 pts

Draw an arc that passes through the 3 picked points.

The order of the picked points can be changed using the Style option.

Tan

Draw an arc tangent to existing curves.

The first 2 points must be picked snapped on to existing curves.

After the first 2 points are placed, you can either enter a radius value, pick a point for the base circle to pass through, or pick a point snapped on to another curve to make a base circle tangent to all 3 curves.

After the the base circle has been established, an additional click is required to specify which of the available arc choices you want to keep. Click close to the portion that you want.

Ellipse

Center

Draw an ellipse by center and 2 axis points.

A specific width and height for the full ellipse can also be entered.

Diameter

Draw an ellipse by 2 diameter points followed by a point for the second axis.

Corners

Draw an ellipse by specifying the 2 corner points for its bounding box.

More

Point

Draw a single point object.

Point objects can be used to place a marker somewhere that can easily be snapped back to later on.

Helix

Draw a helix or spiral type curve.

Two points are picked to define the central axis and length of the helix. After the axis is defined, the next pick defines the start radius. If you want to have a different radius at the end for a tapered effect, check the Tapered option before finishing the first radius.

After the radius has been defined, you can adjust options for the number of turns of the helix, or the pitch which is the distance traveled by one coil.

If you want to draw a completely flattened 2D spiral use the "Flat spiral" option that shows up after the first point has been picked. That will cause the first point to become the center of the 2D flat spiral.

Conic

Draw a conic section curve (either a parabola, hyperbola, or ellipse segment) from a 3 point frame plus a "through point" or Rho value.

The frame defines the end points and the tangent directions of the generated curve.

If the ends of the frame are snapped on to curves, the intersection of the curve tangents is available as a Tan/Tan snap point for placing the middle point of the frame.

With a Rho value equal to 0.5, the curve is a segment of a parabola.

With Rho greater than 0.5 and less than 1, the curve is a segment of a hyperbola.

With Rho less than 0.5, the curve is a segment of an ellipse.

Draw solid

Plane

Corner

Draw a rectangular plane surface by 2 corner points, similar to Rectangle corner.

Center

Draw a rectangular plane surface by center and corner point, similar to Rectangle center.

3 pts

Draw a rectangular plane surface using 3 points, with 2 points for one edge and then a 3rd point for the width. Similar to Rectangle 3 points.

Box

Corner

Draw a solid box, starting with a base rectangle corner to corner followed by an extrusion value.

Snaps are available to make exact squares or a cube.

Center

Draw a solid box, starting with a base rectangle from a center point to a corner, followed by an extrusion value.

Snaps are available to make exact squares or a cube.

3 pts

Draw a solid box, starting with a base rectangle from 3 points, with 2 points for one edge and then a 3rd point for the width, followed by an extrusion value.

Snaps are available to make exact squares or a cube.

Sphere

Draw a solid sphere, from center and radius.

Click on the radius label with the small arrow to switch to diameter entry mode.

Cylinder

Draw a solid cylinder, from a base center point, radius, and height.

Click on the radius label with small arrow to switch to diameter entry mode.

Cone

Draw a solid cone, from a base center point, radius, and height.

Click on the radius label with small arrow to switch to diameter entry mode.

Text

Create text geometry.

First pick a base point - this will become the lower left corner of the text, and the grid of the viewport that you click in will be used to orient the text. For example, if you click the base point in the front view your text will be oriented flat to the front view so it will be pointing upwards in Z.

After your base point is defined, you can then edit various options such as the text and font. You can also change the Create option to create curves or just planar surfaces instead of extruded solids.

Some elaborate fonts may have crossing or intersecting outlines which may cause problems when MoI tries to distinguish solid areas from holes.

Edit

Join

Joins together curves into longer single curves, or joins surfaces along common edges into solids.

Surfaces will only be joined at common unattached edges. If you need to combine 2 objects that will require some kind of intersection and pieces removed during the combining process, then use the Boolean Union command instead.

Surface edges must be within 0.005 units from one another to be joined.

Separate

Breaks joined objects into individual separate objects. Curves will break up into individual segments; for example, a rectangle will convert into 4 separate line objects. A solid will break up into individual faces; for example, a box will separate out into 6 plane objects.

If a solid has face sub-objects selected, just those selected faces will be extracted from the solid. This allows for extracting just one particular sub-assembly from a larger solid.

Trim

Cuts up an object. Some portions may be removed to make holes, or optionally all sliced up pieces may be retained.

Trim works on curves, surfaces, or solids. The general procedure is to first select the object to be trimmed, and then run the Trim command. Next select the cutting objects, then select which pieces to discard. If you want to keep all the pieces instead of discarding any, then click Done (or right-click in a viewport) without selecting anything at that final stage.

Sometimes if you want to remove a lot of pieces, it can be easier to select the items you want to keep instead of the portions to discard. This can be controlled by switching the Mode: option to Mode: Keep.

When trimming curves, it is possible to add cuts to the curve at specific points by clicking the "Add trim points" button. For example, if you want to split a line at its midpoint, select the line, run Trim, click "Add trim points" and then click a point at the midpoint of the line and click Done. This will split the line at that point. It is also possible to trim a curve by selecting point objects as the cutting objects.

When trimming an individual surface, an "Isocurve" option will show up, which will allow you to pick one of the surface's own natural U/V directional lines as the cutting object.

It is not necessary to project curves on to surfaces before trimming. Trimming already includes projection built in, so just use the curve as a cutting object directly.

If 2 objects intersect one another and you want to cut each of them with the other, then select both of them, run Trim, and then click Done at the prompt for selecting cutting objects. This is called a "mutual trim" operation, it will use those objects as both sources and cutters.

Trim will slice just the outside surface skin of a solid. If you want to make cuts through an object where it stays as a solid, use the Boolean operations instead of Trim.

You can also use Trim on surface edges to split the edges into smaller separate segments. The Merge command can be used to reverse this and glue split edges into longer single edges.

Extend

Extend a curve to meet the selected boundary objects. The boundary objects can be curves, surfaces, or solids. Currently only curves are supported as the object to be extended.

Lines and curves will be extended by a straight line. Arcs will be extended as arcs.

Example for extending curves to a boundary:

It is also possible to extend 2 curves to meet each other instead of meeting a single boundary. This is called mutual extend, and can be activated by selecting both curves, running Extend, and then clicking Done instead of choosing a boundary object.

Example of mutual extend mode:

Show pts

Turns edit points on or off.

You can also use the Esc key to turn points off, see Shortcut keys for more information.

When a curve has control points turned on, an additional edit mode is enabled if you click and drag on the body of an unselected curve. This enables "drag point on curve" mode where the curve will be deformed to pass through the point you dragged on. This works by moving several nearby control points in one single action, so it can be useful for roughing out the shape of the curve.

Curves and individual surfaces can always have points turned on. Solids made up of surfaces joined together at common edges can only have points turned on if all the surfaces share the same points along the common edge. If 2 joined surfaces have different structures along a joined edge, points cannot be turned on for that object because it would be easy to pull the surfaces apart and ruin the shared edge. In this situation it is possible to use Edit/Separate to break the joined object into multiple independent surfaces and you can turn on points for the individual surfaces.

Add pt

Adds a new point to a curve, or a new row/column of points to a surface.

For curves you can make a point that will form a sharp corner when it is moved by checking the "Make corner point" option, or holding down Ctrl when clicking.

To add many points, enable the Repeat checkbox, or right-click to repeat the last command.

There are 2 different methods for adding curve points. If points for the curve are turned on and you click on the dashed hull between 2 existing points, a new point will be added with the same effect as if you had drawn the curve with that additional point. Other points will stay where they are currently located and the shape of the curve will change slightly.

The second mode for adding curve points is activated by clicking directly on a curve that does not have control points turned on - this will create a new point nearby the area you clicked, and existing points will shift slightly, but the shape of the curve will remain exactly the same as before.

For surfaces you add in an entire row of points in the U or V directions and you pick a point on the surface to indicate the area of refinement. The shape of the surface itself will remain the same and the existing control points near the refinement area will shift slightly.

Copy

Copies selected objects to the clipboard.

You can copy an edge of a solid to the clipboard, which will copy the curve of the edge. You can then use paste to create a copy of the edge as an independent curve object.

You can use copy/paste to move objects back and forth between MoI and Rhino. You should keep both MoI and Rhino open at the same time when doing this type of transfer.

It is also possible to use copy/paste between MoI and Adobe Illustrator and some other 2D illustration programs. MoI will recognize PDF or AI formats on the clipboard and be able paste those into MoI using the regular paste function. Use one of the following scripts on a shortcut key for going the other direction from MoI into Illustrator (it's not part of the regular copy function because it has its own set of controls with various options):
script: /* Copy AI format to clipboard */ moi.geometryDatabase.copyToClipboardAI();
script: /* Copy PDF format to clipboard */ moi.geometryDatabase.copyToClipboardPDF();

Copy with origin

Copies selected objects to the clipboard, with an additional step to define an origin point.

This is intended to be used in combination with the Paste part command which allows the pasted objects to be positioned and oriented to align to existing shapes. The origin point for the objects will be mapped to the target point picked during the paste.

This can be called either by right-clicking on the Copy button, or by the keyboard shortcut Ctrl+Shift+C.

Paste

Pastes in objects from the clipboard.

It is also possible to copy/paste objects between MoI and some other applications, see the Copy command above for some more information.

Paste part

Pastes in objects from the clipboard, with an additional step for adjusting the orientation of the pasted objects, for example to align them to be perpendicular to an existing surface.

This is intended to be used in combination with the Copy with origin command which allows specifying an origin point for the copied objects, but it can also be used with the regular Copy as well. When regular Copy is used, the origin will be either the world origin or the cplane's origin if a custom construction plane has been set.

For more information on how the orientation works, see Orientation picker.

This can be called either by right-clicking on the Paste button, or by the keyboard shortcut Ctrl+Shift+V

Hide

Hides or shows objects.

If objects are selected when you press Hide, those objects will be hidden.

If no objects are selected when you press Hide, all hidden objects will be shown.

There is also an Isolate function available by right-clicking on the Hide button. Isolate will keep just the selected objects visible and hide all unselected objects. When you run Isolate a second time, everything will be restored to its pre-Isolate state.

If you only want to show some of the hidden objects instead of all of them, that is possible by holding down the Ctrl key when clicking the Hide button to perform a "show subset" operation. When doing "show subset", all the hidden objects will be temporarily displayed so that you can select which of them you wish to display. Once you have finished selecting, click Done or right-click and the regular display will be restored and any objects you did not select will return to being hidden.

In addition to this button, you can also use the Scene browser to hide and show objects in batches by clicking on the eye icons for different object categories. A left click on an eye in the scene browser will switch it between hidden and visible and a right click on an eye will isolate just that item and hide everything else.

Lock

Locks or unlocks objects.

When objects are locked, it prevents them from being selected but keeps them visible in the scene for either a visual or snapping reference. Snapping to locked objects can be enabled or disabled by a checkbox under Options > Snaps > Object snap options > Snap to locked objects.

By default when objects are locked, they switch to a grayed out color. It's possible to disable the color switch or adjust the color used under Options > View > Locked objects use alternate color. Uncheck the checkbox to avoid color switching, or click the swatch to adjust the color.

The Lock button works the same as the Hide button next to it.

Left click on Lock with objects selected to lock all selected objects.

Left click on Lock with nothing selected to unlock all objects.

Right click on Lock to "Isolate" the current selection by locking everything else other than the current selection. Right click again later on to restore back to the pre-isolate state.

Ctrl+Left click to do an "Unlock subset" which will temporarily show all current locked objects and allow you to select just a few of them to unlock. Once you have finished selecting, click Done or right-click and the regular display will be restored and any objects you did not select will return to being locked.

In addition to this button, you can also use the Scene browser to lock and unlock objects in batches. Hold down the Ctrl key when clicking on an eye in the scene browser to switch it back and forth between locked and unlocked.

History

Enables or disables history updating on an object.

Some commands have history updates enabled by default. For example, the Loft command will update the lofted surface if you edit one of the original curves. If you want to stop that updating, you can select the lofted surface, run the History command and click "Disable update". After that the lofted surface will no longer update when you edit the original input curves. Also, some commands have history disabled by default such as Transform > Copy or Transform > Rotate. You can use History > Enable update to turn history updates on for the results of these commands.

View

Reset all

Applies a view reset to all viewports.

The first click will reset views to focus in on just the selected objects, and clicking a second time will switch to focusing on everything regardless of selection.

You can also reset all viewports by right-clicking the Reset button inside of an individual viewport.

Image

Allows placement and editing of reference image planes.

Click the Add button to create a new image plane.

After an image has been added, it will show up in the list of all images. An entry in the list can be selected to hide, show, or remove it. Pausing your mouse over top of one entry in the list will show the full path to that image.

The Align button allows you to do image registration of the selected image by picking 2 points on the image, then 2 points in the model. The image will be moved, rotated, and scaled to make the picked lines coincide.

The Properties button will pull up an image properies dialog which allows editing the path to the image if you have moved it somewhere else. Also the image can be reloaded from disk, and also an option can be enabled here to embed the image data directly inside of the 3DM model file. You can also right-click on an image's file name as a shortcut for pushing the properties button.

The following options are also available and affect all images:

Draw below objects - choosing this option draws images as a backdrop behind everything else.

Draw with objects - this option draws images mixed in as if they were regular objects.

Draw above objects - this option draws images on top of everything else as an overlay. This is intended to be used with transparency, it gives you a way to always see a faint image without objects blocking the way.

Show in all views - shows the image in all viewports.

Show in ortho only - only shows the image in the Top/Front/Right views, not in the 3D view.

Transparency - you can put in a percentage here from 0% (fully opaque with no transparency) to 100% (completely transparent).

Background images are editable while you are inside this command. Click and drag on an image to reposition it. Dragging on a corner frame widget allows scaling of the image, and dragging on the rotation widget allows rotating the image. A click and release on the rotation widget instead of click and drag enables a different rotation mode that shows a 3-wheel rotation gizmo. When that gizmo is enabled you can click and drag on any of the 3 wheels to rotate around any of the 3 axes - click off of a wheel to exit this mode. Undo can be used to undo edits of the background images while still inside the Image command.

CPlane

The CPlane (Construction Plane) tool allows the drawing plane and ortho views to be relocated to more easily work on objects that are not aligned to the world axis directions.

Note that you can also draw directly on surfaces by using object snaps (see Drawing on surfaces for more info), so it is not always necessary to set up a CPlane manually. But you can set one if there is no surface already available where you want to draw, or if you want more detailed control over the drawing grid.

The CPlane will be situated by an origin point and x/y/z axis locations which are specified using the Orientation picker, and which can be snapped on to a surface or curve in the model to provide a working environment local to that area.

After you have set a CPlane, when you want to return back to the default world planes, press the "Reset CPlane" button that shows up in the command options area after launching the CPlane tool. You can also right-click on the View > CPlane button as a shortcut for resetting back to world planes.

Some options are available to set before placing the CPlane origin point.

When the "Apply to all views" option is enabled, the CPlane will be global and used in all viewports. If "Apply to all views" is disabled, then the CPlane will only be applied to the 3D view and the Top/Front/Right views will remain using their regular world axis planes instead.

When setting a global CPlane, by default the Top/Front/Right views will shift to become plan views of the CPlane, for example the Top view will shift to be looking straight down at the CPlane's Z axis rather than looking down the world Z axis direction. Views that have been shifted in this way will have an additional (cplane) label displayed in their titles. This view direction shift can be disabled by unchecking the "Orient ortho views" option.

Setting a global CPlane will also affect x,y,z coordinate point entry, with the coordinates evaluated in the CPlane's coordinate system instead of in world coordinates. For example typing in 0,0,0 will place a point at the CPlane's origin instead of the world origin. You can prefix typed in points with a w (for example w5,2,1) to enter in a world coordinate point instead when a CPlane is active. The x,y,z point coordinate readout in the bottom toolbar will also show the location of the mouse in CPlane coordinates instead, with a "c" being displayed in front of them to indicate they are CPlane coordinates and not world coordinates.

Display hidden lines

Enables or disables the hidden line display. When enabled, curves and edges that would normally be hidden are instead drawn in a faint dashed line style and also can be targeted for selection.

Select

Sel all

Selects all objects that are not hidden.

If sub-objects are selected, the selection will be limited to other sub-objects. For example, if you have an edge of a solid selected, this will select all edges of that solid and not other objects.

Desel all

Deselects all objects

You can also use the Esc key to deselect objects, see Shortcut keys for more information.

Invert

Inverts the selection - selected objects will become unselected and unselected objects will become selected.

If sub-objects are selected, the changes will be limited to other sub-objects. For example, if you have an edge selected, this will invert the selection of all edges of that solid and not other objects.

Construct

Boolean

Diff

Cut an object by subtracting another object from it.

Select the objects to be cut first, then run Boolean Difference and select the cutting objects.

Different kinds of objects can interact with each other. For example, a solid can be cut by another solid, surface, or a 2D curve. It is also possible to cut a 2D curve using another 2D curve.

The Boolean can be limited to only cut specific faces of a solid by making a face sub-object selection before doing the boolean rather than selecting entire objects.

Example of Boolean difference between solids:

It is also possible to difference a solid by a 2D curve directly, creating a solid as the final result. It is not necessary to extrude 2D cutting shapes into solids if you want to cut all the way through. Here is an example of a solid being differenced by a set of 2D curves:

Another example of solid/curve Booleans - here the solid is being cut by line segments, resulting in smaller sliced pieces each of which is a solid (result shown slightly separated here for illustration):

It is also possible to difference a solid with an open non-solid surface. This will slice the solid into multiple pieces. Select and delete any pieces you don't want to keep (result shown slightly separated for illustration):

Boolean difference also works between curves that are all on one common plane. Closed curves can also have other closed curves nested inside of them to form hollow 2D regions:

Union

Fuse objects together where they intersect.

Solids can be unioned with other solids or surfaces, and 2D curves can be unioned with other 2D curves.

The Boolean can be limited to only intersect with specific faces of a solid and ignore others by making a face sub-object selection before doing the boolean rather than selecting entire objects. This can be useful to union just to one side of a thin walled object.

Here's an example of unioning 2 solids - at the start there are 2 different box objects. The skinny box is positioned so that it punches through the wider box. After selecting them and running Boolean Union, the boxes are combined into one object. New edges are formed where the boxes intersected each other, and portions of each box that were inside each other have been discarded to make one single connected volume.

Curves that are all on the same plane can be combined in a similar way:

An example of subset booleans, where the boolean is limited to a specific area by face selections. Here are 2 solids pushing through each other:
If only the outer face sub-object of the other object is selected instead of the whole object, as shown here:
Then when doing a Boolean Union, only the outside face will get intersected and the unselected faces along the interior will be temporarily ignored, producing this type of result:
This can be useful for combining objects on only side of a thin walled object.

Isect

Combine objects together, only keeping areas contained by all objects.

Objects to be intersected are treated as 2 different sets. Select one set, run Boolean Intersection, then select the other set.

Solids can be intersected with other solids, surfaces, or curves, and 2D curves can be intersected with each other. 2D curves that are all on a single plane will generate a curve result, or 2D curve profiles on different planes can be combined to generate a solid result.

Example of solid/solid intersection:

Here is an example of intersection between a solid and a 2D curve. The area inside the curve will be kept. In a sense this is the opposite of Boolean difference, which would instead drill a star shaped hole through the sphere.

Boolean Intersection can also be useful for creating a quick blocky 3D model that is the combination of 2 2D profiles arranged 90 degrees to each other. For example, here 2 curves are intersected to create a basic blocky car shape. History is available for this type of intersection, so you can adjust the curves and watch the 3D result update.

Another example of combining 2D profiles - final stage shown after using Fillet to round the sharp edges:

Boolean Intersection can also be used on curves that are all in the same plane to create a curve result:

Another curve intersection example:

Merge

Combines objects together and extracts all volumes.

Boolean Difference, Union, or Intersection all discard certain pieces. Boolean Merge cuts up objects in a similar way as those other commands except it keeps all the solid pieces. Merge can be used on solids, surfaces, or curves in different combinations.

Here is an example of Boolean Merge between 2 solids (pieces have been separated for illustration):

2D curves can be Merged onto a solid to cut the solid by an imprint of the curve, leaving all pieces:

Boolean Merge can also be used to extract a common solid volume from a set of intersecting surfaces:

Merge can also be used on curves in the same plane:

Fillet

Fillet

Fillet is used to round off sharp corners.

Fillet will apply the rounding in different ways depending on what is selected.

Selecting an entire solid object will fillet all edges of the solid.

Selecting edges of a solid will fillet just those edges.

Selecting faces of a solid will fillet all the edges that belong to those faces.

Selecting 2 individual surfaces will perform a surface/surface fillet operation, instead of an edge-based one.

Selecting 2 curves will create a fillet between them, extending or trimming them if necessary.

Selecting a single curve that has corners in it (for example, a rectangle curve) will allow filleting of some or all of those corners.

Some examples of filleting:

At the "Pick fillet radius" prompt, you can either click 2 points to define the radius as the distance between those 2 points or enter a radius value directly. If you want to type in a value, it is not necessary to click in the Radius edit box first, you can just start typing and keystrokes will go there.

The Shape: option controls whether the fillet will be shaped as an exact arc or as a more organic blend type shape. The blend options show a slider that can be used to adjust the amount of bulge.

The Straight corners option controls whether rounded corners will be placed where fillets meet, or whether the fillets will be extended to intersect each other directly:

Enabling straight corners will cause failures in some situations where the fillets do not directly intersect each other when they are extended. Here is an example that won't work, notice the hole that would be created if this were attempted to be filleted with straight corners. The final step shows how a corner patch is needed in this case to connect the pieces together:

Fillets tend to be a complex area of calculation, and places that have small slivery surfaces or a lot of edges coming together at one shared point will tend to increase the chances that the fillets will fail to calculate. Trying to build things using broader surfaces and with more simple corner structures can help.

Also one common cause for fillets failing to calculate is asking for too large of a radius than will fit inside the model. Try starting with a small value such as 0.1 and gradually increasing it. Often times it is surprising how much space a fillet of a seemingly small radius like 1 or 2 will occupy in a model, especially if the model has any thin or concave type areas.

Areas with tight bends in them can also limit the maximum possible fillet size. Here is an example to demonstrate - imagine that the bent curve corresponds to a tightly curved area of a model, and the line represents a fillet radius that is larger than the size of the bend. As the filleter travels along the curve, it will try to maintain this distance, but you can see how this will cause a pinched and bunched up area around the tight bend where the lines are not cleanly separated and intersect with each other. The same kind of self-intersecting and bunching would happen to a fillet surface that tried to maintain a large radius as it goes through a tight bend. If you want to place larger fillets on your model you usually need to avoid making very tightly bent areas like this:

Normally fillets on a solid are applied to edges of the model. An alternative filleting mechanism is available by selecting 2 individual unjoined surfaces and running Fillet (you can use Edit/Separate to break a joined model up into individual separate surfaces). This style of surface/surface fillet is created by processing just the 2 surfaces instead of making the fillet try to follow edges, so it can succeed in places where the edge-based fillet will fail. This can sometimes be used to create fillets one piece at a time in difficult areas. The tradeoff is that these fillets will tend to require more manual trimming where pieces meet up while the edge-based filleting automatically trims and handles corner areas.

A variable radius fillet can be performed where the fillet radius changes at certain spots along the edges like this:

You can use variable radius fillets by expanding the "Fillet set" section in the fillet options, and adding in a new point set by picking points on the edges. Once you have defined a point set, the next radius you enter will control the radius just at those points. You can click on the "Current set" line to pop up a menu to control which set is currently active and being manipulated by the Radius control, and also to delete prior point sets. There is a demonstration video for variable radius fillets here: Variable radius demo on YouTube.

Chamfer

Chamfer is used to chop off sharp corners with a small flat piece.

It is very similar to Fillet, but instead of placing a rounded area it places a facet.

Examples of chamfering:

Chamfer also has the option of specifying 2 different distances to control the slope of the facet. If faces were selected to chamfer, those selected faces will have distance 1 associated with them, with distance 2 applied to the adjacent unselected faces. If edges instead of faces are selected to chamfer, the edges are examined to see if they have a face in common and if they do that common face will use distance 1, with distance 2 applied to the adjacent faces. Here is an example - the top face is selected and a chamfer is then applied using distances of 1 and 3:

Offset

Offset

Create a new object at a constant distance away from an existing one.

Offset can be used on solids, surfaces, or curves.

Examples of Offset:

Offset tends to be used more often on curves, with the Shell command being used instead more frequently on solids or surfaces.

For curve offsets, Through Pt mode will let you pick a point and calculate the offset that passes through that point. Distance mode allows entering a specific offset distance and then you pick which side of the curve to offset towards by clicking with the mouse.

Offset for surfaces or solids allows you to either pick 2 points to define the offset by the distance between the points, or enter a specific distance.

Shell

Modify a solid or surface to have a wall or slab thickness.

If an entire solid is selected, the result will be an object with a hollow cavity inside of it. If faces of a solid are selected (which is the more typical way to use it), openings will be created along those faces with the thickness applied to the unselected faces. If an individual surface is selected, it will be thickened into a slab-like solid.

At the "Pick thickness" prompt, 2 points can be clicked and the distance between them used as the thickness, or an exact thickness can be entered numerically. The Direction option controls which side the thickness will be added to, with Centerline placing half of the distance in either direction.

Usually it is best to shell either a completely closed solid, or a single surface. Trying to shell objects made up of several joined surfaces that do not form a closed solid can tend to fail. It is difficult for MoI to create corners that match up with one another in that situation. Try to create a fully completed solid to shell instead to have a better chance at success.

Surfaces with tight bends or twists in them can cause problems in shelling, especially if the radius of the bend is tighter than the shell thickness.

Examples of shelling:

Inset

Generates either a depressed or raised panel that follows the outline of faces.

The Inset command takes a selection of face sub-objects for its input.

Examples of inset:

The thickness distance sets the border size of how far the panel shrinks in from the border, and also how far it protrudes as well. The protrusion amount can be adjusted separately if you want by the "Use separate height" option. You can set the thickness either by typing a value or by clicking 2 points inside of a viewport which will take the distance between those points as the thickness.

The Direction option sets whether the protrusion goes towards the inside of the object, or towards the outside. The first example here has Direction = Inwards, the second has Direction = Outwards:

When Direction is set to "Outwards" an additional "Expand" checkbox will appear which can be set to make the panel outline grow in size rather than shrink. This makes a kind of hat placing effect:

The "Grooved" option can be checked which will enable an additional Groove width that can be set to produce results like this (first one with Direction = Inwards, second one with Direction = Outwards):

If you set the "Grooved" option but do not enter a groove width or set groove width = 0, that will cause an interior plug part to be generated as a separate object from the main one.

Planar

Create a planar surface from outline curves, or fill in end caps on planar openings on surface edges.

Curves that form a closed loop will be turned into a trimmed planar surface. It is possible to have nested outlines to form holes. Planar will join curves together during its processing, it is not necessary to run join before it as a separate step.

For surfaces, unattached edges will be examined, and if they form a closed planar loop a trimmed plane will be created and joined together there.

Examples of creating planar surfaces:

Extrude

Creates a solid or surface by tracing an outline along a direction.

Extrude works on selected curves or faces. Closed curves may contain other closed curves inside them to form holes in the final result. If the automatic assigned direction is not what you want, you can click the "Set dir" button and click 2 points to define a specific extrusion direction.

Example of extrusion:

Extrude also has a "Set path" option which enables you to pick a path curve to be used as the extrusion shape instead of the regular straight line path. The outline and the path curve are combined together to make the output shape. This is different than sweep since sweep rotates the profile staying perpendicular along the path while Extrude will not rotate it. Extrude with Set path has the special property that the output surface will have the exact same control point structure as the curves used to generate it, so sometimes this can be useful if you want to set up a surface and manipulate the surface's control points to deform it.

An example of Extrude with a path:

Other options for Extrude include extrude to point which can be useful for making pyramid or cone-like objects:
For extrude to point, initially the point will track along the same vertical line through the shape's centroid that the regular extrude also tracks along. If you want to pick a point away from that line for the tip you can push the "Unlock direction" button which will then allow you to place the top point anywhere.
The "Tapered" option allows you to produce an extrusion with a draft angle applied to make the side walls at a specific angled slope. You can also have interior outlines which will flare in the opposite direction. The height of the tapered extrusion will generally be limited to be less than whatever amount would cause different sides of the profiles to collide into one another:

If you select a face sub-object of a solid as the input for extrude, the result of the extrusion will get automatically booleaned with the base object, allowing for a "push/pull" type action on solids. Extruding the face in an outward direction makes a Boolean Union of the results, while going inwards does a Boolean Difference. See here for an animated example of face extrusions with auto booleans: Face extrusion forum post.

Revolve

Revolve

Creates a solid or a surface by tracing an outline as it pivots around an axis.

Two points are picked as the revolve axis, which acts as a kind of hinge that rotates the outline around it. If you want to alter the angle of revolution, change the option for it before you finish picking the points for the revolve axis.

Examples of revolution:

Rail revolve

Creates a solid or surface similar to revolve, but an additional path curve is specified.

In a simple revolve, the profile sweeps a uniform circular path around the axis. In rail revolve, you can supply a custom path instead of the regular circular path. The resulting surface will be scaled from the axis to conform to the custom path.

Some examples of rail revolve:

Loft

Creates a solid or surface passing through cross-section profile curves.

Examples of lofting:

The option for Loft Style can be adjusted. The "Normal" style creates a loft that passes through the profile sections. "Loose" creates a surface that is guided by the profiles but not forced to go exactly through each one, this can help to create a more relaxed and smooth surface if you are having problems with wiggly output. The "Straight" style creates straight sections in between each profile instead of making a smooth surface through all the profiles.

MoI automatically aligns the profiles together to minimize twist, but this can be adjusted. At the Loft options prompt, you can click on any profile to reverse the direction of the profile, and on closed profiles a point will appear that can be dragged to edit the connecting seam point.

Part of the process of lofting is combining the multiple profiles together into one common structure to make a single surface. The Profiles option controls how this combining is done. The "Exact" option combines the curve structures by inserting all the points for every curve together. This preserves the shape of each profile, but can result in a very complex surface with too many points if each curve had different point structures. The "Refit" option reconstructs each curve to a common structure. This results in a less complex final result, but can sometimes introduce wiggle artifacts in the reconstructed curve. The default "Auto" option tries to do Exact mode, but switches to Refit mode if Exact mode generates too complex of a result. Finally, the "# Points" mode is another style of rebuilding that samples a uniform number of points along the curve for the reconstructed curves. You can choose how many points are used. This mode results in very smooth output, but small details in the profiles tend to be lost.

It's possible for a point object (created under Draw curve > More > Point) to be selected for the start and/or end profile section of a loft. This can work well with Loft Style = "Loose" mode for generating an organic shape with a smoothly closed tip. Put the ending point object in the same plane as the last planar profile curve with Loft Style = "Loose" for results like these examples:

Sweep

Creates a solid or surface passing through cross-section profiles, guided by one or two rail path curves.

Select the profiles first, then run Sweep and select the rails next.

Sweep has different options and behavior depending on whether you use one or two rails. Selecting 3 or more rails will be treated as a batch operation performing a one-rail sweep along each rail.

One rail sweep:

Sweep using one rail will trace the profiles as they move along the rail, staying perpendicular to the rail as they slide along it. It is the main tool for making tubular type shapes. Profiles may be either placed directly along the rail, or you may place the profiles all flat on a plane away from the rail and MoI will automatically move and rotate the profiles into place along the rail for you. To enable auto-place mode make sure the profiles are positioned outside of the bounding box around the rail curve. Multiple profiles may be used in auto-place mode by placing the profiles in a left to right order.

Example of sweep with one rail:

If the rail has sharp corners in it, and there is only one profile curve, the resulting sweep will be mitered at the corner areas:

You can use the Ends: option to make a one-rail sweep collapse to a single point at the start or end to make a tentacle type shape.

By default, a one-rail sweep will gradually rotate the profile as it travels along the rail curve. This works well for paths that loop all over in 3D, but you can change the Twist: option to Twist:Flat to only allow rotations in the world Z axis direction, which keeps the profiles stabilized with respect to the ground x/y plane. When Twist:Flat is set, an additional "Set flat direction" button will show up in the command options, which you can push to pick 2 points to define which direction to use instead of the default Z axis direction. Twist:Freeform is the default since it works on any shape of path, while Flat does not work on paths that have a tangent in them that goes straight upwards in Z. In this example the second image has Freeform twist, and the last one has Flat twist:

The scaling rail option allows you to pick an additional rail curve which will deform the sweep. The profiles from the original sweep will be scaled up to match up with the scaling rail. In a sense it provides a way to control the length-wise profile of the sweep. When a scaling rail is active, the "Maintain height" option can be used to control whether the scaling will be applied only in one direction towards the rail resulting in a kind of stretching effect, or whether the profile will be scaled in all directions uniformly. A scaling rail allows you to further refine the shape of the sweep using just one curve that can be more easily controlled than using a large number of cross-sections. The scaling rail should cover the full extent of the sweep, with each profile being able to extend perpendicular to touch it. An example of using a scaling rail, shown first with the regular sweep then with the scaling rail active:

Two rail sweep:

Sweep with two rails traces one or more profiles as they slide along 2 guide rails on either side of the profiles. The profiles can either be positioned directly on the rails, or same as one-rail sweep the profiles can also be positioned flat on a plane away from the rails (outside the bounding box around the rails), and they will be automatically positioned. An example of two rail sweep:

When the "Maintain height" option is enabled, the profiles will stretch just in one direction to fit between the rails. When it is disabled, the profiles will scale in all directions uniformly when they are fit between the rails.

The scaling rail option works similar to one-rail sweep, it allows you to pick an additional rail curve to stretch the profiles up to. In this case the scaling rail should generally run down the middle between the 2 rails. An example of two-rail sweep with a scaling rail:

The Maintain tangent option can be used in certain situations to make a sweep that will mirror without a crease. Consider this sweep and the result after mirroring it:
The reason for the creasing is that the different shaped rails cause some twisting of the profile shape as it slides along them at slightly different distances. Preserve tangent mode can be activated in situations like this to prevent this kind of twisting. To enable preserve tangent mode, all the profiles must share a common tangent direction along one rail, and they all must be parallel planar shapes. This mode slides the profiles along keeping them in the same plane. Here is the previous example swept with Preserve tangent active and then mirrored:

Both one-rail and two-rail sweep also combine profiles together into one common structure similar to Loft. See Loft above for details on the Profiles option.

Blend

Creates a new piece that makes a smooth connection in the empty space between 2 existing pieces.

Blend can be used on either curves or surfaces. To use it on curves, select near the ends of the 2 curves you want to blend between. To use it on surfaces, select a sequence of unattached surface edges on either side of the blend area. Note that if you have independent curve objects overlapping your surface edges (for instance some of the original curves used to build the surface), it is easy for those curve objects to get selected when you click instead of selecting the edge of the surface. It may be necessary to delete or hide these original curves so that the edge of the surface object can be selected instead, that is an easy problem to run into when using Blend.

Blend is used when objects are not touching but you wish to connect them together. If they are already touching, then use Fillet instead - Fillet will trim back areas to make space for the radius that you request, unlike Blend.

For surface blending, the edges are connected by distance traveled along the rail. If that results in some amount of skew, you can use the "Add sync points" option to pick specific locations for where the rails should be connected together.

For surface blending, by default each side of the blend will come off perpendicular from the edge curve. Around tight bends that can cause bunching where the blend sections run over top of each other. The "Planar sections" option enables a different mode for the blend cross-section behavior where each cross-section goes on a plane which can help reduce this type of bunching. See here for some more information on the Planar sections option: Planar sections forum post.

Some examples of blending:

NSided

Creates a radial set of surfaces to fill in a hole bounded by open edges.

NSided takes an input of at least 3 surface edges that touch end-to-end to form a closed loop. Make sure edges are selected, not curve objects. A star-like pattern of surfaces will be calculated to fill in the loop around a central point. Surface density and a bulge factor can be adjusted in options.

NSided examples:

Network

Creates a surface from a 2-directional network of curves.

To create a network surface, select all the curves that make up the network before running the command.

The curves that make up the network should form a kind of 2-directional grid, similar to a fishing net. A network surface is sort of like doing a loft in 2 directions simultaneously. MoI needs to be able to organize the curves into 2 different sets for this command to work. It is not necessary for the curves to exactly intersect, but they should come close to each other since that helps MoI detect the organization and separate them into 2 different sets. The network can be closed in either direction and can also come to a point.

You can also use Network to create a surface from 3 or 4 curves that touch end to end in a loop, sometimes this is referred to as a "Coons patch".

The "Mode" option can be adjusted to modify the fitting behavior. You can use one of the other modes than "Normal" if you want to output a less constrained and lighter surface at the expense of it not hugging as tightly to the boundary curves.
Mode = "Normal" fits the boundary curves by the regular fitting tolerance. This makes the resulting surface hug the shape of the boundary curves accurately enough so that it can be joined to other surfaces built off of those same curves.
Mode = "Lighter" makes the surface fit to a looser tolerance, making a lighter surface but that adheres less to the boundary curves.
Mode = "Custom" - allows you to enter in a numeric tolerance value of your own choosing.
Mode = "Uniform" - allows you to enter in a number of points - each section of the Network is fit with that fixed number of control points per region rather than refining things adaptively to meet a distance tolerance like the other modes.
Mode = "Exact" - enabled for 3 or 4 sided networks only. This mode makes a Coons path with no refitting of the input curves. The surface's edges will exactly coincide with the input curves but if the curves have uneven parameterization the surface can tend to be awkwardly bunched in places.

Some examples of network surface:

Curve

Project

Projects a curve on to a surface or solid.

First select the curve, then run Project and then select the surface or solids that will receive the curve. A default direction will be used, and you can pick 2 points to define a different projection direction.

Example of curve projection:

Isect

Creates curves or points at intersections between objects.

Select all the objects to be intersected before running the command.

Curves will be created at the intersections between 2 surfaces or solids, and points will be created at the intersections between a curve and other objects.

Unlike the Booleans, this does not modify the objects, it just creates new curve or point objects.

This command can also be used to create a "curve from 2 views" when the inputs are 2 planar profile curves facing different directions. This is the equivalent of doing an extrusion of each curve and intersecting the extruded surfaces.

So for example with these 2 curves one of which was drawn in the Top view and one in the Front view:

You can select both of those curves, and run Construct / Curve / Isect to generate this result curve:

Silhou

Creates silhouette curves that give the profile of a curved surface from a particular view.

This can be useful to run before exporting to AI format - set up your view how you want it, then run Silhouette to generate the outline curves, then immediately export all of that to AI format. Make sure not to rotate or zoom your view in between generating the silhouettes and exporting because the silhouettes are tied to a particular viewpoint when they are done in the 3D view.

The "Include edges" option controls whether to include trim edges that are silhouettes (for example the edges on a box) in the results in addition to curved surface silhouette calculations.

For example given this model:

Running Silhouette on it will generate these result curves:

Iso

Creates an Isocurve going through a point on a surface. An Isocurve is a curve on a surface that runs along the surface's own U or V directions. They can be convenient for some operations since they follow the natural rectangular layout of a surface.

On several types of primitives isocurves will be key features of the object like for example on a sphere one isocurve direction will be a circle of latitude on the sphere and the other direction will be an arc of longitude on it.

Example of Isocurves:

Transform

Move

Moves objects by the displacement between 2 points.

Generally most object movement is done by directly dragging on an object while not inside of any command, instead of using this command. However, the Move command is provided so that it is possible to do precision movement using any 2 snapped points. Here is an example of moving a circle so it is centered about the origin. This is done by snapping the base point to the center of the circle and the target point to the origin.

This would be more difficult to do with the quick dragging method since dragging is activated by clicking directly on the object, so it is not possible to grab the center point of a circle as the base point when dragging.

When picking the target point the "Distance from edge" option can be clicked and a distance specified, which will then place the target point at that distance away from any line that is snapped on to.

You can click the "Bounding box center" button at the first prompt to use the center of the object's bounding box as the base point.

Copy

Create copies of an object, placed at specific points.

Copy works similar to Move, but allows you to click multiple target points and drops a copy of the objects at each one.

Use Edit/Copy and Edit/Paste instead if you want to create a duplicate of an object in its exact same location.

Rotate

Rotate

Rotates objects around a center point.

To rotate objects, first select the objects and then run the Rotate command. Next pick a center point for the rotation. After you have picked the center of rotation you can then either type in a number for the angle to rotate by, or you can use the mouse to pick an angle. To use the mouse you pick 2 additional points that act as arms or handles coming out from the center point. The angle between these 2 arms will be the angle of rotation. The angle is specified using these 2 clicks so that it is possible to snap on to existing objects to calculate a precise rotation.

Example of rotating a rectangle 90 degrees using the mouse:

After selecting the rectangle and running Rotate, pick the center point for the rotation, in this case the center of the rectangle:

Next, the first angle reference point is placed off to the right snapped to the x axis. This sets the starting point for the angle:

Finally, the second angle reference point is placed off to the top snapped on to the y axis. This sets the ending point for the angle. The object will rotate by the angle between the 2 reference lines:

Here's an example showing how the points can be snapped to calculate a precise rotation relative to existing objects, in this case snapping on to the corners of the rectangle, with the center of rotation off to the left side:

You can check the "Make copies" button or hold down the Ctrl key when clicking the last point to drop rotated copies of the object.

Rotate Axis

Rotates objects around an axis line.

The regular Rotate command operates in a 2D fashion relative to the grid. Rotate axis allows you to pick 2 points to define an axis line to rotate around. It can be used to rotate around an arbitrary direction that is not aligned with any grid.

The operation is similar to 2D rotate, except instead of a center point you pick 2 points to make an axis line. Then you can enter a numeric angle to rotate by, or use the mouse in the same way as 2D rotate, with 2 reference arms tracking out from the first point of the axis.

An example of rotating a polygon up 30 degrees from the x/y plane around one of its own edges:

After selecting the polygon and running Rotate Axis, the first axis point is picked at one corner of the polygon:

The second axis point is picked at the other end of the polygon's edge:

Then 30 was entered for the angle, resulting in the polygon rotating up from the x/y plane by 30 degrees:

The rotation axis works as kind of a hinge and the objects pivot around that hinge.

You can check the "Make copies" button or hold down the Ctrl key when clicking the last point to drop rotated copies of the object.

Scale

Scale

Scales objects around a center point.

This type of scaling is sometimes called a "Uniform" or "3D" scale since it scales equally in all axis directions.

To scale objects, first select the objects then run the Scale command. Next pick an origin point for the scale. This will be the fixed point which the objects will scale around. After you have picked the origin for the scale you can then either type in a number for the scale factor, or you can use the mouse to pick a scale factor.

When entering in a number for the scale factor, 1 represents no scaling. So for example:
2 will double the size of the object,
0.5 will shrink the object to one-half the original size,
10 will increase size by 10 times,
0.1 will shrink the object to one-tenth the original size,
etc...

You can set the scale factor using the mouse by picking 2 additional reference points. The relative distances of these points from the scale origin determines the scale factor. For example, if the second point is twice as far away from the origin as the first point, the scale factor will be 2.0 .

Example of scaling a rectangle using the mouse to set the scale factor:

After selecting the rectangle and running Scale, pick the center point for the scale, in this case the corner of the rectangle:

Next pick the first reference point. In a certain sense this point will calibrate the scale and set the distance that will correspond to a scale factor of 1. In this case the opposite corner of the rectangle was picked. Often times the first reference point may be snapped on to the perimeter of the object away from the scale origin:

Then the final reference point determines the scale factor, comparing its distance with the first distance. If you move the second reference point further away from the scale origin than the first reference point, the object will become larger:

If you move the second reference point closer to the scale origin than the first reference point, the object will become smaller:

Scale works with reference points in this way to make it possible to snap points on to strategic areas to calculate scaling measured to existing objects. For example, say you want to scale up a rectangle by just the exact right amount so that it would touch an object above it. This is possible by careful picking of the reference points to measure the existing distance, and then the desired new distance. The proper scale factor for converting the existing distance into the desired distance will be calculated and applied to scale the object:

You can check the "Make copies" button or hold down the Ctrl key when clicking the last point to drop scaled copies of the object.

Scale 2D

Scales objects around a center point, stretching them just in 2 axis directions.

Scale 2D works similar to Scale except the scaling is not applied in all directions, it is only applied in one 2D plane. The plane used depends on which viewport the origin point is picked in, so you will get a different effect if you pick in the Top view versus the Front view for example. The directions used correspond to the x and y axes of the viewport's grid.

See regular Scale for details on how the reference points work.

Example of scaling a cylinder with Scale 2D. The cylinder is widened in the x/y plane, but its height remains fixed:

Scale 1D

Scales objects along a single direction.

Scale 1D is similar to scale, except the scaling is only applied in one direction. The direction is defined by the line between the origin and the first reference point.

See regular Scale for details on how the reference points work.

Example of scaling a circle into an ellipse along a diagonal:

Scale 1D can be used to stretch or compress an object to a new height while leaving its shape unchanged in X and Y. For example, here a piece is stretched in z by picking the scale origin at the bottom of the piece, the first reference at the top of the piece directly above scale origin (this forms a line going along the z axis which will be used as the scaling direction), and then the final reference point at the new height above it.

In the previous example, picking the final point lower than the first reference point would result in the piece squishing down to be shorter instead.

Mirror

Creates a mirrored copy of an object around a dividing line.

To mirror an object, select it then run the Mirror command. Next 2 points are picked to define the axis that the object will be reflected around.

The new mirrored object has history updates enabled by default so the mirrored version will update when you edit the original.

Array

Grid

Duplicates objects in a rectangular or cube layout.

To create a grid of duplicated objects, select the objects to duplicate and run the Array Grid command. At the "Choose number of copies" prompt, enter the number of elements to use for the grid in x, y, and z and click Done. Then the final stage is for entering the spacing that will be used between each element of the grid. This can either be typed in, or you can draw a rectangle or box around one element to define it.

Here is an example of drawing the spacing with the mouse and the result (result shown zoomed out):

Dir

Duplicates objects along one direction.

To create a duplicated column of objects, select the objects to duplicate and run the Array Dir command.

The Mode: option controls the spacing behavior.

With "Mode: Offset, Count", the "Item count" option controls how many copies will be made, and you pick 2 points to define both the direction and the spacing between the copies.

With "Mode: Extent, Count", you also give an item count and 2 points, but the distance between the points is taken as the full extent, with the offset distance between copies being calculated as a distribution to fit inside of that.

With "Mode: Offset, Extent", you instead pick 2 distances and the item count is calculated for you and displayed in the options panel. Either start with the small distance as the offset, and then move your mouse further for the second distance to create as many copies as will fit within that longer distance, or start with the long distance first and move your mouse closer to the base point to reduce the offset and generate more copies within that extent.

Example of Array Dir with Mode: Offset, Count. In this case a 5-sided polygon is being duplicated. The first point was placed in the lower-left corner, and the second point was placed in the opposite corner as indicated. The distance and direction between these 2 points defines the placement of the duplicates:

Circular

Duplicates objects in a circular pattern around a center point.

To duplicate objects in a circular pattern, select the objects to duplicate and run the Array Circular command. Next, pick the center point for the pattern, and finally different options for item count and angle can be adjusted.

You can click on the "Angle to fill" label with the small arrow on it to switch between specifying the angle for the full pattern, or the angle for just one single step.

The vertical and radial step options allow you to specify a distance to move each item for every step in the pattern. Vertical controls up and down movement, and radial controls movement away from or in towards the center point. This can be used to create spiral type patterns. Here is an example that used an Item count of 50, Angle to fill of 900 degrees, Vertical step of 1 to move upwards one unit for each step, and Radial step of -0.3, to slide a small distance in towards the center on every step:

Curve

Duplicates objects along a path curve.

To duplicate objects along a path curve, select the objects to duplicate, then run the Array Curve command. Next, select the path curve. Finally, you can adjust options for spacing and rotation and click Done when you are finished.

You can enter either the number of items you want to have along the path, or the distance between items. If you enter in a total number of items, the distance will be calculated for you. If you enter in a distance, the number of items that fit along the path using that distance will be calculated for you.

There are different options for controlling the orientation of the objects as they travel along the path.

Rotation:Freeform calculates a change in orientation by doing a gradual rotation around the curve tangent. This means that there isn't any abrupt change at any one point, but the orientation will be constantly changing and in some cases can end up upside-down.

Rotation:Flat will only do rotations about the world Z axis. It will swing the object around the z axis to point it as much as possible in the tangent direction of the curve, but it will always stay pointing upwards, giving it a kind of stabilizing effect with regard to the z axis. This can work well for simple path curves, but it doesn't work well if the path curve slopes upwards very sharply with any parts tangent or nearly tangent to the z axis.

Rotation:None performs no orientation of the object at all and just moves it along the path curve.

Example of duplicating along a path curve. In this case the object to be duplicated is a box and the path curve is a circle that has been edited to have a wavy shape:

Rotation:Freeform produces this result:

Rotation:Flat produces this:

Rotation:None produces this:

Align

Lines up control points or objects along a straight edge.

To align objects, select the objects or points to modify and run the Align command. You can then adjust the options for performing either a vertical or horizontal alignment and how objects will stack up against the alignment edge (like along the tops or bottoms of the objects or through the center, etc...). To finish the alignment, pick a point to define the location of the alignment edge.

When multiple objects are selected for the align, a "Move as group" checkbox option will appear. When enabled it causes the objects to move as an entire set to their overall combined bounding box rather than each one moving individually.

Example of using align to center objects along a horizontal edge through the center of a rectangle:

Another use for Align is to adjust the 2 control points at the end of a curve to be exactly horizontal or vertical with each other. The 2 points at the end of a curve control the ending tangent direction of the curve, and if the end tangent is lined up it will allow for mirroring the curve without any sharp crease between the mirrored copies.

An example of aligning control points in preparation for mirroring around the vertical axis. This curve had points turned on by Edit/Show pts. The points are not aligned horizontally - if this curve is mirrored now there will be a sharp corner between the mirrored copies. To fix this, select the 2 points:

Next, set the alignment option for "Horizontal center", and then pick the point to define the alignment edge, in this case picking the end point will define the alignment edge through the end point:

This results in the 2 points being lined up with one another and now the curve can be mirrored without a sharp crease forming:

Orient

Orient

Positions and rotates objects from a base frame to a target frame, with a focus on positioning objects relative to one another.

Orient can be used to match a planar face on one object to coincide with another plane on a different object, or to map an object to a surface normal on a curved surface.

Here is an example where a cylinder is being reoriented to match the side of a pyramid:

To use Orient you pick a base orientation, and then a target orientation, and the selected objects will be mapped from the base to the target. In the example above, the base orientation was picked at the center of the cylinder's cap and the target orientation was picked on the sloped pyramid side.

Each orientation pick consists of 2 steps. The first step is to place the origin point. If the origin point is snapped on to an object the x/y/z axis directions will be initialized to be aligned to that object, unless you disable the "Align to objects" option. After the origin point is placed, the second step is to optionally adjust the axis directions by dragging on an axis line to alter where it points towards. Press the "Done" button or right click in a viewport when the axis directions are configured how you want.

For simple placements where you don't need to adjust the rotation you will do 4 clicks total: 1 click to pick the base origin point, 1 right-click to accept the default rotation, 1 click to pick the target origin point, and 1 more right-click to accept the default target rotation.

Also see Orientation picker for some more details.

You can enable the "Make copies" option or hold down the Ctrl key when clicking the target origin point to drop copies of the selected objects and keep the original in place.

Line/Line

Transforms objects from a base line to a target line.

First 2 points are picked to define the base line, often times these points will be snapped on to the ends of a curve that is being transformed. Then 2 more points are picked to define the target line.

The objects are moved, rotated, and also optionally scaled to match the first line to the second.

The Scaling option allows for scaling to be disabled, or for scaling to happen by stretching in one direction only instead of uniformly.

You can enable the "Make copies" option or hold down the Ctrl key when clicking the target line to drop copies and keep the original objects in place.

Here's an example where a curve is being transformed so that its ends coincide with another curve's endpoints:

View/View

Remaps objects from one view to another view.

You control which views are used by clicking inside of them, first do one click inside the source viewport (anywhere in it, it doesn't matter on which specific point), and then click once in the target viewport.

So for example if you have imported some 2D curves that are flat in the Top view, you can use this command to quickly shift them to be flat in the Front view instead, same as rotation by 90 degrees but without needing to do the rotation in some other side view.

You can also click in the 3D view as either a source or target view which will use the camera's view direction for the orientation.

Deform

Flow

Deforms objects by mapping them from one backbone curve or surface to another.

Flow is a versatile deformation tool which can help with the construction of curved pattern details, by taking objects that were initially modeled as flat 2D patterns and warping them into a curved shape. Being able to initially construct a rigid 2D shape made up of straight pieces can often times be an easier approach than trying to model the final curved shape directly in place.

Flow works with 2 different modes, curve-to-curve mode or surface-to-surface mode. The mode is determined by whether you select a curve or a surface at the prompt for picking the base object.

For curve-to-curve mode, start by selecting the objects you want to deform, then run the Transform > Deform > Flow command, then click on the base curve followed by a click on the target curve. The ends closest to where you click on the base and target curves will be matched together to be used as the starting points for the deformation. Usually the base curve is a line running down the center of the straight shape and the target curve is a bendy curve.

By default curve-to-curve Flow will match distance traveled along the base curve to the same distance traveled along the target curve. If you enable the "Stretch" option this will change to instead map by percentage along each curve, stretching or squishing the result if one curve is longer or shorter than the other.

Some examples of curve-to-curve flow:

Mapping some text onto a curve, here the base curve is the line under the text, the bendy curve is the target curve:

You can use curve-to-curve flow to bend an object into a circular shape by using a straight line through the object as the base curve, and a circular arc as the target curve:

Deforming a pattern created with Transform > Array tools onto a curved shape:

Deforming an ellipsoid into a hook shape:

A helix can be deformed to follow a curve to make a path for a phone cord sweep:

Sometimes it can be useful to position objects vertically above the curves, for example here text positioned vertically above the base line is wrapped into a cylinder shape by using a circle as the target curve:

For Flow surface-to-surface mode, start by selecting the objects you want to deform, then run the Transform > Deform > Flow command, then click on the base surface followed by a click on the target surface. Usually the base surface is a flat plane running underneath or through the middle of the objects and the target surface is a curved surface.

Surface-to-surface Flow has 2 different ways of working, regular mode and "Projective" mode. Regular mode works by applying objects across the entire target surface similar to texture mapping. Projective mode works by projecting onto a small region of the target object, more like applying a decal. Projective mode is activated by enabling the "Projective" checkbox that shows up in the stage where you pick the target surface. For regular mode the particular location of the base plane in relation to the target surface does not matter (but the click locations on each do matter, see below), while for Projective mode the objects to deform and base plane should be positioned above the area that receives the projection.

An example of regular surface-to-surface mode, the base plane matches to the entire width and height of the target surface:

An example of projective mode, the base plane projects down along the plane's surface normal direction onto a local area of the target object. The position and orientation of the base plane above the target object is significant in this mode:

For non projective mode, the locations that you click on both the base surface and target surface are significant and control how the horizontal and vertical directions of each surface will be matched to one another. You need to click nearby an edge of each surface, towards the start or end of the edge. The pattern will be rotated and reflected as needed to make the picked locations match with one another. If you do not click each surface with care it is easy for unwanted rotations to happen. Following is a visual example for where to pick.

In this example there is a pattern on a base plane that we want to put on the cylinder:

Note that before doing the Flow only the objects to be deformed should be selected, the base plane running under them should not be selected yet. You will select the base plane only after starting the Flow command. At the prompt for selecting the base surface, click on the base plane nearby one of these 8 locations marked here with a red dot:

Those 8 locations are spots along an edge towards the start or end of the edge. You do not want to click exactly on the corner of the base surface because you want to target an edge and clicking directly on the corner creates ambiguity between the 2 different edges that are connected to that corner. You can use any one of these 8 click locations, but since in the next step you will be clicking on the equivalent spot on the target surface it can be good to use a location that is easily reachable on the target surface.

For this case, let's say you picked this location on the base surface:

Picking in that location means we are going to be controlling the upper horizontal direction of the pattern. We want that direction to map to the upper circumference of the cylinder surface, so at the next prompt to select the target surface we want to click on the cylinder surface in this spot here, near the top edge but a little ways in from the corner:

That will then produce a result like this:

For projective mode the target object can be made up of multiple joined surfaces if they are all smooth to one another.

In projective mode, rays are fired out from the base plane along the base plane's surface normals and intersected with the target object. The target object should be large enough so that these rays actually hit it and do not just fire out into empty space.

The "Rigid" option is available for all Flow modes. When enabled the "Rigid" option causes objects to be only moved and rotated into a new position (using a "Rigid body transformation") rather than the object being deformed. This will keep a sphere for example to still be a sphere in the result without it being bent or warped into a different shape. This works by deforming only a single point of at the center of the object's bounding box and then moving and rotating the object accordingly. Usually this is used to apply a pattern of small objects across the target surface.

If you plan to do a Boolean union or difference with the result of the Flow, it is usually a good idea to position the objects so that they are pushing through the base plane a little bit rather than sitting exactly flush on top of the base plane. That will then make the deformed results similarly push through the target surface rather than having pieces with overlapping surface areas that just barely touch each other. It tends to be much more difficult for the Boolean mechanisms to make sense of skimming overlapping surfaces.

Twist

Deforms objects by twisting them around an axis line.

The Twist command starts by picking 2 points which defines the twist axis.

By default the twist will apply uniformly and extend through the axis direction:

If the "Limit to axis" option is set, the twist will only be applied between the start and end points of the axis, with no twisting happening outside that region. When "Limit to axis" is enabled, the "Ease in" and "Ease out" options control how quickly the twist ramps up from the start or ramps down towards the end. Here's an example with "Limit to axis" enabled, note how at the ends there is no twisting:

SubD

Create

From file

Converts a SubD control polygon cage in .obj format to NURBS surfaces.

This converter allows you to use a hybrid modeling approach of constructing some surfaces in a SubD modeling program and then bringing those over into MoI where you can apply further details using MoI's CAD toolset such as booleans. This can be helpful for working with some kinds of organic shapes.

There are some options for the conversion process under Options > Import/Export > SubD import options. You can set Patch type to "Fewer patches, more control points" which will make a smaller number of surfaces but each individual surface will have a denser control point structure, or "More patches, fewer control points" which will make a larger number of fragmented surface patches especially around star points, but those surfaces have a lower control point density.

You can also get some control over patch formation by assigning materials - polys that have different material assignments will not be merged together into larger combined patches unless the "Use materials" option is disabled.

When using this converter make sure to have the base level coarse control cage in the .obj file, without any subdivision applied to it already.

Dim

Dimensions have various properties to control things like spacing, arrowhead style, text positioning, etc... These properties can be set on a selected dimension object through the "Details..." extended object properties dialog.

Annotation presets control the property values that will be applied to a newly drawn dimension. Presets are created and edited in the Options dialog > Dimensions section. Different presets can be created to make different styles and when you are drawing a dimension there is an option for which property preset to use. The "Default" preset is stored in the moi.ini file and so is globally available in all projects. Additional presets are project specific and saved in .3dm files.

If you want additional presets beyond "Default" to be available in new files, set up a .3dm file with the presets you want and set that as the startup template file under Options > General > "Template file". The presets will be read from that template file when MoI starts up or when you use File > New.

Dimensions can have customized text set in addition to the numeric value. To show the numeric value include <> characters in the text and the <> will be replaced with the number value in the dimension's displayed text.

The sizing behavior of annotation elements like arrowheads and text is controlled by the "Scaling" property. There are 2 different options, Scaling: "By screen size", or Scaling: "By model units".

Scaling: "By screen size" is a scale independent mode where arrowheads and text stays the same size on screen independent from the current zoom level. So with this mode if you set text to a 12pt size for example, the text will be 12pt on screen and also 12pt on the printed page for PDF/AI format output. For simple drawings this keeps text to always be at a legible size. However, if you have a lot of text they can overlap with each other when you zoom out.

Scaling: "By model size" is a scale dependent mode where you specify sizes for text and arrowheads in model units. With this mode the text and arrowheads will size the same as regular geometry, when you zoom in they will display larger and when zoomed out they will be smaller. This can take more work to get a legible text size but it also will prevent neighboring text from overlapping on top of each other when you zoom out. CAD programs usually use this method and it is also good if you want to place text to be contained inside of line geometry like in a title block grid.

Horiz

Creates a linear dimension displaying distance in the construction plane's x-axis direction.

The "From object" button can be clicked to set the start and end points to the ends of a preselected line segment.

Vert

Creates a linear dimension displaying distance in the construction plane's y-axis direction.

The "From object" button can be clicked to set the start and end points to the ends of a preselected line segment.

Aligned

Creates a linear dimension displaying distance between 2 points.

The "From object" button can be clicked to set the start and end points to the ends of a preselected line segment.

Radius

Creates a radial dimension displaying the radius or diameter of a circle or arc.

Angle

Creates an angular dimension displaying the angle between 2 lines.

Leader

Creates a leader object consisting of a text label and arrow.

Text

Creates a block of annotation text without any arrows.

Viewport controls

Area

Zooms in and centers the view on a smaller specified area.

The area is defined by a center point and then a corner forming a rectangle.

For the 3D view, the picked center point will become the new rotation pivot point as well, so sometimes Zoom Area can be useful to focus in on a particular spot that you want the 3D view to pivot around.

Zoom

Zooms the view in or out.

In addition to this zoom button, you can also spin the scroll wheel on a mouse to zoom in or out.

To use this zoom button, click and hold down on the button and then while still holding down, drag up to zoom in or drag down to zoom out.

By default the button is fairly sensitive so you don't need to move the mouse pointer very far to control it. Try moving only a pretty small distance up or down.

You can flip the up/down action and adjust the sensitivity under Options > View > Rotate/Pan/Zoom options.

Pan

Moves the view left, right, up or down.

In addition to this pan button, you can also click and drag inside a viewport with the middle mouse button (or also the right mouse button in the Top, Front, or Right views). If you have a mouse wheel pushing down on the wheel also acts as a middle button.

To use this pan button, click and hold down on the button and then while still holding down, drag up, down, left, or right to reposition the view towards that direction.

By default the button is fairly sensitive so you don't need to move the mouse pointer very far to control it. Try using smaller motions instead of moving by a large distance.

Panning works with a kind of accelerated motion. You can drag a small distance and then hold still, and the view will continue to move in that direction. If you move a further distance the movement will accelerate.

You can reverse the directions of the movement and adjust the sensitivity under Options > View > Rotate/Pan/Zoom options.

Rotate

Rotates the 3D view around the pivot point.

In addition to this rotate button, you can also click and drag inside the 3D view with the right mouse button as a different way to rotate.

It often helps to use the Reset button to set the pivot point to the center of the selected objects before doing a rotation. You can also use the Area zoom button to set the rotation pivot to a point directly on one specific part of an object if you want to pivot around one particular area.

To use this rotate button, click and hold down on the button and then while still holding down, drag up, down, left, or right to rotate the view towards that direction.

By default the button is somewhat sensitive so you don't need to move the mouse pointer too far to control it. Try using smaller motions instead of moving by a large distance.

Rotation using the button works with a kind of accelerated motion. You can drag a small distance and then hold still, and the view will continue to rotate in that direction. If you move a further distance the rotation will accelerate in speed.

You can reverse the directions of the movement and adjust the sensitivity under Options > View > Rotate/Pan/Zoom options.

Reset

Fills the view with either the selected objects or all objects.

On the first click Reset will target just the selected objects and adjust the view so the selected objects fill up the viewport.

If you click the button a second time, Reset will target all objects in the model regardless of selection, zooming to fit everything within the view.

Reset also places the pivot point for rotating the 3D view at the center of what it zoomed to.

If you right-click on the Reset button, the reset will be applied to all viewports.

If there are no objects visible, Reset will restore the view to the initial startup default view.

Additional commands

Incremental save

It is possible to set up a keyboard shortcut to do an incremental save, where a number in the filename will be bumped on each save, like file01.3dm, file02.3dm, file03.3dm, etc...

To do this, go to Options > Shortcut keys, and add a new entry with a key of whatever you like (for example, Alt+S), and IncrementalSave for the command.

Rebuild

Reconstructs a curve by sampling points and generating a new curve through those points.

The Rebuild command does not currently have a button in the UI, it must be set up on a keyboard shortcut (under Options > Shortcut keys) or have its command name typed in (press Tab first to enter a command name) to launch it.

Rebuild can be used to simplify a curve that is overly complex or messy or has too many points in it to be easily manipulated by control point editing. It can also be used for the reverse as well, to add a lot more points to a simple curve if you want to have a higher level of detail available for editing.

There are 2 modes, a "Refit to tolerance" mode where you enter a distance tolerance value and as many points are added as needed (not necessarily uniformly) to maintain the new curve within that distance of the original curve, or a "# of points" mode where you tell it a specific number of evenly spaced points to sample for creating the new curve.

Flip

Flips the positive normal direction of an open surface to the other side.

This doesn't affect much in MoI itself but can be used to reverse the normals for polygons generated from open surfaces when saving to a polygon mesh file format.

The Flip command does not currently have a button in the UI, it must be set up on a keyboard shortcut (under Options > Shortcut keys) or have its command name typed in (press Tab first to enter a command name) to launch it.

Merge

Merges split up edge fragments into longer combined edges.

The edges must be tangent where they touch each other in order to be merged together into a single edge.

The Merge command does not currently have a button in the UI, it must be set up on a keyboard shortcut (under Options > Shortcut keys) or have its command name typed in (press Tab first to enter a command name) to launch it.

ArrayGem

Replicates a gemstone along a set of curves on a surface, aligning the gem to the surface normal.

The ArrayGem command does not currently have a button in the UI, it must be set up on a keyboard shortcut (under Options > Shortcut keys) or have its command name typed in (press Tab first to enter a command name) to launch it.

ArrayGem uses a different spacing method than the other array commands - along with the objects to be arrayed you also include a base circle and the spacing that you provide becomes the separating distance between each placed circle along the target area.

For the targets you pick a surface, and a set of curves that have been projected on to that surface.

Note that for this command to work properly, there must be a base circle previously drawn and also included among the objects that you want to have copied. The base circle should be selected at the same time along with the objects to copy.

The center of the base circle will become the point that is placed on to the surface, and the diameter of the base circle will be taken as the size of the object.

An example:

ExplodeMove

Moves objects away from a common center point giving an effect similar to an exploded diagram.

If a single solid is selected, its faces will be separated and moved apart, otherwise if multiple objects are selected the objects will stay whole and move apart from one another.

The ExplodeMove command does not currently have a button in the UI, it must be set up on a keyboard shortcut (under Options > Shortcut keys) or have its command name typed in (press Tab first to enter a command name) to launch it.

BoundingBox

Creates a box or rectangle that frames the current selection.

The BoundingBox command does not currently have a button in the UI, it must be set up on a keyboard shortcut (under Options > Shortcut keys) or have its command name typed in (press Tab first to enter a command name) to launch it.

BoundingBoxCenter

Creates a point object marking the center point of the bounding box around the current selection.

The BoundingBoxCenter command does not currently have a button in the UI, it must be set up on a keyboard shortcut (under Options > Shortcut keys) or have its command name typed in (press Tab first to enter a command name) to launch it.

ShrinkTrimmedSrf

Shrinks the underlying surfaces of the selected objects to remove areas of the surface that were extending larger than the trimming boundaries.

The ShrinkTrimmedSrf command does not currently have a button in the UI, it must be set up on a keyboard shortcut (under Options > Shortcut keys) or have its command name typed in (press Tab first to enter a command name) to launch it.

Make2D

Generates a hidden line drawing with the curves inserted directly inside of MoI. Similar to exporting to a 2D drawing format like PDF/AI/DXF and importing that drawing back in again.

The Make2D command does not currently have a button in the UI, it must be set up on a keyboard shortcut (under Options > Shortcut keys) or have its command name typed in (press Tab first to enter a command name) to launch it.

RemoveDuplicates

Currently only works on curves, removes other curves that are duplicates within a specified tolerance (curve endpoints must be in tolerance too).

The RemoveDuplicates command does not currently have a button in the UI, it must be set up on a keyboard shortcut (under Options > Shortcut keys) or have its command name typed in (press Tab first to enter a command name) to launch it.

Misc

Meshing options

When saving to a polygon file format, MoI needs to convert from smooth surface data into faceted polygon data. The "Meshing options" dialog is shown during this process to control different aspects of how the polygon data is generated.

During the meshing process the number of generated polygons and points are displayed in the upper-right corner of the main window where command options normally are shown.

MoI does extra work to align mesh vertices along shared edges between joined surfaces. So you'll generally want to make sure surfaces that are next to one another have been joined together into one connected solid object before exporting mesh data.

Initially the dialog is shown in its compact form:

Move the slider to the left to create a lighter mesh with fewer polygons. This will reduce the amount of data generated but will also give a more jagged appearance to the mesh. Move the slider to the right to create a denser mesh with more polygons in it. A denser mesh will be smoother visually but will also contain a lot more data.

The Output: option controls the type of polygon data that will be created, whether to allow creation of N-gons (polygons with more than 3 or 4 sides), or whether to break polygons up to only allow 3 or 4 sided polygons. Some programs have difficulty dealing with complex N-gon shapes. If you see bad results when importing N-gons into your polygon application, try reducing this option to Quads & Triangles, or Triangles only. Some polygon file formats don't allow N-gons, for example STL or 3DS files can only contain triangles, so you won't see this option when exporting to these formats.

You can click on the arrow in the lower-left corner of the compact dialog to expand it to show more options:

Weld vertices along edges option:

Welding controls how polygons are connected to points along shared edges between surfaces. When welding is on, polygons will share a single point in common along the shared edge. When welding is off, the polygons on each side of the edge will have their own individual points which are stacked up in the same location.

Example of welded polygons - each polygon from either side of a joined edge will be hooked into the same vertex. The vertices are shared between polygons:

Example of unwelded polygons - in this case each polygon across the unwelded edge has its own individual vertices. The points are stacked on top of each other, shown slightly separated here for illustration:

Typically welding is left on for normal rendering use but some programs may have difficulties with welded meshes. Also, sometimes you may want to have points unwelded for certain special effects, such as doing a sketch or toon style rendering. Unwelded edges will get an accent line in a sketch rendering. Turning welding off may also help separate polygons out into different chunks for each original surface during later polygon editing.

Angle option:

The Angle option controls the maximum angle allowed between the surface normals at the corners of each polygon. When the maximum allowed angle is small, it will force additional subdivisions along more tightly curved areas. When the maximum angle is larger, fewer subdivisions will be forced in curved areas and coarser polygons will be allowed. This is the same value that is controlled by the slider. This option just allows you to control it more directly and to allow for values outside of the normal slider range. For example, if you want a very low polygon mesh you may want to type in a larger angle here than the slider normally permits.

Divide larger than option:

The "Divide larger than" option provides another way to refine the mesh in certain areas. You can enter a distance here which will force polygons that are larger than this length to be broken down into smaller pieces. This can be used to add detail to larger areas that have shallow curvature. Areas that have shallow curvature will tend to get fewer polygons in them because the regular density control that is adjusted by the slider is based only on curvature and not lengths. You can also adjust the drop-down to limit additional subdivisions to a specific type of surface. By default it will be applied only to curved surfaces leaving planar surfaces unaffected, but this can be changed to only apply to planar surfaces for special meshing needs, or to apply to all surfaces.

Here is an example of a large area with shallow curvature that didn't get many polygons. Because it is covering a larger area the lack of refinement here can be more noticeable:

By entering a distance of 5 in the "Divide larger than" option, it will force more divisions along the large shallowly curved surface. Any polygon larger than 5 units along an edge will be further broken down:

Avoid smaller than option:

The "Avoid smaller than" option can be used to avoid creating too many polygons in small areas where they may be difficult to see, in order to reduce polygon counts. You enter a distance here, and subdivisions will be restricted for any polygon that is smaller than this value. Normally the same density will be generated in both small and large areas because it is controlled only by the curvature. This is good if you are going to be zooming into a smaller area for a rendering, but if you're never going to zoom in to a small area you may wish to have fewer polygons there to reduce the amount of data being processed and speed things up.

Here's an example of a knob that is a tiny piece of a much larger model:

By setting an "Avoid smaller than" distance of 0.5, it will reduce the number of divisions there since this knob is close to that size:

Aspect ratio limit option:

The "Aspect ratio limit" option offers another way to force additional subdivisions for quads that are short in one direction but long in another. This affects all surfaces, including planar ones. Here is an example of a mesh with long and skinny quads:

If you want to get more regularly sized quads here, you can enter 2 in the aspect ratio control, which will force a division in any quad that has one edge more than twice as long as the other:

Once you enter a value into one of the extended controls, you can clear it by either using backspace to clear the field or by entering a value of 0.

Hidden line options

When saving to a 2D drawing file format such as PDF, AI, or DXF, a dialog will pop up to allow you to control various options:

The "Scale" option can be either "Fit to page" or "Preserve units". When Preserve units is picked, additional controls will be displayed that let you set the scale factor for how units in MoI map to units on the 2D page. Preserve units won't function with a perspective 3D view.

"Generate outlines" creates curves in areas where objects are adjacent to the viewport background. This can be used to give a bold accented border surrounding the entire object. It works in combination with the shaded background image, since the background image masks out the inner half of the border.

"Generate silhouettes" creates accented curves at all silhouette areas.

"Generate hidden lines" creates curves that are hidden in a dashed line style.

The "Line style options" button opens up a second dialog where the point width, color, and layer attributes of the different kinds of curves can be set. Colors and layers can either by set to "From style" for the color or layer to come from the style assignment, or can be set to a specific value by choosing "Custom".

The "Canvas megapixel resolution" field controls the density of the shaded image and depth buffer used to determine what is visible and hidden. Increasing this value can help generate more detailed results on small areas of the model, it can go up to a maximum of 75 megapixels, but it consumes quite a bit of memory at that level. Try something around 30 or 40 here to get more detail if needed.

If you're doing a wireframe export that contains only curves and not any solids or surfaces, only the projection view and scale options will be shown.

The hidden line DXF export is more oriented towards shop drawing type output, it doesn't have the outline, silhouette, or shaded background image options.

Repeat

You can repeat the most recently used command by right-clicking inside a viewport or by pushing the Enter key on the keyboard.

It is also possible to turn on repeat automatically for a period of time by clicking the "Repeat" checkbox that shows up at the bottom of the command options area in the upper-right area of the window. When that option is checked, a drawing command will automatically repeat until you cancel it or uncheck that box.

Construction lines

Construction lines allow you to quickly place additional guide lines to help with precise snapping and alignment while drawing shapes.

You can create a construction line anytime that MoI is asking you to specify a point location, like for the start or end of a line, the center of a circle, the next point of a curve, etc... To create a construction line, hold down and drag the mouse.

When MoI is asking you for a point, clicking and releasing the mouse button will finish picking that point. If you hold the button down and drag instead of releasing, you will drag out a construction line. Construction lines are automatically erased at the end of each command.

Here is an example of how a construction line can be used to help accurately place a point. Imagine you have a drawing as shown here in the first image, and you want to create a new horizontal line as shown in yellow in the second image, such that the end is exactly aligned as indicated by the dashed line:

To draw such a line, start the line command and click the first point at the end that you can easily grab:

Next, move to the end that you want to be aligned with. Click down on that point, but do not release the mouse button. Instead hold the button down and drag away and a construction line will be created. Drag downward to make the construction line go downward, and release the mouse when you see the construction line has snapped vertically:

Now that a construction line has been created dropping down from that point, you can find a snap point at the intersection between the horizontal line and the vertical construction line, and click it to place the end of the line:

You can drag out any number of these construction lines to set up additional intersection snaps. They can be dragged along the x, y, or z axes, perpendicular or tangent from a curve, etc... The construction line is formed through 2 points - the point you started the drag on and then the point where you release the mouse. After a construction line has been defined by these 2 points, the midpoint between them is available as another snap as well as the reflected endpoints. The reflected endpoints are calculated by taking the distance between the start and end and repeating that same distance in both directions. For example, creating a construction line through the 2 points in the first image will provide the additional snaps shown in the second image:

This makes it possible to find the midpoint between any 2 points by dragging a construction line through those 2 points. Also the reflected endpoints can be useful for snapping symmetrically around a centerline.

Here is an example of how the reflected endpoints can be useful. Let's say you have a line, and you want to draw a square at the end of the line, centered around it, like so:

To do this, start the Rectangle 3 points command. Before placing any points for the rectangle, go to the end of the line and drag out a construction line perpendicular to it:

Thanks to the reflected endpoints, this now sets up all the snaps you need to draw the square. Place the first point at the original end of the construction line, point #2 marked above. Then for the next point of the rectangle, pick the reflected endpoint on the other side:

Finally, the square snap built into the rectangle tool can be used for placing the 3rd point to form an exact square:

Construction lines can be used in this manner to form a kind of quick temporary scaffolding or grid adapted to the size and orientation of existing objects.

After you drag out a construction line, a small marker will appear above your mouse pointer that looks like this:

If you move your mouse over that marker the marker will brighten up and if you press and hold down on the marker for a moment a menu will pop up with additional options for controlling the construction line:

The "Relocate cline" option allows you to pick a new point for the construction line to go through, basically dragging the construction line to a new location. This allows you to capture a direction and then move it to a different area to use for a parallel construction guide.

The "Reorient cline" option allows you to pick a new point and pivot the construction line to point in a new direction going through that point. The original endpoints, midpoint, and reflected endpoints of the construction line are still available as snaps at the same distances after the reorientation. This, combined with the relocation option, allows you to use a construction line as a kind of measuring stick to capture a distance between any 2 snapped points and then apply that distance to a different area or different direction.

Here is one example of measuring a distance and applying it in a different direction while drawing a cylinder on top of a box. After starting the cylinder command, a construction line is created from the midpoint of the box's edge to the end:

Then the construction line is re-oriented to point perpendicular to the edge, towards the inside of the box:

Now there are snap points available at the same spacing as the edge of the box to draw an exactly placed cylinder:

The "Rotate cline" option allows you to rotate the construction line around its base point by the given angle. This allows you to set up a guide line at the given angle relative to some existing edge of an object. It is also possible to use Distance or Angle constraint while initially drawing the construction line by dragging outside the viewport to the distance or angle controls and clicking and entering a constraint value there, then returning to the viewport and clicking to place the second point of the construction line.

The "Division snap" option enables you to snap to different fractional increments along the construction line instead of only the midpoint. For example, entering 5 here will provide snaps at 1/5, 2/5, 3/5, 4/5, as well as -1/5, -2/5, 6/5, 7/5, etc...

The "Project next pt" option forces the next picked point to be projected to the closest point along the construction line. This allows you to snap on to a different object and find the relative height of that point along the line. For example, here a construction line has been pulled up in z along side of a different object. When projection is turned on you can move to a snap point on the other object and the relative height of that object will be captured by the projection on to the line:
Here is an example of this projection being used to place the top point of a cylinder at an equal height as an existing box object:

Shortcut keys

Keys or key combinations can be assigned to different actions under Options > Shortcut keys.

The Enter and Esc keys have predefined functions. You can use Enter as a shortcut for clicking the "Done" button while inside of a command, and pressing it outside of a command will repeat the last used command. Esc is used to cancel or turn off modes. If you are currently running a command, Esc will cancel the command same as clicking the "Cancel" button. If you are outside of a command, Esc will deselect objects on the first tap, and then turn off any points that were enabled with the "Show pts" command on the next tap.

To create a new shortcut key, click the "Add" button. A dialog will pop up asking you to press the shortcut key combination that you want to assign. After you have set the shortcut key, you can then fill in the Command entry with either a command name or also script code can be inserted directly here as well. Script macros are prefixed with the keyword "script:".

Command names:

AddPoint, Align, AnnotationText, Arc3pt, ArcCenter, ArcContinue, ArcTangent, ArrayCircular, ArrayCurve, ArrayDir, ArrayGem, ArrayGrid, Blend, BooleanDifference, BooleanIntersection, BooleanMerge, BooleanUnion, BoundingBox, BoundingBoxCenter, Box, Box3pts, BoxCenter, Chamfer, Circle, Circle3pt, CircleDiameter, CircleTangent, Cone, Conic, Copy, CopyClipboard, CopyClipboardWithOrigin, Curve, Cut, Cylinder, Delete, DimAligned, DimAngle, DimHorizontal, DimRadius, DimVertical, Ellipse, EllipseCorner, EllipseDiameter, ExplodeMove, Export, Extend, Extrude, Fillet, Flip, Flow, Helix, History, Image, Import, ImportPart, ImportSubD, IncrementalSave, Inset, InterpCurve, Intersect, Isocurve, Join, Leader, Line, Loft, Make2D, Merge, Mirror, Move, Network, New, NSided, Offset, Open, OpenTemplate, Orient, OrientLinetoLine, OrientViewToView, Paste, PastePart, PlanarSrf, Plane, Plane3pts, PlaneCenter, Point, Polygon, PolygonEdge, PolygonStar, Polyline, Project, RailRevolve, Rebuild, Rect3pts, Rectangle, RectCenter, RemoveDuplicates, Revolve, Rotate, RotateAxis, Save, SaveAs, Scale, Scale1D, Scale2D, Separate, Shell, ShowPoints, ShrinkTrimmedSrf, Silhouette, SketchCurve, Sphere, Sweep, Text, Trim, Twist

So for example, a shortcut for E to activate extrude would look like this:
E Extrude

There are a few buttons in the UI that run script macros instead of commands: Hide, Reset all, Select all, Deselect all, and Invert. This is so they can be used while a command is still running, so these functions are slightly different than a regular command. To hook these up to a shortcut key fill in the Command part with one of the following scripts:

Hide:

script:moi.geometryDatabase.hide();

Lock:

script:moi.geometryDatabase.lock();

Reset all views:

script:moi.view.resetAll();

Select all:

script:moi.geometryDatabase.selectAll();

Deselect all:

script:moi.geometryDatabase.deselectAll();

Invert selection:

script:moi.geometryDatabase.invertSelection();

Here are some frequently requested scripts that can be assigned to a key to perform a custom action. To use these, copy the entire line that begins with script: and paste it into the Command part of the shortcut key:

Maximize the view the mouse is over, or switch back to split view (usually assigned to Space key):

script:if ( moi.ui.mainWindow.viewpanel.mode != 'split' ) { moi.ui.mainWindow.viewpanel.mode = 'split' } else { var viewport = moi.ui.getViewportUnderMouse(); if ( viewport ) { viewport.viewPanel.mode = viewport.name } }

Go to split view:

script:moi.ui.mainWindow.viewpanel.mode = 'Split';

Maximize the 3D view:

script:moi.ui.mainWindow.viewpanel.mode = '3D';

Maximize the Front view:

script:moi.ui.mainWindow.viewpanel.mode = 'Front';

Maximize the Right view:

script:moi.ui.mainWindow.viewpanel.mode = 'Right';

Isolate the selection (hide everything else that is not selected):

script:moi.geometryDatabase.invertSelection(); moi.geometryDatabase.hide(true);

Select all curve objects:

script:moi.geometryDatabase.getObjects().getCurves().setProperty( 'selected', true );

Select all open curves (curves that do not form a closed loop):

script:var curves = moi.geometryDatabase.getObjects().getCurves(); for ( var i = 0; i < curves.length; ++i ) if ( !curves.item(i).isClosed ) curves.item(i).selected = true;

Hide all curve objects:

script:moi.geometryDatabase.getObjects().getCurves().setProperty( 'hidden', true );

Hide all surface/solid objects:

script:moi.geometryDatabase.getObjects().getBReps().setProperty( 'hidden', true );

Select all objects that were created by the last command:

script:var a = moi.command.lastCommandRevisionStart; var b = moi.command.lastCommandRevisionEnd; var objects = moi.geometryDatabase.getObjects(); for ( var i = 0; i < objects.length; ++i ) { var obj = objects.item(i); if ( obj.databaseRevision > a && obj.databaseRevision <= b ) obj.selected = true; }

Toggle grid snap on or off:

script:moi.drawingAids.gridSnap = !moi.drawingAids.gridSnap;

Toggle object snap on or off:

script:moi.drawingAids.objectSnap = !moi.drawingAids.objectSnap;

Toggle straight snap on or off:

script:moi.drawingAids.straightSnap = !moi.drawingAids.straightSnap;

Many other scripts are possible, see the web site for a larger list, and post any requests for custom scripts to the discussion forum.

Edit frame

The edit frame shows up around the outside of selected objects and allows you to quickly perform scaling or rotation without having to launch any commands.

The edit frame's starting position is based on the bounding box of the selected objects, and is made up of 5 grips - 4 scaling grips in the corners and one rotation grip at the top:

The grips are drawn with a semi-transparent effect to maintain a low profile, but will light up when you move the mouse over top of one.

Primarily the edit frame is intended to be used in the 2D Top/Front/Right views, but it will also show in the 3D view if the selected objects are all planar.

To scale with the edit frame, grab one of the corner grips and drag it to size the object. By default objects will be scaled from the center point, but you can switch to scale from the opposite corner instead by clicking on one of the corners instead of dragging it. Each click will toggle the scaling origin between the center or the corner. When the mouse is over a corner grip, a marker will appear at the current scaling origin.

When scaling, if you drag your mouse in a horizontal or vertical direction, a guideline will appear and the scale will happen as a 1D stretch along that direction. Stay close to this guideline if you want to do a stretch, otherwise if you drag diagonally it will scale the object in all directions. If you move far enough away from the 1D scaling guides, stretch mode will be turned off for that drag. You can also hold down the Shift key when scaling to perform a 2D scale which will stretch only in 2 directions and leave the vertical direction untouched.

While stretching an object, a "Flat" snap is available at the point where the frame collapses completely down to a line. This can be used as a quick way to flatten objects from a side view:

You can also create a mirrored copy of an object using the corner grips as well. To do that, grab a corner and drag it all the way over to the opposite side of the object. There will be a snap point available there and if you snap on to it, a mirrored copy of your object will be produced same as doing the Transform > Mirror command:

Also if you are scaling from the center, there are mirror snap points at the other 3 corners to enable an exact "in-place" type flipping or mirroring.

To rotate with the edit frame, grab and drag the rotation grip which is located in the middle of the top edge of the bounding frame.

You can rotate by a specific angle by entering an angle constraint before dragging the rotation grip. There are 2 ways you can enter an angle constraint, either by typing <angle (like <45) just by typing directly without clicking anywhere, or by clicking on the angle box in the bottom toolbar and entering your value there. So for example if you want to rotate something by 30 degrees, type in <30 and push enter, then grab that rotation grip and it will rotate in 30 degree increments.

If you click instead of drag on the rotation grip, it will switch to a different "wheel mode" which makes it possible to grab the center rotation pivot and move it to whatever spot you would like to rotate around. Also while in this mode there is a tri-wheel rotation widget displayed in the 3D view which allows you to grab any one of 3 rotation axes.

Properties panel

The Properties panel shows up in the upper-right area of the main window and lets you view and edit properties of the currently selected objects.

This panel shows up when you are in Selection mode, before you have launched a command.

In addition to viewing properties, you can also click on different areas to pop up menus or dialogs that allow you to edit them. As you move your mouse over this area you will see different clickable areas highlight.

1. Object name indicator - this displays the name of the currently selected objects. You can assign a name by clicking on this line to bring up the "Edit object name" dialog box. Named objects will have entries show up in the Objects section of the Scene Browser to be quickly accessed for hiding, showing, or selecting.

2. Object type indicator - this displays some basic information about the selected object, for example if it is a fully closed solid it will display "Solid" here. The type can be one of the following: Curve, Closed crv, Edge, Face, Surface, Joined srf, Solid, Point. Also if you have multiple objects selected, the number of objects currently selected will be shown here as well.

3. Style indicator - this displays the style that is assigned to the current selection. You can assign a different style by clicking on this line to pop out the styles menu. There is also an alternate way for assigning styles available by clicking on a style's color swatch in the Scene browser. You can right click on this line as a shortcut to edit the style.

4. Size indicator - this displays the bounding dimensions around the current selection, and you can click on it to scale the objects to a different size. The bounding size will be displayed in either world coordinates, or in cplane coordinates if a custom cplane is currently set. Certain objects have special size values - a line will display length, a circle, arc, sphere, or trimmed cylinder will display radius, and a full cylinder or cone will display radius and height.

When editing the size, there is a "Maintain proportions" option you can turn on or off to control whether objects will be scaled uniformly or whether to allow them to stretch in only one direction when a value is edited.

When you enter in a new size, you can enter in numeric formulas (for example: 22 / 5 * 4) and there are also the following variables that be used as part of the formula:

x : bounding x size
y : bounding y size
z : bounding z size
r : radius
d : diameter
h : height of cone or cylinder
l : length of a line
So for example if you want to set a cylinder's height to be twice its current radius you can do that by unchecking "Maintain proportions", and then enter r * 2 into the Height: field.

You can also enter a value starting with + or -- in a field to make it a relative adjustment. For example if you enter in radius: +5 it will add 5 to the current radius.

5. Opens the object properties dialog.

Object properties dialog

The object properties dialog can be opened by clicking the "Details..." button on the properties panel that displays in the upper right corner of the window when objects are selected.

There are controls here for calculating length of curves and surface area or volumes of surfaces or solids.

Some more detailed information on the object type is available here with a report on all the styles used on a multi-style solid, whether curves are line segments, polylines, circles, arcs, ellipses, elliptical arcs, planar, open or closed and the number of faces and edges in a solid.

The type report can be used for selection filtering, if you click on a type label the selection will narrow down to only objects that match that type. So for example if it reports that there are "3 lines, 3 circles, 1 ellipse, 4 planar" curves selected, if you click on the "3 lines" label the selection will narrow down so only the line curves will be selected. You can hold down Shift to click on multiple labels, and if you hold down Ctrl when you click on a label it will remove those objects from the selection rather than narrowing selection down to them.

There are also numerous properties here that can be set on annotation objects for controlling details like arrowhead types and extension lengths, etc...

Scene browser

The scene browser helps to organize larger projects by categorizing objects in different ways and allowing you to perform actions (such as hiding, showing, locking, selecting) to all the objects that belong to a particular category.

The scene browser's appearance and location in the UI can be set under Options > General > "Scene browser position".

When set to "Adjacent" or "Opposite" the scene browser will be displayed as a separate full height panel either along side or on the opposite side from the regular side pane, and a Browser button will be displayed in the bottom of the main window next to the Help button. The Browser button can be clicked to hide or show the scene browser.

When set to "Inside" mode, the scene browser will be displayed as an additional palette at the bottom within the side pane. In this mode, the browser can be shown or collapsed by clicking on the palette title area.

The scene browser has different sections, with each section using a different categorization method. They include:

Objects - for working with objects that have been assigned a name. You can assign a name to a selected object (or multiple objects) by clicking on the name part of the properties panel that shows up in the upper-right area of the main window. Once you have assigned a name, that name will appear as an item under this section of the scene browser.

Types - for dealing with all objects of a certain type, like all curves, or all solids. This section allows you to perform actions like hide all curves, or select all solids, etc...

Styles - for organizing objects into different colored categories. This section allows you to work on all objects that have been assigned a particular style. You can assign a style to the selected objects by either clicking on the style line in the properties panel, or by clicking on the colored swatch of a style item within the scene browser. Style assignments will become material assignments when you export to OBJ or LWO mesh formats.

The default set of styles can be altered by setting up a 3DM file that contains the styles you want to have as the default, and then specifying that file as the startup template file under Options > General > Template file. That will cause the styles (and other per-file settings) to come from that file when MoI starts up or when you do a File > New.

The Styles section also has a menu which can be launched by the arrow on the right-hand side of its header, here:

That menu has entries for:

Add new style - brings up a dialog box for entering a name and color for adding a new style to the styles list. The current selection will also be assigned to the new style.
Edit styles - brings up the Edit styles dialog box that allows you to edit the styles list in different ways including adding new styles, deleting styles, editing the name and/or color of an existing style and moving styles up and down in the list.
Add default styles - adds in the set of default styles to the current model, either from the standard default, or from the template file if you have specified a startup template under Options > General > Template file. You can use this if you are working on a model that someone else has sent to you, and you want to bring in all the styles that you normally use.

There are some shortcuts available for editing styles:

- In the Edit styles dialog, right-clicking on a style works as a shortcut for selecting it and pushing the "Edit" button.
- On a scene browser swatch, Ctrl+left click will pop up the color picker as a quick way to edit a style's color.
- On the properties panel, right-clicking on the style line will pop up the Edit style dialog and let you edit the name and/or color of that style.

You can control which style is applied to newly drawn objects by setting the "Active style". You can set a style as the Active style by right-clicking (or left-clicking when there is nothing selected) on the style's color swatch.

The active style is marked in the scene browser style list by an extra ring around its color swatch. For example here the Green style is marked as the Active style:

Scene browser items

Every item listed under a scene browser section represents a category of objects, and you can click on different parts of the item to perform an action on all objects that belong to that category.

For example here the Objects section is showing 4 items, each of which represents a different group of named objects in the model:

When you move the mouse over each item you will see different clickable areas highlight.

There is a status indicator area on the left:

And a selection indicator dot on the right:

Style items have an additional color swatch area in the middle:

The status indicator can be used for hiding, showing, or locking objects. The selection indicator dot can be used for selecting, deselecting, or setting selection filters. The color swatch for style items can be used for assigning the current selection to that style or to set the style used for newly drawn objects.

The status indicator will display an eye icon if all the objects belonging to that category are set to be shown, or a blank spot if all the objects belonging to that category are hidden. For example here all the objects belonging to "Lower deck" are shown, and all the objects belonging to "Upper deck" have been hidden:

You can switch a category between hidden and shown by clicking on the status area.

You can also right-click on the status area to "isolate" that item, which will hide everything else leaving just that item being shown. Right-click on it a second time later on to show everything.

You can press and hold the mouse button down and swipe over the status area of several adjacent items to set multiple items in one mouse action.

The status area also shows whether items are locked. If all objects belonging to that item are shown and locked, a lock icon will be displayed instead of the eye. If all of that item's objects are hidden and locked, a fainter lock is displayed, for example:

To switch between locked and unlocked, hold down the Ctrl key and click on the status area.

The status area will also show a mixed state indicator if the item's objects have a variety of different states. If some of the item's objects are shown, and some are hidden, a half-eye icon will be displayed. If there is a mixture of some locked and some unlocked objects, there will be a diagonal dividing line with both an eye icon portion and a lock icon portion. To clear this kind of mixed lock state, hold down Ctrl and click:

The selection indicator dot on the right side gives feedback about the selection of objects belonging to that item and can also be clicked on to perform selection actions:

The selection indicator dot will display a full yellow dot if all objects belonging to that category are selected, or it will be blank if all the objects belonging to that category are unselected. It will display a half dot if some are selected and some are unselected.

You can click on the selection dot area to toggle selection on or off similar to how clicking on the eye toggles visibility on or off.

When you click on the selection dot it will only select objects that are not hidden. Use Shift+click on the selection dot to select all objects of that slot regardless of current visibility state (any hidden objects will become shown if you do that).

Right click on the selection dot to do an "isolated selection" - it will select the item's objects and deselect all other objects.

You can also use Ctrl+click on the selection indicator dot area to activate a selection filter. When you do this a filter icon will appear:

When a selection filter is active only objects that belong to that slot will be targeted for selection actions. So for example if you want to select all red curves, you can tag Style=Red with a filter, and then go the Types section of the Scene Browser and click on the selection indicator dot for curves and it will only target curves that have Style=Red.

Selection filters influence all types of selection actions, including selecting things with the mouse, select all, using the Scene Browser to select things, etc...

It is possible to set many selection filters to be active at the same time. Only objects which pass all the active filters will be targeted for selection.

When you activate a selection filter, it does not immediately change any already existing selection, it only influences any new selection actions after that. This allows for building a selection in several steps. If you don't want the existing selection then clear the selection before setting the filter.

A second Ctrl+click will clear the filter, or you can push the Escape key as a shortcut to clear any active selection filters when you are done using them. Usually it is best to only leave selection filters active for a short time, if you forget you have one active it can easily seem like selection is not working at all.

Orientation picker

The orientation picker is used in several commands (CPlane, Orient, Import part, Paste part) that need to specify a base point and x/y/z axis orientation.

The orientation is represented visually by a base point with 3 perpendicular axis lines, sometimes with one axis (called the "primary axis") marked with an extra outlined dot at its end:

The orientation defines a localized coordinate system with its own position and rotation.

Picking an orientation is a 2 step process.

The first step is to pick the origin point. During this step the z axis of the picker will align itself to a surface normal if the origin point is being snapped on to an existing object. For example:

In addition to surface normals, the picker can also align itself to the plane of a circle or rectangle curve when snapped to their center points, or to the tangent of a curve when snapped to a point on a curve.

This alignment can be disabled by unchecking the "Align to objects" option, or the direction can be reversed by checking the "Flip aligned z axis" option.

After the origin point has been placed, the second step is to optionally adjust the axis directions to control what they are pointing towards.

When you are done adjusting the directions (or if the default directions were already fine), right-click or press the "Done" button to finish picking the orientation.

An axis direction can be adjusted by moving your mouse to the axis line, and dragging on that axis, keeping the mouse button held down and releasing it over the target location you want it to point towards.

Here's an example - say you have placed the origin point on the side of a cube like this:

If you would like to adjust the orientation so that the x axis is pointing towards a corner of the cube instead, you can do that by moving your mouse to the x axis line (labels will be displayed on each one as you move over them to indicate which one is which), like this:

Then press and hold the mouse button down and drag on that axis line. As you drag the picker will adjust that direction to point towards what you are dragging over. Release the mouse button when you are over the desired target point:

The "primary axis" is the axis line that is marked with an extra outline dot at its end. When you drag one of the other axis lines, its motion will be restricted so as to only pivot around the primary axis, keeping the primary axis unmodified.

You can switch the primary axis to a different axis line by clicking on the axis line rather than holding the mouse button down and dragging on it.

If the picker was aligned to an object when picking its initial origin point, the z axis will start out as the primary axis. Otherwise the first axis that is repositioned will become the primary axis.

You can also drag on the origin point to relocate it during the axis adjustment step as well as dragging on the axis lines.

Drawing on surfaces

In MoI you can control how newly drawn objects are oriented by either setting the construction plane using View/CPlane, or by snapping points directly on to existing surfaces.

Drawing and snapping directly on to surfaces is made up of a few related pieces.

First, there is an "On srf" object snap that lets you snap a point directly on to the surface that is under the mouse.

Another related area is surface normal snapping - this is an additional kind of straight snap similar to perpendicular or tangent snaps, except coming off of a surface. For example here the first point of the cylinder was placed on the sphere, then when picking the second point, a surface normal snap is available:

To avoid over-snapping, there will only be one surface normal straight snap line at a time. If your base point is snapped on to an area common to more than one surface (for example the corner of a box), you will only get a surface normal snap if just one of those surfaces is selected.

The last piece of on-surface drawing is surface snap plane alignment. This is when a surface gets used as a temporary construction plane for a drawing command, aligning the drawn object to the surface instead of to the default world x/y/z planes. Some examples:

Snap plane alignment will only happen when you are picking points in the 3D view. Using your mouse in the 2D Top/Front/Right views will keep alignment to the regular view plane.

Different commands align to surfaces with slightly different intensities. The draw commands that are symmetrical around a center point like Circle from center, Rectangle from center, Polygon center, and Polygon Star, will align to a surface if just their initial center point is snapped on to any surface, including both planar and curved surfaces.

Most other commands such as Line, Polyline, Rectangle, Curve, etc... will only align their snap planes (which for example with Polyline controls which direction straight snaps will go in) if you have both the base point and the current point snapped on to a planar (not curved) surface.

If the base point and the current point are snapped on to areas that are common to more than one planar face (like with both points snapped on to an edge of a box so that the points touch 2 faces of the same box), then the planar face that is pointing most towards the eye point direction will be used. So for example if you snap one point on to a corner of a box, rotate the view so that you are facing more towards the face of the box you want to draw on to control which face will be used when there are multiple candidates.

Numeric expressions

You can type in an expression or formula into numeric edit fields that are asking for distance or radius values.

For example when you are drawing a circle for the radius you can type 15/4*2 and the result 7.5 will be calculated for you.

Another example is if you're drawing a line, you can type <360/12 to set an angle constraint of 360/12 = 30 degree angle snap for that line.

You can also use functions like sin - for example typing in sin(45) will calculate the sin of 45 degrees. All trig functions take angles in degrees. Angle input in radians is available by prefixing the function name with an underscore character, for example: _sin(PI/4). Any of the functions on the JavaScript "Math" object are available for use, including: sin(), cos(), tan(), sqrt(), pow(), round(), random(), the constant PI, and also rad() which takes a parameter in degrees and returns it in radians, and deg() which takes a parameter in radians and returns it in degrees.

You can also type in a "relative expression" to modify the value of an edit field that has previously been initialized to some other value. To make a relative expression, start it with one of these symbols: + -- * / which will alter the value by the given amount rather than inputting a completely new value. So for instance in a grid size input field you can type /2 to modify the existing value by dividing it by 2. Note that for subtraction a double minus sign is used to avoid any conflict with entering in a regular non-relative negative value.

You can also use expressions for x,y,z point values. If your regional settings for the operating system uses a comma character as the decimal point separator for numeric values, then surround each coordinate with parentheses to separate them, for example: (2+2)(5/2-1)(5).

Multitouch view navigation

You can use multitouch gestures (pinch or drag fingers) to do zoom/pan/rotate view manipulations. This works on Mac OSX 10.7+ using a trackpad or on Windows 8 using a touch screen. There's a demo video here: Multitouch view demo on forum.

The supported gestures are:

Pan by 2 fingers dragging left/right/up/down

Zoom by pinching index finger and thumb together or apart.

Rotate left/right/up/down in the 3D view by dragging 3 fingers.

2 finger double tap for view reset (zoom to selected objects or zoom to all if done a second time).

Twist thumb and index fingers for 2D ortho view spin or 3D view tilt if those are enabled under settings.

Zooming in and out with multitouch can be easier to control in the 3D view if you have a parallel view projection rather than perspective. You can set a parallel projection under Options > View > "3D view projection". To set the default projection on startup, save a 3DM file with a parallel projection set and then put that 3DM file as the startup template under Options > General > Template file.

On OSX, 3 finger dragging for rotation in the 3D view will not work if any 3 finger swiping is already being used for OSX system functions. Check under System Preferences > Trackpad > More Gestures. If "Swipe between full-screen apps" or "Mission Control" are set to use 3 finger swiping, change them to use 4 finger swiping instead, then MoI will be able to receive the 3 finger dragging events.

There are some options available for changing multitouch behavior under Options > Rotate/Pan/Zoom options > MultiTouch options (in lower-right area):

Reverse rotation checkbox - when enabled the 3D view rotation directions will be reversed.

Rotate ortho views checkbox - when enabled thumb/index spin will spin the 2D ortho (top/front/right) views.

Swap 3D rotate and pan checkbox - when enabled 2 finger dragging in the 3D view will do rotation and 3 fingers will do panning instead.

Allow 3D rotation tilt - when enabled thumb/index spin will tilt the 3D view left or right.

Rotation speed, Pan speed, and Zoom speed - a scale factor can be entered in here to adjust the speed of these movements, for example putting in 0.5 will make that operation half speed, putting in 2 will double the speed.

There are also a few additional settings available in moi.ini under the [MultiTouch] section:

[MultiTouch]
SingleFingerRotation=n
TiltSpeed=1.0
TiltCenterMode=0

SingleFingerRotation can be set to =y on Windows to make just one finger dragging do 3D view rotation instead of 3 finger dragging. This will prevent things like window selection from happening with touch so you should probably only try this if you also have a mouse or pen to use for selection.

TiltSpeed can be set to a scale factor to speed up or slow down thumb/index finger spin action in 3D views.

TiltCenterMode can be set to 0, 1, or 2 and controls how the center point works for 3D view tilting.

With TiltCenterMode = 0 the current centroid of the touch points is used for the tilt center. With this one the tilt center moves right along with your fingers.
With TiltCenterMode = 1 it will use the centroid between the 2 fingers just at the initial start of the 2 finger gesture, it won't update as you move your finger around, only when you start a new gesture.
With TiltCenterMode = 2 it will use the center of the viewport as the tilt center, it won’t make any difference where on the screen you are at as far as tilting goes.

© 2020 Triple Squid Software Design