Mesh Lattice#

You might want to generate mesh-like conformal lattice. For example, a STL model actually contains many triangles that forms the geometry, these triangle surfaces can be converted to a set of lattice. It is very easy to proceed the conversion using Artisan, if user have the mesh file.

Artisan supports the conversion of line, triangles and tetrahedron elements. Similar to the customized lattice definition, we only need change the parameter la_name to the path of the file which provides the mesh definition.

For example, we have the following main JSON file which fills a part with tetrahedron mesh. The mesh could be generated by an external mesher, such as Gmsh, Salome etc..

{"Setup":{  "Type" : "Geometry",
            "Geomfile": ".//sample-obj//Parts01//Parts01.stl",
            "Rot" : [0.0,0.0,0.0],
            "res":[0.25,0.25,0.25],
            "Padding": 2,
            "onGPU": false,
            "memorylimit": 16106127360
            },
 "WorkFlow":{
      "1": {"Add_Lattice":{
                "la_name": ".//Test_json//Parts01_Mesh_Infill_LR.mld",
                "size": [4.0,4.0,4.0], "thk":0.3,
                "Inv": false, "Fill": false,
                "Cube_Request": {}
                }
           },
      "2":{"Export": {"outfile": ".//Test_results/Parts01_Mesh_Infill.stl"}}
       },
 "PostProcess":{"CombineMeshes": true,
            "RemovePartitionMeshFile": false,
            "RemoveIsolatedParts": false,
            "ExportLazPts": false}
}

You might notice that the parameter Padding became 2, it is different from previous examples’s value 1. The padding meant the additional number of resolution grids padding around the given geometry domain, i.e. the bounding box. In this case, if we do not apply fill operation, that cuts the lattice by using the geometry shape, we should consider add padding grids for the boundary lattice integrity. The lattice definition points to the file .//Test_json//Parts01_Mesh_Infill_LR.mld. The extension mld stands for mesh lattice definition. The mld file defines mesh file.

{
 "type": "MeshLattice",
 "definition": {
      "meshfile": ".//sample-obj//Parts01//Parts01.med",
  }
}

As stated above, the mesh file points to .//sample-obj//Parts01//Parts01.med and type of filling is called MeshLattice. The results is shown below.

_images/MeshLattice.png

One notes that, the parameter of size in the keywords Add_Lattice influences the computing performance. Ideally, this parameter shall define approximated size of a single tetrahedron element. In the some cases of mixed size of elements, user may consider use the smallest element size. Bigger or smaller size definition could yield longer computational time.

User could certainly combine the mesh lattice with other types of lattice, such as periodic lattice. For example, the example below showed a simple combination of Cubic lattice and mesh lattice. Below is an example main JSON that combines the cubic lattice with mesh lattice. Other interpolation keywords, such as Lin_Interpolate and Attractor, are also supported.

{"Setup":{  "Type" : "Geometry",
            "Geomfile": ".//sample-obj//Parts02//Parts02.stl",
            "Rot" : [0.0,0.0,0.0],
            "res":[0.8,0.8,0.8],
                    "Padding": 3,
            "onGPU": false,
            "memorylimit": 16106127360
            },
 "WorkFlow":{
      "1": {"Add_Lattice":{
                "la_name": "Cubic", "size": [10.0,10.0,10.0], "thk":1.5, "Inv": false, "Fill": true,
                "Cube_Request": {}
                }
           },
      "2" :{"HS_Interpolate" : {
                "la_name": ".//Test_json//Parts02_Mesh_Infill_LR.mld",
                "size": [4.0,4.0,4.0],
                "thk": 1.5, "pt":[0.0,0.0,0.0],
                "n_vec":[-1.0,0.0,0.0], "Fill": false, "Cube_Request": {}
                }},
      "3":{"Export": {"outfile": ".//Test_results/Parts02_Combined_Infill.stl"}}
       },
 "PostProcess":{"CombineMeshes": true,
            "RemovePartitionMeshFile": false,
            "RemoveIsolatedParts": true,
            "ExportLazPts": false}
}

We have a half-half infill.

_images/MeshLattice_Combined.png