<commit_before>// title      : dedos
// author     : <NAME>
// license    : MIT License
// description: Conector inferior x1 (bottom)
// file       : xbottom.jscad

//Hay que corregir los agujeros en el agulo

include('lodash.js');

include("node_modules/jscad-utils/jscad-utils.jscad");
include("node_modules/jscad-utils/jscad-utils-color.jscad");

include('node_modules/jscad-utils/jscad-utils-parts.jscad');
include('node_modules/jscad-utils/jscad-boxes.jscad');

function getParameterDefinitions() {
  return [
    { name: 'largodedos', type: 'float', initial: 5, caption: "x:" },
    { name: 'y', type: 'float', initial: 30, caption: "y:" },
    { name: 'z', type: 'float', initial: 8, caption: "z:" },
    { name: 'altopata', type: 'float', initial: 20, caption: "altopata" },
    { name: 'colors', type: 'choice', caption: "Colores", values:["red", "blue", "black"], captions:["Rojo", "Azul", "Negro"], initial: "Rojo" },
  ];
}
 var r = [], y = [], t = [];
 var result,xbottom,cono, ext, int, pata, l;


function CuatroDedos(largodedos){ //Cuatro dedos
var w = [];
   for (var i =0; i<=3; i+=1) {
          l = largodedos+abs((sin(i*50))); //curva dedos
          w.push(translate([ 0, 0, i*10], dedo(l))); //uno arriba del otro separado
          if (i <=2){ // cubos en el medio
            w.push(cube({size:[10,5,8], center:[true,true,false], round:true}).translate([5,0,(i*10+3)]).rotateZ(25));
          }else{}
    }


    return w;
}

function dedo(largo){ //Un dedo con largo variable

 var o = [];
 var oin=[];
 var y=0;
   var x;
   for(var i=0; i<4; i++) {
    x = i*1.5*(largo);
    y = floor(i*i*2);
      o.push(circle({center: true}).scale(6-i/1.5).translate([x,y,0]));
    if (i>=2) { //guardo ultimos los cilindro para sacarlos
      oin.push(circle({center: true}).scale(5-i/1).translate([x,y,0]));
    }
   }

     var fwhole=difference(
    linear_extrude({height: 5}, chain_hull(o))
       .fillet(2,'z+')
       .fillet(2,'z-'),
    linear_extrude({height:7}, chain_hull(oin)))
   return [fwhole];
}


function main(params) {
    util.init(CSG);
  var result =
    difference(
            union(
              CuatroDedos(params.largodedos)),
            union(
                cylinder({d: 30, h: 2}), // cilindro bajo
                cylinder({d: 20, h: 25}).translate([3,0,5]), //cilindro pasador
                cylinder({d: 30, h: 20}).translate([0,0,32.5]), //cilindro superior
                cylinder({d: 45, h: 50, fn:32}).translate([-13,0,0])
             ).translate([-11,0,0]), //desfasaje
                cylinder({d:3, h:40}).translate([1,-2,0]),
                cylinder({d:3, h:40}).translate([1,3,0])
              //  cube({size: [params.largodedos*2.5,5,45],round:true}).rotateZ(43-params.largodedos).translate([3.4*(params.largodedos),1.2*(log(params.largodedos*2)*2),-5])
    );
   return result;

}




   //
<commit_msg>Dedos parametrizados Funcion fingers(largo,alto,r) largo = largo de dedos alto = alto de conectores r = Right?<commit_after>// title      : dedos
// author     : <NAME>
// license    : MIT License
// description: Conector inferior x1 (bottom)
// file       : xbottom.jscad

//Hay que corregir los agujeros en el agulo

include('lodash.js');

include("node_modules/jscad-utils/jscad-utils.jscad");
include("node_modules/jscad-utils/jscad-utils-color.jscad");

include('node_modules/jscad-utils/jscad-utils-parts.jscad');
include('node_modules/jscad-utils/jscad-boxes.jscad');




function CuatroDedos(largodedos,alto){ //Cuatro dedos
var w = [];
var separaciondedos = alto/4;
   for (var i =0; i<=3; i+=1) {
          l = largodedos+abs((sin(i*50))); //curva dedos
          console.log(l);
          w.push(translate([ 0, 0, i*separaciondedos], dedo(l))); //uno arriba del otro separado
          if (i <=2){ // cubos en el medio
            w.push(cube({size:[separaciondedos,5,8], center:[true,true,false], round:true}).translate([5,0,(i*separaciondedos+3)]).rotateZ(25));
          }
    }


    return w;
}

function dedo(largo){ //Un dedo con largo variable

 var o = [];
 var oin=[];
 var y=0;
   var x;
   for(var i=0; i<4; i++) {
    x = i*1.5*(largo);
    y = floor(i*i*2);
      o.push(circle({center: true}).scale(6-i/1.5).translate([x,y,0]));
    if (i>=2) { //guardo ultimos los cilindro para sacarlos
      oin.push(circle({center: true}).scale(5-i/1).translate([x,y,0]));
    }
   }

     var fwhole=difference(
    linear_extrude({height: 5}, chain_hull(o)) //anchodedos
       .fillet(2,'z+')
       .fillet(2,'z-'),
    linear_extrude({height:7}, chain_hull(oin)))//anchocorteinternodedos
   return [fwhole];
}

function fingers(largo,alto,r) {

  var result =
    difference(
            union(
              CuatroDedos(largo,alto)),
            union(
                cylinder({d: 30, h: 2}), // cilindro bajo
                cylinder({d: 20, h: alto/1.5}).translate([3,0,4]), //cilindro pasador
                cylinder({d: 30, h: 20}).translate([0,0,(alto/1.5)+6]), //cilindro superior
                cylinder({d: 45, h: alto, fn:32}).translate([-13,0,0])
             ).translate([-11,0,0]), //desfasaje
                cylinder({d:3, h:alto}).translate([1,-2,0]),
                cylinder({d:3, h:alto}).translate([1,3,0])
              //  cube({size: [params.largodedos*2.5,5,45],round:true}).rotateZ(43-params.largodedos).translate([3.4*(params.largodedos),1.2*(log(params.largodedos*2)*2),-5])
    );

    if (r==1) {
      return  result; //Dedos Der
    }else {
      var piso= cube({size: [1, 1, 1], center: [true, true, false]})
      return  result
                  .mirroredZ()
                  .snap(piso,'z-','inside-'); //dedos IZQ
    }

}

function main() {

  var largo=6;
  var alto=30;
  var r=1; //Der = 1, Izq = 0;
  util.init(CSG);
  return fingers(largo,alto,r);





}




   //

{'fraction_non_alphanumeric': 0.19900068917987596, 'fraction_numerical': 0.03497587870434183, 'mean_word_length': 2.725930680359435, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7097351', 'n_tokens_mistral': 2313, 'n_tokens_neox': 2209, 'n_words': 421}