@_@_vid_@_@ = function() {
// @_@_name_@_@ part
var childs = '@_@_childs_@_@';
var translate = [@_@_translate_@_@];
return makeUnion(childs).translate(translate);
}
@_@_vid_@_@ = function() {
var translate=[@_@_translate_@_@];
var childs = '@_@_childs_@_@';
return extrudeUnion({offset: [0, 0, 0.01],},childs).translate(translate);
}
@_@_vid_@_@ = function(extru=0,extrudeoptions,rotateextude=false) {
// @_@_name_@_@ polyline
//console.log('polyline start');
var anker= '@_@_anker_@_@';
var translate='@_@_translate_@_@';
var rotate=@_@_rotate_@_@;
var quality=@_@_quality_@_@;
var linelist='@_@_translate_@_@;@_@_linelist_@_@';
var newlist = [[@_@_translate_@_@]];
var linear = linelist.split(';');
var x = parseFloat(linear[0].split(',')[0]);
var y = parseFloat(linear[0].split(',')[1]);
for (var i = 1; i !== linear.length; i++) {
x = x + parseFloat(linear[i].split(',')[0]);
y = y + parseFloat(linear[i].split(',')[1]);
newlist.push([x,y]);
}
//console.log('polyline end');
//console.log(JSON.stringify( newlist));
/*
if(extru==0){
return CAG.fromPoints(newlist);
}
*/
if(extru!==0){
if(!rotateextude){
return CAG.fromPoints(newlist).extrude(extrudeoptions).rotateZ(rotate);
}
if(rotateextude){
return CAG.fromPoints(newlist).rotateExtrude(extrudeoptions).rotateZ(rotate);
}
}
if(typeof extrudeoptions['angle'] !== 'undefined'){
console.log(extrudeoptions);
return CAG.fromPoints(newlist).rotateZ(rotate).translate(translate).rotateExtrude(extrudeoptions);
}
}
@_@_vid_@_@ = function(extru=0,extrudeoptions,rotateextude=false) {
// @_@_name_@_@ circle
var anker= '@_@_anker_@_@';
var translate=[@_@_translate_@_@];
var diameter=@_@_diameter_@_@;
var quality=@_@_quality_@_@;
if(extru==0){
return CAG.circle({center: translate, radius: diameter/2, resolution: quality});
}
if(extru!==0){
if(!rotateextude){
return CAG.circle({center: translate, radius: diameter/2, resolution: quality}).extrude(extrudeoptions);
}
if(rotateextude){
return CAG.circle({center: translate, radius: diameter/2, resolution: quality}).rotateExtrude(extrudeoptions);
}
}
}
@_@_vid_@_@ = function(extru=0,extrudeoptions,rotateextude=false) {
// @_@_name_@_@ rectangle
var anker= '@_@_anker_@_@';
var translate=[@_@_translate_@_@];
var rotate=@_@_rotate_@_@;
var x='@_@_x_@_@';
var y='@_@_y_@_@';
console.log('rotate: '+rotate);
console.log('rotateextude: '+rotateextude);
/*
console.log(extrudeoptions);
if(extru==0){
if(typeof extrudeoptions['angle'] !== 'undefined'){
console.log('undefined: '+extrudeoptions['angle']);
return CAG.rectangle({corner1: [0, 0], corner2: [x, y]}).rotateZ(rotate).translate(translate);
}
}
*/
if(extru!==0){
if(!rotateextude){
return CAG.rectangle({corner1: [0, 0], corner2: [x, y]}).extrude(extrudeoptions).rotateZ(rotate).translate(translate);
}
}
if(typeof extrudeoptions['angle'] !== 'undefined'){
//console.log(extrudeoptions);
return CAG.rectangle({corner1: [0, 0], corner2: [x, y]}).rotateZ(rotate).translate(translate).rotateExtrude(extrudeoptions);
}
}
@_@_vid_@_@ = function() {
// @_@_name_@_@ extrusion
var quality=@_@_quality_@_@;
var intersects = '@_@_intersects_@_@';
var unions='@_@_unions_@_@';
var diffus='@_@_diffus_@_@';
var value = @_@_value_@_@;
var minusval = @_@_minusval_@_@;
var angle = @_@_angle_@_@;
var twiststeps = @_@_twiststeps_@_@;
var rotate = [@_@_rotate_@_@];
var translate = [@_@_translate_@_@];
var offset = [@_@_offset_@_@,value];
if(angle === 0){
var extrudeoptions = {offset: offset,extrude: value};
var Eintersects =extrudeUnion(extrudeoptions,intersects);
var Eunions=extrudeUnion(extrudeoptions,unions);
var Ediffus=extrudeUnion(extrudeoptions,diffus);
}else{
if(twiststeps === 0){
var extrudeoptions = {angle: angle, resolution: quality,extrude: value};
var Eintersects =extrudeRotateUnion(extrudeoptions,intersects);
var Eunions=extrudeRotateUnion(extrudeoptions,unions);
var Ediffus=extrudeRotateUnion(extrudeoptions,diffus);
}else{
var extrudeoptions = {offset: offset,twistangle: angle,twiststeps: twiststeps,extrude: value};
var Eintersects =extrudeUnion(extrudeoptions,intersects);
var Eunions=extrudeUnion(extrudeoptions,unions);
var Ediffus=extrudeUnion(extrudeoptions,diffus);
}
}
if (minusval) {
var Evalue = 0 - value;
}
if (!minusval) {
var Evalue = 0;
}
var moveing = [0,0,Evalue];
if (!Eintersects) {
if (!Ediffus) {return Eunions;}
return Eunions.subtract(Ediffus).translate(moveing).rotateX(rotate[0]).rotateY(rotate[1]).rotateZ(rotate[2]).translate(translate);
}
if (!Ediffus) {
return Eintersects.intersect(Eunions).translate(moveing).rotateX(rotate[0]).rotateY(rotate[1]).rotateZ(rotate[2]).translate(translate);
}
if (Eintersects) {if (Eunions) {if (Ediffus) {
return Eintersects.intersect(Eunions).subtract(Ediffus).translate(moveing).rotateX(rotate[0]).rotateY(rotate[1]).rotateZ(rotate[2]).translate(translate);
}}}
}
@_@_vid_@_@ = function() {
// @_@_name_@_@ merge
var quality=@_@_quality_@_@;
var intersects = '@_@_intersects_@_@';
var unions='@_@_unions_@_@';
var diffus='@_@_diffus_@_@';
var value = @_@_value_@_@;
var minusval = @_@_minusval_@_@;
var angle = @_@_angle_@_@;
var twiststeps = @_@_twiststeps_@_@;
var rotate = [@_@_rotate_@_@];
var translate = [@_@_translate_@_@];
var offset = [@_@_offset_@_@,value];
var Eintersects =makeUnion(intersects);
var Eunions=makeUnion(unions);
var Ediffus=makeUnion(diffus);
if (Eunions) {
if (!Eintersects) {if (Ediffus) {
var newobject = Eunions.subtract(Ediffus).rotateX(rotate[0]).rotateY(rotate[1]).rotateZ(rotate[2]).translate(translate);
}}
if (!Ediffus) { if (Eintersects) {
var newobject = Eintersects.intersect(Eunions).rotateX(rotate[0]).rotateY(rotate[1]).rotateZ(rotate[2]).translate(translate);
}}
if (Eintersects) {if (Ediffus) {
var newobject = Eintersects.intersect(Eunions).subtract(Ediffus).rotateX(rotate[0]).rotateY(rotate[1]).rotateZ(rotate[2]).translate(translate);
}}
if (!Eintersects) {if (!Ediffus) {
var newobject = Eunions.rotateX(rotate[0]).rotateY(rotate[1]).rotateZ(rotate[2]).translate(translate);;
}}
}
if(value === 0){if(angle === 0){if(twiststeps === 0){if(offset[0] === 0){if(offset[1] === 0){
var endobject = newobject;
}}}}}
if(value !== 0){if(angle === 0){if(twiststeps === 0){if(offset[0] === 0){if(offset[1] === 0){
var endobject = newobject;
for(var i = 1; i !== value; i++)
{
var endobject = endobject.union([endobject,newobject.rotateZ((360/value)*i)]);
}
}}}}}
//console.log('value_true: '+value+' - '+angle+' - '+twiststeps+' - '+offset[0]+' - '+ offset[1]);
if(true){if(angle === 0){if(twiststeps === 0){if(offset[0] !== 0){if(offset[1] === 0){
var endobject = newobject.scale([offset[0], 1, 1]);
}}}}}
if(true){if(angle === 0){if(twiststeps === 0){if(offset[0] === 0){if(offset[1] !== 0){
var endobject = newobject.scale([1,offset[1], 1]);
}}}}}
if(true){if(angle === 0){if(twiststeps === 0){if(offset[0] !== 0){if(offset[1] !== 0){
var endobject = newobject.scale([offset[0],offset[1], 1]);
}}}}}
if(true){if(angle === 0){if(twiststeps !== 0){if(offset[0] === 0){if(offset[1] === 0){
var endobject = newobject.scale([1,1, twiststeps]);
}}}}}
if(true){if(angle === 0){if(twiststeps !== 0){if(offset[0] !== 0){if(offset[1] === 0){
var endobject = newobject.scale([offset[0],1, twiststeps]);
}}}}}
if(true){if(angle === 0){if(twiststeps !== 0){if(offset[0] === 0){if(offset[1] !== 0){
var endobject = newobject.scale([1,offset[1], twiststeps]);
}}}}}
if(true){if(angle === 0){if(twiststeps !== 0){if(offset[0] !== 0){if(offset[1] !== 0){
var endobject = newobject.scale([offset[0],offset[1], twiststeps]);
}}}}}
if(true){if(angle === 0){if(twiststeps === 0){if(offset[0] === 1){if(offset[1] === 0){
//console.log('value_true: '+value+' - '+angle+' - '+twiststeps+' - '+offset[0]+' - '+ offset[1]);
var endobject = newobject.mirroredX();
}}}}}
if(true){if(angle === 0){if(twiststeps === 0){if(offset[0] === 0){if(offset[1] === 1){
//console.log('value_true: '+value+' - '+angle+' - '+twiststeps+' - '+offset[0]+' - '+ offset[1]);
var endobject = newobject.mirroredY();
}}}}}
if(true){if(angle === 0){if(twiststeps === 1){if(offset[0] === 0){if(offset[1] === 0){
//console.log('value_true: '+value+' - '+angle+' - '+twiststeps+' - '+offset[0]+' - '+ offset[1]);
var endobject = newobject.mirroredZ();
}}}}}
if(true){if(angle === 0){if(twiststeps === 1){if(offset[0] === 1){if(offset[1] === 0){
//console.log('value_true: '+value+' - '+angle+' - '+twiststeps+' - '+offset[0]+' - '+ offset[1]);
var endobject = newobject.mirroredX().mirroredZ();
}}}}}
if(true){if(angle === 0){if(twiststeps === 1){if(offset[0] === 0){if(offset[1] === 1){
//console.log('value_true: '+value+' - '+angle+' - '+twiststeps+' - '+offset[0]+' - '+ offset[1]);
var endobject = newobject.mirroredY().mirroredZ();
}}}}}
if(true){if(angle === 0){if(twiststeps === 1){if(offset[0] === 1){if(offset[1] === 1){
//console.log('value_true: '+value+' - '+angle+' - '+twiststeps+' - '+offset[0]+' - '+ offset[1]);
var endobject = newobject.mirroredX().mirroredY().mirroredZ();
}}}}}
if(true){if(angle === 0){if(twiststeps === 0){if(offset[0] === 1){if(offset[1] === 1){
//console.log('value_true: '+value+' - '+angle+' - '+twiststeps+' - '+offset[0]+' - '+ offset[1]);
var endobject = newobject.mirroredX().mirroredY();
}}}}}
if(value !== 0){if(angle !== 0){if(twiststeps === 0){if(offset[0] === 0){if(offset[1] === 0){
var endobject = newobject;
for(var i = 1; i !== value; i++)
{
var endobject = endobject.union([endobject,newobject.rotateZ((angle/value)*i)]);
}
}}}}}
if(value !== 0){if(angle !== 0){if(twiststeps !== 0){if(offset[0] === 0){if(offset[1] === 0){
var endobject = newobject;
for(var i = 1; i !== value; i++)
{
var endobject = endobject.union([endobject,newobject.rotateZ((angle/value)*i)]);
}
for(var i = 1; i !== value; i++)
{
for(var v = 1; v !== twiststeps; v++)
{
var endobject = endobject.union([endobject,newobject.rotateZ((angle/value)*i).rotateX((angle/twiststeps)*v)]);
}
var endobject = endobject.union([endobject,newobject.rotateZ((angle/value)*i).rotateX(angle)]);
}
}}}}}
if(value !== 0){if(true){if(twiststeps !== 0){if(offset[0] !== 0){if(offset[1] !== 0){
var endobject = newobject;
for(var i = 0; i !== value; i++)
{
for(var v = 0; v !== twiststeps; v++)
{
var endobject = endobject.union([endobject,newobject.translate([(offset[0]/(value-1))*i,((offset[1]/(twiststeps-1))*v),0])]);
}
}
}}}}}
if(value !== 0){if(angle === 0){if(twiststeps === 0){if(offset[0] !== 0){if(offset[1] === 0){
var endobject = newobject;
for(var i = 0; i !== value; i++)
{
var endobject = endobject.union([endobject,newobject.translate([(offset[0]/(value-1))*i,0,0])]);
}
}}}}}
if(value !== 0){if(angle === 0){if(twiststeps === 0){if(offset[0] === 0){if(offset[1] !== 0){
var endobject = newobject;
for(var i = 0; i !== value; i++)
{
var endobject = endobject.union([endobject,newobject.translate([0,(offset[1]/(value-1))*i,0])]);
}
}}}}}
if(value !== 0){if(angle === 0){if(twiststeps === 0){if(offset[0] !== 0){if(offset[1] !== 0){
var endobject = newobject;
for(var i = 0; i !== value; i++)
{
var endobject = endobject.union([endobject,newobject.translate([(offset[0]/(value-1))*i,(offset[1]/(value-1))*i,0])]);
}
}}}}}
if(value === 0){if(angle !== 0){if(twiststeps === 0){if(offset[0] === 0){if(offset[1] === 0){
var endobject = CSG.sphere({center: [0, 0, 0],radius: angle, resolution: quality}).rotateX(rotate[0]).rotateY(rotate[1]).rotateZ(rotate[2]).translate(translate);
}}}}}
return endobject;
}
@_@_vid_@_@ = function() {
// @_@_name_@_@ object
var originid = '@_@_originid_@_@';
var translate = [@_@_translate_@_@];
var color = [@_@_color_@_@];
var rotate = [@_@_rotate_@_@];
var quality=@_@_quality_@_@;
if (originid.substr(0, 3)==='vid') {
if (color[3]) {
if (color[3]!==0) {
return makeUnion(originid).rotateX(rotate[0]).rotateY(rotate[1]).rotateZ(rotate[2]).translate(translate).setColor(color);
}
}
return makeUnion(originid).rotateX(rotate[0]).rotateY(rotate[1]).rotateZ(rotate[2]).translate(translate);
}
}
@_@_vid_@_@ = function() {
// @_@_name_@_@ inclpart
var vod = '@_@_originid_@_@';
var translate = [@_@_translate_@_@];
var rotate = [@_@_rotate_@_@];
vod = vod.replace("vid", "vod");
var ncsgu = this['@_@_vid_@_@'+vod]();
return ncsgu.rotateX(rotate[0]).rotateY(rotate[1]).rotateZ(rotate[2]).translate(translate);
}
main = function() {
var csgu = this['@_@_activpart_@_@']();
return csgu;
}
function extrudeUnion(extrudeoptions,liststring) {
//console.log("liststring: "+liststring);
if(liststring===''){
return false;
}else{
var inters = liststring.split(',');
//console.log("length: "+inters.length);
//console.log("liststring: "+liststring);
//console.log(extrudeoptions);
//console.log(extrudeoptions['extrude']);
if (inters.length === 1) {
return this[liststring](extrudeoptions['extrude'],extrudeoptions,false);
} else {
var intersect = this[inters[0]](extrudeoptions['extrude'],extrudeoptions,false);
inters.shift();
return intersect.union(extrudeUnion(extrudeoptions,inters.join(',')));
}
}
}
function extrudeRotateUnion(extrudeoptions,liststring) {
//console.log("liststring: "+liststring);
if(liststring===''){
return false;
}else{
var inters = liststring.split(',');
//console.log("length: "+inters.length);
//console.log("liststring: "+liststring);
//console.log(extrudeoptions);
//console.log(extrudeoptions['extrude']);
if (inters.length === 1) {
return this[liststring](extrudeoptions['extrude'],extrudeoptions,true);
} else {
var intersect = this[inters[0]](extrudeoptions['extrude'],extrudeoptions,true);
inters.shift();
return intersect.union(extrudeRotateUnion(extrudeoptions,inters.join(',')));
}
}
}
function makeUnion(liststring) {
//console.log("if this do not stop, something is wrong in datalist: "+liststring);
if(liststring===''){
return false;
}else{
var inters = liststring.split(',');
//console.log("length: "+inters.length);
if (inters.length === 1) {
return this[liststring]();
} else {
var intersect = this[inters[0]]();
inters.shift();
return intersect.union(makeUnion(inters.join(',')));
}
}
}