Difference between revisions of "V5Beta"

From MoiWiki
Jump to navigationJump to search
 
(6 intermediate revisions by the same user not shown)
Line 138: Line 138:
  
  
== Apr-10-2022 ==
+
== May-22-2022 ==
  
 
[http://moi3d.com/forum/index.php?webtag=MOI&msg=10706.1 Forum announcement]
 
[http://moi3d.com/forum/index.php?webtag=MOI&msg=10706.1 Forum announcement]
Line 212: Line 212:
 
http://moi3d.com/forum/index.php?webtag=MOI&msg=10664.1
 
http://moi3d.com/forum/index.php?webtag=MOI&msg=10664.1
  
 +
</div>
 +
 +
 +
== Mar-28-2023 ==
 +
 +
[http://moi3d.com/forum/index.php?webtag=MOI&msg=11034.1 Forum announcement]
 +
 +
<div style="width: 700px">
 +
 +
Initial integration of the ACIS geometry kernel into MoI, starting with fillets.
 +
 +
Fillets are now being calculated by ACIS. Still a work in progress but many types of fillets that failed before are now working.
 +
 +
You can switch back to the old fillets with the "Library" option in the fillet command options.
 +
 +
 +
New cross hatching option when generating a 2D drawing to PDF, AI, or SVG formats:
 +
 +
http://moi3d.com/forum/get_attachment.php?webtag=MOI&amp;hash=a4026a78ed7b47e203db833bbeb80b69&amp;filename=cross_hatching.png
 +
 +
 +
Thumbnail images are now written in .3dm files and shell extensions for Mac and Windows are included in MoI so you can now see thumbnail images when browsing .3dm files in Windows File Explorer or macOS Finder.<br>
 +
You can disable making embedded thumbnail images under Options &gt; 3DM options &gt; "Write thumbnail preview image" checkbox.<br>
 +
There is a setting in moi.ini for thumbnail image size: [3DM] ThumbnailSize=256<br>
 +
Can range from 64 to 1024
 +
 +
 +
Supported platforms are a little different now due to the ACIS integration - on Windows, Windows 7 SP1, 8.1, 10 and 11 64-bit are supported. Windows 7 without SP1 and Windows 8.0 are not supported. On Mac 10.14 and higher is supported.
 +
 +
 +
Scene browser assignment - now when you click on a name in the Scene Browser, a menu will pop up with options for "Assign selection here" or "Rename":
 +
http://moi3d.com/forum/get_attachment.php?webtag=MOI&hash=c8c6d42c789df309c9eaf33f3bbbc04c&filename=BrowserAssignMenu1.png http://moi3d.com/forum/get_attachment.php?webtag=MOI&hash=df2c653062a7c98f07ee291a591eab4b&filename=BrowserAssignMenu2.png
 +
 +
 +
Update group selection - Make Ctrl+click on an unselected object that is inside of a group drill in to select that object directly instead of any intermediate groups.
 +
 +
 +
Various minor bug fixes with a lot for groups.
 +
 +
 +
Update SubD import - rotate Y-Up to Z-Up. By default rotate FBX subd import from the FBX Y-up coordinate system to MoI's Z-up coordinate system.
 +
Can be disabled for both OBJ and FBX imports with a new setting under:<br>
 +
Options &gt; Import/Export &gt; SubD import options &gt; "Rotate y-up to z-up OBJ" and "Rotate y-up to z-up OBJ" checkboxes.
 +
 +
 +
Update array curve with "align to surface" option<br>
 +
Minimize the rotation applied to align to surface normal. Fixes a bug reported in the forum by Barry here:<br>
 +
http://moi3d.com/forum/index.php?webtag=MOI&msg=10725.1
 +
 +
Update projection view dropdown<br>
 +
Add an option "Active" in addition to 3D / Top / Front / Right when choosing projection views, which will use the active viewport.<br>
 +
Affects Make2D, Silhouette commands and also AI/PDF/SVG/DXF export.
 +
 +
 +
Fix SVG locale bug<br>
 +
Don't use locale-aware string formatting for SVG attributes. Should not have comma values for decimal separator.
 +
 +
 +
Update windows installer<br>
 +
Add checkbox to installer for "Create file associations", so that changing file associations can be disabled by the user.
 +
 +
 +
Update Rebuild command<br>
 +
Add option for Endpoints mode,either Points: Interpolate or Points: CVs for making either an interpolated curve or a control points curve from the polyline endpoints. Requested on the forum by pafurijaz here:<br>
 +
http://moi3d.com/forum/index.php?webtag=MOI&msg=10953.9
 +
 +
Update command parameters<br>
 +
if there is a parameter repeat=true then set the repeat command checkbox.
 +
 +
Add moi.ini option for controlling what version of SketchUp SKP file to write:<br>
 +
[SKP]<br>
 +
SUModelVersion=Current<br>
 +
Version can be: SU3-SU8, SU2013-SU2016 and on Mac up to SU2021
 +
 +
 +
Scripting:
 +
 +
Update moi.geometryDatabase.getObjects() group handling. Return objects inside groups with moi.geometryDatabase.getObjects() for increased compatibility
 +
with existing scripts. Can pass getObjects( false ) to disable going into groups.
 +
 +
Group traversal - add .getFirstNode() and .getNextNode( current_node ) functions on group objects. This will only traverse groups and any objects that are the immediate child of a group but not go into sub-objects like curve segments.
 +
 +
Implement document user text for scripts<br>
 +
New document user text values so scripts can add data that is saved and restored from 3DM files.<br>
 +
New methods under moi.geometryDatabase:<br>
 +
.setUserText( Key, Value ); - Set text value for given key.<br>
 +
.getUserText( Key );        - Returns text value for given key, or undefined if not present.<br>
 +
.removeUserText( Key );    - Remove user text value for given key.<br>
 +
.getAllUserText();          - Return list of all user text, each object has .key and .value properties.<br>
 +
.clearAllUserText();        - Clear all document user text.<br>
 +
 +
There is also now object user text available for scripts to store data on an object:<br>
 +
.setUserText( Key, Value ); - Set text value for given key.<br>
 +
.getUserText( Key );        - Returns text value for given key, or undefined if not present.<br>
 +
.removeUserText( Key );    - Remove user text value for given key.<br>
 +
.getAllUserText();          - Return list of all user text, each object has .key and .value properties.<br>
 +
.clearAllUserText();        - Clear all object user text.<br>
 +
 +
Document user text can also be viewed and edited under File &gt; Notes &gt; "Document user text" button and object user text will show on the "Details..." object properties dialog.
 +
 +
 +
Add screenTol property to point stream picker so behavior can be modified from the default 5 pixels that the mouse has to travel before generating a new point for Sketch curve.<br>
 +
Can set pointstreampicker.screenTol = 0.0 to take all points regardless of distance from previous point, or something like pointstreampicker.screenTol = 30.0; to make it sparser.
 +
 +
 +
Make MoiList and ObjectList implement .push() and .pop() methods with same behavior as JavaScript array.<br>
 +
For push() the arguments are appended to the end of the list in the order in which they appear. The new length of the list is returned as the result of the call. The push() for ObjectList can take another ObjectList or JavaScript array and it will look through the contents to find objects.
 +
 +
For pop() the last element of the list is removed from the list and returned. If the list is empty, returns undefined.
 +
 +
 +
Updated script function argument getter. Code that is looking for an ObjectList passed as a function argument will now accept a single object and automatically wrap it with a temporary object list, and also accept a JavaScript array object which it will convert into a temporary object list.
 +
 +
 +
Update background image scripting<br>
 +
Add .getEmbeddedImage() function on background images that will return an image object, so that image.szve() can be called to extract an embedded background image out to a separate file again. Requested by Brian on the forum here:<br>
 +
http://moi3d.com/forum/messages.php?webtag=MOI&msg=10813.4
 +
 +
Update face scripting<br>
 +
face.isCylinderSurface - true if the underlying surface for this face is a cylinder.<br>
 +
face.isConeSurface - true if the underlying surface for this face is a cone.<br>
 +
face.isSphereSurface - true if the underlying surface for this face is a sphere.<br>
 +
face.analyticFrame - coordinate frame for a cylinder, cone, or sphere surface.<br>
 +
face.analyticRadius - radius for a cylinder, cone, or sphere surface.<br>
 +
face.analyticHeight - height for a cylinder or cone surface.<br>
 +
 +
Update cplane scripting<br>
 +
Update moi.view.setCPlaneInteractive() - return false if canceled and take optional boolean parameter for allowing nested cancel.<br>
 +
Add moi.command.isCanceled to allow a script to determine if the current running command has been canceled.<br>
 +
Add moi.command.pendingCommandName<br>
 +
Clear command repeat checkbox if a modal dialog has been shown.<br>
 +
 +
Update moi.ini scripting<br>
 +
Add moi.settings.writeIniFile() which will flush the in-memory contents of moi.ini out to disk.<br>
 +
Add moi.settings.getIniValue( 'Section name', 'Key name') which will return an ini value to the calling script or return undefined if not present.
 +
 +
 +
Make all Moi JS objects implement a .toString() function that will give back the individual class name instead of the same generic "MoiObj" name.<br>
 +
So for example doing this on an object list:<br>
 +
var objlist = moi.geometryDatabase.createObjectList();<br>
 +
var name = objlist.toString();<br>
 +
will now give back [object ObjectList], instead of [object MoiObj].
 +
 +
Also MoI script objects can now enumerate object properties using for ... in syntax, like:<br>
 +
for ( propname in obj )<br>
 +
&nbsp;&nbsp;&nbsp;&nbsp;var val = obj[ propname ];
 +
 +
 +
Update Pointpicker scripting<br>
 +
Add pointpicker.screenpt - returns 2d mouse coordinates<br>
 +
Add pointpicker.hitTestSnapPoints( Points ) - takes array of xyz point objects, returns index of one closest to the mouse and within object snap radius or -1 if none found.<br>
 +
Helper function for implementing custom snap function as described here:<br>
 +
http://moi3d.com/forum/index.php?webtag=MOI&msg=10917.2
 +
 +
 +
Add moi.filesystem.getDirName() - directory picker<br>
 +
var dir = moi.filesystem.getDirName( 'Dialog caption', 'c:\\initpath' );<br>
 +
returns empty string if canceled.
 +
 +
Add object.setEditPointSelected( index, value ); on objects as a way to set the selection state of an edit point.
 +
 +
Update scripting window position and size.<br>
 +
If a script calls window.move(x,y) or window.resize(w,h) before the window has been loaded, record the given position or size and apply
 +
them when the window is finished loading.
 +
 +
Update scripting - selection undo<br>
 +
Add moi.geometryDatabase.saveSelectionUndo() and moi.geometryDatabase.setSelectionUndoRevision()<br>
 +
so scripts can have selection undo set up for changes to selection/hidden/locked properties as described on the forum here:<br>
 +
http://moi3d.com/forum/index.php?webtag=MOI&msg=10939.10
 +
 +
Update scripting, annotation points and construction lines.<br>
 +
Add method for creating a consruction line from script:<br>
 +
moi.geometryDatabase.addConstructionLine( start, end, isTemporary );<br>
 +
Add annotation.getPoints() which returns a list of the defining points for the annotation.
 +
 +
Update point picker<br>
 +
Add new properties to control pointpicker:<br>
 +
pointpicker.dontMakeConstructionLines = true;<br>
 +
pointpicker.finishOnMouseMove = true;<br>
 +
Add pointpicker.disableGridSnap and pointstreampicker.disableGridSnap properties.
 +
 +
</div>
 +
 +
 +
== Apr-13-2023 ==
 +
 +
[http://moi3d.com/forum/index.php?webtag=MOI&msg=11043.1 Forum announcement]
 +
 +
<div style="width: 700px">
 +
Various bug fixes for the new filleting.
 +
</div>
 +
 +
 +
 +
== Dec-1-2023 ==
 +
 +
<div style="width: 700px">
 +
 +
 +
 +
</div>
 +
 +
 +
== Jul-30-2024 ==
 +
 +
[http://moi3d.com/forum/index.php?webtag=MOI&msg=11493.1 Forum announcement]
 +
 +
<div style="width: 700px">
 +
 +
Various fillet bug fixes from ACIS.
 +
 +
Update Transform > Move command.<br>
 +
Add "Set XYZ" button to the target point pick of the Move command, to allow setting individual coordinate values.
 +
 +
Update point picker xyz input.<br>
 +
Allow x= , y= , or z= to set individual coordinates.<br>
 +
For example putting in z=4 will lock in the z value at 4 and allow x and y to be picked with the mouse.
 +
 +
Implement tiny curve draw optimization for zoomed out views.<br>
 +
When there are more than 10,000 curves, trigger special treatment for curves that are tiny in the current zoomed out view.<br>
 +
Draw with a line imposter.
 +
 +
Update curve circular shape detection to improve accuracy.
 +
 +
Update PDF/AI/SVG output<br>
 +
Enable line styles options for wireframe PDF/AI/SVG output.
 +
 +
Update DXF import - entity colors<br>
 +
In DXF import, if all entities on a layer have the same entity color then use that for the layer color as well.<br>
 +
Enables colors to be imported from DXF files generated by CorelDraw.<br>
 +
Requested in the forum by stefano here:<br>
 +
http://moi3d.com/forum/index.php?webtag=MOI&msg=10114.569
 +
 +
Update curve fillet<br>
 +
Fix curve fillet so it's possible for a segment of a curve to be completely consumed in a corner fillet.<br>
 +
Fixes a bug reported on the forum by Andre here:<br>
 +
http://moi3d.com/forum/index.php?webtag=MOI&msg=11331.1
 +
 +
Add "Select matching objects" and "Apply to selected" buttons for property presets in Options dialog > Dimensions.<br>
 +
Requested by Salvatore in the forum here:<br>
 +
http://moi3d.com/forum/index.php?webtag=MOI&msg=10114.603
 +
 +
Add "Show leading zeros" option for dimension formatting.<br>
 +
Requested by Peer in the forum here:<br>
 +
http://moi3d.com/forum/index.php?webtag=MOI&msg=11268.1
 +
 +
Add moi.ini options for saving/restoring window position.<br>
 +
[Main Window]<br>
 +
(...)<br>
 +
ReadPositionDataOnOpen=y<br>
 +
WritePositionDataOnClose=y<br>
 +
If you set WritePositionDataOnClose=n then it won't update the stored position data at program close and if you set ReadPositionDataOnOpen=n it will use the default positioning when MoI opens instead of reading it from moi.ini .<br>
 +
 +
Update SVG export<br>
 +
Suppress output of visible lines if visible line width is set to a less than zero value.
 +
 +
Update Make2D hidden line color<br>
 +
Add a setting in moi.ini for he default color used for the "Hidden line" style that is created by Make2D.<br>
 +
[Make2D]<br>
 +
HiddenLineColor=255,255,255<br>
 +
 +
Update object properties dialog<br>
 +
Show report of selected object names in object properties dialog when name = "varies".<br>
 +
Fix bug where ctrl click on a style tag didn't deselect it.
 +
 +
Fix object snap bug when using OpenGL and Direct3D9 rendering. Visibility for some object snap points was not correct.
 +
 +
Fix undo bug where extra copies of objects could appear in some undo situations.
 +
 +
Fix mouse handling bug where Alt click (which is supposed to suppress snapping) was incorrectly generating a construction line.
 +
 +
Fix change units crash when construction line present<br>
 +
Fixes crash reported in the forum by Brian here:<br>
 +
http://moi3d.com/forum/index.php?webtag=MOI&msg=11056.195
 +
 +
Fix rebuild curve crash<br>
 +
Sent through e-mail by James
 +
 +
Fix for flow doing an extra calculation on .commit()<br>
 +
Don't apply needs final update for groups processing if no groups involved.
 +
 +
Fix surface area calculation.<br>
 +
Fix bug where multi face open breps were not having surface area calculated, reported in the forum by Brian.
 +
 +
Fix circle precision bug where circles in certain positions could lose accuracy and open up an
 +
approx 0.0001 degree gap between the start and end points.<br>
 +
Fixes bug reported through e-mail by Axel.
 +
 +
Fix group display bug<br>
 +
Fix bug where group having brep and curve did not display the curve as a faint dashed hidden line unless there was at least one brep in the model not in a group.<br>
 +
Fixes a bug reported in the forum by Peer.
 +
 +
Fix Edit size menu bug with group drill in selection.<br>
 +
When there is a group drill-in selection, the edit size menu would modify the entire parent group instead of only the current selection.<br>
 +
Fixes a bug reported in the forum by Larry Fahnoe here:<br>
 +
http://moi3d.com/forum/index.php?webtag=MOI&msg=11056.211
 +
 +
Fix copy/paste bug with groups, reported in the forum by Fubax here:<br>
 +
http://moi3d.com/forum/index.php?webtag=MOI&msg=11056.201
 +
 +
Update RemoveDuplicates<br>
 +
Fix RemoveDuplicates so it will detect duplicate closed curves that have different start points.<br>
 +
Fixes a bug reported through e-mail by Marek.<br>
 +
 +
 +
Scripting updates
 +
 +
Add moi.geometryDatabase.loadStylesFromFile( filename );
 +
 +
Update annotation scripting<br>
 +
Added some additional script access on annotation objects:<br>
 +
annotation.getPoints2D() - returns the annotation's defining points in 2D in-plane coordinates<br>
 +
annotation.numericValue() - returns the distance value of the dimension<br>
 +
annotation.evalText() - returns display text of the dimension<br>
 +
 +
Update construction line scripting<br>
 +
Add moi.geometryDatabase.setActiveConstructionLine( cline );<br>
 +
And add optional pointpicker arg to moi.drawingAids.constructionLineReposition() and moi.drawingAids.constructionLineReorient(), <br>
 +
So they can be called on a construction line generated programmatically.<br>
 +
Example:<br>
 +
var cline = moi.geometryDatabase.addConstructionLine( moi.vectorMath.createPoint(0,0,0), moi.vectorMath.createPoint(10,0,0), true /*is temporary*/ );<br>
 +
moi.geometryDatabase.setActiveConstructionLine( cline );<br>
 +
var pp = moi.ui.createPointPicker();<br>
 +
moi.drawingAids.constructionLineReposition( pp );<br>
 +
while (1)<br>
 +
{<br>
 +
&nbsp;&nbsp;&nbsp;&nbsp;if ( !pp.waitForEvent() )<br>
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>
 +
 +
&nbsp;&nbsp;&nbsp;&nbsp;if ( pp.event == 'finished' )<br>
 +
&nbsp;&nbsp;&nbsp;&nbsp;break;<br>
 +
}<br>
 +
 +
Update scripting - curve.split()<br>
 +
Add curve.split( params ) script function. Splits up a curve at the given parameter values and returns an object list with the pieces.
 
</div>
 
</div>

Latest revision as of 19:39, 1 August 2024

Release notes for each V5 beta release are gathered here.

Apr-10-2022

Forum announcement

New stuff:

Dark UI theme and theme editor available under Options > General > "UI Theme".

Groups - create a group using the menu on the "Objects" section of the Scene Browser.

Types section of the Scene Browser has additional sub types like "Types > Curves > Circles" can be used to target just curves that are circles. Sub types include:
    Curves > Open, Closed, Planar, Lines, Polylines, Circles, Arcs, Ellipses, Elliptical arcs
    Surfaces > Planar
    Edges > Joined, Naked
    Properties > Selected, Unselected, Locked, Unlocked, Visible, New objects.

Support for import/export to SVG format.

SubD conversion now supports FBX format.

The Mac version is now a universal binary that contains code for both Intel and M1 CPU architectures.

Added File > Notes button for setting text notes that are saved inside of a .3dm file.

Scene browser - click on text label of an item in the Objects section of the scene browser to assign current selection to a name or group.

Annotation text display engine performance - Hoist several Qt text layout calls up to layout time rather than calling at render time. Major improvement to render performance for text. Also if model units sized text is small on screen render as a textured quad instead of using text geometry.

Scene browser - Add "Unnamed" entry under Objects to allow targeting of all objects without a name.

Update STEP export - split closed surfaces Default is on, can be set in moi.ini under:
[STEP]
ExportSplitClosedSurfaces=n

Update tab controls - Add dot to active tab.

New rendering platforms - support for Direct3D9 on Windows and Metal on Mac. Can be set in moi.ini under [View] GraphicsAPI=Direct3D9 or GraphicsAPI=Metal . If you are having problems with a particular video driver you can try using one of these alternatives.

Added experimental ViewProject command that transforms objects by a perspective projection.

Support clipboard copy/paste of SVG format. To copy to the clipboard using SVG format, set up a shortcut key with this:
script: moi.geometryDatabase.copyToClipboardSVG();

Update default render engine on Wine - Default to Direct3D11 on Wine instead of OpenGL. Wine seems to compensate for various driver bugs in its Direct3D layer.

Update text rendering under Wine. Wine seems to have a bug in ID3D11DeviceContext::UpdateSubresource when it's being applied to an 8-bit luminance texture. When running under Wine use a 32-bit texture format for the text texture to avoid running into this.

Fix Mac version bug where doing a double right click could get stuck in a loop if there was a file dialog being shown after the double right click happened.

Fix crash bug in Extrude when extruding a curve with a large number of segments and with particular weight values. Fixes a bug reported by Scott Carson in e-mail.

Fix boolean bug where edges that touched at singularity were being incorrectly merged in boolean union. Fixes a bug reported through e-mail by Christopher Schardt.

Fix boolean problem with multi object booleans where tolerance settings were being handled slightly differently when many objects were being booleaned. This could sometimes yield different results when booleaning many objects at once instead of only 2 at a time. Fixes a boolean union bug reported through e-mail by Christopher Schardt.

Update Mac trackpad/Magic Mouse handling. Give up trying to automatically figure out if a scroll message is coming from Magic Mouse or trackpad it does not appear to be possible to do this reliably. So make Magic Mouse scroll behave same as trackpad scroll, the moi.ini option for doing trackpad scroll as a wheel mouse ([MultiTouch] UseTrackpadScrollAsMouseWheel=y) can be used to get old behavior on Magic Mouse. Also holding down Alt while doing a trackpad scroll will instead do a wheel zoom now. There is also a new parameter to reverse scroll/pan: [MultiTouch] ReverseTrackpadScroll=y

Updated Sweep 2 rails maintain height mode. If the the 2 rails start or end in a point don't disable "Maintain height" for the entire sweep, instead handle the scaling down to a point after the first or last proflie.

Update background images - Add in moi.ini option to make background image embed turned on by default.
[View]
BackgroundImageEmbedDefault=y

Update surface/surface intersection - Look for and remove duplicate intersection results. Fixes bug with multiple curve intersection results reported by Przemas in the forum here:
http://moi3d.com/forum/index.php?webtag=MOI&msg=10460.1

Update chamfer command - swap. Add swap button when "Use 2 distances" is active. Requested on the forum by 3image here:
http://moi3d.com/forum/index.php?webtag=MOI&msg=10289.37

Update mesh export vertex normal combining. Change vertex normal combining to use tolerance of 0.5 degrees instead of 3.0 degrees. It can also be changed now in moi.ini .
[Mesh Export]
UnifyVertexNormalsAngleToleranceDegrees=0.5

Update background image properties dialog - add width/height fields. Requested by moritz on the forum here:
http://moi3d.com/forum/index.php?webtag=MOI&msg=10289.29

Update text selection. Fix problem where text selection was lost when swiping a selection and releasing mouse button off of the UIPanel window.

Update selection - multiple select. If multiple select only with shift key is enabled don't clear selection if ctrl is down so that Ctrl+drag will still work as a deselection window. Fixes bug reported on the forum by Viewbyte here:
http://moi3d.com/forum/index.php?webtag=MOI&msg=10439.3

Update DXF import - fix LWPOLYLINE import 16 bit overflow crash bug reported through e-mail by Jörg Vollmer.

Update curve drawing corners - Make the current active point in curve drawing be shown as a corner if ctrl is down. Previously it would only show as a corner after it was picked.

Update STEP import - FACETED_BREP entities. v3 would read FACETED_BREP entities but this was lost in v4 with the restructuring to use multiple threads. Process these now, fixes v3/v4 regression reported on the forum by Martin here:
http://moi3d.com/forum/index.php?webtag=MOI&msg=10415.7

Update Flow. Sew edges for flow result so a closed tube will have start/end edges joined to make a solid.

Update ArcCenter command - int snap. Enable radial intersection snap point for ArcCenter command. Fixes a bug reported by Andre in the forum here:
http://moi3d.com/forum/index.php?webtag=MOI&msg=10399.1

Fix transform regression. Fix regression where invalidating hit test map on selection change (change near the end of v4 beta) was causing transforms like object drag to regenerate the hit test map on every mousemove. Fixes a performance regression reported through e-mail by Massimo.

Add option for grid opacity in moi.ini under [Grid] GridOpacity=255

Update relative expressions. Add in percent relative expression, so you can put in 120% into a distance field to alter the current value.

Fixes for running on Mac with case sensitive filesystem.

Update Loft with loft style = straight. Loft with loft style = straight would generate longer faces in coplanar segments. Fixes bug reported by Ed Ferguson in the forum here:
http://moi3d.com/forum/index.php?webtag=MOI&msg=10160.1

Update Merge command. Process curves with Merge command - will merge G1 segments together.

Various other minor bug fixes.


Scripting:

Updated FilesystemObjectModel::getFiles() - Added optional 3rd parameter to recurse subdirectories.

Added annotationFrame property to annotation objects so that a script can get an annotation object's plane.

Edit points scripting - Add scripting interface on objects for:
    obj.hasEditPoints - read-only property true if object has edit points, false if not.
    obj.hasSelectedEditPoints - read-only property true if object has any selected edit points.
    obj.numEditPoints - read-only property for number of edit points.
    obj.getEditPoint( index ) - method that returns an x,y,z point for the given edit point index.
    obj.getEditPointSelected( index ) - method that returns true if the given edit point is selected.
Also fix bug show points not refreshing redraw properly when set through script rather than through the show points command.

Added isEllipticalArc property for curves and curvesegments.

Update viewport.interactiveViewChange(). Add optional 2nd parameter to viewport.interactiveViewChange() function to allow a script to use it in a modal fashion. Fix for Ed's script posted on the forum here:
http://moi3d.com/forum/index.php?webtag=MOI&msg=10403.1

Update save file dialog handling. Allow initializing dialog with a directory name, like:
SaveAs c:\output\fbx
When given a directory name the dialog will start out in that directory.


May-22-2022

Forum announcement

This release is primarily bug fixes for various aspects of groups.


Update group click selection. If Ctrl is held down, then deselect clicked on group instead of drill in.

Update ungroup - Fix bug where ungroup didn't go just one step when top level group selected.

Update group copy to clipboard - fix copy to clipboard with group sub object selected

Update groups window selection. Ctrl+window select was not deselecting the full group when there was no drill in, was only deselecting sub objects. Fixed so that Ctrl+window select targets entire group if no drill in selection. If there is any drill in then leaf nodes will still be targeted instead.

Add Group label in object type indicator in properties panel.

Update Scene Browser groups - If an object is inside of a selected group, make it count as selected for displaying selection dot in Types and Styles sections.

Update detailed object properties dialog for groups - report number of group children.

Fix bug with groups in detailed object properties dialog showing the style of group objects instead of the group's children and not listing the styles when there are multiple styles in the group.

Update Project command group processing

Update select all for groups

Update moi.geometrydatabase.selectLoop() to work with groups

Update invert selection for groups

Fix bug with groups with edit points on. When group was selected, dragging on edit point didn't work, whole group was being dragged instead.

Update Separate command, groups. Make objects being separated break out from groups.

Fix bug where drag point on curve would break modified object out of groups.

Fix problem with group handling for Flow command.

Fix group bug with ArrayCurve - groups appeared to lose selection when entering path picking stage in ArrayCurve.

Update scene browser styles for Groups. Tweak styles to not accumulate status for parent group objects, just the contents of the group.

Update properties panel for groups. Fix assigning style of groups by the properties panel style menu was only setting group parent object style and not child objects.


Update radial dimensions. When cross size is set to 0 to disable center point cross lines, don't include radius center point for window selection and bounding box framing. Fixes a bug reported on the forum by Martin here:
http://moi3d.com/forum/index.php?webtag=MOI&msg=10652.86

Update scene browser assigning style - don't modify object hidden or locked state to match existing object states when all current assigned objects were hidden or locked. Can be re-enabled in moi.ini by setting [Scene Browser] AssignStyleAssumeTargetState=y .

Update object drag - Fix regression bug ctrl+drag not working to drag copies of edge or face brep sub objects

Add Ctrl+tab shortcut key. Puts focus in XYZ input always, doesn't go to input fields in command ui area.

Fix Chamfer regression - Fix Chamfer regression introduced in v4 when making chamfer surfaces to be analytic plane objects. Fix bug in analytic plane/plane intersection that was causing chamfer to fail when 2 chamfer planes intersected each other.

Update DXF export. Don't mess with handle values of DimStyle entries already in the template file. Fixes AutoCAD generating an error when trying to copy objects to the clipboard after opening a DXF file from MoI. Fixes a bug reported by Tim on the forum here:
http://moi3d.com/forum/index.php?webtag=MOI&msg=10683.1

Update grid display - axis labels. Support custom axis labels for grid axis colors. Fixes bug reported in forum by Dinos here:
http://moi3d.com/forum/index.php?webtag=MOI&msg=10652.61

Update Windows installer. Add file association for SVG format and set file association information to be removed from registry on uninstall.

Themes - Add Terminal Green theme.

Update Theme UI reload. Fix crash bug when editing theme viewport brightness with MiniSidePane.js startup script. Fixes a crash reported through e-mail by James Elliott.

Fix unicode text theme bug. After processing theme defines, prefix .htm loaded data with a UTF8 byte order mark so the html parser will handle it as UTF8 content. Fixes a bug with translated plugins reported through e-mail by Pilou.

Update 3DM import from SpaceClaim. If a 3DM file comes from SpaceClaim, look for any faces that hae very large underlying surfaces and shrink those down. Fixes a 3DM import problem reported by Tolya Vozya on the forum at:
http://moi3d.com/forum/index.php?webtag=MOI&msg=10664.1


Mar-28-2023

Forum announcement

Initial integration of the ACIS geometry kernel into MoI, starting with fillets.

Fillets are now being calculated by ACIS. Still a work in progress but many types of fillets that failed before are now working.

You can switch back to the old fillets with the "Library" option in the fillet command options.


New cross hatching option when generating a 2D drawing to PDF, AI, or SVG formats:

get_attachment.php?webtag=MOI&hash=a4026a78ed7b47e203db833bbeb80b69&filename=cross_hatching.png


Thumbnail images are now written in .3dm files and shell extensions for Mac and Windows are included in MoI so you can now see thumbnail images when browsing .3dm files in Windows File Explorer or macOS Finder.
You can disable making embedded thumbnail images under Options > 3DM options > "Write thumbnail preview image" checkbox.
There is a setting in moi.ini for thumbnail image size: [3DM] ThumbnailSize=256
Can range from 64 to 1024


Supported platforms are a little different now due to the ACIS integration - on Windows, Windows 7 SP1, 8.1, 10 and 11 64-bit are supported. Windows 7 without SP1 and Windows 8.0 are not supported. On Mac 10.14 and higher is supported.


Scene browser assignment - now when you click on a name in the Scene Browser, a menu will pop up with options for "Assign selection here" or "Rename": get_attachment.php?webtag=MOI&hash=c8c6d42c789df309c9eaf33f3bbbc04c&filename=BrowserAssignMenu1.png get_attachment.php?webtag=MOI&hash=df2c653062a7c98f07ee291a591eab4b&filename=BrowserAssignMenu2.png


Update group selection - Make Ctrl+click on an unselected object that is inside of a group drill in to select that object directly instead of any intermediate groups.


Various minor bug fixes with a lot for groups.


Update SubD import - rotate Y-Up to Z-Up. By default rotate FBX subd import from the FBX Y-up coordinate system to MoI's Z-up coordinate system. Can be disabled for both OBJ and FBX imports with a new setting under:
Options > Import/Export > SubD import options > "Rotate y-up to z-up OBJ" and "Rotate y-up to z-up OBJ" checkboxes.


Update array curve with "align to surface" option
Minimize the rotation applied to align to surface normal. Fixes a bug reported in the forum by Barry here:
http://moi3d.com/forum/index.php?webtag=MOI&msg=10725.1

Update projection view dropdown
Add an option "Active" in addition to 3D / Top / Front / Right when choosing projection views, which will use the active viewport.
Affects Make2D, Silhouette commands and also AI/PDF/SVG/DXF export.


Fix SVG locale bug
Don't use locale-aware string formatting for SVG attributes. Should not have comma values for decimal separator.


Update windows installer
Add checkbox to installer for "Create file associations", so that changing file associations can be disabled by the user.


Update Rebuild command
Add option for Endpoints mode,either Points: Interpolate or Points: CVs for making either an interpolated curve or a control points curve from the polyline endpoints. Requested on the forum by pafurijaz here:
http://moi3d.com/forum/index.php?webtag=MOI&msg=10953.9

Update command parameters
if there is a parameter repeat=true then set the repeat command checkbox.

Add moi.ini option for controlling what version of SketchUp SKP file to write:
[SKP]
SUModelVersion=Current
Version can be: SU3-SU8, SU2013-SU2016 and on Mac up to SU2021


Scripting:

Update moi.geometryDatabase.getObjects() group handling. Return objects inside groups with moi.geometryDatabase.getObjects() for increased compatibility with existing scripts. Can pass getObjects( false ) to disable going into groups.

Group traversal - add .getFirstNode() and .getNextNode( current_node ) functions on group objects. This will only traverse groups and any objects that are the immediate child of a group but not go into sub-objects like curve segments.

Implement document user text for scripts
New document user text values so scripts can add data that is saved and restored from 3DM files.
New methods under moi.geometryDatabase:
.setUserText( Key, Value ); - Set text value for given key.
.getUserText( Key ); - Returns text value for given key, or undefined if not present.
.removeUserText( Key ); - Remove user text value for given key.
.getAllUserText(); - Return list of all user text, each object has .key and .value properties.
.clearAllUserText(); - Clear all document user text.

There is also now object user text available for scripts to store data on an object:
.setUserText( Key, Value ); - Set text value for given key.
.getUserText( Key ); - Returns text value for given key, or undefined if not present.
.removeUserText( Key ); - Remove user text value for given key.
.getAllUserText(); - Return list of all user text, each object has .key and .value properties.
.clearAllUserText(); - Clear all object user text.

Document user text can also be viewed and edited under File > Notes > "Document user text" button and object user text will show on the "Details..." object properties dialog.


Add screenTol property to point stream picker so behavior can be modified from the default 5 pixels that the mouse has to travel before generating a new point for Sketch curve.
Can set pointstreampicker.screenTol = 0.0 to take all points regardless of distance from previous point, or something like pointstreampicker.screenTol = 30.0; to make it sparser.


Make MoiList and ObjectList implement .push() and .pop() methods with same behavior as JavaScript array.
For push() the arguments are appended to the end of the list in the order in which they appear. The new length of the list is returned as the result of the call. The push() for ObjectList can take another ObjectList or JavaScript array and it will look through the contents to find objects.

For pop() the last element of the list is removed from the list and returned. If the list is empty, returns undefined.


Updated script function argument getter. Code that is looking for an ObjectList passed as a function argument will now accept a single object and automatically wrap it with a temporary object list, and also accept a JavaScript array object which it will convert into a temporary object list.


Update background image scripting
Add .getEmbeddedImage() function on background images that will return an image object, so that image.szve() can be called to extract an embedded background image out to a separate file again. Requested by Brian on the forum here:
http://moi3d.com/forum/messages.php?webtag=MOI&msg=10813.4

Update face scripting
face.isCylinderSurface - true if the underlying surface for this face is a cylinder.
face.isConeSurface - true if the underlying surface for this face is a cone.
face.isSphereSurface - true if the underlying surface for this face is a sphere.
face.analyticFrame - coordinate frame for a cylinder, cone, or sphere surface.
face.analyticRadius - radius for a cylinder, cone, or sphere surface.
face.analyticHeight - height for a cylinder or cone surface.

Update cplane scripting
Update moi.view.setCPlaneInteractive() - return false if canceled and take optional boolean parameter for allowing nested cancel.
Add moi.command.isCanceled to allow a script to determine if the current running command has been canceled.
Add moi.command.pendingCommandName
Clear command repeat checkbox if a modal dialog has been shown.

Update moi.ini scripting
Add moi.settings.writeIniFile() which will flush the in-memory contents of moi.ini out to disk.
Add moi.settings.getIniValue( 'Section name', 'Key name') which will return an ini value to the calling script or return undefined if not present.


Make all Moi JS objects implement a .toString() function that will give back the individual class name instead of the same generic "MoiObj" name.
So for example doing this on an object list:
var objlist = moi.geometryDatabase.createObjectList();
var name = objlist.toString();
will now give back [object ObjectList], instead of [object MoiObj].

Also MoI script objects can now enumerate object properties using for ... in syntax, like:
for ( propname in obj )
    var val = obj[ propname ];


Update Pointpicker scripting
Add pointpicker.screenpt - returns 2d mouse coordinates
Add pointpicker.hitTestSnapPoints( Points ) - takes array of xyz point objects, returns index of one closest to the mouse and within object snap radius or -1 if none found.
Helper function for implementing custom snap function as described here:
http://moi3d.com/forum/index.php?webtag=MOI&msg=10917.2


Add moi.filesystem.getDirName() - directory picker
var dir = moi.filesystem.getDirName( 'Dialog caption', 'c:\\initpath' );
returns empty string if canceled.

Add object.setEditPointSelected( index, value ); on objects as a way to set the selection state of an edit point.

Update scripting window position and size.
If a script calls window.move(x,y) or window.resize(w,h) before the window has been loaded, record the given position or size and apply them when the window is finished loading.

Update scripting - selection undo
Add moi.geometryDatabase.saveSelectionUndo() and moi.geometryDatabase.setSelectionUndoRevision()
so scripts can have selection undo set up for changes to selection/hidden/locked properties as described on the forum here:
http://moi3d.com/forum/index.php?webtag=MOI&msg=10939.10

Update scripting, annotation points and construction lines.
Add method for creating a consruction line from script:
moi.geometryDatabase.addConstructionLine( start, end, isTemporary );
Add annotation.getPoints() which returns a list of the defining points for the annotation.

Update point picker
Add new properties to control pointpicker:
pointpicker.dontMakeConstructionLines = true;
pointpicker.finishOnMouseMove = true;
Add pointpicker.disableGridSnap and pointstreampicker.disableGridSnap properties.


Apr-13-2023

Forum announcement

Various bug fixes for the new filleting.


Dec-1-2023



Jul-30-2024

Forum announcement

Various fillet bug fixes from ACIS.

Update Transform > Move command.
Add "Set XYZ" button to the target point pick of the Move command, to allow setting individual coordinate values.

Update point picker xyz input.
Allow x= , y= , or z= to set individual coordinates.
For example putting in z=4 will lock in the z value at 4 and allow x and y to be picked with the mouse.

Implement tiny curve draw optimization for zoomed out views.
When there are more than 10,000 curves, trigger special treatment for curves that are tiny in the current zoomed out view.
Draw with a line imposter.

Update curve circular shape detection to improve accuracy.

Update PDF/AI/SVG output
Enable line styles options for wireframe PDF/AI/SVG output.

Update DXF import - entity colors
In DXF import, if all entities on a layer have the same entity color then use that for the layer color as well.
Enables colors to be imported from DXF files generated by CorelDraw.
Requested in the forum by stefano here:
http://moi3d.com/forum/index.php?webtag=MOI&msg=10114.569

Update curve fillet
Fix curve fillet so it's possible for a segment of a curve to be completely consumed in a corner fillet.
Fixes a bug reported on the forum by Andre here:
http://moi3d.com/forum/index.php?webtag=MOI&msg=11331.1

Add "Select matching objects" and "Apply to selected" buttons for property presets in Options dialog > Dimensions.
Requested by Salvatore in the forum here:
http://moi3d.com/forum/index.php?webtag=MOI&msg=10114.603

Add "Show leading zeros" option for dimension formatting.
Requested by Peer in the forum here:
http://moi3d.com/forum/index.php?webtag=MOI&msg=11268.1

Add moi.ini options for saving/restoring window position.
[Main Window]
(...)
ReadPositionDataOnOpen=y
WritePositionDataOnClose=y
If you set WritePositionDataOnClose=n then it won't update the stored position data at program close and if you set ReadPositionDataOnOpen=n it will use the default positioning when MoI opens instead of reading it from moi.ini .

Update SVG export
Suppress output of visible lines if visible line width is set to a less than zero value.

Update Make2D hidden line color
Add a setting in moi.ini for he default color used for the "Hidden line" style that is created by Make2D.
[Make2D]
HiddenLineColor=255,255,255

Update object properties dialog
Show report of selected object names in object properties dialog when name = "varies".
Fix bug where ctrl click on a style tag didn't deselect it.

Fix object snap bug when using OpenGL and Direct3D9 rendering. Visibility for some object snap points was not correct.

Fix undo bug where extra copies of objects could appear in some undo situations.

Fix mouse handling bug where Alt click (which is supposed to suppress snapping) was incorrectly generating a construction line.

Fix change units crash when construction line present
Fixes crash reported in the forum by Brian here:
http://moi3d.com/forum/index.php?webtag=MOI&msg=11056.195

Fix rebuild curve crash
Sent through e-mail by James

Fix for flow doing an extra calculation on .commit()
Don't apply needs final update for groups processing if no groups involved.

Fix surface area calculation.
Fix bug where multi face open breps were not having surface area calculated, reported in the forum by Brian.

Fix circle precision bug where circles in certain positions could lose accuracy and open up an approx 0.0001 degree gap between the start and end points.
Fixes bug reported through e-mail by Axel.

Fix group display bug
Fix bug where group having brep and curve did not display the curve as a faint dashed hidden line unless there was at least one brep in the model not in a group.
Fixes a bug reported in the forum by Peer.

Fix Edit size menu bug with group drill in selection.
When there is a group drill-in selection, the edit size menu would modify the entire parent group instead of only the current selection.
Fixes a bug reported in the forum by Larry Fahnoe here:
http://moi3d.com/forum/index.php?webtag=MOI&msg=11056.211

Fix copy/paste bug with groups, reported in the forum by Fubax here:
http://moi3d.com/forum/index.php?webtag=MOI&msg=11056.201

Update RemoveDuplicates
Fix RemoveDuplicates so it will detect duplicate closed curves that have different start points.
Fixes a bug reported through e-mail by Marek.


Scripting updates

Add moi.geometryDatabase.loadStylesFromFile( filename );

Update annotation scripting
Added some additional script access on annotation objects:
annotation.getPoints2D() - returns the annotation's defining points in 2D in-plane coordinates
annotation.numericValue() - returns the distance value of the dimension
annotation.evalText() - returns display text of the dimension

Update construction line scripting
Add moi.geometryDatabase.setActiveConstructionLine( cline );
And add optional pointpicker arg to moi.drawingAids.constructionLineReposition() and moi.drawingAids.constructionLineReorient(),
So they can be called on a construction line generated programmatically.
Example:
var cline = moi.geometryDatabase.addConstructionLine( moi.vectorMath.createPoint(0,0,0), moi.vectorMath.createPoint(10,0,0), true /*is temporary*/ );
moi.geometryDatabase.setActiveConstructionLine( cline );
var pp = moi.ui.createPointPicker();
moi.drawingAids.constructionLineReposition( pp );
while (1)
{
    if ( !pp.waitForEvent() )
        break;

    if ( pp.event == 'finished' )
    break;
}

Update scripting - curve.split()
Add curve.split( params ) script function. Splits up a curve at the given parameter values and returns an object list with the pieces.