Skip to content
Snippets Groups Projects
draw.js 4.29 KiB
Newer Older
Amira Abdel-Rahman's avatar
Amira Abdel-Rahman committed

// Amira Abdel-Rahman
// (c) Massachusetts Institute of Technology 2020

var gridSize=10;

rhino3dm().then(async m => {
    console.log('Loaded rhino3dm.');

    _rhino3dm = m; // global

    var voxelSize=json.voxelSize;

    var material=json.materials[0][1];

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

    if(!json.rhino){
        var latticeSizeX=json.latticeSizeX;
        var latticeSizeY=json.latticeSizeY;
        var latticeSizeZ=json.latticeSizeZ;

        gridSize=json.gridSize;

        // console.log(material.area)

        const position=new THREE.Vector3(0,0,0);
        
        setup.hierarchical=json.hierarchical;
        
        setup.voxelSize=voxelSize;

        if(setup.hierarchical){
            createLattice(setup,voxelSize,latticeSizeX,latticeSizeY,latticeSizeZ,createHierarchalVoxel,material);
        }else{
            createLattice(setup,voxelSize,latticeSizeX,latticeSizeY,latticeSizeZ,createVoxel,material);
        }

    }else{

        var latticeSizeX=json.latticeSizeX;
        var latticeSizeY=json.latticeSizeY;
        var latticeSizeZ=json.latticeSizeZ;

        setup.hierarchical=json.hierarchical;
        
        setup.voxelSize=voxelSize;


        createGeometryFromRhino(setup,json.rhinoFileName,json.layerIndex,voxelSize,latticeSizeX,latticeSizeY,latticeSizeZ,material);
    }
    

    
    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("Success!")
});