//STEP 5-3: 
//Create subsphere
string $sub_figure = $obj + "_sub_figure";
int $isSphere = false;
createSubFigure($obj, $sub_figure, $isSphere);
  
//PROC: Main method to create sub object.
global proc createSubFigure(string $mainObj, string $sub_figure, int $isSphere){
    string $object = $mainObj + "_sub_obj";
    string $sub_obj1 = $mainObj + "_sub_obj1";
    string $sub_obj2 = $mainObj + "_sub_obj2";
    string $sub_obj3 = $mainObj + "_sub_obj3";    
    string $cmdFirst = $object + ".f[112:223]";
    string $cmdSecond = $object + ".f[240:255]";
    
    vector $temp = getFaceCenter($mainObj, 0);
    float $radius = getRadius($mainObj, 0, $temp) - 0.5;
    polySphere -r $radius -sx 16 -sy 16 -ax 0 1 0 -tx 1 -ch 1 -n $object;
    select -r $cmdFirst $cmdSecond;
    delete;
  
    ssph_coverVertex($object, $sub_obj1);
    ssph_coverEdge($object, $sub_obj2);
  
    string $cmdThird = $object + ".f[48:111]";
    select -r $cmdThird;
    delete;
    
    ssph_coverRestFaces($object, $sub_obj3, $isSphere);
    
    delete $object;
    select -r $sub_obj1;
    select -tgl $sub_obj2;
    select -tgl $sub_obj3; 
    group -n $sub_figure;    
}
  
//PROC: Covering edges with cylinders
global proc ssph_coverEdge(string $obj, string $sub_obj2){
    string $mash2[];
    string $circle[] = `circle -r 0.08`;
    rename $circle[0] cir;
    float $direction[3] = {0,1,0};
  
    for($a=64; $a<240; $a++){
        if($a<128 || $a>=176){
            string $cmd1 = $obj + ".e[" + $a + "]";
            select $cmd1;
            string $edges[] = `polyToCurve -form 2 -degree 3`;
            string $name2[] = `extrude -ch true -rn false -po 0 -et 2 -ucp 1 -fpt 1 -upn 1 -rotation 0 -scale 1 -rsp 1 "cir" $edges[0]`;
            xform -cp;
            delete $edges[0];
            
            float $n[3] = `pointOnSurface -normal $name2[0]`;
            float $d = dotProduct($n, $direction, 0);
            if($d < 0.0){
                reverseSurface -d 0 -ch 1 -rpo 1 $name2[0];
            }
            $mash2[$a] = $name2[0];
        }
    }
  
    delete cir;
    select -r $mash2[64];
    for($a=65; $a<240; $a++){
        if($a<128 || $a>=176){
            select -tgl $mash2[$a];    
        }
  
    }
    group -n $sub_obj2;
}