Boolean UnionΒΆ

Learning targets

  • Construct object by Boolean operation (union)

  • Apply shape transformations (normal displacement, corner rounding)

This example constructs a binary mask like square object with serifs at its corner. We apply corner roundings in the horizontal directions. Normal displacements are used to define oblique sidewall angles in z-direction.

_images/ex3d_boolean_union_mesh.png

.jcm Input File

  • layout.jcm [ASCII]

      1Layout3D { 
      2  
      3  UnitOfLength = 1e-09 
      4  MeshOptions {
      5    MaximumSideLength = 20
      6  }
      7  Extrusion {
      8    Objects {
      9      Parallelogram {
     10        DomainId = 1
     11        Priority = -1
     12        Width = 200
     13        Height = 200
     14        Boundary {
     15          Class = Periodic
     16        }
     17      }
     18      
     19      
     20      BooleanOperation {
     21        DomainId = 2
     22        Operator = Union
     23        
     24        A {
     25          Parallelogram { 
     26            Height = 80
     27            Width = 80
     28          }
     29        }
     30        
     31        B { 
     32          Parallelogram {
     33            Height = 32
     34            Width = 32
     35            GlobalPosition = [-40 -40]
     36          }
     37          Parallelogram {
     38            Height = 32
     39            Width = 32
     40            GlobalPosition = [40 -40]
     41          }
     42          Parallelogram {
     43            Height = 32
     44            Width = 32
     45            GlobalPosition = [40 40]
     46          }
     47          Parallelogram {
     48            Height = 32
     49            Width = 32
     50            GlobalPosition = [-40 40]
     51          }
     52        }
     53        
     54        NormalDisplacement = 0        
     55        CornerRounding {
     56          Radius = 4
     57          NPoints = 5
     58        }
     59        
     60      } 
     61    }
     62    MultiLayer {
     63      MeshOptions {
     64        MaximumSideLengthZ = 20
     65      }
     66      
     67      LayerInterface {
     68        BoundaryClass = Transparent
     69      }
     70      
     71      Layer {
     72        Thickness = 50
     73        DomainId = 1
     74      }
     75      
     76      LayerInterface {
     77        GeometryValues = [
     78        BooleanOperation{1}/NormalDisplacement = -3
     79        ]
     80      }
     81      
     82      Layer {
     83        Thickness = 65
     84        DomainIdMapping = [1 2 2 3]
     85      }
     86      
     87      LayerInterface {
     88        GeometryValues = [
     89        BooleanOperation{1}/NormalDisplacement = 3
     90        ]
     91      }
     92      
     93      Layer {
     94        Thickness = 50
     95        DomainId = 4
     96      }
     97      
     98      
     99    }
    100    
    101  } 
    102}
    

Note

The mesh is constructed in a tensor-grid like manner (horizontal xy-mesh \times vertical z-mesh). When deforming in z-direction, the mesh quality depends on the cross-section mesh. For this we have chosen a zero normal displacement. This way the cross-section mesh corresponds to the geometry in middle for the structure.