maybe this (be sure to check if it is working properly):
var oObject = CreatePrim("Text", "NurbsCurve", null, null);
SelectObj("text.isopnt[(3,0.922)]", null, null);
AddToSelection("text.isopnt[(2,0.433)]", null, null);
AddToSelection("text.isopnt[(0,0.267)]", null, null);
AddToSelection("text.isopnt[(6,0.748)]", null, null);
AddToSelection("text.isopnt[(4,0.463)]", null, null);
var oCluster =
oObject.ActivePrimitive.Geometry.AddCluster(siIsoPointCluster,
"Isopoint_AUTO");
cElements = oCluster.Elements;
for(var i = 0; i < cElements.Count; i++)
LogMessage(cElements(i)); // 0,1,2,3,4
var oSubComponent = oCluster.CreateSubComponent();
LogMessage("oSubComponent.Type: " + oSubComponent.Type); //
isopntSubComponent
LogMessage("ClassName(oSubComponent): " + ClassName(oSubComponent));
// SubComponent
var aElements = oSubComponent.ElementArray;
LogMessage("oSubComponent.ElementArray: " + aElements.toArray()); //
LogMessage("oSubComponent.ElementArray.length: " + aElements.length);
// undefined
/////////////////////////////////////////////////////////
//get members as 1-item (string) collection (does not affect viewport
selection)
var isopnts = SelectMembers(oCluster, false, false);
var isopntsString = isopnts.getastext();
//manipulate string to parse into a Vec3 Array
//logmessage(isopntsString);
var aIsoPnts = IsoPntVectorArrayFromClusterString(isopntsString);
// Vector.X = subcurve index / Vector.Y = curve U
for (i=0;i<aIsoPnts.length;i++){
logmessage ("Cluster item " + i + " -> Subcurve Index: "+
aIsoPnts[i].x + ", U: " + aIsoPnts[i].y);
}
//string parser function
function IsoPntVectorArrayFromClusterString(inStr){
var listString = inStr.substring( inStr.indexOf("[")+1,
inStr.indexOf("]") )
var listSplitString = listString;
var aSplitIndices = new Array();
while (listSplitString.indexOf("),")!=-1){
aSplitIndices.push(listSplitString.indexOf("),"));
listSplitString = listSplitString.substring(0,
listSplitString.indexOf("),")) + "#"+
listSplitString.substring(listSplitString.indexOf("),")+3);
}
listSplitString = listSplitString.substring(1,(listSplitString.length-1));
var aItems = listSplitString.split("#");
var aReturn = new Array();
for (i=0;i<aItems.length;i++){
var isopnt = XSIMath.CreateVector3();
var aValues = aItems[i].split(",");
isopnt.x = parseFloat(aValues[0]);
isopnt.y = parseFloat(aValues[1]);
aReturn.push(isopnt);
}
return aReturn;
}
2012/11/15 Eugen Sares <softim...@keyvis.at <mailto:softim...@keyvis.at>>
Anyone?
Thanks!
Am 14.11.2012 14:32, schrieb Eugen Sares:
Hi,
I'm looking for away to get the SubcurveIndex/UValue data out
again that an Isopoint Cluster was created from.
var oObject = CreatePrim("Text", "NurbsCurve", null, null);
SelectObj("text.isopnt[(3,0.922)]", null, null);
AddToSelection("text.isopnt[(2,0.433)]", null, null);
AddToSelection("text.isopnt[(0,0.267)]", null, null);
AddToSelection("text.isopnt[(6,0.748)]", null, null);
AddToSelection("text.isopnt[(4,0.463)]", null, null);
var oCluster =
oObject.ActivePrimitive.Geometry.AddCluster(siIsoPointCluster,
"Isopoint_AUTO");
cElements = oCluster.Elements;
for(var i = 0; i < cElements.Count; i++)
LogMessage(cElements(i)); // 0,1,2,3,4
var oSubComponent = oCluster.CreateSubComponent();
LogMessage("oSubComponent.Type: " + oSubComponent.Type); //
isopntSubComponent
LogMessage("ClassName(oSubComponent): " +
ClassName(oSubComponent)); // SubComponent
var aElements = oSubComponent.ElementArray;
LogMessage("oSubComponent.ElementArray: " + aElements); //
LogMessage("oSubComponent.ElementArray.length: " +
aElements.length); // undefined
So neither "Cluster.Elements" nor
"Cluster.CreateSubComponent()" deliver anything usable. Dead end?
What I'd like to achieve is to feed Isopoints into a Curve
Operator.
Thanks!
Best,
Eugen