Code: Select all
function addPolyline(p, closed, grel) { //p = Array of type [ [ x, y, bulge, rel ], ..., [ ... ] ]
// rel = true | false (this vector's coords are relative to previous')
//closed = true | false
//grel = true | false (Global relative)
var pline=new RPolyline();
pline.setClosed(isNull(closed) ? true : closed);
var v = new RVector(0,0);
for (var i = 0; i < p.length; i++) {
if( isVector( p[i][0] ) ) {
var v0 = p[i][0] , b = def(p[i][1]) , rel = p[i][2];
} else {
var v0 = new RVector( def(p[i][0]) , def(p[i][1]) ) , b = def(p[i][2]) , rel = p[i][3];
}
if ( isNull(rel) ? grel : rel ) {
v = v.operator_add(v0);
} else {
v = v0;
}
pline.appendVertex( v , b );
}
return addEntity(pline);
}
- Can use bulge
- Current vertex can be relative to the previous one.
-- 'relative' flag can also be set globally, next to the 'closed polyline' one
Usage :
Code: Select all
// Without Relative Coordinates --standard usage
addPolyline([
[ 0 , 0 ],
[ 20 , -10 , 1 ],
[ 20 , 30 ],
[ 0 , 20 , 1 ],
])
//With individual Relative Coordinates
addPolyline([
[ 100 , 0 ],
[ 20 , -10 , 1 ],
[ 0 , 40 , 0 , true ],
[ -20 , -10 , 1 , true ],
])
//With Global Relative Coordinates
addPolyline([
[ 200 , 0 , 0 ],
[ 20 , -10 , 1 ],
[ 0 , 40 ],
[ -20 , -10 , 1 ],
], true , true )