Skip to content
Snippets Groups Projects
drawFrep.js 7.28 KiB
Newer Older
  • Learn to ignore specific revisions
  • Amira Abdel-Rahman's avatar
    Amira Abdel-Rahman committed
    // 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!")
        });
    
    }