The v2 beta is available for download. You will need to enter your v1 license key to download the v2 beta.

The V2 betas

Beta Jul-3-2008


The v2 beta installs into its own folder, it is not a problem to have v1 and any v2 beta installed on the same machine, in fact I recommend that so that you can fall back to v1 if you run into some temporary bad bug in v2.

New stuff:

Edit frame: There is now so called object edit frame that shows up around the outside of selected objects which allows you to do scaling, mirroring or rotation very easily without starting up special commands. The edit frame's starting position is based on the bounding box of the object.

Actually, the new grips show up in the 2D views (Top/Front/Right) for all selected objects, but they will only show up in the 3D view if you have planar objects selected.

When you drag the grips, if you have grid snap turned on, then that new target point will snap on to the grid and you can snap on to any point you can normally snap on to when dragging that handle (the grip is actually slightly to the outside of the actual point that you place when you drag it).

For rotation it is using the same snap settings as you can currently use for drawing an angled line (Snaps / Straight snap options / Snap angle, the default is 90 degrees).

Rotate – you can click and drag on the rotation grip located in the middle of the top edge of the bounding frame to do an immediate rotation.

If you want to rotate by a specific angle, you can do that by entering an angle constraint before (or during) dragging that rotate 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 move in 30 degree increments.

If you click instead of drag on the rotation grip, it will switch to a different mode which makes it possible to grab the center rotation pivot and move it to whatever spot you would like. You can use this if you want to rotate a rectangle around one of its own corners for example. Also while in this mode, you'll see a tri-wheel rotation thing appear in the 3D view which allows you to grab any one of 3 rotation axes easily there for spinning things around in different directions.

Scale – you can grab on one of those corner grips and drag it to size the objects. If you drag anywhere but vertically/horizontally, it will do a 3D scale. By default the corner scaling grips will scale from the center of an object (when you move over a corner grip, an origin point will then pop up showing you where the scale will be centered around if you drag). But you can switch this to scale from the opposite corner instead by doing a click on one of those corners instead of a drag. Each time you click a corner it will switch between these modes and you should see the origin marker switch. It's kind of a setting that will stick after you set it once. So like if you want to do a bunch of corner-anchored scales, you just do one click to set it, and then every time that you drag on the corner widget after that it will scale from the opposite corner.

Non-uniform scaling – if you hold down shift while dragging a scaling grip, it will perform a 2D scale only, so that will stretch something like a sphere out in only 2 directions and leave the vertical direction untouched to make an ellipsoid type shape.

For doing the 1D scale you kind of move your mouse towards that side direction when you drag away from the grip. A point marker and line will appear to help guide you, that's the line that you want to stay somewhat close to to keep the stretch enabled. If you move far enough away from both of those lines, stretch mode will be turned off for that drag.

Mirror – you can also create a mirrored copy of an object by using those 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 there and if you snap on to it, it will produce a mirrored copy of your object 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.

Symmetrical editing of control point using edit frame.

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

First there is a new "On srf" object snap that lets you snap a point directly on to a spot on a surface that is under the mouse. In v1 it was only possible to snap on to edges and curves and not directly somewhere in the middle of a surface, but for v2 you can now do that.
On the Object Snap menu (it is a pop-up menu that will show up if you move your mouse over the Object Snap button in the bottom toolbar), there is a new "On surface" checkbox there to allow turning this kind of snapping off or on if it is getting in your way.

Another related area is surface normal snapping – this is an additional kind of straight snap similar to perpendicular or tangent straight snaps, except coming off of a surface.There is a new checkbox option for turning this off under Options / Snaps / Surface normal snapping
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.

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

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

