Skip to content
Snippets Groups Projects
drawFrep.js 7.28 KiB
// Amira Abdel-Rahman
// (c) Massachusetts Institute of Technology 2020

var gridSize=10;
var occupancy=[];

function drawFromFrep(frep,pos,hierarchical){
    rhino3dm().then(async m => {
        console.log('Loaded rhino3dm.');
    
        _rhino3dm = m; // global
    
        var voxelSize=1;

        var setupEmpty={//empty
            nodes: [
                ],
            edges: [
                ],
        
            //material properties - AISI 1095 Carbon Steel (Spring Steel)
            ndofs   : 3*6,
        
            animation :  {
            
                showDisplacement : true,
                exaggeration : 20e2,
                speed:3.0
                
            },
            viz :  {
                minStress:10e6,
                maxStress: -10e6,
                colorMaps:[coolwarm,YlGnBu, winter ,jet],
                colorMap:0,
                
            },
            
        };

        console.log(setupEmpty)
    
        setup=JSON.parse(JSON.stringify(setupEmpty));

        var material={
            area:2.38*2.38,
            density:0.028,
            stiffness:4000
        };

        if(hierarchical){
            createLatticeFromFrep(setup,voxelSize,frep,createHierarchalVoxel,material,pos.clone());
        }else{
            createLatticeFromFrep(setup,voxelSize,frep,createVoxel,material,pos.clone());
        }
        drawGraph(setup,scale,hierarchical);
    

        // const position=pos.clone();


        // var voxelList=json.voxelList;
        
        // setup.hierarchical=json.hierarchical;
        
        



        // if(setup.hierarchical){
        //     setup.voxelSize=voxelSize;
        //     gridSize=json.gridSize*2.0;
            
        //     for (var i=0;i<gridSize;++i){
        //         occupancy.push([]);
        //         for (var j=0;j<gridSize;++j){
        //             occupancy[i].push([]);
        //             for (var k=0;k<gridSize;++k){
        //                 occupancy[i][j].push(-1);
        //             }
        //         }
        //     }
        // }


        // for (var count1=0;count1<voxelList.length;count1++){
        //     var i1=voxelList[count1][0][0]+gridSize/2.0;
        //     var j1=voxelList[count1][0][1]+gridSize/2.0;
        //     var k1=voxelList[count1][0][2]+gridSize/2.0;
        //     var m1=voxelList[count1][1];


        //     if(setup.hierarchical){
        //         var shift=true;
        //         createHierarchalVoxel(setup,voxelSize,new THREE.Vector3(i1*voxelSize+position.x,j1*voxelSize+position.y,k1*voxelSize+position.z),m1,shift);
        //     }else{
        //         createVoxel(setup,voxelSize,new THREE.Vector3(i1*voxelSize+position.x,j1*voxelSize+position.y,k1*voxelSize+position.z),m1);

        //     }
        // }


    
        
        
    
        
        // var materials=[];
        // var supports=[];
        // var loads=[];
        // var fixedDisplacements=[];
        // setup.materials=json.materials;
        // setup.supports=json.supports;
        // setup.loads=json.loads;
        // setup.fixedDisplacements=json.fixedDisplacements;
    
        // var materials1=json.materials;
        // var supports1=json.supports;
        // var loads1=json.loads;
        // var fixedDisplacements1=json.fixedDisplacements;
    
        // for (var i=1;i<materials1.length;i++ ){
        //     var material1=materials1[i];
        //     var boundingMaterial=new _rhino3dm.BoundingBox(
        //         [
        //             material1[0].min.x,
        //             material1[0].min.y,
        //             material1[0].min.z
        //         ], 
        //         [
        //             material1[0].max.x,
        //             material1[0].max.y,
        //             material1[0].max.z
        //     ]);
        //     materials.push([ boundingMaterial,material1[1]]);
        // }
    
        // for (var i=0;i<supports1.length;i++ ){
        //     var support1=supports1[i];
        //     var boundingSupport=new _rhino3dm.BoundingBox(
        //         [
        //             support1[0].min.x,
        //             support1[0].min.y,
        //             support1[0].min.z
        //         ], 
        //         [
        //             support1[0].max.x,
        //             support1[0].max.y,
        //             support1[0].max.z
        //     ]);
        //     supports.push([ boundingSupport,support1[1]]);
    
    
        // }
    
        // for (var i=0;i<loads1.length;i++ ){
        //     var load1=loads1[i];
        //     var boundingLoad=new _rhino3dm.BoundingBox(
        //         [
        //             load1[0].min.x,
        //             load1[0].min.y,
        //             load1[0].min.z
        //         ], 
        //         [
        //             load1[0].max.x,
        //             load1[0].max.y,
        //             load1[0].max.z
        //     ]);
        //     loads.push([ boundingLoad,load1[1]]);
        // }
    
        // for (var i=0;i<fixedDisplacements1.length;i++ ){
        //     var fixedDisplacement1=fixedDisplacements1[i];
        //     var boundingFixedDisplacement=new _rhino3dm.BoundingBox(
        //         [
        //             fixedDisplacement1[0].min.x,
        //             fixedDisplacement1[0].min.y,
        //             fixedDisplacement1[0].min.z
        //         ], 
        //         [
        //             fixedDisplacement1[0].max.x,
        //             fixedDisplacement1[0].max.y,
        //             fixedDisplacement1[0].max.z
        //     ]);
        //     fixedDisplacements.push([ boundingFixedDisplacement,fixedDisplacement1[1]]);
        // }
    
    
        // changeMaterialFromBox(setup,materials);
        // restrainFromBox(setup,supports);
        // loadFromBox(setup,loads);
        // displacementFromBox(setup,fixedDisplacements);
        
        
    
        // // setup.viz.colorMaps=[YlGnBu,coolwarm, winter ,jet];
        // setup.viz.minStress=10e6;
        // setup.viz.maxStress=-10e6;
    
        // setup.viz.exaggeration=1.0;
        // setup.animation.exaggeration=1.0;
        // setup.viz.colorMaps=[];
    
        // setup.numTimeSteps=json.numTimeSteps;
        // setup.maxNumFiles=json.maxNumFiles;
    
    
        // setup.poisson=json.poisson;
        // setup.scale=json.scale;
        // setup.linear=json.linear;
        // setup.globalDamping=json.globalDamping;
        // setup.thermal=json.thermal;
        
    
        // saveJSON();
        console.log(setup)

        // var coneGroup=new THREE.Group();
        // coneGroup.name="coneGroup";
        // for(var x=-10;x<10;x++){
        //   for(var y=-10;y<0;y++){
        //     for(var z=0;z<16;z++){
        //       if(cone(x,y,z)>0){
        //         var nomSize=1.0;
        //         var mesh=new THREE.Mesh(
        //           new THREE.BoxGeometry(scale*nomSize*0.9, scale*nomSize*0.9, scale*nomSize*0.9),
        //           new THREE.MeshLambertMaterial({color: color3,transparent: true,opacity: 0.8})
        //         );
        //         mesh.position.x=x*scale;
        //         mesh.position.y=z*scale-scale/2.0;
        //         mesh.position.z=y*scale;
        //         coneGroup.add(mesh);
        //       }
        //     }
        //   }
        // }
        // Graph.scene().add(coneGroup);
    
        console.log("Success!")
    });

}