Get it at:
https://moi3d.com/beta.htm
New stuff:
Write styles as layers to SketchUp .skp output
Implement fractional inches length display option. When unit system = Inches there is now an option distance display: Fractional Inches.
Add option for DXF output to write segments of a curve as individual entities same as using Edit > Separate on the curve before export.
[DXF Export]
WriteCurveSegmentsSeparately=y
Update STEP header - Strip out path from filename in STEP header
Update view pan with MMB
Shift+MMB drag = Pan for Blender compat.
When [View] ShiftMMBPan=y is set in moi.ini .
When Rotate with middle buttton set, you can then get Shift+MMB for pan by setting [View] ShiftMMBPan=y is set in moi.ini .
Update theme straight snap line color
Look for STRAIGHT_SNAP_LINE_ARGB_COLOR2 symbol in the theme's defines.inc .
If set this will be used for the second color on dashed construction lines if the viewport has a dark background color.
if not set the second color will be the inverse of the main color.
Bug fixes:
Fix svg import bug - Fix bug where having a <symbol> with self closing tag triggered an error that aborted entire load.
Fix bug where transforming objects that are inside groups would make the transformed objects hidden at the end.
Fix brep disable subobject styles not being processed on brep in group.
Fix alphabetic upper/lower case sort ordering of named objects in the Scene Browser.
Previously sort order with differing cases would have capital letters and lower case in separate sections, like:
A B C a b c
Fixed so upper case and lower case are next to each other like:
A a B b C c
Fix wrong sub object visibility state after canceled transform.
Fix leader selection bug. A leader scaled by model units where the text value is a space character would not select with a left-to-right window selection.
Update DXF import - Fix polyline import bug, polyline vertices were not being read if "Vertices follow" flag was not set.
Update tapered extrude - keep analytic circles for resulting edge curves on tapered extrude.
Fix curve filleting - fix failed curve fillet on anti-tangent cusp point.
Fix bug with hidden sub objects of groups becoming visible after undo.
Make annotation text with scale mode = by model units have the text height scale up and down with the transform.
Fix construction line hit test bug. Annotation lines were being drawn on top of construction lines in the hit test map which prevented a construction line that was on the cline from getting "on" snaps. Fixed by only drawing annotation lines for point picking hit testing, not for object selection hit testing.
Fix bugs where annotations inside groups not having various things applied to them.
Scripting:
Add objectList::matchProperty( 'name', 'value' );
Returns list of objects that have a property with the given value.
Update Scene Browser scripting
Add SceneBrowserItem::isTargetedObject( obj, for_selection );
and SceneBrowserItem::gatherTargetedObjects( for_selection );
Update PointStreamPicker - Allow script function as a bind target
Add -LoadAsTemplate command line option to load file also given as a command line parameter as a template file instead of regular file.
Update ObjectList::callMethod() - pass function arguments through.
Add moi.ui.setBusyCursor( busy );
Add annotation.scale( ScaleFactor ) method. Can be used to scale annotation text and arrow sizes up or down when making a screenshot.
Add moi.ui.resetCPlaneAfterNextPointPick()
When set when the next pointpicker finishes it will reset the cplane back to world.
Add face.isRational, face.degreeU, face.degreeV, face.knotsU, face.knotsV, can be used for comparing if the underlying surfaces for 2 faces are the same.
Update surface control point scripting.
Implement face.numControlPointsU , face.numControlPointsV, and var index = face.uvToEditPointIndex( u, v )
Can be used to select rows or columns of surface control points.
Examples: select the top edge of points along the U direction:
code:
script:var faces = moi.geometryDatabase.getSelectedObjects().getFaces();
for ( var i = 0; i < faces.length; ++i )
{
var face = faces.item(i);
var numu = face.numControlPointsU;
var numv = face.numControlPointsV;
for ( var u = 0; u < numu; ++u )
{
var index = face.uvToEditPointIndex( u, numv-1 );
face.getParentBRep().setEditPointSelected( index, true );
}
}
Selecting the right-side edge of points in the V direction:
code:
script:var faces = moi.geometryDatabase.getSelectedObjects().getFaces();
for ( var i = 0; i < faces.length; ++i )
{
var face = faces.item(i);
var numu = face.numControlPointsU;
var numv = face.numControlPointsV;
for ( var v = 0; v < numv; ++v )
{
var index = face.uvToEditPointIndex( numu-1, v );
face.getParentBRep().setEditPointSelected( index, true );
}
}
More scripting support for edit points.
Add:
obj.getEditPoints() - returns list of 3d edit points
var newobj = obj.setEditPoints( points ) - edits an object by setting its edit points.
Update scripting - curve.containsPoint( pt )
Add curve.containsPoint( pt ) - tests if the given point is inside the projected outline of a planar curve.
This enables being able to make a script to select object edit points inside of a selected boundary, like:
code:
script:
var crvs = moi.geometryDatabase.getSelectedObjects().getCurves();
var objs = moi.geometryDatabase.getObjects();
for ( var i = 0; i < objs.length; ++i )
{
var obj = objs.item(i);
if ( obj.showPoints )
{
for ( var j = 0; j < crvs.length; ++j )
{
var crv = crvs.item(j);
if ( !crv.isPlanar )
continue;
for ( var k = 0; k < obj.numEditPoints; ++k )
{
var pt = obj.getEditPoint(k);
if ( crv.containsPoint( pt ) )
{
obj.setEditPointSelected( k, true );
}
}
}
}
}
- Michael