Most of the 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 (for example, drawing a circle by center point, with the first point at the corner of a box and the second point at the midpoint of an edge below that, those points are common to 2 faces of the 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 so that you are facing more towards the face of the box you want to draw on to control which face will be used.

There is a new setting in the moi.ini that can be used to disable surface snap plane alignment:

          [Drawing Aids]

So there are a bunch of subtleties about how snap plane alignment works but generally you should not need to worry too much about it, if you want to align to a surface just snap your points on to it in the 3D view and there you go.

Enhanced stuff:

Display hidden lines: Improvement for hidden point targeting – there is a new checkbox on the View palette for "Display hidden lines" that lets you turn the hidden line view on or off easily. When it is off the object snaps for points that are hidden will not be targeted anymore, in v1 those hidden points would remain as snap targets and could easily get in the way a lot more.

Grid snap: It now can work in combination with object snap on lines or construction lines that are running the same direction as the grid. Previously in v1 object snap would always override grid snap if they were both turned on at the same time.
There is also some similar stuff for making "on srf" object snap work in combination with grid snap at the same time.

If you move your mouse over an axis-aligned plane with both "on srf" object snap and grid snap active at the same time, you'll get a point snapped to the grid but on the surface of the plane. In the 3D view this also works on stuff like the side walls of an axis-aligned box.

For curved surfaces in the 3D view, "on srf" will override grid snap, but by default in the 2D views (Top/Front/Right) onsrf will be disabled for curved surfaces so that it does not get in the way of picking grid points. There is a moi.ini setting for this behavior:

          [Drawing Aids]

There is also another setting for disabling onsrf entirely in all views (including the 3D view) when grid snap is also active:

          [Drawing Aids]

On / On srf snap: There is a new moi.ini setting you can turn on if you want to try only allowing "on" snap to selected objects only (and construction lines) instead of all objects:

          [Drawing Aids]

Also "on" and "onsrf" will not kick in if a straight-snap line is active, which is different than v1 for "on".

Int snap: Int snap now works with distance constraint – if distance constraint is active there will be additional "int" snaps where a circle of that radius intersects nearby curves.

Selection: Improvements for targeting stacked up points and objects – now when you do an object snap on to a spot where there are many stacked up points (for example the corner of a box when viewed from the Top/Front/Right views), the topmost point towards the eye point will be taken. Similarly the topmost curve in a set of stacked up curves will be taken for selection or for "on" snap.

Coordinates input: New relative point placement available on the first pick of a command. Now entering a relative point (example: r6,4) when there is no base point will define an offset distance for the current point. This allows placing the first point of a command (for example the center of a circle) at some offset distance from an existing point.

Move: New "Distance from edge" option in Move command allows moving a point to be at a specified distance away from a line.

Mirror: New "Delete input objects" option for the Mirror command.

Background images: Background images also get all the new edit frame stuff as well, so you can toggle between scaling an image from the corner or from the center by clicking on the scale handles, and set the center of rotation in the same way.

You can now read in GIF format images for background images.

Bug fixes:

Also a variety of minor tweaks and bug fixes.

Beta Aug-1-2008 / Aug-4-2008

New stuff:

Solids++: Updated Solids++ geometry library to latest version. There were a lot of bug fixes for a variety of things, but a lot of changes also brings the possibility of new problems as well. Please let Michael know if you run across things that don't work as well as in the previous version. (Actually Michael is already seeing that there will probably need quite a few tune-ups from this, this beta may be fairly unstable).

I/O: STEP and SAT file format import and export support.

Numeric expressions: Support for typing in numeric expressions for values. It means the ability to type in formulas in any spot that is asking for a distance/radius type number.

So 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.

When 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, cos, etc… Any of the things available to the JavaScript "Math" object are available, like:
sin(PI/4) – Calculates the sin of 45 degrees – all trig functions take radian angles.
random() * 5 + 1 – Calculates a random number between 1 and 6.
sqrt(), pow(), round(), etc…
For the Aug-4 release, added support for expressions as x,y,z point values. There are currently 2 ways this works, if your locale has a decimal point separator that is not a comma, then you can use a comma to separate the expressions for each coordinate, like: 2+2,sin(PI/2),5 Otherwise a second mode you can use is to surround each coordinate with an outside parenthesis, like: (2+2)(5/2)(5) .

Array Dir: There are implemented new options for array dir. The first one is the normal method same as v1. The next option is the "Extent, Count" one, where the 2 points are taken as the full distance and the offset is taken as offset = full_extent / (num_items - 1).
Then the last mode is where you give 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, then move your mouse further to create as many copies as will fit in 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.

Array Curve: The way it works is the point for the first offset distance will be displayed, and you can now grab that point to edit the offset distance by sliding along the curve, rather than only by typing in a distance value.

So this now allows for more interactive type adjustments like this:

Edit frame: There is a new "flat" snap for squishing points flat with the frame. It can be used instead of Align command when handling a control points. The "Flat" snap shows up as a snap point on that vertical or horizontal 1d-scaling indicator line thing.

You should generally avoid flattening things that will double-back on themselves though, like for instance if you flatten a circle, it will actually work but that is kind of a nasty compressed and sort of doubled self-overlapping curve at that point so it isn't good to use it on stuff like that.

Selection: New function to select visible objects. The way it works is that you set up a keyboard shortcut, and put this new script call in for the command:


Then when you push the key that you assigned the shortcut to, it will select the visible objects. These are all the objects that have any part of them visibly displayed on any viewport that is showing – these are all objects that would have been accessible by a click type selection.

You'll probably want to have the "Split" view configuration active when you do this, so that multiple view angles will be used. If you have only a single viewport active (like the view control on the bottom bar set to "Top" for example), then only the visible objects in that particular view will be selected.

Enhanced stuff:

Unit display: Feet & inches type units display – you can now pick "Feet & inches" as a unit system under Options / Unit system, which will set up units for US architectural style stuff, like 26' 3".

Also you can specify the number of decimal places to display in the input fields under Options / General / Decimal display. Actually there was the same function in v1, but it was labeled "Decimal places to display:", and took in a number value.

Radius vs. Diameter: Currently you can switch all radial type commands to use a diameter value by clicking on the "Radius" label, there is a kind of little "cycle" arrow on it. Normally it defaults to Radius, this change allows you to set the default to Diameter instead.

A new entry under the [Commands] section:


allow you to switch that to y to make it default to Diameter for all radial type commands (such as Circle, Sphere, Cylinder, Cone, also one variety of Arc) that use radius/diameter options.

The new UseDiameterDefault option will get added into the moi.ini file the first time you run a radius/diameter type command. If you open up the moi.ini file before running such a command it won't be in there yet, but you can just add it in as a new line in that case.

Mesh export: Fixed the problem where selection were lost when you export to a mesh file format. Now, selection is restored after the export is complete.

Arc: Now, MoI leaves any 3 point arc alone (not replace its control points by a deformable cubic version) regardless of the angle of the arc when you turn on control points.

Join: Join has been updated to use an adaptive tolerance, instead of a fixed tolerance for surface joining. The way it works is it examines the bounding box around the objects to be joined, and uses a tolerance scaled by the bounding box's size.
This helps make the joining tolerance adapt to the size of objects better, and should help it work better on things like large sized objects. This is kind of experimental right now, if it seems to work well then I'll gradually move other functions over to use this kind of adaptive tolerance as well.

Import: Also there is an improvement to IGES import for the automatic joining of surfaces into solids – the importer will now only attempt to join together pieces that are on the same IGES "level" (the IGES equivalent of a layer). That should help when importing files which contain many parts in them.

Tab key: Updated keyboard handling of Tab key – you can now use the Tab key to set focus on to a numeric input box (either the first one for a command if the command options have one, or otherwise the x/y/z control). Normally you don't need to use this since if you want to enter a number, you can just type that number and your keystroke and focus will automatically go there. But if you want to type an expression like sin(PI/2), etc…, then you can use Tab to put focus there first before typing.

Bug fixes:

Also a variety of minor tweaks and bug fixes.

Beta Aug-1-2008 – there was a weird bug where the very first time that you did a boolean (and fillet, join…) in a session it would be messed up but then it would work if you repeated it.

Beta Sep-21-2008

New stuff:

Export: Two new formats:
FBX format export – it looks like this will be the preferred format for moving data from MoI into 3DS Max.
SketchUP SKP format export.

CPlane: New tool (under the View palette) for setting the drawing plane. This allows you to align the drawing plane to more easily work on objects that are not aligned to the normal world axes. (Note that it still is not quite completely finished yet.)

Some notes:
CPlane can be oriented to an object and you can set the origin point.
When you place its origin point it will try to automatically align itself to the object you snapped on to. Hopefully for most situations that will be the orientation you were looking for already and you can be done right there.
But after the initial placement you can also click and drag on the axis lines to get a kind of "align to 3 points manually" type of style as well. After you have placed one axis, it will behave a bit differently for the 2nd axis drag – the first axis that you dragged will stay locked in place and the next pick will rotate about that first locked axis. This can be a bit strange if you are just trying to play around with dragging axes around because every other drag behaves a bit differently, but it should make sense I think if you are focused on placing them by 2 picks after placing the origin.
A shortcut for reset cplane is to either right-click or left-click a second time on the View / CPlane button.
When you use "Apply to all views", then the cplane will become global and also the Top/Front/Right views will shift to be plan views of the cplane. That's also when your typed in coordinates will use cplane coordinates as well. The Top/Front/Right view labels will show like Top (cplane) while this is active, and also the x,y,z point coordinate readout on the bottom toolbar will show a "c" in front the point coordinates to indicate they are cplane coordinates and not world coordinates that you looking at there.
If you uncheck "Apply to all views", then the cplane will only be applied to the 3D viewport and the Top/Front/Right views will remain viewing in the world axis directions and typed in coordinates will not be changed.

You can reset the cplane back to the default world plane with this script as well:


You can also set up a key to set the global construction plane to be the front or right plane respectively with this scripts:

          script:moi.view.setCPlane( moi.vectorMath.createFrontFrame() );
          script:moi.view.setCPlane( moi.vectorMath.createRightFrame() );

Drag&Drop: Added Drag and Drop support – you can now drag and drop one or more files from Windows Explorer on to the MoI window.
After you drop a File or Files on the MoI window, There will be an options dialog displayed:

If you use "Open file" the current file will be closed and replaced by the new content. If you use "Merge file", then any current data will stay in place and the dropped files will be added to it the same as the File/Import command. If you have an empty scene then it will not prompt you and will do an Open.
If you want to open everything in separate MoI program instances, then do a right-click on the files in Windows Explorer and pick "Open" or "Open with", that should open them in that way.

Circle/Arc: It is now possible to get a circle or arc tangent to 3 curves and also tangent to 2 curves through an existing point, in addition to V1's method of tangent to 2 curves of a specified radius.

View: A couple of new options…
New Rotation style option under – Options / View / Rotate/Pan/Zoom options / Rotation style. Can be switched between Rotate around world z axis, or Free rotation. If you prefer a more "object focused" style of rotation then try switching this to "Free rotation" to see if that is more comfortable for you.

Options / View / Show view controls – can be unchecked to disable Zoom/Pan/Rotate controls at the bottom of viewports.

Options / View / 3D view projection – allows switching the 3D view between Perspective or Parallel projection modes.

Link ortho views option under – Options / View / Rotate/Pan/Zoom options – when enabled the ortho views will be synchronized with each other when you zoom or pan so that they all stay focused on the same spot.

Bckg Image: New Align tool for background images to make it easier to do image registration to line up a line in an image with a line in the model:

It does a combination of move, rotate, and scale to make the image aligned and sized to the right amount to align with that geometry in a way that allow you to pick 4 points to do image registration – you pick a base point and reference point on the image, then pick a target base point and target reference point snapped on to your geometry.

Selection: New methods on a BRep objects getJoinedEdges(), getNakedEdges() and getSeamEdges() which can be used to retrieve an object list of those particular kinds of edges of an object. This now enables using this keyboard shortcut to highlight all edges that are not joined so that can help to show you what parts of an object are the ones stopping it from being a closed solid. The way it works (e.g. to make naked edges highlighted) is that you set up a keyboard shortcut, and put this new script call in for the command:

          script:var gd = moi.geometryDatabase; gd.deselectAll(); var breps = gd.getObjects().getBreps(); for ( var i = 0; i < breps.length; ++i ) breps.item(i).getNakedEdges().setProperty( 'selected', true );

Enhanced stuff:

Text: Updated the Text command to show a dynamic wireframe preview of the 3D text as you type or change options.

Extrude: Updated face extrusion – if extruding a single surface then the surface is consumed instead of keeping it around as a separate object in addition to the generated solid.
Also fixed a bug with face extrusion where seam edges were being extruded as well when they shouldn't be.

IGES Import: Option for controlling wither IGES file import will try to join surfaces into solids – Options / Import/Export / IGES options / Join surfaces on import.

AI Import: AI import tuneup – unit system scale should now be preserved when importing an AI file if you have set your unit system to be either inches, cm, or mm before you import the file. Otherwise it is scaled by 1/20 from the native AI units to make it just a reasonable size.

Network Srf: Updated to use a relative tolerance so it can work better with larger sized input curves.

Cline: Made the CLine menu launcher tag be activated by a right-click in addition to the click-and-hold method.

Axis label: New option under – Options / View / Axis labels – allows you to change which axis is labled as x, y, and z. If you are more comfortable working in a y-up and z-forward type system, you can set it up like that as described here.

Axis Icon: New option in the moi.ini file – new entry under the [View] section controls the size of the spokes of the optional axis icon that can be displayed in the lower-left corner of a viewport.


Shortcuts: New option in the moi.ini file – new entry under the [Commands] section. If you change this to DoNotRepeatShortcutKeys=y then commands activated by keyboard shortcuts will not be repeated by right-click, instead the last non-keyboard one done before that will be repeated.


Bug fixes:

Fixed some bugs with tab key handling.

Some other various minor bug fixes.

Beta Nov-21-2008

New stuff:

Object properties panel: This is a new panel that shows up in the upper-right area of the window, that gives some information about the selected objects, and lets you change different object properties.

This panel shows up when you are in "Selection mode", which is before you are running a command.

The current properties shown are object name, object type, and object size. Other stuff such as object color will be coming along in the next betas.

To set the object name, move your mouse over that part of the panel and you will see it highlight, then click to pop up a name edit box. At the moment the name is not used for much, it should become more useful when some more stuff is added for the next betas.

The object type will tell you some basic information about the object, for example if your object is a fully closed solid it will say "Solid" there. The type is 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 selected will be shown there as well.

The object's bounding box size (in world coordinates, or in cplane coordinates if a custom cplane is currently set) is displayed as well, and you can click it to edit the size. 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 to edit the size in a uniform way or whether to allow it to stretch in only one direction when a value is edited.

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

	      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 a relative adjustment. For example if you enter in radius: +5 it will add 5 to the current radius.

A demo of editing sizes:

I/O: New moi.ini setting for excluding unwanted file types from the file dialog:



Added option to rotate models from SAT, IGES, and STEP imports, by 90 degrees from a y-up orientation to a z-up one:

           [NURBS Import]

Updated .eps format import to handle some additional flavors of .eps data.



Added curve export for SketchUp .skp format, which will break curves up into polylines to write to the .skp file. To avoid creating duplicate curves on top of surface edges, curves are not written by default if you do a regular Save of a model that contains both surfaces and curves. Curves will be written if you save a model that contains only curves in it, or if you select them and use File / Export (which writes out only the selected objects), rather than Save or Save As.

Mesh Export: Improved quad generation for surfaces of revolution – previously a few quads along the seam of a revolved surface could get an extra refined point in them, making them into n-gons instead of quads. Those should now come out as all quads now instead.

IGES Export: Updated IGES export to export lines, arcs, and circles as analytic entities instead of as generic spline curve entities. Analytic export is enabled by default and can be disabled by a moi.ini setting:

           [NURBS Export]

Enhanced stuff:


– New option for placing the side pane to the right or left under Options / General.

– Make right-click on the Save button in the bottom command bar do a "Save As".

– Change how the OK / Cancel buttons are displayed, to avoid a bug in IE8 beta 2 – this version of MoI will now run fine with IE8 beta 2 installed.


New unit system labels (cm, mm, in, ft, etc…) show up after most numeric coordinate input fields if you have set a unit system.

Updated Feet & Inches type unit input so that you can leave off the final inch " mark, so for example you can type in 5'2 for 5 feet 2 inches.


Some changes in snapping behavior:

By default now surface normal straight snap is disabled in ortho views unless the normal is perpendicular to the view direction. This helps avoid unintentional tracking along surface normal lines when trying to draw a planar curve in an ortho view. The old behavior can be restored by changing this setting in the moi.ini file:

	   [Drawing Aids]

By default now onsrf snap is disabled in ortho views. Since surfaces can occupy a larger area of the screen, having onsrf object snap on in ortho views could tend to get in the way when you were trying to draw a number of planar curves on the construction plane. The old behavior can be restored by changing this setting in the moi.ini file:

	   [Drawing Aids]

Numeric expression: Update numeric expression handling – trig functions (tan, sin, cos, etc…) for typed-in expressions now take input in degrees rather than in radians. Radian input is still available by using an underscore version like _tan(PI).

Mirror: Performance improvement to Transform / Mirror – quite a bunch of extra work on UV curves was eliminated from mirroring, so it is several times faster on complex models than previously. There is still some work that I will be able to do to improve the speed of transformations in general, but this is a pretty good step for Mirror.

Fillet: Updated filleter to tolerate partial failures. So for example if there was a problem building one corner or one fillet, the whole operation will no longer fail and instead give back the parts that it was able to calculate.

Booleans: A couple of fixes for boolean union – there is a new process used for doing a union of a larger batch of shapes, like a whole bunch of smaller pieces being unioned to one larger main piece which should handle those situations much better. Also when using Union to glue together adjacent surfaces same as Join there were situations where some edges would not get joined, this is now fixed.

Extrude: Tune up for the default extrusion direction on non-planar objects. Previously when extruding a non-planar curve it would just default to the world z direction. Now instead it will do a best fit plane of the object and pick the closest axis of the construction plane to that plane normal. So if you have an object that is relatively close to being planar but not quite, it should now default to extrude in a more expected direction.

Text: Changed how height is applied for the Draw Solid / Text command – the height will now control the "ascent" height of the text, from the baseline to the top of an upper-case letter, rather than the whole text cell including descenders like it did previously.

Shell: Update shell to merge coplanar faces when thickening a surface model into a solid. Previously a set of ruled surfaces would be created, making one face per edge, even when many edges were on the same plane..

Bug fixes:

FBX export bug fixes – fixed welded export which was totally messed up, and also fix a bug where writing to a filename that had non-ascii characters in it would not work right.

SketchUp .skp export bug fixes – export unit system (cm,mm,etc..) scale properly, and fix a problem where SketchUp does not like to have adjacent points of a single polygon placed too close to one another. This should fix all the reported problems with SketchUp export, please let me know if you run into any other issues.

Fixed a bug where certain trimmed spheres could get an incorrect display or export mesh.

Fix for small cracks in generated meshes in certain circumstances with almost but not quite matching UV grid alignments (reported in the forum).

Fix a regression where the orientation / seam picker was broken in the last beta.

Fix PDF import bug where PDF files generated by AutoCAD were not imported properly.

Fixed reading units settings from Rhino v4 .3dm files .

Also quite a number of additional smaller bug fixes, stuff for some construction plane issues, tab key handling, etc…

Beta Jan-19-2009

New stuff:

Mesh Export: Major overhaul of mesh exporting to greatly increase mesh generation speed and to make use of multiple CPU cores. Some other notes:

Previously the meshing dialog would be frozen when it first appeared and you could only adjust settings after the initial mesh was finished being calculated. This is no longer the case, you can adjust settings and the current mesh job will automatically be canceled and a new job started with your new settings.

Also I've removed the "Update mesh" button, instead now any changes you make will be applied automatically.

There is a new progress bar for the meshing job in progress, which is shown in the upper-right area of the main window underneath where the points and polygon count readouts are at.

There are now options in moi.ini for setting the default values used for meshing:

	   [Mesh Export]

CPlane: There is now a new "Orient ortho views" option that you can un-check when setting up a cplane, which will leave the ortho views in their default world orientations but make the changed cplane available inside of them. This can help if you are tracing an image in the top view and you want the view to remain locked down in its regular viewing direction, but still change the cplane to an angle to draw over a particular angled part of the image.

Dynamic feedback: The speed improvement on transforms (such as dragging, mirroring, arraying) works by a special "proxy" being used when the objects involved have more than 50 faces. Instead of creating a completely new object, the proxy will re-use the existing object and just draw it in a new location which is much faster than making a full copy if the object is complex. This allows for much smoother and faster dynamic feedback when moving the mouse around during transform operations on large objects. The 50 face threshold limit can be changed in moi.ini :


A proxy is not used for smaller objects so that you can get more history feedback on small objects, when a proxy is used any history update will not be applied until the transform is complete.


You can now open a file as a "Template file" by using a right-click 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.

New option to specify a startup template under Options / General / Template file. This allows you to create a file set up with the views and any template objects or other file properties that you want in it and have that file automatically opened when you start up MoI or do File/New.

Camera: Added some script functions to access the camera point from a script, it is now possible to run this script on a keyboard shortcut to copy the camera and target points to the clipboard so you can find out where they are to set them in another program:

	   script:var v = moi.ui.mainWindow.viewpanel.getViewport('3D'); moi.copyTextToClipboard( 'Camera=' + v.cameraPt.toString() + '\r\nTarget=' + v.targetPt.toString() );

Enhanced stuff:

Edit frame:

Enabled making copies while in edit frame wheel mode, by holding down Ctrl before dragging the mouse.

Enable grabbing an object snap point in wheel mode, rather than only grabbing on the wheel – this allows for grabbing a reference point to do an accurate rotation relative to some particular point on an object, which you previously had to use the Transform/Rotate command to do, like this:

Another example using a reference point and also Ctrl to make copies:

Deselection: Made Ctrl+click be a "prefer deselect" mode. There is normally a preference that targets unselected curves in an area where many curves are nearby when you click, to make it easier to select them. Now when you hold down the Ctrl key this will be inverted to prefer targeting selected curves. This makes it easier to deselect an already selected curve in a crowded area when Ctrl is down. Additionally if Ctrl is down then a drill-in will not be done when clicking on an already selected solid so that you can deselect a solid with a single ctrl+click.

Snap: Update grid snap menu – added grid size and snap size entries to the mini grid snap menu that pops up above the grid snap button.

Mirror: Updated mirror command so that objects that are not solids will not have their normals flipped after they are mirrored which would previously happen.

Graphics: Updated line display – now when viewing a line in a viewport that is looking directly point-on to it, the line will show up as a small dot rather than being completely invisible.

NURBS Export: Updated NURBS export to SAT, IGES, and STEP formats - turned off analytic entites export by default and fixed some bugs in analytic export. There are now 2 settings to control enabling analytic export in the moi.ini file, one for curves and one for surfaces:

	   [NURBS Export]

LWO Export:

Promoted LWO scale to meters setting to have an entry in the Options dialog, under Options / Import/Export / LWO .

Added option for LWO export to use either Modo's or LightWave's coordinate system for vertex normals. Unfortunately each of these programs uses a different coordinate system for vertex normals. Which one is used can now be set in moi.ini under:


The default is Modo, to set it to LightWave style switch it to:


FBX Export: Updated the FBX toolkit library to the latest 2009.3 version.

I/O: Open as Read-only option. You can enable a "read only" checkbox for the file open dialog by a setting in the moi.ini file:


Bug fixes:

Also a variety of smaller bug fixes…

Beta Apr-12-2009

New stuff:

Scene Browser: The biggest thing is the new scene browser functionality – the first batch of object organization tools! It helps to work with batches of objects more easily.

You can open up the browser pane by clicking the new button at the bottom of the side pane (next to the Help button), and you can also switch the browser to be a section inside of the side pane rather than a separate panel, by going to Options / General / Scene browser position.

Current sections that work are:

Objects – for dealing with objects that have been assigned a name. Objects allows you to work on named objects. You can assign a name to a selected object (or set of objects) by clicking on the name part of the properties panel in the upper-right area of the main window, which shows up when you are in selection mode before running a command.

Styles – for organizing objects by grouping them into different
colored categories. Styles allows you to work on all objects that have been assigned a particular style. Styles in general are also a new thing. Currently to edit the styles list you need to select an object, then click on the new Style entry in the properties panel and there is an "Edit styles" button available on that flyout menu.

Types – for dealing with all objects of a certain type, like all curves,
or all solids. Types section allows you to work on all objects of a particular type, like hiding all curves, selecting all solids, etc…

This is still a Work-In-Progress but there is a lot of stuff that is functional, some details on what actions are available are in this post.

Some areas that are not finished quite yet are having Styles be exported as material assignments to polygon files such as OBJ or LWO. That will be coming in another upcoming beta.

CommandLine: Enable mini command-line entry by typing in a command name into the XYZ coordinate entry box. Type <tab>, then the command name, then <enter> as an alternate way to execute a command or script file.

Scripting: added a /showwindow command-line parameter that can be passed to moi.exe . If this is specified then the main window will be displayed when processing a script when in batch file operation.

Planar mode: Add a new "planar mode" for the pointpicker which can be activated by using a script on a keyboard shortcut:

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

When triggered while a point is being picked, this will cause the 3D view to keep the points to be on a plane through the first point, making things like curve drawing work the same in the 3D view as it does in an ortho view.

Units: Enable numeric entry units conversion – you can now use a units designator when entering numeric values, either using feet and inches style such as 1'2" or by placing a units label at the end such as 5cm (one of: mm, cm, m, km, in, ft, mi). This will convert from the given units into the current unit system. So for example if you have your units set to centimeters, you can enter a value of 1' and it will convert it into 30.48 centimeters for you. This only has an effect if the current unit system is set to something other than "no units".

Added a "Show trailing zeros" option under Options / General. This option controls whether numeric values will show trailing zeros. For example with 3 decimal places set, whether a number is displayed as 5.4 or 5.400

Navigation: Add a new "First person" view rotation style under Options > View > Rotate/Pan/Zoom options > Rotation style. This rotation style keeps the camera point in the same location and pivots the target point around the camera. This style is similar to how a "First person shooter" type game works, and may be helpful for doing a more "walk through" kind of navigation rather than a "focused on specific object" type navigation which the other styles are oriented towards.

Updated scroll wheel handling – avoid zooming a viewport in or out with the scroll wheel if the mouse is over a control that has a scroll bar.

Flip: Added a "Flip" command which can be used to reverse the orientation of open surfaces. Currently there is no button for this but it can be launched by setting it on a keyboard shortcut or by using the new typed-in command launcher.

Fillet: Update Filleting to handle small radius values better. Previously if you had a small radius value that approached the fitting tolerance value it would give bad results. Now the tolerance for the fillet operation is adjusted for small radius values to make sure it is accurate enough relative to the radius.

Add new "Constant distance" option for Fillet under the Shape: dropdown.

Offset: Major improvement for surface offsetting – previously the offsetter would only do a few levels of refinement and if that did not produce an accurate enough result it would bail out. This caused failures for surfaces that were somewhat larger and more curvy. This is now tuned up to allow for much more levels of refinement so many surface offsets that would previously fail will now work. Also previously offsetting of any general surface (other than blend/fillet surfaces) with a degree higher than 3 would fail, this is also fixed now.

Tolerance: Update Offset and Shell to use a relative tolerance factor for better handling of objects that are large in unit size.

Update Booleans to use relative tolerance so that objects of a large scale will work better.

Mesh: Make the mesh dialog work with auto-focus, so typing numeric characters puts values into the Angle field, and tab can be used to move to different numeric fields in the dialog.

Make Enter work as a shortcut for OK with the mesh dialog.

Performance: Made deleting faces faster, if a face was deleted that resulted in several disconnected parts and the model had more than about 1000 surfaces, it could take quite a while for the delete function to finish. This will now be a lot faster for models with many surfaces.

Bckg image: Updated background images so they are scaled along with geometry if the unit system changes and scaling is enabled on unit system changes.

Pan: Add moi.ini option to disable auto-pan mode:



Updated SKP export – set flags on edges properly so that silhouettes are displayed in SketchUp.

Updated SKP export – export curves from MoI into SKP as "Curve" entities (a connected polyline) rather than only as individual line segments which was done previously.

Updated AI import – if after reading the whole AI file there were no objects found but there were some discarded paths, make another pass through the file and use those discarded paths. This helps to bring over AI files saved from Photoshop.

Updated AI import – fix a bug where rectangles with negative width or height values were not read in.

Expressions: Add support for typing in "relative expressions" – when entering a numeric expression into an edit field that has been previously initialized to some other value, you can prefix the expression with one of these symbols: + -- * / to alter the existing value in the control 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. This now works in any numeric input control.

Update numeric text entry expressions – add rad() and deg() functions.
rad(x) takes a parameter in degrees and converts it to radians.
deg(x) takes a parameter in radians and converts it to degrees.

UI: Updated Italian language translation now included with this beta.

Bug fixes:

Fixed a UI bug where menu flyouts would not close if another application was clicked on while the flyout was open.

Fix a bug where Ctrl+M could not be used as a shortcut key since it was interpreted as an Enter keystroke instead.

Fixed a bug in chamfering curves where it did not work properly if the curves were located around 10000 units away from the origin.

Several fixes for meshing problems reported on the forum.

Fixed a bug where the Extend command would not work with small curves, it would previously only extend to a maximum of 20 times the curve's length.

Fix a bug with the prompts not in proper order with the Arc3Pt command.

Fix a bug where extrusion could cause a crash if any of the curves involved had degenerate segments.

Some other various small bug fixes.

Beta Jun-23-2009


Generally, a lot of progress on the Scene browser and Styles for this build.

Probably the biggest thing is that now style assignments are written as materials to OBJ and LWO files, and also object names too. This should help in several ways to make it easier to export data to rendering programs and have it all set up.

New stuff:

Lock/unlock functionality: Objects can be locked by holding down Ctrl in the scene browser when clicking on an eye (it will turn to a small lock instead), or by using the new Edit/Lock button in the side pane.

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 points to locked objects can be controlled by a new option in 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 by the switch with new options under Options > View > Locked objects use alternate color. Uncheck the checkbox to avoid color switching, or click the swatch to adjust the color.

The new Lock button in the Edit palette in the side pane 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 show all current locked objects and allow you to select just a few of them to unlock. Then when you hit Done or right-click, the ones you did not pick will go back to their previous state.

Merge: Added new Merge command. There is no button for this but it can be launched by typing in the command name or assigning it to a shortcut key. Currently this can merge together edge that are tangent where they touch each other into longer combined edges.

Scripting: Added .getStartPt() and .getEndPt() script methods on a curve so a script can retreive the starting and ending points of a curve.

Added a .getLength() method to curves so scripts can determine the arc length of a curve. For example this script will copy the length of the selected curves to the clipboard:

	   script:var crvs = moi.geometryDatabase.getSelectedObjects().getCurves(); var len = 0.0; for ( var i = 0; i < crvs.length; ++i ) len += crvs.item(i).getLength(); moi.copyTextToClipboard( len );

…or allow for continuously displaying the length of the curve that you are currently drawing.

Styles: Update generated sub-object styles – newly created sub-objects of a solid (for example fillet surfaces) will now get assigned the style of the parent solid rather than getting the active style applied to them.

Updated how styles are assigned to generated objects. Generated objects are objects that are created from input curves, for example an extrusion or sweep. By default these objects will now inherit their styles from their input curves. So for example if you have a curve that has been assigned Style = Red, when you extrude it, you will get a solid that is also assigned Style = Red. This can be changed so that instead of inheriting the input curve's styles, the active style will be applied to the generated objects instead. To change this, switch this setting in moi.ini:


Or it can be toggled back and forth with a keyboard shortcut:

	   script:moi.geometryDatabase.generatedObjectsInheritStyle = !moi.geometryDatabase.generatedObjectsInheritStyle;

Updated assignment of styles by clicking on a swatch. Now if all objects currently assigned to a style are hidden or locked, then when assigning objects to that style by clicking on a scene browser swatch, those objects will be hidden or locked so that the style retains the same status as it previously had. This should make this part of assigning objects to existing styles feel a bit more like how layers usually work.

Make styles work properly with Copy/Paste – previously copying between 2 instances of MoI would not bring styles back and forth which is now fixed, and also copying between MoI and Rhino will now only transfer the styles that are used by the objects being copied rather than the full style table.

Scene browser: Added a new "Opposite" configuration option for the scene browser, under Options > General > Scene browser position

Updated the visuals for the scene browser section headers.

Updated scene browser selection action (clicking on the text of an entry in the scene browser). The selection action will only target shown objects and skip hidden ones if you hold down shift. This can be reversed so that the default is to skip hidden ones by this setting in moi.ini:

	   [Scene Browser]

Added a new tools menu on the Styles scene browser item, so that it is possible to access the "Add new style" or "Edit styles" functions more easily.


Updated File/Export to only write out styles that are used by the selected objects that are being exported rather than all styles.

Updated OBJ export – export styles and object names to OBJ files.

Styles become material assignments, with the colors stored in the associated .mtl file (the creation of the companion .mtl file can be disabled under Options > Import/Export > OBJ options / Write .mtl file).

Object names in Moi become the names used for the corresponding mesh object in the OBJ file, and if you have several objects with the same name assigned, those will be merged together into a one mesh object in the OBJ file.

Updated LWO export – similar to the above, styles in MoI become surface assignments in the LWO file, and object names will be transferred as the labels for mesh layers. If you have several objects of the same name, they will be combined together into one mesh layer with that name.

Added option to choose between either Modo or LightWave style vertex normals when writing a LWO file, under Options > Import/Export > LWO options > Vertex normals style.

Updated IGES import/export to support transfer of IGES levels back and forth to MoI styles. This also applies in some cases to SAT and STEP format as well.

Updated 3DM export to store object names so they are accessible to Rhino in saved 3DM files.

Updated 3DM import to enable opening of basic geometry from Rhino v5 files.

Edit/Hide: Updated the Edit/Hide button to simplify basic use and provide an additional Isolate function.

To hide objects, select them and left-click Hide.

To show all objects, click Hide with no selection.

To isolate the current selection (hide everything else other than what is selected), right-click on Edit/Hide. This will remember the state of objects right before the isolate, and when you right-click on the button a second time the previous state will be restored.

To show only a subset of the hidden objects (rather than showing all), you can hold down Ctrl and click on the Edit/Hide button. This will temporarily show all hidden objects and allow you to select some of them. Then when you hit Done or right-click, only those selected objects will be shown and the other ones you did not select will go back to being hidden. This is called "Show subset".

Trim: Updated Trim so that you can use the Del key to act the same as right-click or Done to exit after picking pieces to discard.

Array: Updated ArrayCurve with a new "Align to surface" option. If the curve is on a surface you can push this button and pick the surface, and the surface normals will be used to keep the object oriented to the surface normal as it travels along the curve path. See

Join: Updated curve joining tolerance to work the same as surface edge joining tolerance.

Rotate: Updated Rotate, Rotate Axis, and Edit frame wheel mode rotate to have an additional radial intersection snap that creates an implicit circle through the first picked reference point so that you can more easily rotate an object to the point that it collides with other nearby geometry. For example:

Boolean: Updated Boolean difference – when selecting cutting objects there is a new "Keep objects" checkbox which you can set if you want the cutting objects to remain in the model rather than being deleted.

Join: Updated curve joining tolerance to work the same as surface edge joining tolerance.

Offset: Added a new "cap ends" option that is now available when offsetting an open curve. Example:

Edit/Add pt: Updated Edit/Add pt to enable mid point snaps, either when adding a point to a control point hull or when adding knots to a line segment.

History: Update object properties with history recalculations – make object properties like name and style assignment persist through history updates. Previously when you did a history update any names or styles that were assigned to the object being updated would be lost.

Updated history – suppress saving history data on a few commands (Join, Separate) that don't work with history updating anyway and can possibly bloat the file size up by a large amount.

Added a script function that can be used to remove history data from selected objects:

	   script:moi.geometryDatabase.getSelectedObjects().callMethod( 'deleteHistoryData' );

Undo: Selection undo has been extended to also work with hiding, locking, and all scene browser actions. So for example if you did something with the scene browser and realize that you have shown or selected something that you don't want, hit undo right then and you will go back to the previous lock, hide, and selection state. This only works for one action, so that it does not clog up the regular geometry undo.

Undo now works for undoing object property changes, like editing a name or a style of an object.

Undo now works to undo edits to the style table with the Edit styles dialog (after the dialog has been closed). Previously style assignments could get messed up when doing an object undo after editing styles.

Selection: Updated object selection, so that solids that have their faces hidden and only edges showing can now be selected, previously if faces of a solid were hidden, the solid would not select when you clicked on edges.

Added in selection of named objects by typing the object name in the coordinate entry box, hit the Tab key to place focus in that field. Wildcards can also be used, so for example if you have objects named obj1, obj2, and obj3, you can select them all by typing in obj* .

CPlane: Added .cameraFrame and .targetFrame scriptable properties to viewports, to enable being able to set the construction plane to the view's viewplane with a keyboard shortcut script like this:

	   script:moi.view.setCPlane( moi.ui.mainWindow.viewpanel.getViewport('3D').targetFrame );

Mesh: Added an option in moi.ini to persist the last used mesh settings between sessions:

	   [Mesh Export]

Display: Added a scriptable option for drawing hidden lines with no shading. This can be used in combination with the view capture script for making a different style capture:

	   script:var v = moi.ui.getActiveViewport(); if ( v != null ) { moi.view.lineWidth = 4; moi.view.shadeMode = 'HiddenLineWireframe'; v.renderToClipboard( 2560, 2560 ); moi.view.lineWidth = 1; moi.view.shadeMode = 'Shaded'; }

Or it can be toggled on or off during regular working with this:

	   script:moi.view.shadeMode = (moi.view.shadeMode == 'HiddenLineWireframe' ? 'Shaded' : 'HiddenLineWireframe');

For an example see:

Updated the rendering of display meshes to make a better quality display with less z-fighting for objects that are a fairly large distance away from the origin.

Reduced initial working set by about 10MB by purging stuff that was only used at startup but not for regular running after startup.

Implemented curve transform proxies – this speeds up the dynamic mouse feedback for transforming a large number of curves.

Viewport manipulation: Added a checkbox option for switching rotate to middle mouse button like SketchUp, under Options > View > Rotate/Pan/Zoom options > Rotate with middle button checkbox.

Updated scroll wheel zoom – it is now possible to hold down Ctrl while spinning the scroll wheel to make it go in a smaller increment, and also it will not slide the target point forward in this mode. This can help if you are trying to zoom in close to a small sized detail.

Numeric input: Added an option in moi.ini to disable the numeric input flyouts (that normally pop up when clicking on a numeric field):


Update Tab to work when a numeric flyout is open. Previously if a flyout was open (for example if you have clicked on the Angle field in the Meshing options dialog), you coudl type in numbers or push enter but Tab would not do anything - now Tab can be used in this situation with the flyout open to move to the next field, committing any value if you had entered something.

Shortcuts: Updated keyboard shortcuts so that number keys or the minus (-) key can be used as keyboard shortcuts if you wish. If you set them as a keyboard shortcut, then your shortcut will be executed when those keys are typed rather than the numbers automatically going to the first available numeric input field.

Bug fixes:

Received and integrated bug fixes to the geometry library which fix these surface/surface intersection bugs reported on the forum by PaQ and Ella:
The boolean failures reported in these posts are fixed now.

Fixed a crash in curve trimming in a case with trimming a closed curve with a very small sized cutting object.

Fixed a couple different meshing crashes.

Also various other small bug fixes and tune ups.

Beta Aug-8-2009


The major news for this release is that styles are wrapped up – shaded surfaces will now display in their style colors. Also there is a new lighting engine for the display which gives various options for controlling the shaded appearance and helps to provide more illumination on objects, reducing dark areas.

New stuff:

Display: Updated display so that faces are shown using style colors.

Implemented new lighting engine.

Here's an example of the new default lighting:

There is a lot more distribution of the illumination in this new system which helps to avoid overly dark areas.

Here's a comparison with the previous lighting system (which is still available with the Lighting style: Key light only option):

Also if you want to go brighter yet, try the Lighting style: Key + more fill option which looks like this:

You can control these options including setting custom levels for the key and fill lights using sliders, by the new settings under Options > View > Lighting options.

There's an example video here.

You can also enable some options such as specular highlights and a metallic style look.

Here's an example with specular highlights enabled:

And here are some variations with metallic and specular together:

Point: Updated display of points to use style color.

Edge & Face: Added an option to override surface or edge colors to use a specific fixed color instead of using the style color. These options are under Options > View > Surface color: and Edge color:

Moi.ini: Added a button for editing the moi.ini file, under Options > General > Edit .ini file. When you pick this you will be prompted if you want to exit MoI and launch the moi.ini file in whatever program is set in Windows to edit files with the .ini file extension, which is Notepad by default. Also in the prompt dialog the path to moi.ini file that is currently being used is shown.

Line: Added a "both sides" option for the Line command to make it a bit easier to draw a line starting from the midpoint. Only a geek will use it, others know how clines works to do that :)

