After study of Karsten and James code from last December, here is my modification of the
"Separate" node. The code belongs in the objects2.js file of nodeeditor.
code:
function separateObj()
{
this.addInput("In", "objectlist");
this.addOutput("Out", "objectlist");
}
separateObj.title = "separateObj";
separateObj.desc = "separateObj";
separateObj.prototype.onExecute = function ()
{
var inObj = this.getInputData(0, moi.geometryDatabase.createObjectList());
var out = moi.geometryDatabase.createObjectList();
if (inObj.length > 0)
{
out = factory('separate', inObj); // Segments of Multi Subsegment curves.
for ( var i = 0; i < inObj.length; i++)
{
if ( inObj.item(i).getSubObjects().length === 1)
out.addObject(inObj.item(i)); // Single SubSegment curves.
}
}
this.setOutputData(0, out);
}
LiteGraph.registerNodeType("Objects2/separateObj", separateObj);
I think that the problem is that the Separate factory only works on geometry objects in the geometry database.
Separate will work on the InObj array of objects, as ONE entity, but not on each curve item in the array, (without more programming).
The above code outputs, to out_slot, the results of the Separate factory, consisting of the segments of curves with more than one sub_segment.
Each inObj object in the input slot is then tested to see if it has only one sub_segment, and if so, said curve is added to the output out_slot.
(This likely does change the order of the curves.)
The conformal mapping is now working well with various input curves. I'm back to Normals...
- Brian
|