I've found solution of this problem several months ago.
This method is stupid, but it's works. :)
en code:
function GetCurveControlPoints(curve)
{
var gd = moi.geometryDatabase;
var obj = gd.getObjects();
obj.setProperty( 'showPoints', false);
curve.showPoints = true;
gd.selectAll();
obj.setProperty( 'selected', false);
var objectpicker = moi.ui.createObjectPicker();
objectpicker.allowEditPoints();
objectpicker.done();
gd.copyToClipboardCommand( objectpicker.objects );
gd.pasteFromClipboard();
var points = gd.getSelectedObjects();
gd.removeObjects(points);
curve.showPoints = false;
return points;
}
/* example */
var curves = moi.geometryDatabase.getSelectedObjects().getCurves();
if (curves.length === 1)
{
pts = GetCurveControlPoints(curves.item(0));
/* let's build polyline through control points */
var factory = moi.command.createFactory( 'curve' );
for ( var p = 0; p < pts.length; ++p)
{
factory.createInput('point');
factory.setInput(factory.numInputs - 1, pts.item(p).pt); // point
factory.createInput('bool');
factory.setInput(factory.numInputs - 1, true); // corner
}
if (curves.item(0).isClosed)
{
factory.createInput('point');
factory.setInput(factory.numInputs - 1, pts.item(0).pt);
factory.createInput('bool');
factory.setInput(factory.numInputs - 1, true);
}
factory.commit();
}
|