Conic: Added a new Conic command under Draw curve > More > Conic , which allows for creating a conic section curve (either a parabola, hyperbola, or ellipse segment) from a 3 point frame plus a "through point" or rho value. For some examples see:

ExplodeMove: Added a new ExplodeMove command which can be set up on a keyboard shortcut to move objects away from a common center point to move them apart from one another. Some examples:

BoundingBox: Added a new BoundingBox command which can be set up on a keyboard shortcut, which will create a bounding box (either a 3D solid box, or a 2D rectangle curve) framed around the current selection.

BoundingBoxCenter: Added a new BoundingBoxCenter command which can be set up on a keyboard shortcut, which will create a point object to mark the center of the bounding box framed around the current selection.


Got a bug fix for writing surface colors to STEP files.

Updated IGES and STEP file handling to support reading and writing object names.

Updated SAT export – closed surfaces (for example a cylinder) are now split into 2 joined half pieces when exporting to SAT format to improve data transfer into Revit. This splitting can be disabled by a setting in moi.ini:


Added an option to enable or disable combining meshes for objects of the same name, for OBJ and LWO export. This is under Options > Import/Export > Combine same named objects.

Updated LWO export with "LightWave style" vertex normals – reversed the normals for this case since that appears to be what LightWave expects in their most recent version.

