Simple Layer

Concept

La classe Layer est un successeur de la classe Matrix, qui est une collection de Block dans une structure de grille régulière 3D.

La classe Layer supprime Block de Matrix qui ne pas avoir la coordonnée 0 par les axes X ou Y et applique les transformations aux blocs restants Block qui sont connectés par leurs côtés.

_images/tutorial_simple_layer_1.png

Matrix

_images/tutorial_simple_layer_2.png

Matrix filtrée

_images/tutorial_simple_layer_3.png

Layer

Nous pouvons changer le type de surfaces par les axes X et Y en courbes. Le nombre de nœuds par direction circonférentielle est déterminé par le dernier nombre 0.5;;8 à la première couche radiale:

 1metadata:
 2  run:
 3    factory: geo
 4    strategy:
 5      class: strategy.NoBoolean
 6data:
 7  class: block.Layer
 8  layer: [ [ 0.5;;8, 1.5;;2 ],
 9           [ 1;;2, 2;;2, 3;;2 ] ]
10  "layer_curves": [ [ line, circle_arc ],
11                    [ line, line, line ] ]
12  items_do_structure_map: 1
13  items_do_quadrate_map: 1
_images/tutorial_simple_layer_4.png

Layer incurvé

On peut également modifier le nombre de nœuds par couche radiale/hauteur en modifiant le dernier nombre de sous-champs de la première/seconde layer:

 1metadata:
 2  run:
 3    factory: geo
 4    strategy:
 5      class: strategy.NoBoolean
 6data:
 7  class: block.Layer
 8  layer: [ [ 0.5;;8, 1.5;;4 ],
 9           [ 1;;4, 2;;8, 3;;16 ] ]
10  "layer_curves": [ [ line, circle_arc ],
11                    [ line, line, line ] ]
12  items_do_structure_map: 1
13  items_do_quadrate_map: 1
_images/tutorial_simple_layer_5.png

Layer avec un nombre différent de nœuds par couches radiales/hauteur

Nombre de layers

On peut ajouter des couches radiales en ajoutant des éléments supplémentaires dans le premier sous-champ layer:

 1metadata:
 2run:
 3  factory: geo
 4  strategy:
 5    class: strategy.NoBoolean
 6data:
 7class: block.Layer
 8layer: [ [ 0.5;;8, 1.5;;2, 2.5;;2, 4;;2, 5;;2 ],
 9         [ 1;;2, 2;;2, 3;;2 ] ]
10"layer_curves": [ [ line, circle_arc, line, circle_arc, line ],
11                  [ line, line, line ] ]
12items_do_structure_map: 1
13items_do_quadrate_map: 1
_images/tutorial_simple_layer_6.png

Multi Layer

On peut ajouter des couches de hauteur en ajoutant des éléments supplémentaires dans le deuxième sous-champ layer:

 1metadata:
 2run:
 3  factory: geo
 4  strategy:
 5    class: strategy.NoBoolean
 6data:
 7class: block.Layer
 8layer: [ [ 0.5;;8, 1.5;;2, 2.5;;2, 4;;2, 5;;2 ],
 9         [ 1;;2, 2;;2, 3;;2, 6;;2, 10;;2 ] ]
10"layer_curves": [ [ line, circle_arc, line, circle_arc, line ],
11                  [ line, line, line, line, line ] ]
12items_do_structure_map: 1
13items_do_quadrate_map: 1
_images/tutorial_simple_layer_7.png

Layer multi-hauteur

Zones

Pour spécifier des zones, il faut ajouter les champs items_zones et items_zones_map. Où items_zones est une liste de paires de noms de volume et de six surfaces, par ex. [ Volume, [ NX, X, NY, Y, NZ, Z ] ]:

  1. Volume - nom du volume

  2. [ NX, X, NY, Y, NZ, Z ] - noms des surfaces:

    • NX - surface pointant dans la direction opposée à l’axe X

    • X - surface pointant dans la direction de l’axe X

    • NY - surface pointant dans la direction opposée à l’axe Y

    • Y - surface pointant dans la direction de l’axe Y

    • NZ - surface pointant dans la direction opposée à l’axe Z

    • Z - surface pointant dans la direction de l’axe Z

items_zones_map (et tous les champs qui se terminent par _map) est un tableau d’adressage entre les éléments (blocs dans la couche) et l’index correspondant dans une liste avec des propriétés (par exemple, items_zones) et a la forme `` nombre-de-hauteur`` par nombre-de-couches radiales.

Si l’on veut attribuer des noms de zone avec l’indice 1 de items_zones ([ B, [ NX_B, X_B, NY_B, Y_B, NZ_B, Z_B ] ]) à la 3ème couche de hauteur et à la 5ème radiale la première couche peut définir 1 sur items_zones_map à l’emplacement [3, 5].

Dans cet exemple, nous définissons:

  1. 0 index de items_zones à la couche de hauteur moyenne (3ème) par toutes les couches radiales sauf la dernière (5ème);

  2. 1 index de items_zones aux 2e et 4e couches de hauteur par toutes les couches radiales et également la dernière (5e) couche radiale dans la couche de hauteur moyenne (3e);

  3. Indice de 2 de items_zones à la couche de hauteur inférieure (1ère) et supérieure (5e) par toutes les couches radiales.

 1metadata:
 2  run:
 3    factory: geo
 4    strategy:
 5      class: strategy.NoBoolean
 6data:
 7  class: block.Layer
 8  layer: [ [ 0.5;;8, 1.5;;2, 2.5;;2, 4;;2, 5;;2 ],
 9           [ 1;;2, 2;;2, 3;;2, 6;;2, 10;;2 ] ]
10  "layer_curves": [ [ line, circle_arc, line, circle_arc, line ],
11                    [ line, line, line, line, line ] ]
12  items_do_structure_map: 1
13  items_do_quadrate_map: 1
14  items_zone: [
15    [ Red, [ NX, X, NY, Y, NZ, Z ] ],
16    [ Green, [ NX, X, NY, Y, NZ, Z ] ],
17    [ Blue, [ NX, X, NY, Y, NZ, Z ] ]
18  ]
19  items_zone_map: [
20    [ 2, 2, 2, 2, 2],
21    [ 1, 1, 1, 1, 1],
22    [ 0, 0, 0, 0, 1],
23    [ 1, 1, 1, 1, 1],
24    [ 2, 2, 2, 2, 2]
25  ]
_images/tutorial_simple_layer_8.png

Coupe par axes X et Y du Calque avec zones : rouge - 0, vert - 1, bleu - 2

_images/tutorial_simple_layer_9.png

Coupe par axes X, Y et Z du Calque avec zones : rouge - 0, vert - 1, bleu - 2