V2 beta Jun-23-2009 available now

 From:  Michael Gibson
2711.1 
A new v2 beta (version Jun-23-2009) is now available for download here: http://moi3d.com/beta.htm

You will need to enter your v1 license key to download the v2 beta.

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.


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.


Release notes:


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.


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



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



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:
[Styles]
GeneratedObjectsInheritStyle=n
Or it can be toggled back and forth with a keyboard shortcut:
script:moi.geometryDatabase.generatedObjectsInheritStyle = !moi.geometryDatabase.generatedObjectsInheritStyle;


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]
SelectSkipHiddenObjectsDefault=y


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.


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.


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


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.


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.


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


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.


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


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


Added an option in moi.ini to persist the last used mesh settings between sessions:
[Mesh Export]
PersistSettingsBetweenSessions=y


Added an option in moi.ini to disable the numeric input flyouts (that normally pop up when clicking on a numeric field):
[UI]
DisableNumericInputFlyout=n


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.


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 );


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.


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.


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.


Received and integrated bug fixes to the geometry library which fix these surface/surface intersection bugs reported on the forum by PaQ and Ella:
http://moi3d.com/forum/index.php?webtag=MOI&msg=2518.1
http://moi3d.com/forum/index.php?webtag=MOI&msg=2608.1
The boolean failures reported in these posts are fixed now.


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


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:



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



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.


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:
http://moi3d.com/forum/index.php?webtag=MOI&msg=1049.28


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 );


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


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.


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


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.


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.


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


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' );


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.


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


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.


Also various other small bug fixes and tune ups.


Please let me know if you have any problems!


- Michael