Added an option for OBJ export to disable writing material assignments, which will create output the same as MoI v1. This is under Options > Import/Export > OBJ options > Write material assignments.

For OBJ export, replace spaces in object names with underscores, since spaces are often not supported by OBJ readers. Spaces can be enabled by a setting in moi.ini:

	   [OBJ Export]

Added some options in moi.ini for OBJ export, for using the relative style index method, and for adjusting the number of decimal places:

	   [OBJ Export]

Style: Added an option in moi.ini for style handling to prevent sub-objects from keeping their own distinct styles during operations such as booleans.


When set to =y, operations such as booleans will have their result be all the same style rather than having the styles of each original face persist in the combined object.

Scripting: Added a script method moi.ui.alert() so a script can more easily pop up a simple message box.

Browser: Added a "Points" entry to the scene browser type section to allow operations on point objects (this applies to individual point objects, not to edit points that are turned on by Edit/Show pts).

Mesh: Updated mesher – enabled better uv quad alignment on circular joined parts at high densities.

Text: Updated the Text command to be oriented better for reversed (Back/Left/Bottom) views.

CPlane: Updated cplane triad picker so that the lines are displayed at the same size on the screen instead of being a fixed size in world units. This helps to prevent the orientation picker from getting small in size when zoomed out.

Other: Reworked program cleanup if moi.exe is terminated abruptly using Windows Task Manager, now companion processes should also exit automatically in this situation.

CommandLine: Added some settings in moi.ini for some additional ways to control keyboard behavior:


CommandLineTypeTextEntry set to =y will allow keystrokes to activate the xyz control without needing to type Tab first.

TreatSpaceAsEnter set to =y will allow hitting the space bar to work the same as pushing Enter for committing typed in values in input fields, and also as an alias for pushing "Done" or for repeating the last command.

Bug fixes:

Fixed a bug where setting the option for swapping pan/rotate mouse functions did not work correctly in parallel 3D views.

Fixed a crash bug that could happen in certain circumstances when using the edit frame to scale a base curve that triggered a history update.

Fixed a bug where name properties on standalone curves could get transmitted through to edges on solids in some operations like extrude.

Fixed a bug in setting cplanes where construction lines that were created during the cplane placement were not cleared out properly.

Various other minor bug fixes and tuneups.

Beta Oct-19-2009


V2 is very close to being wrapped up, but I still have a little bit of work left for Sweep (for mitered corners) and probably Groups before it is all ready so there will still be at least one more beta to come after this one.
This release kind of "clears the decks" of a variety of accumulated bugs and loose ends.

New stuff:

Silhouette: Added new Silhouette command under Construct > Curve > Silhou – this can be used to create silhouette curves that give the profile of a curved surface from a particular view.

This may be particularly 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.

For example given this model:

Running Silhouette on it will generate these curves:

Crv2View: Added "Curve from 2 views" functionality to the Construct > Curve > Isect command.

This produces a curve from 2 planar profile curves from different directions. It is the equivalent of doing an extrusion of each curve and intersecting the extruded surfaces.

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

You can select these 2 curve and run Construct > Curve > Isect to generate this result:

Sweep: Updated 2-rail sweep to use a new mechanism for handling the rails – previously it was sensitive to how control points happened to be spaced in each rail, and there could be a kind of twisting or bunching effect that happened to the profiles as they moved at different "speeds" along each rail. Now they should move at more equal speeds along each rail regardless of control point spacing. This fixes several problems relating to twisted or bunched results in sweeping, such as:
This is a pretty major change to the mechanics of 2-rail sweep, please let me know if you see any bad behavior with 2-rail sweep in this release.

View: Added option for controlling the perspective field of view angle, under Options > 3D view angles > Field of view.

Save: Add asterisk to file name display. The current file name in the upper-right corner of the window will now get marked with an asterisk (*) at the end of it when there have been changes made to the active file.

Bckg Image: Various enhancements for background images (the View > Image command):

Dialog: Reorganized the View section in Options dialog – a new "Colors" section holds various options relating to display colors
Updated the mesh dialog, hide the "Weld vertices along edges" checkbox for STL and SKP exports where it is not used for anything.

Display: New edge display options – added 2 additional choices under Options > View > Edge color: "Darkened" and "Lightened" which will display using the style color but adjust it towards black or towards white by a factor that can be controlled by a scroll bar that shows up.

Style * shortcuts: New shortcuts for editing styles:

Style * menu item: New "Add default styles" menu item on the Styles menu launched from the Scene browser Styles section (off the little arrow to the right). This brings the default set of styles (either the stock default set, or the styles from your template file if you have set a startup template) into the current model at the top of the style list.

Style * I/O: Updated File/Import so that when importing a file which contains no geometry but only styles in it, those styles will get added to the current style table.

Style * inheritance: Updated style inheritance for Booleans and Join – the object that was selected first will be used to set the properties on the new combined parent object. So for example if you have a red object and a blue object and you want to Boolean Union them together, select the one that you want to be dominant first. The name on the combined object will come from the dominant/first selected input and also the parent object style which is used in some cases for style assignment with newly created faces such as fillets.

Style * assigment: Updated style assignments for new faces and edges. If a new face is completely surrounded by other faces of one single style, use that style for the newly created face. This helps to make things like fillets on a multi-style solid work more predictably - if a fillet is done in a localized area that has all one style then the fillet in that area will get the same style. If a newly created face is not surrounded on all sides by the same style, then the parent object's style will be used instead.

Style * set style : Make it possible to set just the parent style of a solid but not modify any of its sub-objects by holding down shift when clicking on a style swatch. This can come into play for controlling what style is assigned to newly created faces such as fillets as mentioned above.

UI : Updated icon loading to make it easier to override the button icons that come from resources, as mentioned in the forum here:

Zoom : Added a script method so it is possible to set up shortcut keys that work the same as turning the mouse wheel for zooming in or out, including focusing the zoom on the mouse cursor's current location. To use them, set up the following on a shortcut key:

For zooming in, set up:

	  script: /* Zoom in a step */ var vp = moi.ui.getActiveViewport(); if ( vp != null ) vp.wheelZoom( true ); 

For zooming out, set up:

	  script: /* Zoom out a step */ var vp = moi.ui.getActiveViewport(); if ( vp != null ) vp.wheelZoom( false ); 

OBJ export: Updated OBJ export (MTL file names). Replace spaces in MTL filenames (which hold the material definitions for an .OBJ file) with underscores by default, since some programs cannot deal with MTL files that have spaces in the file name. Spaces in .MTL file names can be enabled by a setting in moi.ini:

	   [OBJ Export]

Snap: Updated "on" type object snaps (including On, Axis, and OnSrf). Suppress these snaps when in a planar restriction mode in the 3D view and the snapped point is off the plane. Helps to avoid some confusing jumpy situations when trying to use operations such as Rotate in the 3D view. Discussed in the forum here:

Mesh: Updated mesh options – there is now a setting in moi.ini that can be adjusted for what angle is used as the "rough angle" when the Avoid smaller than distance is being used. The default rough angle is 35 degrees but now a custom one can be set in moi.ini by this setting:

	   [Mesh Export]

Bug fixes:

Fixed a bug with the Text command when generating surface output, where the surfaces of different letters did not necessarily get a consistent normal direction.

Made Extrude work more as expected when extruding a set of faces that are all in the same plane. They will all extrude in the same direction in this particular case now instead of each one going along its own normal directions:

Fixed a bug where Extrude would not work properly when given input curves that contained any segments approaching or under 0.001 units in length.

Fixed a bug with Loft seam alignment where long skinny surfaces could mistakenly use their natural seam alignment instead of the optimized one:

Fixed a bug where relative coordinate entry was not working properly during object dragging.

Fixed Edit > Show pts – updated the ShowPoints command to prompt for objects to select to turn points on for, if nothing was selected when it was launched.

Fixed bounding box calculation bug on dense helix curve reported in the forum here:

Fixed a bug where entering a numeric math expression did not support locales that used a comma as the decimal separator instead of a point.

Fixed a bug in the Merge command where edges were being incorrectly merged at singularity points such as at the pole of a sphere. These spots are now skipped, edges cannot be merged across a pole because the UV space trimming edges of each 3D edge do not touch each other in those cases.

Also a variety of smaller bug fixes and minor tweaks.

Beta Dec-19-2009


This is very close to the end of the v2 beta period, but there will still be one more beta to fix up some bugs in some of the new features in this Dec-19 release.

Please let me know if you run into any bugs in the new features so that they can get fixed before the v2 final! The only area that is still actively in progress and known to still be buggy in this release is the new corner mitering for 1-rail sweeps especially on curved rail segments.

New stuff:

Orientation Tools: New set of object orientation and matching tools to make it much easier to position objects relative to one another.

There are 6 new related commands that make up this toolset: Orient, OrientLineToLine, OrientViewToView, CopyClipboardWithOrigin, PastePart, and ImportPart. The first 3 are available under the new Orient button under the Transform palette, and the others are available by a right-click on existing Edit > Copy, Edit > Paste, or File > Import buttons.

Some demos:

Here the Transform > Orient command is being used to reposition a cylinder along the side of a pyramid shape:

Here Transform > Orient is being used with the "Make copies" option enabled to position some text onto a box:

Here PastePart (Right-click on Paste or Ctrl+Shift+V) is being used to paste in the contents of the clipboard to an orientation aligned to an existing object, note that you can align not just to planes but also to the normal of a curved surface as well:

With the Clipboard and File import variants, you only pick the target orientation because the base orientation was specified at the time the object was copied or saved to the file.

Another example of PastePart:

Another example of PastePart with the target rotation being manipulated with several axes:

If you click on an axis instead of drag on it, it sets that one as the "primary axis" that the others will rotate about when you drag on them, the primary axis is marked with a little dot at its end.

These tools greatly simplify what would have previously required many separate applications of the Move and Rotate commands.

Some details on the individual commands:

Transform > Orient: Select the objects you want to reposition and then run this command, it will then prompt you to pick a base orientation and then a target orientation. The orientation picker is the same UI that is used to specify an orientation for the View > CPlane command as well.

Each orientation pick involves 2 steps – first you pick the origin point which automatically aligns itself to surface normals unless you disable the "Align to objects" option. Then you can adjust the rotation by dragging on the axis lines. If the default initial rotation is fine, then just right-click or push the "Done" button to accept the default rotation.

So 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.

You can click 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.

Transform > Orient > Orient Line to Line : This command is more focused on 2D orientation, you pick a 2 points to define a base line, and then 2 points to define a target line, and the objects are moved, rotated and also scaled to match the first line to the second. For example here it is used to transform a curve so that its endpoints match up with the endpoints of a different curve:

There are options to disable scaling, switch to a "stretch" type scaling in one direction only, and to make copies.

Transform > Orient > Orient View to View : This allows you to remap objects from one view to another. You do one click inside the source viewport (anywhere in it, it doesn't matter on which specific point), and then one click 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 go to some other side view). Also when you click in the 3D view as either a source or target view it will be the current camera's view direction that is used for the orientation.

CopyClipboardWithOrigin – this is available by using Ctrl+Shift+C (additional Shift key held down instead of just regular Ctrl+C) or by right-click on the Edit/Copy button. It copies the selected objects to the clipboard like the regular Ctrl+C but also prompts you to pick an origin point so you can set the base origin position of the copied objects, which will then be used by PastePart later.

PastePart – this is available by Ctrl+Shift+V or by right-click on the Edit > Paste button. It pastes in the contents of the clipboard but also allows you to pick a target orientation to position them instead of just placing them into their original locations like the regular Paste command. The base orientation can be set by using the companion CopyClipboardWithOrigin command, or if you had done a regular Ctrl+C without the extra origin pick, it will use the CPlane that was set at the time of copying (default is the world origin and world axes) as the base position and orientation.

ImportPart – this is available by right-click on the File > Import button. It is similar to PastePart except the objects get sucked in from the file you pick rather than from the clipboard. The base origin is defined by the cplane that was set in the saved file, or the world origin if no custom cplane had been set.

If you have some objects that you want to frequently bring in and reorient, you can set them up into their own separate files and use ImportPart to bring them in as needed. You can also set up a keyboard shortcut with the filename given to ImportPart. To do that set up the Command part of the keyboard shortcut like this:
ImportPart c:\some folder\myfile.3dm
that will then let you bring in that particular part by using that shortcut key, bypassing the file dialog. So for instance if you use 3 parts really frequently you may want to set those up into separate files and set up a keyboard shortcut for each one so it will pop in and go right into orienting it with one keystroke.

ArrayGem: New ArrayGem command that can be set up on a keyboard shortcut.

This is for replicating a gemstone along a set of curves on a surface, aligning the gem to the surface normal. It uses a different spacing method than the other array commands – along with the objects to be arrayed you also specify 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.

An example:

So note there that for this command to work properly, there must be a base circle also included among the objects that you want to have copied and the base circle should be selected along with the objects to copy at the same time. 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.

See this previous post for some more information and examples:

Even though this is oriented towards placing gemstones for jewelry design, it could also be used for replicating quantities of any kind of object oriented normal to a target surface.

1-rail Sweep: New mitered corner mechanism for 1-rail sweep. This should be working well currently for rails made up of line segments but still needs some work yet for rails made up of curved segments, so this is the main area that is still in progress currently until the next beta. But currently it should enable you to do things like window frame type shapes much more quickly without any work needed to extend or clean up corners.

For example:

Updated Sweep with a new "Set flat direction" option. Now when you enable Twist:Flat for 1-rail sweep, there will be a "Set flat direction" button that will show up below the Twist settings. If you push it, you can then pick 2 points to define the direction for the profiles to pivot around. This allows you to do a flat type sweep along a helix that is oriented in some other direction than the world z axis. Previously you had to align your helix to the world z axis in order for Twist:Flat to work.

Updated Sweep for batch handling of 1-rail sweep along many rails. Now if you select 3 or more rail curves in Sweep, it will do a batch 1-rail sweep along each selected rail. Previously selecting more than 2 rails did not do anything.

Rebuild: New Rebuild command that can be set up on a keyboard shortcut for reconstructing curves. This 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 bunch more points 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.

If you want to do control point editing of a result from offsetting, projection, or intersections it can help a lot to run that result through rebuild to reduce its point count first.

Select: New Select loop function. Added a new script function to make it possible to set up a keyboard shortcut to select a loop of edges around a trim boundary on a face where at least 2 consecutive edges are already selected. To set it up add a new keyboard shortcut in and for the command put in the following:


For an example see here:

Feet& Inches: Updated "Feet & Inches" type display. Instead of having an entry for "Feet & Inches" in the units list, instead there is now a separate "Distance display" option which shows up below the units control when the units are set to either "Unit system: Inches" or "Unit system: Feet".

This allows for choosing the base units to be either Feet or Inches when using this type of display, the previous method where there was just one entry in the units list only allowed the base units to be Feet.

Polygon: Updated Polygon command with new Circumscribed option. When checked, the polygon will be constructed as one that goes around the outside of the radius point picked rather than on the inside of it like the default.

Silhouette: Updated Silhouette command – added an "Include edges" option to include trim edges that are silhouettes (for example the edges on a box) in the results in addition to the regular curved surface silhouette calculations.

Export OBJ: New OBJ export option in moi.ini to disable writing texture coordinates. This can be set in moi.ini under:

              [OBJ Export]

Display color: Added an option in moi.ini to override curve display colors:


CurveColorMode can be set to either ByStyle or FixedColor. If set to FixedColor the r,g,b color from the CurvedFixedColor entry will be used to display the colors of curves rather than the style's color as is normally done.

Scene browser: Added an Scene Browser option in moi.ini to highlight the active style's row so that it stands out more in the UI. This can be enabled in moi.ini under:

              [Scene Browser]

Isect: Updated Construct > Curve > Isect command to automatically join the results together.

Dialog window: Update resizeable dialogs – make resizeable dialogs (Options and Edit styles are like this currently) remember their size in moi.ini .

Trim: Updated curve trimming to be able to use the analytic curve intersector for higher accuracy for circle, arc, and line intersection calculations between joined curves.

Circle/Arc: Update CircleTangent and ArcTangent commands – Added a special case for placing a circle or arc tangent inside of a rectangle, to get a higher accuracy direct calculation rather than using the iterative solver for this case.

Planar: Updated Planar command to deal with very small sized curves better.

Primitives: Updated primitive creation commands (Sphere, Cone, Cylinder, Box, and Plane) to work properly when the object is drawn at a very small size.

Wireframe: Updated wireframe handling – In booleans, if the first selected object was wireframe or solid, (has all faces either hidden, or all faces showing), make the new combined object be also wireframe or solid to match. Also some similar new handling for new faces like now if you fillet a wireframe box the fillet surfaces will come in as wireframe as well.

Lock: Updated scene browser status display for mixed locked/unlock status types. Instead of overlaying the eye and lock right on top of each other, draw them with smaller icons that are separated by a dividing split line.

CPlane: Update CPlane command and orientation picker – added an "Align to objects" checkbox so that automatic alignment to objects can be disabled if wanted when placing the base point of a cplane. Also updated the axis manipulation mechanism to include the concept of a "primary" or "locked" axis so that one axis can be set to remain fixed and have the others rotate around it. For a description of the new axis manipulation see here:
Also there's another new option for "Flip aligned z axis" so you can flip to the opposite side of a surface normal if you want.

Bug fixes:

Fixed a v2 regression bug in Join when trying to make a closed curve out of many segments. The bug could cause the overall start and end of a curve to not get joined to be closed if other segments that were joined touched at a tight tolerance but the overall start and end were somewhat looser but still within the join tolerance. This could cause a curve to remain open after a Join when it should have become closed.

Fixed a bug where the properties panel would not show initially when opening a file by double-clicking the file name in Windows Explorer, reported in the forum here:

Fixed a crash bug when using "Add default styles" from the Style Tools menu in the Scene Browser in some situations.

Fixed incorrect meshing on surfaces that had large numeric values for their uv domains.

Fixed a bug where ArrayCurve did not properly transfer styles to the duplicated objects in some circumstances (reported on the forum here:

Fixed a regression bug in Extrude where an incorrect reversed direction was used for faces that were aligned opposite with one of the world axis directions, reported on the forum here:

Fixed a bug in Sweep where in some instances with a helix path with a particular shape (like with a number of turns of 6 or a multiple of 6 or a couple of other patterns with longer helix curves) could fool the tolerance checking mechanism to make it think that an unrefined sweep was actually within tolerance. These will now work correctly. Fixes some old bugs reported in the forum here:

Fixed a different kind of tolerance checking problem in Sweep that could cause the sweep to sag away slightly from the rail path (out of join tolerance) with certain shapes, reported in the forum here:

Beta Feb-21-2010


This should be the final v2 beta release. The next step before v2 is completely finished will be to update the documentation.

New stuff:

Inset: New Inset command, located under Construct > Offset :

The Inset command takes in a selection of face sub-objects, and will produce either a depressed or raised panel that follows the outline of those faces.

Some demos:

It's also possible when going outwards to expand the shape, making a kind of "hat" placing effect:

These are the options for 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.

The Direction option sets whether the protrusion goes towards the inside of the object or towards the outside. Direction = Inwards looks like this:

Direction = Outwards looks like this:

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 is the 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, then that will cause a plug interior part to be generated as another separate independent object from the main one.

The Inset command relies on solid offsetting to generate its results, and there are currently quite a few situations where solid offsetting can get confused. It will tend to work best when the offsets being generated have the same topology, like not having pieces that either separate in topology (like 1 vertex needing to become 2 vertices in the offset), or converge like edges collapsing totally away.

Rebuild: Added a "Keep corners" checkbox for the Rebuild command in # Points mode. This can be disabled to rebuild the curve as one single segment instead of rebuilding each segment individually.

BckgImage: Updated background images for scripting – made the background image placement, width, and height available to scripts. This makes it possible now to make a script that will create a regular plane object on top of each image, so that it is possible to export the placement of a background image to a different program. To use it set up the following script on a shortcut key:

             script: var images = moi.view.getBackgroundImages(); for ( var i = 0; i < images.length; ++i ) { var img = images.item(i); var f = moi.command.createFactory('plane'); f.setInput( 0, img.frame ); f.setInput( 2, img.width ); f.setInput( 3, img.height ); f.commit(); } 

Bug fixes:

Updated 1-rail sweep mitering with a new mechanism for trimming the miter joints when using curved segments inside of a planar rail. So mitered corners should work much better with curved segments now. Curved segments will generally need to be coplanar with one another though in order to get a mitered result.

Fixed a multi-threading race condition bug in the export mesher, which could cause some edges of a solid to get an excessively dense number of vertices on them in certain timing conditions.

Updated analytic surface/surface intersections to fix a boolean problem reported in the forum here:

Updated boolean tolerances to incorporate some tolerance tightening if they run into a problem. Fixes a v2 regression boolean bug reported in the forum here:

Fixed a Trim bug when trimming a solid by a curve that was on the solid (like an already projected curve). The mechanism for detecting which face each curve segment was on could sometimes get confused but now should be fixed.

Fixed a bug with selection undo where edge selection did not behave properly after a selection undo that restored an edge selection. Reported on the forum here:

Updated to the latest IGES, SAT, and STEP libraries from HarmonyWare, includes several bug fixes.

Updated SKP export to only export curves to SKP format if no solids were also being exported. This helps to avoid a crash bug in the SkpWriter library where it could crash when creating an SKP polyline curve that had curve vertices located nearly coincident to some mesh vertices. This should help to avoid some SKP export crashes that have been reported.

Beta Apr-16-2010


It's taken me a bit longer than I had originally thought to work on the documentation, so I'm releasing a new beta with an extended expiration since the previous one is about to expire.

The new beta does not have any new features but does have several bug fixes, and the command reference section of the help file has been updated but is not quite done yet.

Bug fixes:

Updated SKP export to fix a crash bug that could happen when exporting curves in certain circumstances when the line segments of the curve had their vertices merged with other nearby line vertices already in the SKP model. I think this finally fully stabilizes the SKP export now.

Fixed a bug where "on" object snaps were being suppressed improperly in the Move and Copy commands, reported in the forum here:

Fixed a bug in the geometry library where the mechanism that determines the inside and outside regions of a solid was not working properly in some cases.

Fixes a bug reported in the forum here:
although to fix the object in that post, it must first be separated and then rejoined so that the inside/outside setting mechanism will get run on it again.

Fixed a bug with the Inset command reported here:

Fixed a bug with Blend where Blend was being sensitive to differences in parameterization between the edges being blended. Reported in the forum here:

Updated meshing to fix a crash when running out of memory early in the initialization process of the meshing thread setup.

Beta May-5-2010


The v2 final is getting really very close now... I had a few more bug fixes though so I thought I'd release a new beta just to get a bit of testing on those.

Bug fixes:

Fixed a bug in the Merge command where edge segments along the seam of a closed surface were not allowed to be merged.

Fixed an incorrect result with Revolve when there was a very small sized segment in the revolve profile curve.

Updated the mesher to reduce memory consumption on surfaces that have a large number of holes in them, fixes a problem reported in the forum here:

Updated curve offset to true up segment end tangents that are very close to being tangent but just slightly off. Fixes the offset bugs with edge curves reported in the forum here:

Updated the scene browser to remove the "selected" and "unselected" type sub-categories by default, which were not working previously. They can be re-enabled by a setting in moi.ini:

                    [Scene Browser]

…which will also enable an update of the scene browser in response to selection changes, which should make those sections work properly. Discussed in the forum here:

Updated numeric expressions so that Pi or pi could also be used instead of only upper case PI.

Updated the scene remeshing in response to changing of the display mesh settings, to try and catch out of memory issues better.

Version 2.0

Final release:

May-28-2010: After more than 2 years of development, Michael Gibson announced that the final release of MoI version 2.0 was available!

There is a script copier utility for the v2 release version. If you run this utility it will copy plugins that were installed in the commands folder in v1 into v2's commands folder so that they will also be installed in v2.

(unnecessary) Fix update:

Patch: LWO contour export patch