Globali
{
   //{Globali
   Glob_Posizione_Coll_OffZ      "Globale - Posizionamento - Off Z per evitare sovrapposizioni"   0.1    NoSave
   //}Globali

   //{Mensola Cartesio
   //--Supporto
   Mensola_Cartesio_Supp_Y       "Mensola Cartesio - Supporto Retro - Y"                          125    NoSave
   Mensola_Cartesio_Supp_Z       "Mensola Cartesio - Supporto Retro - Z"                          152    NoSave
   Mensola_Cartesio_Supp_Spe_Rt  "Mensola Cartesio - Supporto Retro - Spessore Retro"             24     NoSave
   Mensola_Cartesio_Supp_OffX_Dx "Mensola Cartesio - Supporto Retro - Offset X Destra"            1      NoSave
   Mensola_Cartesio_Supp_OffX_Sx "Mensola Cartesio - Supporto Retro - Offset X Sinistra"          1      NoSave
   Mensola_Cartesio_Supp_OffX_R  "Mensola Cartesio - Supporto Retro - Offset X Min Riduzione"     5      NoSave
   Mensola_Cartesio_Supp_OffZ    "Mensola Cartesio - Supporto Retro - Offset Z (Grafica)"         0.4    NoSave

   Mensola_Cartesio_Pann_Y       "Mensola Cartesio - Pannello Retro - Y"                          100    NoSave
   Mensola_Cartesio_Pann_Z       "Mensola Cartesio - Pannello Retro - Z"                          19     NoSave
   Mensola_Cartesio_Pann_OffX    "Mensola Cartesio - Pannello Retro - Offset X"                   23     NoSave
   Mensola_Cartesio_Pann_OffY    "Mensola Cartesio - Pannello Retro - Offset Y"                   12.5   NoSave
   Mensola_Cartesio_Staf_Spe     "Mensola Cartesio - Staffa Retro - Spessore"                     2      NoSave

   //--Vetri
   Mens_Cartesio_Vetri_Spe       "Mensola Cartesio - Vetri - Spessore"                            8      NoSave

   //--Laccatura
   Mens_Cartesio_Lacc_Z          "Mensola Cartesio - Laccatura - Z"                               125    NoSave
   Mens_Cartesio_Lacc_MagX       "Mensola Cartesio - Laccatura - Maggiorazione X"                 1      NoSave

   //--Led
   Mens_Cartesio_Led_Y           "Mensola Cartesio - Led - Y"                                     7      NoSave
   Mens_Cartesio_Led_Z           "Mensola Cartesio - Led - Z"                                     8.6    NoSave
   Mens_Cartesio_Led_OffX        "Mensola Cartesio - Led - Offset X"                              45     NoSave
   Mens_Cartesio_Led_OffY        "Mensola Cartesio - Led - Offset Y"                              12.5   NoSave
   Mens_Cartesio_Led_OffZ        "Mensola Cartesio - Led - Offset Z"                              14     NoSave
   //}Mensola Cartesio

   //{Mensola Rivestita
   //--Piano
   Mens_Riv_Piano_Y              "Mensola Riv - Piano - Y"                                        50     NoSave
   Mens_Riv_PianoP406_Y          "Mensola Riv - Piano P406 - Y"                                   76     NoSave

   //--Vetri
   Mens_Riv_Vetri_Spe            "Mensola Riv - Vetri - Spessore"                                  4     NoSave
   Mens_Riv_Vetri_R              "Mensola Riv - Vetri - Raggio smusso"                             1     NoSave
   Mens_Riv_Vetri_OffX_Dx        "Mensola Riv - Vetri - Offset X Destra"                           2     NoSave
   Mens_Riv_Vetri_OffX_Sx        "Mensola Riv - Vetri - Offset X Sinistra"                         2     NoSave
   Mens_Riv_Vetri_OffZ_Rt        "Mensola Riv - Vetri - Offset Z Retro"                            0     NoSave
   Mens_Riv_Vetri_OffZ_Fr        "Mensola Riv - Vetri - Offset Z Fronte"                           2     NoSave
   Mens_Riv_Vetri_OffY_Fr        "Mensola Riv - Vetri - Offset Y Fronte"                           2     NoSave

   //Staffe
   //Mens_Dub_Staffe_0_X           "Mensola Dub - Staffe Tipo 0 - X"                                135    NoSave
   //Mens_Dub_Staffe_0_Y           "Mensola Dub - Staffe Tipo 0 - Y"                                29     NoSave
   //Mens_Dub_Staffe_0_Z           "Mensola Dub - Staffe Tipo 0 - Z"                                190    NoSave
   //Mens_Dub_Staffe_0_OffX        "Mensola Dub - Staffe Tipo 0 - Offset X"                         92     NoSave
   //Mens_Dub_Staffe_1_OffX        "Mensola Dub - Staffe Tipo 1 - Offset X"                         129    NoSave

   //--Led
   Mens_Riv_Led_OffX             "Mensola Riv - Led - Offset X"                                  6.5     NoSave
   Mens_Riv_Led_OffZ             "Mensola Riv - Led - Offset Z"                                   45     NoSave

   //--Trasformatore
   Mens_Riv_Trasf_X              "Mensola Dub - Trasformatore - X"                               104     NoSave
   Mens_Riv_Trasf_Y              "Mensola Dub - Trasformatore - Y"                                44     NoSave
   Mens_Riv_Trasf_Z              "Mensola Dub - Trasformatore - Z"                                40     NoSave
   Mens_Riv_Trasf_R              "Mensola Dub - Trasformatore - Raggio smusso"                    22      NoSave

   ////--Dimmer
   //Mens_Dub_Dimm_X               "Mensola Dub - Dimmer - X"                                       160    NoSave
   //Mens_Dub_Dimm_Y               "Mensola Dub - Dimmer - Y"                                       30     NoSave
   //Mens_Dub_Dimm_Z               "Mensola Dub - Dimmer - Z"                                       40     NoSave
   //Mens_Dub_Dimm_R               "Mensola Dub - Dimmer - Raggio smusso"                           6      NoSave
   //Mens_Dub_Dimm_OffX            "Mensola Dub - Dimmer - Offset X da staffa"                      178    NoSave
   //}Mensola Rivestita

   //{Mensola Dub
   //--Piano
   Mens_Dub_Piano_Y              "Mensola Dub - Piano - Y"                                        38     NoSave

   //--Vetri
   Mens_Dub_Vetri_Spe            "Mensola Dub - Vetri - Spessore"                                 8      NoSave
   Mens_Dub_Vetri_R              "Mensola Dub - Vetri - Raggio smusso"                            1      NoSave
   Mens_Dub_Vetri_OffX_Dx        "Mensola Dub - Vetri - Offset X Destra"                          2.5    NoSave
   Mens_Dub_Vetri_OffX_Sx        "Mensola Dub - Vetri - Offset X Sinistra"                        2.5    NoSave
   Mens_Dub_Vetri_OffZ_Rt        "Mensola Dub - Vetri - Offset Z Retro"                           0.8    NoSave
   Mens_Dub_Vetri_OffZ_Fr        "Mensola Dub - Vetri - Offset Z Fronte"                          2.5    NoSave

   //--Staffe
   Mens_Dub_Staffe_0_X           "Mensola Dub - Staffe Tipo 0 - X"                                135    NoSave
   Mens_Dub_Staffe_0_Y           "Mensola Dub - Staffe Tipo 0 - Y"                                29     NoSave
   Mens_Dub_Staffe_0_Z           "Mensola Dub - Staffe Tipo 0 - Z"                                190    NoSave
   Mens_Dub_Staffe_0_OffX        "Mensola Dub - Staffe Tipo 0 - Offset X"                         92     NoSave
   Mens_Dub_Staffe_1_OffX        "Mensola Dub - Staffe Tipo 1 - Offset X"                         129    NoSave
   Mens_Dub_Staffe_1_OffY        "Mensola Dub - Staffe Tipo 1 - Offset Y"                         41     NoSave

   //--Led
   Mens_Dub_Led_OffX             "Mensola Dub - Led - Offset X"                                   8.5    NoSave
   Mens_Dub_Led_OffZ             "Mensola Dub - Led - Offset Z"                                   45     NoSave

   //--Trasformatore
   Mens_Dub_Trasf_Z              "Mensola Dub - Trasformatore - Z"                                40     NoSave
   Mens_Dub_Trasf_R              "Mensola Dub - Trasformatore - Raggio smusso"                    6      NoSave
   Mens_Dub_Trasf_OffX           "Mensola Dub - Trasformatore - Offset X da staffa"               10.5   NoSave

   //--Dimmer
   Mens_Dub_Dimm_X               "Mensola Dub - Dimmer - X"                                       160    NoSave
   Mens_Dub_Dimm_Y               "Mensola Dub - Dimmer - Y"                                       30     NoSave
   Mens_Dub_Dimm_Z               "Mensola Dub - Dimmer - Z"                                       40     NoSave
   Mens_Dub_Dimm_R               "Mensola Dub - Dimmer - Raggio smusso"                           6      NoSave
   Mens_Dub_Dimm_OffX            "Mensola Dub - Dimmer - Offset X da staffa"                      178    NoSave
   //}Mensola Dub

   //{Mensola Glasserie
   //--Revisioni
   Mens_Glasserie_PanRt_Rev_1    "Mensola Glasserie - Pannello retro - Revisione dimensioni"      220316 NoSave

   //--Dimensioni
   Mens_Glasserie_OffX           "Mensola Glasserie - Offset X"                                   1.5    NoSave
   Mens_Glasserie_OffY           "Mensola Glasserie - Offset Y"                                   1.5    NoSave
   Mens_Glasserie_OffZ           "Mensola Glasserie - Offset Z"                                   0      NoSave

   //--Retro
   Mens_Glasserie_PanRt_Z        "Mensola Glasserie - Pannello retro/illuminazione - Spessore"    19     NoSave
   Mens_Glasserie_PanRt_OffX_Dx  "Mensola Glasserie - Pannello retro/illuminazione - Offset X Dx" 15     NoSave
   Mens_Glasserie_PanRt_OffX_Sx  "Mensola Glasserie - Pannello retro/illuminazione - Offset X Sx" 15     NoSave
   Mens_Glasserie_PanRt_OffY_Sup "Mensola Glasserie - Pannello retro/illuminazione - Offset Y Up" 15     NoSave
   Mens_Glasserie_PanRt_OffY_Inf "Mensola Glasserie - Pannello retro/illuminazione - Offset Y Dw" 15     NoSave

   Mens_Glasserie_VtRt_Z         "Mensola Glasserie - Vetro retro - Spessore"                     4      NoSave

   //--Ripiano
   Mens_Glasserie_VtRip_Raggio   "Mensola Glasserie - Ripiano vetro - Raggio"                     7      NoSave
   Mens_Glasserie_VtRip_Y        "Mensola Glasserie - Ripiano vetro - Spessore"                   10     NoSave
   Mens_Glasserie_VtRip_PosY     "Mensola Glasserie - Ripiano vetro - Posizione in altezza"       10     NoSave
   //}Mensola Glasserie
}

Misure
{
   //{Mensola Cartesio
   Mens_Cartesio_X  "Mensola Cartesio - Larghezza"  < OnlyDesc;NoDiz >
   {
      Nominali  1104   1472   1840   2208
      Reali     1104   1472   1840   2208
   }

   Mens_Cartesio_Verso  "Mensola Cartesio - Verso"  < OnlyDesc;NoDiz >
   {
      Nominali  Sinistra   Destra
      Reali       -1         1
   }
   //}Mensola Cartesio

   //{Mensola Rivestita
   Mens_Riv_X  "Mensola Riv - Larghezza"  < OnlyDesc;NoDiz >
   {
      Nominali  1104   1472   1840   2208   2576   2944
      Reali     1104   1472   1840   2208   2576   2944
   }

   Mens_Riv_Z  "Mensola Riv - Profondita"  < OnlyDesc;NoDiz >
   {
      Nominali  270   406
      Reali     270   406
   }
   //}Mensola Rivestita

   //{Mensola Dub
   Mens_Dub_X  "Mensola Dub - Larghezza"  < OnlyDesc;NoDiz >
   {
      Nominali  552   736   920   1104   1472   1840   2208
      Reali     552   736   920   1104   1472   1840   2208
   }

   Mens_Dub_Z  "Mensola Dub - Profondita"  < OnlyDesc;NoDiz >
   {
      Nominali  270   406
      Reali     270   406
   }
   //}Mensola Dub

   //{Mensola Glasserie
   Mens_Glasserie_X  "Mensola Glasserie - Larghezza"  < OnlyDesc;NoDiz >
   {
      Nominali  450   600   736   750   900   920   1050   1104   1200   1472   1500
      Reali     450   600   736   750   900   920   1050   1104   1200   1472   1500
   }

   Mens_Glasserie_Y  "Mensola Glasserie - Altezza"    < OnlyDesc;NoDiz >
   {
      Nominali  184   245   276   368   552   736   920   1104
      Reali     184   245   276   368   552   736   920   1104
   }

   Mens_Glasserie_Z  "Mensola Glasserie - Profondità"    < OnlyDesc;NoDiz >
   {
      Nominali  123   248
      Reali     123   248
   }
   //}Mensola Glasserie
}


//{Mensola Cartesio
Elemento Mensola_Cartesio
{
   Descrizione = "Mensola Cartesio (ex Sbalzo)"
   Code        = COD
   Gruppo      = "MENS"
   Tipo        = Contenitore
   Forma       = ""

   Variabili
   {
      #include %path_bdm%\var_db.inc

      //Dimensioni
      X                     "Larghezza"                             1104 Menu ( Mens_Cartesio_X ) ShowAlways
      Y                     "Altezza"                               138  ShowAlways
      Z                     "Profondità"                            248  ShowAlways

      Filler1               " "                                     ""   ShowAlways

      VAR_Verso             "Verso"                                -1    Menu ( Mens_Cartesio_Verso ) SaveAlways

      FLAG_Rid_Tecniche     "Abilita riduzioni tecniche"            0    Boolean

      VAR_Supporto_lar      "Supporto - Larghezza"                  552  ShowAlways

      VAR_Acc_Led           "Accessori - Led"                       0    ShowAlways
      VAR_Acc_Led_Inf       "Accessori - Led Inferiore"             0
      VAR_Acc_Led_Sup       "Accessori - Led Superiore"             0

      VAR_Acc_Trasformatore "Accessori - Trasformatore"             0    Boolean

      //Tipo: 0 - 15W, 1 - 30W, 2 - 100w
      VAR_Acc_Trasf_tipo    "Accessori - Trasformatore - Tipo"      0
      VAR_Acc_Trasf_watt    "Accessori - Trasformatore - Watt"      0

      FillerM2G             " "                                     ""   ShowAlways
      M4_MIS                ""                                      "X*;Y*;Z*;Filler*;VAR_Supporto_lar"

      XGLASS                "Num. XGLASS"                           "" Utente ( )

      //Illuminazione
      PanLED_Tipologia      "" "368"

      LED_Sopra             ""  0
      LED_Sotto             ""  0

      idx_cnear_up          "" -1
      idx_cnear_dw          "" -1

      idx_pan               "" -1
      idx_pannello          "" -1
      idx_blocco_agg        "" -1

      COD_EREDITA           ""                                      "PRE;POST"
      CMP2_AZIONI           ""                                      "S"

      M4_A_MURO             ""                                      1
      M4_CNT_LINK_MODE__    ""                                      2
      M4_CNT_MODE__         ""                                      1
      M4_CNT_MODE2__        ""                                      1

      //HIDE                 ""                                       2
   }

   Assegnazioni
   {
      GOSUB AssComune

      GOSUB Mens_Assegnazioni

      GOSUB Mens_Cartesio_Assegnazioni

      //Illuminazione
      GOSUB DefPuntiLED_368
   }

   PuntiNotevoli
   {
      GOSUB punti

      vano_0_0 = base_0
      vano_l_0 = X
      vano_p_0 = Z
   }

   #include %path_bdm%\Tlib\orie.inc

   Controlli
   {
      GOSUB CtrlComune

      GOSUB Mens_Cartesio_Controlli

      //GOSUB CtrlPresenza_LED_368
   }

   //Simone 20/10/21
   Procedura OnTabEredita
   {
      GOSUB Mens_Cartesio_Set_Gest_C008
      GOSUB Mens_Cartesio_Set_Gest_C009
   }

   Gestionale
   {
      GOSUB GestComune

      //Simone 20/10/21
      GOSUB Mens_Cartesio_Set_Gest_C008
      GOSUB Mens_Cartesio_Set_Gest_C009

      GOSUB GestComune_Post
   }

   Posiziona Mensola_Cartesio_Supporto supp
   {
      @X = VAR_Supporto_lar

      @base_0 = base_0
      @base_0.x = base_0.x + $Mensola_Cartesio_Supp_OffX_Sx
      if( VAR_Verso > 0 ) { @base_0.x = base_0.x + X - @X - $Mensola_Cartesio_Supp_OffX_Dx }
   }

   Posiziona Mensola_Cartesio_Strutt_Vetro vtr
   {
      GOSUB posa_blocco

      @Z = Z - $Mensola_Cartesio_Supp_Spe_Rt

      @base_0.z = base_0.z + $Mensola_Cartesio_Supp_Spe_Rt
   }

   Posiziona Mensole_Acc_Trasformatore trasf
   {
      @escluso = 1 - VAR_Acc_Trasformatore

      @X = 247
      @Y = 30
      @Z = 17

      SHOW_MODE(ATTUALE(),0)
   }

   Posiziona _cont_per_near nup
   {
      idx_cnear_up = ATTUALE()

      @X = X - $Mens_Glasserie_PanRt_OffX_Dx - $Mens_Glasserie_PanRt_OffX_Sx
      @Y = 10
      @Z = 10

      @base_0.x = base_0.x + $Mens_Glasserie_PanRt_OffX_Sx
      @base_0.y = alto_0.y - $Mens_Glasserie_PanRt_OffY_Sup - @Y/2
      @base_0.z = base_0.z + @Z/2
   }

   Posiziona _cont_per_near ndw
   {
      idx_cnear_dw = ATTUALE()

      @X = X - $Mens_Glasserie_PanRt_OffX_Dx - $Mens_Glasserie_PanRt_OffX_Sx
      @Y = 10
      @Z = 10

      @base_0.x = base_0.x + $Mens_Glasserie_PanRt_OffX_Sx
      @base_0.y = base_0.y + $Mens_Glasserie_PanRt_OffY_Inf - @Y/2
      @base_0.z = base_0.z + @Z/2
   }
}

Elemento Mensola_Cartesio_Supporto
{
   Descrizione = "Mensola Cartesio - Supporto"
   Code        = COD
   Gruppo      = ""
   Tipo        = Contenitore
   Forma       = ""

   Variabili
   {
      #include %path_bdm%\var_db.inc

      X                     "Larghezza"                         552 ShowAlways
      Y                     "Altezza"                           125 ShowAlways
      Z                     "Profondità"                        152 ShowAlways

      Filler1               " "                                 ""  ShowAlways

      VAR_Acc_Led           "Accessori - Led"                   0   Implicit
      VAR_Acc_Led_Inf       "Accessori - Led Inferiore"         0   Implicit
      VAR_Acc_Led_Sup       "Accessori - Led Superiore"         0   Implicit

      VAR_Acc_Trasformatore "Accessori - Trasformatore"         0   Implicit

      //Tipo: 0 - 15W, 1 - 30W, 2 - 100w
      VAR_Acc_Trasf_tipo    "Accessori - Trasformatore - Tipo"  0   Implicit
      VAR_Acc_Trasf_watt    "Accessori - Trasformatore - Watt"  0   Implicit

      FillerM2G             " "                                 ""  ShowAlways
      M4_MIS                ""                                  "X;Y;Z;Filler*"
   }

   Assegnazioni
   {
      GOSUB AssComune

      //Sat
      Supp_Sat_Dir  = STRCAT( $path_sat, "\Mensole\Cartesio\Lamiera retro\")
      Supp_Sat_File = STRCAT( STR(X), ".sat" )
      Supp_Sat_Path = STRCAT( Supp_Sat_Dir, Supp_Sat_File)

      Pan_Sat_Dir  = STRCAT( $path_sat, "\Mensole\Cartesio\Pannelli retro\")
      Pan_Sat_File = STRCAT( STR(X), ".sat" )
      if( VAR_Acc_Led == 1 ) { Pan_Sat_File = STRCAT( STR(X), "_led.sat" ) }
      Pan_Sat_Path = STRCAT( Pan_Sat_Dir, Pan_Sat_File)

      DescEdit__ = "Supporto"

      FIN_idx_gest = PADRE( ATTUALE(), 1)

      //Simone 18/11/21
      GOSUB HideFigliInseriti2
   }

   PuntiNotevoli
   {
      GOSUB punti

      vano_0_0 = base_0
      vano_0_0.y = base_0.y + $Mens_Cartesio_Led_OffY - 0.1
      vano_0_0.z = base_0.z + $Mens_Cartesio_Led_OffZ - $Mens_Cartesio_Led_Z
      vano_l_0 = X
      vano_p_0 = Z

      vano_0_1 = base_0
      vano_0_1.y = base_0.y + Y - 1.4
      vano_0_1.z = base_0.z + $Mens_Cartesio_Led_OffZ + $Mens_Cartesio_Led_Z - 2
      vano_l_1 = X
      vano_p_1 = Z

      GOSUB Mens_Cartesio_Assegna_Punti_Led
   }

   #include %path_bdm%\Tlib\orie.inc

   Controlli
   {
      GOSUB CtrlComune
   }

   Gestionale
   {
      GOSUB GestComune

      GOSUB GestComune_Post
   }

   Posiziona __import__ supp
   {
      @X = X
      @Y = Y
      @Z = Z

      @base_0.x = base_0.x + @X/2
      @base_0.y = base_0.y
      @base_0.z = base_0.z + @Z/2 + $Mensola_Cartesio_Supp_Spe_Rt/2 + $Mensola_Cartesio_Supp_OffZ

      @import = Supp_Sat_Path
      @c_rivestimento = $c_alluminio
   }

   Posiziona __import__ pan
   {
      @X = X - 2*$Mensola_Cartesio_Pann_OffX
      @Y = $Mensola_Cartesio_Pann_Y
      @Z = $Mensola_Cartesio_Pann_Z

      @base_0.x = base_0.x + X - @X/2 - $Mensola_Cartesio_Pann_OffX
      @base_0.y = base_0.y + @Y/2 + $Mensola_Cartesio_Pann_OffY
      @base_0.z = base_0.z + @Z/2

      @import = Pan_Sat_Path
      @c_rivestimento = $c_pomice
   }
}

Elemento Mensola_Cartesio_Strutt_Vetro
{
   Descrizione = "Mensola Cartesio - Struttura vetro"
   Code        = COD
   Gruppo      = ""
   Tipo        = Contenitore
   Forma       = ""

   Variabili
   {
      #include %path_bdm%\var_db.inc

      X                     "Larghezza"                                       552 ShowAlways
      Y                     "Altezza"                                         125 ShowAlways
      Z                     "Profondità"                                      152 ShowAlways

      Filler1               " "                                               ""  ShowAlways

      VAR_Verso             "Verso"                                          -1   Implicit

      VAR_Supporto_lar      "Supporto - Larghezza"                            552 Implicit

      FillerM2G             " "                                               ""  ShowAlways
      M4_MIS                ""                                                "X;Y;Z;Filler*"

      HIDE                  ""                                                1
   }

   Assegnazioni
   {
      GOSUB AssComune

      DescEdit__ = "Struttura vetro"

      FIN_idx_gest = PADRE( ATTUALE(), 1)
   }

   PuntiNotevoli
   {
      GOSUB punti
   }

   #include %path_bdm%\Tlib\orie.inc

   Controlli
   {
      GOSUB CtrlComune
   }

   Gestionale
   {
      GOSUB GestComune

      GOSUB GestComune_Post
   }

   Posiziona Vetro_Saponetta_Verniciato sch
   {
      @FLAG_Blend = 1
      @BLEND__ = 1

      @X = X - $Mens_Cartesio_Vetri_Spe
      @Y = Y
      @Z = $Mens_Cartesio_Vetri_Spe

      @base_0 = base_0
      if( VAR_Verso > 0 ) { @base_0.x = base_0.x + $Mens_Cartesio_Vetri_Spe }

      @VAR_Sp2_X = VAR_Supporto_lar + $Mens_Cartesio_Lacc_MagX
      @VAR_Sp2_OffX = @BLEND__
      if( VAR_Verso > 0 ) { @VAR_Sp2_OffX = X - @VAR_Sp2_X - $Mens_Cartesio_Vetri_Spe - @BLEND__ }
   }

   Posiziona Vetro_Saponetta_Verniciato fnd
   {
      @FLAG_Blend = 1
      @BLEND__ = 1

      @X = X - $Mens_Cartesio_Vetri_Spe
      @Y = Z - $Mens_Cartesio_Vetri_Spe
      @Z = $Mens_Cartesio_Vetri_Spe

      @base_0 = base_0
      if( VAR_Verso > 0 ) { @base_0.x = base_0.x + $Mens_Cartesio_Vetri_Spe }
      @base_0.z = base_0.z + @Y + $Mens_Cartesio_Vetri_Spe

      @VAR_Sp2_X = VAR_Supporto_lar + $Mens_Cartesio_Lacc_MagX
      @VAR_Sp2_OffX = @BLEND__
      if( VAR_Verso > 0 ) { @VAR_Sp2_OffX = X - @VAR_Sp2_X - $Mens_Cartesio_Vetri_Spe - @BLEND__ }

      @VAR_Sp2_Y = $Mens_Cartesio_Lacc_Z - @BLEND__
      @VAR_Sp2_OffY = @Y - @VAR_Sp2_Y - @BLEND__

      @ang_x = -90
   }

   Posiziona Vetro_Saponetta_Verniciato fiasx
   {
      @escluso = SE_NUM( VAR_Verso > 0, 0, 1)

      @FLAG_Blend = 1
      @BLEND__ = 1

      @X = Z
      @Y = Y
      @Z = $Mens_Cartesio_Vetri_Spe

      @base_0   = base_0
      @base_0.z = base_0.z + @X

      @ang_y    = 90

      @VAR_laccatura = 0
   }

   Posiziona Vetro_Saponetta_Verniciato fiadx
   {
      @escluso = SE_NUM( VAR_Verso < 0, 0, 1)

      @FLAG_Blend = 1
      @BLEND__ = 1

      @X = Z
      @Y = Y
      @Z = $Mens_Cartesio_Vetri_Spe

      @base_0   = base_0
      @base_0.x = base_0.x + X

      @ang_y    = -90

      @VAR_laccatura = 0
   }
}
//}Mensola Cartesio

//{Mensola Rivestita ( AIR_Shelf )
Elemento Mensola_Rivestita
{
   Descrizione = "Mensola Rivestita - AIR Shelf"
   Code        = COD
   Gruppo      = "MENS"
   Tipo        = Contenitore
   Forma       = ""
   Alias StpMensolaBagno

   Variabili
   {
      #include %path_bdm%\var_db.inc

      //Dimensioni
      X                     "Larghezza"                         552  Menu ( Mens_Riv_X ) Utente ( 552-2208 ) ShowAlways
      Y                     "Altezza"                           54   ShowAlways
      Z                     "Profondità"                        270  Menu ( Mens_Riv_Z ) ShowAlways

      Filler1               " "                                 ""   ShowAlways

      Xp                    "Piano - Larghezza"                 544  ShowAlways
      Yp                    "Piano - Altezza"                   50   ShowAlways
      Zp                    "Piano - Profondità"                266  ShowAlways

      VAR_Lib_Air           "Variante  - Mensola lib air"       0    Boolean

      VAR_Acc_Led           "Accessori - Led"                   0    ShowAlways
      VAR_Acc_Led_Inf       "Accessori - Led Inferiore"         0
      VAR_Acc_Led_Sup       "Accessori - Led Superiore"         0

      VAR_Acc_Trasformatore "Accessori - Trasformatore"         0    Boolean
      VAR_Acc_Dimmer        "Accessori - Dimmer"                0    Boolean

      //Tipo: 0 - 15W, 1 - 30W, 2 - 100W
      VAR_Acc_Trasf_tipo    "Accessori - Trasformatore - Tipo"  0

      #ifdef TEC
        VAR_Regola_Elements "Config.Elements"                   ""   Utente ( )
      #endif
      #ifndef TEC
        VAR_Regola_Elements ""                                  ""
      #endif

      Filler2               " "                                 ""   ShowAlways
      FillerM2G             " "                                 ""   ShowAlways
      M4_MIS                ""                                  "X*;Y*;Z*;Filler1;FillerM2G"

      XGLASS                "Num. XGLASS"                       "" Utente ( )

      COD_EREDITA           ""                                  "PRE;POST"
      CMP2_AZIONI           ""                                  "S"

      M4_A_MURO             ""                                  1
      M4_CNT_LINK_MODE__    ""                                  2
      M4_CNT_MODE__         ""                                  1
      M4_CNT_MODE2__        ""                                  1

      //Finiture
      FIN_var_Piano         "Finitura Piano"                    "C103"
      FIN_var_Vtr           "Finitura Vetri"                    "C042"
   }

   Assegnazioni
   {
      GOSUB AssComune

      GOSUB Mens_Assegnazioni

      GOSUB Mens_Riv_Assegnazioni
   }

   PuntiNotevoli
   {
      GOSUB punti

      vano_0_0 = base_0
      vano_l_0 = X
      vano_p_0 = Z

      //Luca 28/07/2022 x stampe tamburato
      stp_base_0 = base_0 stp_base_0.x = stp_base_0.x + $Mens_Riv_Vetri_Spe
      stp_base_1 = base_1 stp_base_1.x = stp_base_1.x + $Mens_Riv_Vetri_Spe   stp_base_1.z = stp_base_1.z - $Mens_Riv_Vetri_Spe
      stp_base_2 = base_2 stp_base_2.x = stp_base_2.x - $Mens_Riv_Vetri_Spe   stp_base_2.z = stp_base_2.z - $Mens_Riv_Vetri_Spe
      stp_base_3 = base_3 stp_base_3.x = stp_base_3.x - $Mens_Riv_Vetri_Spe

      //stampe vetro
      pnt_top_b0 = base_0 pnt_top_b0.x = pnt_top_b0.x + 2
      pnt_top_b1 = base_1 pnt_top_b1.x = pnt_top_b1.x + 2   pnt_top_b1.z = pnt_top_b1.z - 2
      pnt_top_b2 = base_2 pnt_top_b2.x = pnt_top_b2.x - 2   pnt_top_b2.z = pnt_top_b2.z - 2
      pnt_top_b3 = base_3 pnt_top_b3.x = pnt_top_b3.x - 2
   }

   #include %path_bdm%\Tlib\orie.inc

   Controlli
   {
      GOSUB CtrlComune

      //Simone 03/06/2022 - TODO: Per stessa gestione del led come nella mensola Dub
      GOSUB Mens_Dub_Controlli
   }

   Gestionale
   {
      GOSUB GestComune

      GOSUB Mens_Riv_Set_Gest_C008

      GOSUB Mens_Riv_Set_Gest_C165

      GOSUB GestComune_Post
   }

   //Posiziona Blocco Ing
   //{
   //   GOSUB posa_blocco
   //
   //   @c_rivestimento = [120,120,255]
   //   @f_rivestimento = "0.9"
   //}

   Posiziona Mensola_Riv_Piano pia
   {
      @X = Xp
      @Y = Yp
      @Z = Zp

      @base_0 = base_0
      @base_0.x = base_0.x + $Mens_Riv_Vetri_Spe
      @base_0.z = base_0.z + VAR_Lib_Air*$Mens_Riv_Vetri_Spe

      @FIN_var = FIN_var_Piano
   }

   Posiziona Mensola_Riv_Riv_Vtr vtr
   {
      GOSUB posa_blocco

      @Y = Y - $Mens_Riv_Vetri_OffY_Fr

      @FIN_var = FIN_var_Vtr
   }
}

Elemento Mensola_Riv_Piano
{
   Descrizione = "Mensola Rivestita - Piano"
   Code        = COD
   Gruppo      = ""
   Tipo        = Contenitore
   Forma       = ""
   Alias       CamInciso

   Variabili
   {
      #include %path_bdm%\var_db.inc

      X                     "Larghezza"                                       544 ShowAlways
      Y                     "Altezza"                                         50  ShowAlways
      Z                     "Profondità"                                      266 ShowAlways

      Filler1               " "                                               ""  ShowAlways

      VAR_Lib_Air           "Variante  - Mensola lib air"                     0   Implicit

      //Staffe - tipo ( 0 - Reggimensola 270, 1 - staffa muro 406)
      VAR_Staffe_tipo       "Staffe - tipo"                                   0   Implicit
      VAR_Staffe_num        "Staffe - numero"                                 2   Implicit

      //Staffe - larghezza ( se tipo == 1, 392 stretta - 762 larga)
      VAR_Staffe_lar        "Staffe - largh"                                  0   Implicit
      VAR_Staffe_prof       "Staffe - prof"                                   190 Implicit
      VAR_Staffe_passo_cx   "Staffe - passo in x da centro a centro staffa"   0
      VAR_Staffe_passo_ex   "Staffe - passo in x da lato a lato staffa"       0

      VAR_Acc_Led           "Accessori - Led"                                 0   Implicit
      VAR_Acc_Led_Inf       "Accessori - Led Inferiore"                       0   Implicit
      VAR_Acc_Led_Sup       "Accessori - Led Superiore"                       0   Implicit

      VAR_Acc_Trasformatore "Accessori - Trasformatore"                       0   Implicit
      VAR_Acc_Dimmer        "Accessori - Dimmer"                              0   Implicit

      //Tipo: 0 - 15W, 1 - 30W, 2 - 100W
      VAR_Acc_Trasf_tipo    "Accessori - Trasformatore - Tipo"                0   Implicit

      FillerM2G             " "                                               ""  ShowAlways
      M4_MIS                ""                                                "X;Y;Z;Filler*"

      FIN_var               ""                                                "C103"

      HIDE                  ""                                                3

      idx_piano_grafica     ""                                                -1
   }

   Assegnazioni
   {
      GOSUB AssComune

      GOSUB Mens_Assegnazioni

      GOSUB Mens_Riv_Assegnazioni

      DescEdit__ = "Piano mensola"

      FIN_idx_gest = GetPrimoGest( ATTUALE(), 0)
   }

   PuntiNotevoli
   {
      GOSUB punti
   }

   #include %path_bdm%\Tlib\orie.inc

   Controlli
   {
      GOSUB CtrlComune
   }

   Gestionale
   {
      GOSUB GestComune

      GOSUB GestComune_Post
   }

   Posiziona Blocco pia
   {
      GOSUB posa_blocco
      GOSUB rivestimento

      idx_piano_grafica = ATTUALE()
   }

   Posiziona Mensola_Dub_Piano_Ferramenta ferr
   {
      @escluso = VAR_Lib_Air

      GOSUB posa_blocco
   }

   Posiziona Mensole_Acc_Trasformatore tr
   {
      @escluso = 1 - VAR_Acc_Trasformatore

      @X = VAR_Trasformatore_lar
      @Y = VAR_Trasformatore_alt
      @Z = VAR_Trasformatore_prof

      @base_0.x = base_0.x + VAR_Trasformatore_offx
      @base_0.y = base_0.y + (Y - @Y)/2
      @base_0.z = base_0.z - $Glob_Posizione_Coll_OffZ
   }

   Posiziona Mensole_Acc_Dimmer dim
   {
      @escluso = 1 - VAR_Acc_Dimmer
      @HIDE = 1

      @X = VAR_Dimmer_lar
      @Y = VAR_Dimmer_alt
      @Z = VAR_Dimmer_prof

      @base_0.x = base_0.x + VAR_Dimmer_offx
      @base_0.y = base_0.y + (Y - @Y)/2
      @base_0.z = base_0.z - $Glob_Posizione_Coll_OffZ
   }
}

Elemento Mensola_Riv_Riv_Vtr
{
   Descrizione = "Mensola Rivestita - Rivesitmento Vetri"
   Code        = COD
   Gruppo      = ""
   Tipo        = Contenitore
   Forma       = ""
   Alias       TopVet368

   Variabili
   {
      #include %path_bdm%\var_db.inc

      X               "Larghezza"                   548    ShowAlways
      Y               "Altezza"                     52     ShowAlways
      Z               "Profondità"                  268    ShowAlways

      VAR_Lib_Air     "Variante  - Mensola lib air" 0      Implicit

      FIN_var         ""                            "C042"

      FLAG_Blend      ""                            1

      HIDE            ""                            1
   }

   Assegnazioni
   {
      GOSUB AssComune

      Vetri_OffZ_Fr = $Mens_Riv_Vetri_OffZ_Fr
      Vetri_OffZ_Rt = $Mens_Riv_Vetri_OffZ_Rt + 2*VAR_Lib_Air*$Mens_Riv_Vetri_OffZ_Fr
      Vetri_OffZ_Dx = $Mens_Riv_Vetri_OffX_Dx
      Vetri_OffZ_Sx = $Mens_Riv_Vetri_OffX_Sx

      FIN_idx_gest = PADRE( ATTUALE(), 1)
   }

   PuntiNotevoli
   {
      GOSUB punti
   }

   #include %path_bdm%\Tlib\orie.inc

   Controlli
   {
      GOSUB CtrlComune
   }

   Gestionale
   {
      GOSUB GestComune

      GOSUB GestComune_Post
   }

   Posiziona Vetro_Saponetta_Verniciato vsx
   {
      @X = Z - Vetri_OffZ_Fr - Vetri_OffZ_Rt
      @Y = Y
      @Z = $Mens_Riv_Vetri_Spe

      @base_0 = base_0
      @base_0.x = base_0.x + @Z
      @base_0.z = base_0.z + Vetri_OffZ_Rt

      @ang_y = -90

      @VAR_Scanso = Vetri_OffZ_Fr
      @Verso = 1
      @FLAG_Blend = FLAG_Blend
   }

   Posiziona Vetro_Saponetta_Verniciato vdx
   {
      @X = Z - Vetri_OffZ_Fr - Vetri_OffZ_Rt
      @Y = Y
      @Z = $Mens_Riv_Vetri_Spe

      @base_0 = base_0
      @base_0.x = base_0.x + X - @Z
      @base_0.z = base_0.z + Vetri_OffZ_Rt + @X

      @ang_y = 90

      @VAR_Scanso = Vetri_OffZ_Fr
      @Verso = -1
      @FLAG_Blend = FLAG_Blend
   }

   Posiziona Vetro_Saponetta_Verniciato vfr
   {
      @X = X - $Mens_Riv_Vetri_OffX_Dx - $Mens_Riv_Vetri_OffX_Sx
      @Y = Y
      @Z = $Mens_Riv_Vetri_Spe

      @base_0 = base_0
      @base_0.x = base_0.x + $Mens_Riv_Vetri_OffX_Sx
      @base_0.z = base_0.z + Z - @Z

      @VAR_Scanso = $Mens_Riv_Vetri_OffX_Dx
      @FLAG_Blend = FLAG_Blend
   }

   Posiziona Vetro_Saponetta_Verniciato vrt
   {
      @escluso = 1 - VAR_Lib_Air

      @X = X - 2*$Mens_Riv_Vetri_R
      @Y = Y
      @Z = $Mens_Riv_Vetri_Spe

      @base_0 = base_0
      @base_0.x = base_0.x + @X + $Mens_Riv_Vetri_R
      @base_0.z = base_0.z + @Z

      @ang_y = 180

      @VAR_Scanso = $Mens_Riv_Vetri_Spe - 0.2
      @FLAG_Blend = 1 - VAR_Lib_Air
   }

   Posiziona Vetro_Saponetta_Verniciato vup
   {
      @X = X - $Mens_Riv_Vetri_OffX_Dx - $Mens_Riv_Vetri_OffX_Sx
      @Y = Z - Vetri_OffZ_Fr - Vetri_OffZ_Rt
      @Z = $Mens_Riv_Vetri_Spe

      @base_0 = base_0
      @base_0.x = base_0.x + $Mens_Riv_Vetri_OffX_Sx
      @base_0.y = base_0.y + Y - @Z/2
      @base_0.z = base_0.z + Vetri_OffZ_Rt + @Y

      @ang_x = -90
      @VAR_Scanso = Vetri_OffZ_Fr
      @FLAG_Blend = FLAG_Blend
   }

   Posiziona PCV_ContCollisioni_368 pcv
   {
      larg_pcv = 50

      @base_0.x = base_0.x
      @base_0.y = base_0.y - 15
      @base_0.z = base_0.z
      @X = X
      @Y = Y + 30
      @Z = larg_pcv
   }

   Posiziona PCV_ContCollisioni_368 pcv2
   {
      @base_0.x = base_0.x
      @base_0.y = base_0.y - 15
      @base_0.z = base_0.z + Z - larg_pcv
      @X = X
      @Y = Y + 30
      @Z = larg_pcv
   }

   Posiziona PCV_ContCollisioni_368 pcv3
   {
      larg_pcv_lato = larg_pcv

      @base_0.x = base_0.x
      @base_0.y = base_0.y - 15
      @base_0.z = base_0.z + larg_pcv
      @X = larg_pcv_lato
      @Y = Y + 30
      @Z = Z - 2*larg_pcv
   }

   Posiziona PCV_ContCollisioni_368 pcv4
   {
      @base_0.x = base_0.x + X - larg_pcv_lato
      @base_0.y = base_0.y - 15
      @base_0.z = base_0.z + larg_pcv
      @X = larg_pcv_lato
      @Y = Y + 30
      @Z = Z - 2*larg_pcv
   }
}
//}Mensola Rivestita

//{Mensola Dub
Elemento Mensola_Dub
{
   Descrizione = "Mensola Dub (ex Vassoio)"
   Code        = COD
   Gruppo      = "MENS"
   Tipo        = Contenitore
   Forma       = ""

   Variabili
   {
      #include %path_bdm%\var_db.inc

      //Dimensioni
      X                     "Larghezza"                         552  Menu ( Mens_Dub_X ) Utente ( 368-2208 ) ShowAlways
      Y                     "Altezza"                           80   ShowAlways
      Z                     "Profondità"                        270  Menu ( Mens_Dub_Z ) ShowAlways

      Filler1               " "                                 ""   ShowAlways

      Xp                    "Piano - Larghezza"                 720  ShowAlways
      Yp                    "Piano - Altezza"                   38   ShowAlways
      Zp                    "Piano - Profondità"                262  ShowAlways

      VAR_Acc_Led           "Accessori - Led"                   0    ShowAlways
      VAR_Acc_Led_Inf       "Accessori - Led Inferiore"         0
      VAR_Acc_Led_Sup       "Accessori - Led Superiore"         0

      VAR_Acc_Trasformatore "Accessori - Trasformatore"         0    Boolean
      VAR_Acc_Dimmer        "Accessori - Dimmer"                0    Boolean

      //Tipo: 0 - 15W, 1 - 30W
      VAR_Acc_Trasf_tipo    "Accessori - Trasformatore - Tipo"  0

      Filler2               " "                                 ""   ShowAlways
      FillerM2G             " "                                 ""   ShowAlways
      M4_MIS                ""                                  "X*;Y*;Z*;Filler1;FillerM2G"

      XGLASS                "Num. XGLASS"                       "" Utente ( )

      COD_EREDITA           ""                                  "PRE;POST"
      CMP2_AZIONI           ""                                  "S"

      M4_A_MURO             ""                                  1
      M4_CNT_LINK_MODE__    ""                                  2
      M4_CNT_MODE__         ""                                  1
      M4_CNT_MODE2__        ""                                  1

      //Finiture
      FIN_var_Piano         "Finitura Piano"                    "C103"
      FIN_var_Vtr           "Finitura Vetri"                    "C042"
   }

   Assegnazioni
   {
      GOSUB AssComune

      GOSUB Mens_Assegnazioni

      GOSUB Mens_Dub_Assegnazioni
   }

   PuntiNotevoli
   {
      GOSUB punti

      vano_0_0 = base_0
      vano_l_0 = X
      vano_p_0 = Z
   }

   #include %path_bdm%\Tlib\orie.inc

   Controlli
   {
      GOSUB CtrlComune

      GOSUB Mens_Dub_Controlli
   }

   Gestionale
   {
      GOSUB GestComune

      GOSUB Mens_Dub_Set_Gest_C008

      //Simone 05/07/2022
      GOSUB Mens_Dub_Set_Gest_C009

      GOSUB GestComune_Post
   }

   Posiziona Mensola_Dub_Piano pia
   {
      @X = Xp
      @Y = Yp
      @Z = Zp

      @base_0 = base_0
      @base_0.x = base_0.x + $Mens_Dub_Vetri_Spe
      @base_0.y = base_0.y + (Y - @Y)/2

      @FIN_var = FIN_var_Piano
   }

   Posiziona Mensola_Dub_Riv_Vtr vtr
   {
      GOSUB posa_blocco

      @FIN_var = FIN_var_Vtr
   }
}

Elemento Mensola_Dub_Piano
{
   Descrizione = "Mensola Dub - Piano"
   Code        = COD
   Gruppo      = ""
   Tipo        = Contenitore
   Forma       = ""
   Alias       CamInciso

   Variabili
   {
      #include %path_bdm%\var_db.inc

      X                     "Larghezza"                                       536 ShowAlways
      Y                     "Altezza"                                         38  ShowAlways
      Z                     "Profondità"                                      262 ShowAlways

      Filler1               " "                                               ""  ShowAlways

      //Staffe - tipo ( 0 - Reggimensola 270, 1 - staffa muro 406)
      VAR_Staffe_tipo       "Staffe - tipo"                                   0   Implicit
      VAR_Staffe_num        "Staffe - numero"                                 2   Implicit
      //Staffe - larghezza ( se tipo == 1, 392 stretta - 762 larga)
      VAR_Staffe_lar        "Staffe - largh"                                  0   Implicit
      VAR_Staffe_prof       "Staffe - prof"                                   190 Implicit
      VAR_Staffe_passo_cx   "Staffe - passo in x da centro a centro staffa"   0
      VAR_Staffe_passo_ex   "Staffe - passo in x da lato a lato staffa"       0

      VAR_Acc_Led           "Accessori - Led"                                 0   Implicit
      VAR_Acc_Led_Inf       "Accessori - Led Inferiore"                       0   Implicit
      VAR_Acc_Led_Sup       "Accessori - Led Superiore"                       0   Implicit

      VAR_Acc_Trasformatore "Accessori - Trasformatore"                       0   Implicit
      VAR_Acc_Dimmer        "Accessori - Dimmer"                              0   Implicit

      //Tipo: 0 - 15W, 1 - 30W
      VAR_Acc_Trasf_tipo    "Accessori - Trasformatore - Tipo"                0   Implicit

      FillerM2G             " "                                               ""  ShowAlways
      M4_MIS                ""                                                "X;Y;Z;Filler*"

      FIN_var               ""                                                "C103"

      HIDE                  ""                                                3
   }

   Assegnazioni
   {
      GOSUB AssComune

      GOSUB Mens_Assegnazioni

      GOSUB Mens_Dub_Assegnazioni

      DescEdit__ = "Piano mensola"

      FIN_idx_gest = PADRE( ATTUALE(), 1)
   }

   PuntiNotevoli
   {
      GOSUB punti
   }

   #include %path_bdm%\Tlib\orie.inc

   Controlli
   {
      GOSUB CtrlComune
   }

   Gestionale
   {
      GOSUB GestComune

      GOSUB GestComune_Post
   }

   Posiziona Blocco pia
   {
      GOSUB posa_blocco

      GOSUB rivestimento
   }

   Posiziona Mensola_Dub_Piano_Ferramenta ferr
   {
      GOSUB posa_blocco
   }

   Posiziona Mensole_Acc_Trasformatore tr
   {
      @escluso = 1 - VAR_Acc_Trasformatore

      @X = VAR_Trasformatore_lar
      @Y = VAR_Trasformatore_alt
      @Z = VAR_Trasformatore_prof

      @base_0.x = base_0.x + VAR_Trasformatore_offx
      @base_0.y = base_0.y + (Y - @Y)/2
      @base_0.z = base_0.z - $Glob_Posizione_Coll_OffZ
   }

   Posiziona Mensole_Acc_Dimmer dim
   {
      @escluso = 1 - VAR_Acc_Dimmer
      @HIDE = 1

      @X = VAR_Dimmer_lar
      @Y = VAR_Dimmer_alt
      @Z = VAR_Dimmer_prof

      @base_0.x = base_0.x + VAR_Dimmer_offx
      @base_0.y = base_0.y + (Y - @Y)/2
      @base_0.z = base_0.z - $Glob_Posizione_Coll_OffZ
   }
}

Elemento Mensola_Dub_Piano_Ferramenta
{
   Descrizione = "Mensola Dub - Piano - Ferramenta"
   Code        = COD
   Gruppo      = ""
   Tipo        = Contenitore
   Forma       = ""

   Variabili
   {
      #include %path_bdm%\var_db.inc

      X                     "Larghezza"                                       536 ShowAlways
      Y                     "Altezza"                                         38  ShowAlways
      Z                     "Profondità"                                      262 ShowAlways

      //Staffe - tipo ( 0 - Reggimensola 270, 1 - staffa muro 406)
      VAR_Staffe_tipo       "Staffe - tipo"                                   0   Implicit
      VAR_Staffe_num        "Staffe - numero"                                 2   Implicit
      //Staffe - larghezza ( se tipo == 1, 392 stretta - 762 larga)
      VAR_Staffe_lar        "Staffe - largh"                                  0   Implicit
      VAR_Staffe_prof       "Staffe - prof"                                   190 Implicit
      VAR_Staffe_passo_cx   "Staffe - passo in x da centro a centro staffa"   0
      VAR_Staffe_passo_ex   "Staffe - passo in x da lato a lato staffa"       0

      VAR_Acc_Led           "Accessori - Led"                                 0   Implicit
      VAR_Acc_Led_Inf       "Accessori - Led Inferiore"                       0   Implicit
      VAR_Acc_Led_Sup       "Accessori - Led Superiore"                       0   Implicit

      VAR_Acc_Trasformatore "Accessori - Trasformatore"                       0   Implicit
      VAR_Acc_Dimmer        "Accessori - Dimmer"                              0   Implicit

      FillerM2G             " "                                               ""  ShowAlways
      M4_MIS                ""                                                "X;Y;Z;Filler*"

      HIDE                  ""                                                3
   }

   Assegnazioni
   {
      GOSUB AssComune

      GOSUB Mens_Assegnazioni

      GOSUB Mens_Dub_Assegnazioni

      //Simone 01/06/2022
      idx_topl = GetTopLevel(ATTUALE())
      if( NOME(idx_topl) == "Mensola_Rivestita" ) { GOSUB Mens_Riv_Assegnazioni }
   }

   PuntiNotevoli
   {
      GOSUB punti
   }

   #include %path_bdm%\Tlib\orie.inc

   Controlli
   {
      GOSUB CtrlComune
   }

   Gestionale
   {
      GOSUB GestComune

      GOSUB GestComune_Post
   }

   Posiziona Mensole_Ferr_Reggimensola tr1
   {
      @VAR_Staffa_num = 1
      GOSUB Mens_Dub_Posiziona_Staffa
   }

   Posiziona Mensole_Ferr_Reggimensola tr2
   {
      @VAR_Staffa_num = 2
      GOSUB Mens_Dub_Posiziona_Staffa
   }

   Posiziona Mensole_Ferr_Reggimensola tr3
   {
      @VAR_Staffa_num = 3
      GOSUB Mens_Dub_Posiziona_Staffa
   }

   Posiziona Mensole_Ferr_Reggimensola tr4
   {
      @VAR_Staffa_num = 4
      GOSUB Mens_Dub_Posiziona_Staffa
   }

   Posiziona Mensole_Ferr_Reggimensola tr5
   {
      @VAR_Staffa_num = 5
      GOSUB Mens_Dub_Posiziona_Staffa
   }

   Posiziona Staffa_Mensola_Air mn1
   {
      @VAR_Staffa_num = 1
      GOSUB Mens_Dub_Posiziona_Staffa
   }

   Posiziona Staffa_Mensola_Air mn2
   {
      @VAR_Staffa_num = 2
      GOSUB Mens_Dub_Posiziona_Staffa
   }

   Posiziona PCV_ContCollisioni_368 pcv
   {
      larg_pcv = 50

      @base_0.x = base_0.x
      @base_0.y = base_0.y - 15
      @base_0.z = base_0.z
      @X = X
      @Y = Y + 30
      @Z = larg_pcv
   }

   Posiziona PCV_ContCollisioni_368 pcv2
   {
      @base_0.x = base_0.x
      @base_0.y = base_0.y - 15
      @base_0.z = base_0.z + Z - larg_pcv
      @X = X
      @Y = Y + 30
      @Z = larg_pcv
   }

   Posiziona PCV_ContCollisioni_368 pcv3
   {
      larg_pcv_lato = larg_pcv

      @base_0.x = base_0.x
      @base_0.y = base_0.y - 15
      @base_0.z = base_0.z + larg_pcv
      @X = larg_pcv_lato
      @Y = Y + 30
      @Z = Z - 2*larg_pcv
   }

   Posiziona PCV_ContCollisioni_368 pcv4
   {
      @base_0.x = base_0.x + X - larg_pcv_lato
      @base_0.y = base_0.y - 15
      @base_0.z = base_0.z + larg_pcv
      @X = larg_pcv_lato
      @Y = Y + 30
      @Z = Z - 2*larg_pcv
   }
}

Elemento Mensola_Dub_Riv_Vtr
{
   Descrizione = "Mensola Dub - Rivesitmento Vetri"
   Code        = COD
   Gruppo      = ""
   Tipo        = Contenitore
   Forma       = ""

   Variabili
   {
      #include %path_bdm%\var_db.inc

      X       "Larghezza"       552 ShowAlways
      Y       "Altezza"         80  ShowAlways
      Z       "Profondità"      270 ShowAlways

      FIN_var ""                "C042"

      HIDE    ""                1
   }

   Assegnazioni
   {
      GOSUB AssComune

      FIN_idx_gest = PADRE( ATTUALE(), 1)
   }

   PuntiNotevoli
   {
      GOSUB punti
   }

   #include %path_bdm%\Tlib\orie.inc

   Controlli
   {
      GOSUB CtrlComune
   }

   Gestionale
   {
      GOSUB GestComune

      GOSUB GestComune_Post
   }

   Posiziona Vetro_Saponetta_Verniciato vsx
   {
      @X = Z - $Mens_Dub_Vetri_OffZ_Fr - $Mens_Dub_Vetri_OffZ_Rt
      @Y = Y
      @Z = $Mens_Dub_Vetri_Spe

      @base_0 = base_0
      @base_0.x = base_0.x + @Z
      @base_0.z = base_0.z + $Mens_Dub_Vetri_OffZ_Rt

      @ang_y = -90

      @VAR_Scanso = $Mens_Dub_Vetri_OffZ_Fr
      @Verso = 1
   }

   Posiziona Vetro_Saponetta_Verniciato vdx
   {
      @X = Z - $Mens_Dub_Vetri_OffZ_Fr - $Mens_Dub_Vetri_OffZ_Rt
      @Y = Y
      @Z = $Mens_Dub_Vetri_Spe

      @base_0 = base_0
      @base_0.x = base_0.x + X - @Z
      @base_0.z = base_0.z + $Mens_Dub_Vetri_OffZ_Rt + @X

      @ang_y = 90

      @VAR_Scanso = $Mens_Dub_Vetri_OffZ_Fr
      @Verso = -1
   }

   Posiziona Vetro_Saponetta_Verniciato vfr
   {
      @X = X - $Mens_Dub_Vetri_OffX_Dx - $Mens_Dub_Vetri_OffX_Sx
      @Y = Y
      @Z = $Mens_Dub_Vetri_Spe

      @base_0 = base_0
      @base_0.x = base_0.x + $Mens_Dub_Vetri_OffX_Sx
      @base_0.z = base_0.z + Z - @Z

      @VAR_Scanso = $Mens_Dub_Vetri_OffX_Dx
   }
}

Elemento Vetro_Saponetta_Verniciato
{
   Descrizione = "Vetro Saponetta Verniciato"
   Code        = COD
   Gruppo      = ""
   Tipo        = Contenitore
   Forma       = ""

   Variabili
   {
      #include %path_bdm%\var_db.inc

      X                         "Larghezza"                 368
      Y                         "Altezza"                   368
      Z                         "Profondità"                4.0

      //Verso: 0: centrale, -1: sx, 1: dx
      Verso                     "Verso"                     0
      //Ruota: 0:no rot, 1: +90
      Ruota                     "Rotazione"                 0

      VAR_Sp2_X                 "Lar  strato 2/3"           0
      VAR_Sp2_Y                 "Alt  strato 2/3"           0
      VAR_Sp2_OffX              "OffX strato 2/3"           0
      VAR_Sp2_OffY              "OffY strato 2/3"           0

      VAR_laccatura             "Presenza laccatura"        1     Implicit

      VAR_Scanso                "Dimensione Scanso"         2.5
      VAR_Taglio                "Dimensione Taglio"         5.3

      Sp_1                      "Spessore strato 1"         3.8
      Sp_2                      "Spessore strato 2"         0.1
      Sp_3                      "Spessore strato 3"         0.1

      FLAG_Blend                "Utilizzo smusso"           0
      BLEND__                   "Smusso"                    1

      FIN_idx_gest              "Idx con variabili fin"     -1

      FIN_var_vetro             "Finitura vetro"            "C014" Implicit
      FIN_var_laccatura         "Finitura laccatura"        "C042" Implicit
      FIN_var_retrolaccatura    "Finitura retrolaccatura"   ""
      Trasparenza               "Trasparenza vetro"         "0.9"

      FIN_var_Sp1               ""                          ""
      FIN_var_Sp2               ""                          ""
      FIN_var_Sp3               ""                          ""

      VAR_Sp2                   "Presenza strato 2"         0
      VAR_Sp3                   "Presenza strato 3"         0

      STP_Bollina               ""                          0
      STP_Bollina_Cat           ""                          "C042"

      XGLASS                    "Num. XGLASS"               ""
   }

   Assegnazioni
   {
      GOSUB AssComune

      Sp_1 = Z - VAR_Sp2*(Sp_2 + Sp_3)

      VAR_Taglio = Sp_1 - VAR_Scanso

      // Finitura
      FIN_idx_gest = GetPrimoGest( ATTUALE(), 0)

      // Permetto variabili finitura multiple
      // Vetro
      Trasparenza = "0.9"
      FIN_var_Sp1 = GetFirstValidVarGest( FIN_idx_gest, FIN_var_vetro)

      // Laccatura
      VAR_Sp2 = VAR_laccatura

      FIN_var_Sp2 = ""
      if( VAR_laccatura > 0 )
      {
         FIN_var_Sp2 = GetFirstValidVarGest( FIN_idx_gest, FIN_var_laccatura)

         FIN_val_Sp2 = ""
         if( FIN_var_Sp2 != "") { FIN_val_Sp2 = VAR_VAL_STR( FIN_idx_gest, GetVarGest(FIN_var_Sp2)) }

         //Se WW spengo la laccatura e applico la finitura al blocco principale
         if( IS_MATCH( FIN_val_Sp2, "WW*") == 1
           | IS_MATCH( FIN_val_Sp2, "SP*") == 1 )
         {
            Trasparenza = "0"
            VAR_Sp2     = 0
            FIN_var_Sp1 = FIN_var_Sp2
            FIN_var_Sp2 = ""
         }
      }

      // Retrolaccatura
      VAR_Sp3 = 0
      if( VAR_Sp2 != 0)
      {
         if( IS_XGLASS(FIN_idx_gest) != 0) { VAR_Sp3 = 1 }
      }

      FIN_var_Sp3 = ""
      if( VAR_Sp3 > 0 )
      {
         FIN_var_Sp3 = GetFirstValidVarGest( FIN_idx_gest, FIN_var_retrolaccatura)
         if( FIN_var_Sp3 == "" ) { FIN_var_Sp3 = FIN_var_Sp2 }
         //Simone 29/11/2023
         if( UN_PADRE("368_Mirror")
           & VAR_EXIST(ATTUALE(),"GEST_C015") == 1 ) { FIN_var_Sp3 = "GEST_C015" }
      }

      STP_Bollina_Pnt = [ X/2, Y/2-45, Z+30]

      STP_Bollina = 0
      if( VAR_VAL_STR( ATTUALE(), "ORD_COD") != "") { STP_Bollina = 1 }
   }

   PuntiNotevoli
   {
      GOSUB punti

      pnt_centro = [X/2,Y/2,0]
   }

   #include %path_bdm%\Tlib\orie.inc

   Controlli
   {
      GOSUB CtrlEscluso
      GOSUB CtrlComune
   }

   Gestionale
   {
      GOSUB GestComune
      GOSUB GestComune_Post
   }

   //Trasparenza
   Posiziona BloccoBlend sp1a
   {
      @escluso = 1 - FLAG_Blend
      GOSUB posa_blocco

      @Z = Sp_1
      @base_0.z = base_0.z + Z - @Z

      @BLEND__ = BLEND__

      //Finitura
      @m_rivestimento = ""
      @c_rivestimento = $c_vetro

      if( FIN_var_Sp1 != "" )
      {
         FIN_var = FIN_var_Sp1
         GOSUB rivestimento
      }

      @f_rivestimento = Trasparenza
   }

   Posiziona Vetro_Saponetta_Verniciato_YSweep sp1b
   {
      @escluso = FLAG_Blend
      GOSUB posa_blocco

      //Simone 12/04/2023
      @ang_z = Ruota*90
      if( Ruota > 0 )
      {
         @X = Y
         @Y = X
         @base_0.x = base_0.x + X
      }

      @Z = Sp_1

      @Z1 = VAR_Taglio
      @X1 = VAR_Taglio

      @base_0.z = base_0.z + Z - @Z

      @Verso = Verso

      //Finitura
      @m_rivestimento = ""
      @c_rivestimento = $c_vetro

      if( FIN_var_Sp1 != "" )
      {
         FIN_var = FIN_var_Sp1
         GOSUB rivestimento
      }

      @f_rivestimento = Trasparenza
   }

   //Laccatura
   Posiziona Blocco sp2
   {
      @escluso = 1 - VAR_Sp2

      GOSUB posa_blocco

      @Z = Sp_2 + ( Sp_3 * ( 1 - VAR_Sp3 ))
      @base_0.z = base_0.z + ( Sp_3 * VAR_Sp3 )

      if( FLAG_Blend )
      {
         @X = X - 2*BLEND__
         @Y = Y - 2*BLEND__

         @base_0.x = base_0.x + BLEND__
         @base_0.y = base_0.y + BLEND__
      }
      else
      {
         @X = X - 2*VAR_Taglio

         if( Verso != 0 ) { @X = @X + VAR_Taglio }
         if( Verso != 1 ) { @base_0.x = base_0.x + VAR_Taglio }

         //quando ruotato, -1 è sotto, 1 è sopra
         if( Ruota > 0 ) {
            @X = X
            @base_0.x = base_0.x

            @Y = Y - 2*VAR_Taglio
            if( Verso != 0 ) { @Y = @Y + VAR_Taglio }
            if( Verso != 1 ) { @base_0.y = base_0.y + VAR_Taglio }
         }
      }

      if( VAR_Sp2_X > 0 ) { @X = VAR_Sp2_X }
      if( VAR_Sp2_Y > 0 ) { @Y = VAR_Sp2_Y }
      if( VAR_Sp2_OffX > 0 ) { @base_0.x = base_0.x + VAR_Sp2_OffX }
      if( VAR_Sp2_OffY > 0 ) { @base_0.y = base_0.y + VAR_Sp2_OffY }

      if( FIN_var_Sp2 != "" )
      {
         FIN_var = FIN_var_Sp2
         GOSUB rivestimento
      }
   }

   //Retrolaccatura
   Posiziona Blocco sp3
   {
      @escluso = 1 - VAR_Sp3

      GOSUB posa_blocco

      @Z = Sp_3

      if( FLAG_Blend )
      {
         @X = X - 2*BLEND__
         @Y = Y - 2*BLEND__

         @base_0.x = base_0.x + BLEND__
         @base_0.y = base_0.y + BLEND__
      }
      else
      {
         @X = X - 2*VAR_Taglio

         if( Verso != 0 ) { @X = @X + VAR_Taglio }
         if( Verso != 1 ) { @base_0.x = base_0.x + VAR_Taglio }

         //quando ruotato, -1 è sotto, 1 è sopra
         if( Ruota > 0 ) {
            @X = X
            @base_0.x = base_0.x

            @Y = Y - 2*VAR_Taglio
            if( Verso != 0 ) { @Y = @Y + VAR_Taglio }
            if( Verso != 1 ) { @base_0.y = base_0.y + VAR_Taglio }
         }
      }

      if( VAR_Sp2_X > 0 ) { @X = VAR_Sp2_X }
      if( VAR_Sp2_Y > 0 ) { @Y = VAR_Sp2_Y }
      if( VAR_Sp2_OffX > 0 ) { @base_0.x = base_0.x + VAR_Sp2_OffX }
      if( VAR_Sp2_OffY > 0 ) { @base_0.y = base_0.y + VAR_Sp2_OffY }

      if( FIN_var_Sp3 != ""
        & IS_IDX(FIN_idx_gest))
      {
         SetRgb_Val( @c_rivestimento, idx_att, GetLaccatoCorrispondente( VAR_VAL_STR( FIN_idx_gest, GetVarGest(FIN_var_Sp3))), 0)
      }
   }
}

Elemento Vetro_Saponetta_Verniciato_YSweep
{
   Descrizione = ""
   Code        = CUB
   Gruppo      = ""
   Tipo        = ""
   Forma       = YSweep

   Variabili
   {
      X     "" 368
      Y     "" 368
      Z     "" 8

      X1    "" 2.5
      Z1    "" 2.5

      Verso "" 0

      c_rivestimento "" [255,255,255]
   }

   PuntiNotevoli
   {
      DEL_VAR(ATTUALE(),"base*")

      base_0 = [0,0,Z]
      base_1 = [X,0,Z]

      if( Verso == 0 )
      {
         base_2 = [X,0,Z1]
         base_3 = [X-X1,0,0]
         base_4 = [X1,0,0]
         base_5 = [0,0,Z1]
      }

      if( Verso == 1)
      {
         base_2 = [X,0,Z1]
         base_3 = [X-X1,0,0]
         base_4 = [0,0,0]
      }

      if( Verso == -1)
      {
         base_2 = [X,0,0]
         base_3 = [X1,0,0]
         base_4 = [0,0,Z1]
      }

      alto_0 = base_0
      alto_0.y = Y

      base_so = base_0
      alto_ne = [X,Y,Z]
   }
}
//}Mensola Dub

//{Mensola Glasserie
Elemento Mensola_Glasserie
{
   Descrizione = "Mensola Glasserie (ex Boiserie)"
   Code        = COD
   Gruppo      = "MENS"
   Tipo        = Contenitore
   Forma       = ""
   Alias       StampaXG

   Variabili
   {
      #include %path_bdm%\var_db.inc

      //Dimensioni
      X                   "Larghezza"                 736  Menu ( Mens_Glasserie_X ) Utente ( 368-1472 ) ShowAlways
      Y                   "Altezza"                   184  Menu ( Mens_Glasserie_Y ) Utente ( 184-1104 ) ShowAlways
      Z                   "Profondità"                248  Menu ( Mens_Glasserie_Z ) Utente ( 123-248  ) ShowAlways

      Filler1             " "                         ""   ShowAlways

      Xr                  "Larghezza reale"           733  ShowAlways
      Yr                  "Altezza reale"             181  ShowAlways
      Zr                  "Profondità reale"          248

      //Moduli che compongono la mensola finita
      VAR_Moduli          "Numero moduli"             1
      VAR_Senza_Mensola   "Senza mensola vetro"       0

      VAR_Modulo1_Y       "Modulo 1 - Altezza"        184  Menu ( Mens_Glasserie_Y )
      VAR_Modulo2_Y       "Modulo 2 - Altezza"        0    Menu ( Mens_Glasserie_Y )
      VAR_Modulo3_Y       "Modulo 3 - Altezza"        0    Menu ( Mens_Glasserie_Y )
      VAR_Modulo4_Y       "Modulo 4 - Altezza"        0    Menu ( Mens_Glasserie_Y )

      wk_Modulo1_Idx      ""                          -1
      wk_Modulo2_Idx      ""                          -1
      wk_Modulo3_Idx      ""                          -1
      wk_Modulo4_Idx      ""                          -1

      FillerM2G           " "                         ""   ShowAlways
      M4_MIS              ""                          "X*;Y*;Z*;Filler*"

      XGLASS              "Num. XGLASS"               "" Utente ( )

      //Finiture
      FIN_var_VtRt        "Finitura Vetro Retro"      "C048"
      FIN_var_Rip         "Finitura Ripiano"          "C036"

      //Illuminazione
      PanLED_Tipologia    "" "368"

      LED_Sopra           ""  0
      LED_Sotto           ""  0

      idx_cnear_up        "" -1
      idx_cnear_dw        "" -1

      idx_pan             "" -1
      idx_pannello        "" -1
      idx_blocco_agg      "" -1

      COD_EREDITA         ""                          "PRE;POST"
      CMP2_AZIONI         ""                          "S"

      M4_A_MURO           ""                          1
      M4_CNT_LINK_MODE__  ""                          2
      M4_CNT_MODE__       ""                          1
      M4_CNT_MODE2__      ""                          1
   }

   Assegnazioni
   {
      GOSUB AssComune

      GOSUB Mens_Assegnazioni

      //Dimensioni reali
      GOSUB Mens_Glasserie_Assegna_DimReali
      GOSUB Mens_Glasserie_Assegna_DimPanello

      //Moduli
      GOSUB Mens_Glasserie_Moduli_Assegna_Dim

      //Illuminazione
      GOSUB DefPuntiLED_368

      //LZ 05/04/2022: se sono presenti più moduli, XGLASS viene assegnata a loro
      if( VAR_Moduli > 1 ) { DEL_VAR( ATTUALE(), "XGLASS") }
   }

   PuntiNotevoli
   {
      GOSUB punti
   }

   #include %path_bdm%\Tlib\orie.inc

   Controlli
   {
      GOSUB CtrlComune

      //LZ 27/09/2021: sposto gestione sul top level
      //LZ 24/09/2021
      //if( ACTION() > 0 & ACTION() !=2 & $OnLoadOrder==0 )
      //{
      //   r = CopiaPunti( ATTUALE(), ATTUALE(), 1, "Mensola_Glasserie_Modulo", "pnt_stendi_led" )
      //}

      GOSUB CtrlPresenza_LED_368
   }

   Procedura OnTabEredita
   {
      GOSUB Mens_Glasserie_Set_Gest_C008
      GOSUB Mens_Glasserie_Set_Gest_C009
      GOSUB Mens_Glasserie_Set_Gest_C062
   }

   Gestionale
   {
      GOSUB GestComune

      GEST_X = Xr
      GEST_Y = Yr

      GOSUB Mens_Glasserie_Set_Gest_C008
      GOSUB Mens_Glasserie_Set_Gest_C009
      GOSUB Mens_Glasserie_Set_Gest_C062

      GOSUB GestComune_Post
   }

   Posiziona Mensola_Glasserie_Modulo m1
   {
      @VAR_Modulo_Num = 1
      @VAR_Senza_Mensola = VAR_Senza_Mensola
      GOSUB Mens_Glasserie_Moduli_Posa
   }

   Posiziona Mensola_Glasserie_Modulo m2
   {
      @VAR_Modulo_Num = 2
      GOSUB Mens_Glasserie_Moduli_Posa
   }

   Posiziona Mensola_Glasserie_Modulo m3
   {
      @VAR_Modulo_Num = 3
      GOSUB Mens_Glasserie_Moduli_Posa
   }

   Posiziona Mensola_Glasserie_Modulo m4
   {
      @VAR_Modulo_Num = 4
      GOSUB Mens_Glasserie_Moduli_Posa
   }

   Posiziona _cont_per_near nup
   {
      idx_cnear_up = ATTUALE()

      @X = X - $Mens_Glasserie_PanRt_OffX_Dx - $Mens_Glasserie_PanRt_OffX_Sx
      @Y = 10
      @Z = 10

      @base_0.x = base_0.x + $Mens_Glasserie_PanRt_OffX_Sx
      @base_0.y = alto_0.y - $Mens_Glasserie_PanRt_OffY_Sup - @Y/2
      @base_0.z = base_0.z + @Z/2
   }

   Posiziona _cont_per_near ndw
   {
      idx_cnear_dw = ATTUALE()

      @X = X - $Mens_Glasserie_PanRt_OffX_Dx - $Mens_Glasserie_PanRt_OffX_Sx
      @Y = 10
      @Z = 10

      @base_0.x = base_0.x + $Mens_Glasserie_PanRt_OffX_Sx
      @base_0.y = base_0.y + $Mens_Glasserie_PanRt_OffY_Inf - @Y/2
      @base_0.z = base_0.z + @Z/2
   }
}

Elemento Mensola_Glasserie_Modulo
{
   Descrizione = "Mensola Glasserie - Piano"
   Code        = COD
   Gruppo      = ""
   Tipo        = Contenitore
   Forma       = ""

   Variabili
   {
      #include %path_bdm%\var_db.inc

      //Revisioni
      VAR_Revisione_PanRt "Pannello retro - Revisione dimensioni"  0    SaveAlways

      //Dimensioni
      X                    "Larghezza"                             736  Menu ( Mens_Glasserie_X ) Utente ( 368-1472 ) ShowAlways
      Y                    "Altezza"                               184  Menu ( Mens_Glasserie_Y ) Utente ( 184-368 )  ShowAlways
      Z                    "Profondità"                            248  Utente ( 123-248 ) ShowAlways

      Filler1              " "                                     ""   ShowAlways

      Xr                   "Larghezza reale"                       733  ShowAlways
      Yr                   "Altezza reale"                         181  ShowAlways
      Zr                   "Profondità reale"                      248

      //Moduli che compongono la mensola finita
      VAR_Moduli           "Numero moduli"                         1    Implicit
      VAR_Modulo_Num       "Numero modulo"                         1

      VAR_Pan_Rid_Sup      "Pannello retro ridotto sopra"          1
      VAR_Pan_Rid_Inf      "Pannello retro ridotto sotto"          1

      VAR_Senza_Mensola    "Senza mensola vetro"                   0

      FillerM2G            " "                                     ""   ShowAlways
      M4_MIS               ""                                      "X*;Y*;Z*;Filler*"

      //Finiture
      FIN_var_VtRt         "Finitura Vetro Retro"                  "C048" Implicit
      FIN_var_Rip          "Finitura Ripiano"                      "C036" Implicit

      COD_EREDITA          ""                                      "PRE;POST"

      RADICE               ""                                      ""

      HIDE                 ""                                      1
      NO_GEST              ""                                      1

      //Illuminazione
      PanLED_Tipologia     "" "368"

      LED_Sopra            ""  0
      LED_Sotto            ""  0

      TLED_Attiva          ""  0 SaveAlways
      TLED_Tipologia       ""  1 SaveAlways
      TLED_Watt            ""  0

      TLED_Lavorazione     ""  0 SaveAlways
      TLED_TipoLavorazione ""  0 SaveAlways

      idx_cnear_up         "" -1
      idx_cnear_dw         "" -1

      idx_cnear_vtr_up     "" -1
      idx_cnear_vtr_dw     "" -1

      idx_pan              "" -1
      idx_pannello         "" -1
      idx_blocco_agg       "" -1

      XGLASS               "Num. XGLASS"  "" Utente ( )
   }

   Assegnazioni
   {
      GOSUB AssComune

      SetRevisioneElemento( ATTUALE(), "Mens_Glasserie_PanRt_Rev", "VAR_Revisione_PanRt")

   #ifndef TEC
      if( ACTION()==0 & $ATTIVA_DLL==1 )
      {
         VAR_SET_MODE(ATTUALE(),"X",$MODE_SHOWALWAYS)
         VAR_SET_MODE(ATTUALE(),"Y",$MODE_SHOWALWAYS)
         VAR_SET_MODE(ATTUALE(),"Z",$MODE_SHOWALWAYS)
      }
   #endif

      //Dimensioni reali
      GOSUB Mens_Glasserie_Assegna_DimReali

      GOSUB Mens_Glasserie_Assegna_DimPanello

      NO_GEST = 1
      if( VAR_Moduli > 1 ) { NO_GEST = 0 }

      //Finiture
      FIN_idx_gest = ATTUALE()
      if( NO_GEST ) { FIN_idx_gest = PADRE( ATTUALE(), 1) }
   }

   PuntiNotevoli
   {
      GOSUB punti
   }

   #include %path_bdm%\Tlib\orie.inc

   Controlli
   {
      GOSUB CtrlComune

      GOSUB CtrlPresenza_LED_368
      GOSUB TLED_CalcolaTrasformatore_368
   }

   Procedura OnTabEredita
   {
      GOSUB Mens_Glasserie_Set_Gest_C008
      GOSUB Mens_Glasserie_Set_Gest_C009
      GOSUB Mens_Glasserie_Set_Gest_C062
   }

   Gestionale
   {
      GOSUB GestComune

      if( NO_GEST==1 )
      {
         HIDE = 1

         FLAG_RADICE = $NO_RAD
         RADICE = ""
         GEST_CODICE = ""

         GOSUB GestComune_Post

         EXIT()
      }

      HIDE = 0

      GEST_X = Xr
      GEST_Y = Yr

      RADICE = "36E8GS"
      //TODO
      //if( VAR_Senza_Mensola == 1 ) { RADICE = "" }

      GOSUB CAMBIA_VAR

      GOSUB Mens_Glasserie_Set_Gest_C008
      GOSUB Mens_Glasserie_Set_Gest_C009
      GOSUB Mens_Glasserie_Set_Gest_C062
   }

   Posiziona PannelloRetro_WallPanel_368 pan
   {
      @X = X - $Mens_Glasserie_PanRt_OffX_Dx - $Mens_Glasserie_PanRt_OffX_Sx
      @Y = Y - SE_NUM( VAR_Pan_Rid_Sup == 1, $Mens_Glasserie_PanRt_OffY_Sup, $Mens_Glasserie_OffY) - SE_NUM( VAR_Pan_Rid_Inf == 1, $Mens_Glasserie_PanRt_OffY_Inf, $Mens_Glasserie_OffY)
      @Z = $Mens_Glasserie_PanRt_Z

      @base_0 = base_0
      @base_0.x = base_0.x + $Mens_Glasserie_PanRt_OffX_Sx
      @base_0.y = base_0.y + SE_NUM( VAR_Pan_Rid_Inf == 1, $Mens_Glasserie_PanRt_OffY_Inf, $Mens_Glasserie_OffY)

      @FIN_var = ""
   }

   Posiziona BloccoBlend vtr
   {
      @X = Xr
      @Y = Yr
      @Z = $Mens_Glasserie_VtRt_Z

      @base_0.x = base_0.x + $Mens_Glasserie_OffX
      @base_0.y = base_0.y + $Mens_Glasserie_OffY
      @base_0.z = base_0.z + $Mens_Glasserie_PanRt_Z

      @BLEND__ = 1

      FIN_var = FIN_var_VtRt
      GOSUB rivestimento
   }

   Posiziona BloccoSmussatoY rip1
   {
      @escluso = SE_NUM( VAR_Senza_Mensola == 1, 1, 0)

      @X = Xr
      @Y = $Mens_Glasserie_VtRip_Y
      @Z = Z - $Mens_Glasserie_PanRt_Z - $Mens_Glasserie_VtRt_Z

      @base_0.x = base_0.x + $Mens_Glasserie_OffX
      @base_0.y = base_0.y + $Mens_Glasserie_OffY
      @base_0.z = base_0.z + $Mens_Glasserie_PanRt_Z + $Mens_Glasserie_VtRt_Z

      @R0 = 0
      @R1 = $Mens_Glasserie_VtRip_Raggio
      @R2 = $Mens_Glasserie_VtRip_Raggio
      @R3 = 0

      FIN_var = FIN_var_Rip
      GOSUB rivestimento
      @f_rivestimento = "0.8"
   }

   Posiziona LavTrasformatoreLED_368 LavTra
   {
      GOSUB posa_lavorazione_trasformatore_368
   }

   Posiziona TrasformatoreLED_368 Tras
   {
      GOSUB posa_trasformatore_368
   }

   Posiziona _cont_per_near nup
   {
      idx_cnear_up = ATTUALE()

      @X = X - $Mens_Glasserie_PanRt_OffX_Dx - $Mens_Glasserie_PanRt_OffX_Sx
      @Y = 10
      @Z = 10

      @base_0.x = base_0.x + $Mens_Glasserie_PanRt_OffX_Sx
      @base_0.y = alto_0.y - $Mens_Glasserie_PanRt_OffY_Sup - @Y/2
      @base_0.z = base_0.z + @Z/2
   }

   Posiziona _cont_per_near ndw
   {
      idx_cnear_dw = ATTUALE()

      @X = X - $Mens_Glasserie_PanRt_OffX_Dx - $Mens_Glasserie_PanRt_OffX_Sx
      @Y = 10
      @Z = 10

      @base_0.x = base_0.x + $Mens_Glasserie_PanRt_OffX_Sx
      @base_0.y = base_0.y + $Mens_Glasserie_PanRt_OffY_Inf - @Y/2
      @base_0.z = base_0.z + @Z/2
   }

   Posiziona _cont_per_near nvtrup
   {
      idx_cnear_vtr_up = ATTUALE()

      @X = Xr
      @Y = $Mens_Glasserie_OffY*2
      @Z = $Mens_Glasserie_VtRt_Z

      @base_0.x = base_0.x + $Mens_Glasserie_OffX
      @base_0.y = base_0.y + Y - $Mens_Glasserie_OffY
      @base_0.z = base_0.z + $Mens_Glasserie_PanRt_Z
   }

   Posiziona _cont_per_near nvtrdw
   {
      idx_cnear_vtr_dw = ATTUALE()

      @X = Xr
      @Y = $Mens_Glasserie_OffY*2
      @Z = $Mens_Glasserie_VtRt_Z

      @base_0.x = base_0.x + $Mens_Glasserie_OffX
      @base_0.y = base_0.y + $Mens_Glasserie_OffY - @Y
      @base_0.z = base_0.z + $Mens_Glasserie_PanRt_Z
   }
}
//}Mensola Glasserie


//{Elementi comuni
Elemento Mensole_Acc_Led
{
   Descrizione = "Mensole - Accessori - Led"
   Code        = COD
   Gruppo      = "MENS"
   Tipo        = Contenitore
   Forma       = ""
   Attrezzabile Mensola_Dub Mensola_Cartesio_Supporto Mensola_Rivestita
   Altimetro    Auto
   Alias        CamIncidente

   Variabili
   {
      #include %path_bdm%\var_db.inc

      X           "Larghezza"           543
      Y           "Altezza"             7
      Z           "Profondità"          8.6

      Filler1     " "                   ""   ShowAlways

      Xn          "Larghezza nominale"  552

      Led_OffX    "Led - Offset X"      8.5
      Led_OffY    "Led - Offset Y"      20
      Led_OffZ    "Led - Offset Z"      45

      FillerM2G   " "                   ""   ShowAlways
      M4_MIS      ""                    "X*;Filler*"

      GEST_CODICE ""                    ""
      perRADICE   ""                    ""
      RADICE      ""                    ""

      idx_ref     ""                    -1

      M4_NO_OFFS  ""                    1

      CMP2_AZIONI ""                    "A"
   }

   Assegnazioni
   {
      GOSUB AssComune

      perRADICE = "LEDMENS"

      if( UN_PADRE("Mensola_Dub") )
      {
         Led_OffX = $Mens_Dub_Led_OffX
         Led_OffZ = $Mens_Dub_Led_OffZ

         Led_OffY = 0
         if( IS_IDX(idx_ref) )
         {
            SET_#(idx_ref)
            Led_OffY = (#Y - $Mens_Dub_Piano_Y)/2 + 1
         }
      }

      if( UN_PADRE("Mensola_Cartesio_Supporto") )
      {
         Led_OffX = $Mens_Cartesio_Led_OffX
         Led_OffZ = $Mens_Cartesio_Led_OffZ
      }

      //Simone 03/06/2022
      if( UN_PADRE("Mensola_Rivestita") )
      {
         Led_OffX = $Mens_Riv_Led_OffX
         Led_OffZ = $Mens_Riv_Led_OffZ

         Led_OffY = -1
         Z = 6.5

         perRADICE = "LEDSOSCC"
         GEST_Z = 8.6
      }
   }

   PuntiNotevoli
   {
      GOSUB punti
   }

   Procedura OnQueryBdmLocal
   {
      if( $query_type == 8 )
      {
         $QueryResult__ = 1

         if( NOME($query_p1) != "Mensola_Rivestita"
           & VAR_VAL( $query_p1, "VAR_Staffe_tipo") != 0 )   { $QueryResult__ = 0 }

         COMPONENTI2( "wk_led", $query_p1, NOME(ATTUALE()))
         if( NOME($query_p1) == "Mensola_Dub" )
         {
            if( wk_led > 0 )                                 { $QueryResult__ = 0 }
         }
         //Simone 26/10/21 - TODO: Blocco inserimento di più di un led
         else
         {
            if( wk_led > 1 )                                 { $QueryResult__ = 0 }
         }
      }
   }

   Procedura OnSetupLivelli
   {
      idx_ref  = $__lev_ref__
      vano_ref = $__lev_vano__

      annulla_ins = 0

      //Simone 26/07/2022
      COMPONENTI2("wk_led",idx_ref,"Mensole_Acc_Led")
      if( NOME(idx_ref) == "Mensola_Rivestita" )
      {
         if( wk_led >= 1 ) { annulla_ins = 1 }
      }

      DEL_VAR(idx_att,"liv2add*")
      liv2add    = 1

      liv2add[1] = 0

      ArrayCopy(ATTUALE(),"liv2add","liv2addscr")
      GOSUB livelli_add2
   }

   Attrezza
   {
      idx_ref  = @idx_att
      idx_topl = GetTopLevel(idx_ref)
      vano_n   = $vano_n

      X = $larghezza - 2*Led_OffX

      base_0.x = @base_0.x + ( @X - X )/2
      base_0.y = @base_0.y + Led_OffY
      base_0.z = @base_0.z + Led_OffZ - Z/2

      //Simone 21/10/21
      if( NOME(idx_ref) == "Mensola_Cartesio_Supporto" )
      {
         if( vano_n==1 )  { ang_x = 180 }

         X = $larghezza - Led_OffX

         base_0 = $vano_0
         base_0.x = $vano_0.x + ( @X - X )/2
      }
   }

   Controlli
   {
      GOSUB CtrlComune
   }

   Gestionale
   {
      GOSUB GestComune

      RADICE = perRADICE

      FLAG_RADICE = $FLAG_STANDARD + $MAKE_ROW
      //Simone 26/07/2022
      if( UN_PADRE("Mensola_Rivestita") )
      {
         FLAG_RADICE = $FLAG_STANDARD
         GEST_IDXPADRE = GetTopLevel(ATTUALE())
      }

      GOSUB CAMBIA_VAR
   }

   Procedura PostGestDllValida
   {
      if( $OnLoadOrder2==1 | $OnRigenera==1 )     { EXITSUB() }
      if( ACTION()<=0 | ACTION()==2 )             { EXITSUB() }
      if( $CNP==1 )                               { EXITSUB() }

      //COMANDO(STRCAT("RICALCOLA_UNA ",STR( PADRE( ATTUALE(), 1)),"  // PostGestDllValida Mensole_Acc_Led"))
      COMANDO(STRCAT("RICALCOLA_UNA ",STR(GetTopLevel(ATTUALE()))," //PostGestDllValida ",NOME(ATTUALE())))
   }

   Posiziona Blocco_Luce led
   {
      GOSUB posa_blocco

      @FacciaLuminosa = "DX"
   }

   Posiziona VediLuce vd1
   {
      @base_0.x = base_0.x + ( X / 3 )
      @base_0.y = base_0.y - @Y - 5
      @base_0.z = base_0.z
   }

   Posiziona VediLuce vd2
   {
      @base_0.x = base_0.x + 2 * ( X / 3 )
      @base_0.y = base_0.y - @Y - 5
      @base_0.z = base_0.z
   }
}


Elemento Mensole_Acc_Trasformatore
{
   Descrizione = "Mensole - Accessori - Trasformatore"
   Code        = COD
   Gruppo      = "MENS"
   Tipo        = Contenitore
   Forma       = ""
   Alias        CamIncidente

   Variabili
   {
      #include %path_bdm%\var_db.inc

      X                      "Larghezza"            200 ShowAlways
      Y                      "Altezza"              30  ShowAlways
      Z                      "Profondità"           40  ShowAlways

      Raggio                 ""                     1

      VAR_Trasformatore_tipo "Trasformatore - tipo" 0   Implicit

      FillerM2G              " "                    ""  ShowAlways

      M4_MIS                 ""                     "X;Y;Z;Filler*"

      perCODICE              ""                     "CU1715"
      GEST_CODICE            ""                     ""

      M4_NO_OFFS             ""                     1
   }

   Assegnazioni
   {
      GOSUB AssComune

      Raggio = $Mens_Dub_Trasf_R
      if( UN_PADRE("Mensola_Rivestita") ) { Raggio = $Mens_Riv_Trasf_R }

      if( Raggio >= Y/2 ) { Raggio = Y/2 - 0.1 }
   }

   PuntiNotevoli
   {
      GOSUB punti
   }

   Controlli
   {
      GOSUB CtrlEscluso
      GOSUB CtrlComune
   }

   Gestionale
   {
      GOSUB GestComune

      //FLAG_RADICE = $FLAG_STANDARD + $MAKE_ROW
      FLAG_RADICE = $FLAG_STANDARD + $MAKE_ROW + $NORID_X + $NORID_Y + $NORID_Z

      perCODICE_PREC = VAR_VAL_STR(ATTUALE(),"GEST_CODICE")

      //15W
      perCODICE = "CU1715"
      //30W
      if( VAR_Trasformatore_tipo == 1 ) { perCODICE = "CU1703" }
      //100W
      if( VAR_Trasformatore_tipo == 2 ) { perCODICE = "CU1710" }

      if( GEST_CODICE != perCODICE )    { GEST_CODICE = perCODICE }
      if( perCODICE_PREC!=GEST_CODICE ) { flag_CAMBIA_VAR = 1 }

      GOSUB CAMBIA_VAR

      GOSUB Set_Gest_C003_Ng

      GOSUB GestComune_Post
   }

   Procedura cancella
   {
      GOSUB BloccaCancellaComponente
   }

   Posiziona BloccoSmussatoZ lav1
   {
      GOSUB posa_blocco

      @R0 = Raggio
      @R1 = Raggio
      @R2 = Raggio
      @R3 = Raggio

      @c_rivestimento = $c_nero
   }

   Posiziona Blocco cnt
   {
   #ifndef TEC
      @escluso = 1
   #endif

      @X = X/2 - Raggio
      @Y = Y/2 - Raggio
      @Z = 10

      @base_0.x = base_0.x + Raggio
      @base_0.y = base_0.y + Raggio
      @base_0.z = base_0.z
   }

   Posiziona PCV_ContCollisioni_368 pcv1
   {
      GOSUB posa_blocco

      @Y = Y*2
   }
}

Elemento Mensole_Acc_Dimmer
{
   Descrizione = "Mensole - Accessori - Dimmer"
   Code        = COD
   Gruppo      = "MENS"
   Tipo        = Contenitore
   Forma       = ""
   Alias        CamIncidente

   Variabili
   {
      #include %path_bdm%\var_db.inc

      X           "Larghezza"           200
      Y           "Altezza"             30
      Z           "Profondità"          40

      FillerM2G   " "                   ""   ShowAlways

      M4_MIS      ""                    "X;Y;Z;Filler*"

      M4_NO_OFFS  ""                    1
   }

   Assegnazioni
   {
      GOSUB AssComune
   }

   PuntiNotevoli
   {
      GOSUB punti
   }

   Controlli
   {
      GOSUB CtrlComune
   }

   Gestionale
   {
      GOSUB GestComune

      GOSUB GestComune_Post
   }

   Procedura cancella
   {
      GOSUB BloccaCancellaComponente
   }

   Posiziona BloccoSmussatoZ lav1
   {
      GOSUB posa_blocco

      @R0 = $Mens_Dub_Dimm_R
      @R1 = $Mens_Dub_Dimm_R
      @R2 = $Mens_Dub_Dimm_R
      @R3 = $Mens_Dub_Dimm_R
   }

   Posiziona Blocco cnt
   {
   #ifndef TEC;AZI
      @escluso = 1
   #endif

      @X = X/2 - $Mens_Dub_Dimm_R
      @Y = Y/2 - $Mens_Dub_Dimm_R
      @Z = 10

      @base_0.x = base_0.x + $Mens_Dub_Dimm_R
      @base_0.y = base_0.y + $Mens_Dub_Dimm_R
      @base_0.z = base_0.z
   }
}

Elemento Mensole_Ferr_Reggimensola
{
   Descrizione = "Mensole - ferramenta - reggimensola per mensole p270"
   Code        = MENS
   Gruppo      = ""
   Tipo        = Contenitore
   Forma       = ""
   Alias       CamIncidente

   Variabili
   {
      #include %path_bdm%\var_db.inc

      X              "Larghezza"            135
      Y              "Altezza"              29
      Z              "Profondità"           190

      VAR_Piastra_Z  "Piastra - Profondità" 12
      VAR_Piastra_R  "Piastra - Raggio"     14.4
      VAR_Reggi_Diam "Reggimensola - diam"  14

      VediLimiti_PCV ""                     0 Implicit

      GEST_CODICE    ""                     "B20044"

      M4_NO_OFFS "" 1
   }

   Assegnazioni
   {
      GOSUB AssComune

      c_rivestimento = [128,128,128]
   }

   PuntiNotevoli
   {
      GOSUB punti
   }

   Controlli
   {
      GOSUB CtrlEscluso
      GOSUB CtrlComune
   }

   Gestionale
   {
      GOSUB GestComune

      GOSUB GestComune_Post

      GOSUB CAMBIA_VAR
   }

   Procedura cancella
   {
      GOSUB BloccaCancellaComponente
   }

   Posiziona BloccoSmussatoZ stf
   {
      GOSUB posa_blocco

      @Z = VAR_Piastra_Z

      @R0 = VAR_Piastra_R
      @R1 = VAR_Piastra_R
      @R2 = VAR_Piastra_R
      @R3 = VAR_Piastra_R

      @c_rivestimento = c_rivestimento
   }

   Posiziona CilindroZ rgm
   {
      @X = VAR_Reggi_Diam
      @Y = VAR_Reggi_Diam
      @Z = Z - VAR_Piastra_Z

      @base_0.x = base_0.x + (X - @X)/2
      @base_0.y = base_0.y + (Y - @Y)/2
      @base_0.z = base_0.z + VAR_Piastra_Z

      @c_rivestimento = c_rivestimento
   }

   Posiziona PCV_ContCollisioni_368 pcv
   {
      GOSUB posa_blocco
      @Y = 100
   }
}
//}Elementi comuni


Macro
{
}

Subroutine
{
   //{Mensole --------------------------------------------------------------------------------
   PROCEDURA Mens_Assegnazioni
   {
      Xn = X
      Yn = Y
      Zn = Z

   #ifndef TEC;AZI
      if( ACTION()==0 & $ATTIVA_DLL==1 )
      {
         VAR_SET_MODE(ATTUALE(),"X",$MODE_SHOWALWAYS)
         VAR_SET_MODE(ATTUALE(),"Y",$MODE_SHOWALWAYS)
         VAR_SET_MODE(ATTUALE(),"Z",$MODE_SHOWALWAYS)
      }
   #endif

      GOSUB Mens_Assegna_Riduzioni
   }

   PROCEDURA Mens_Assegna_Riduzioni
   {
      if( $ATTIVA_DLL == 0 )                 { EXITSUB() }
      if( ACTION() <=0 | $OnLoadOrder == 1 ) { EXITSUB() }

      VarDimX = "X"   ValDeltaX = 0   VarMenuX = ""  VarMenuFissoX = ""   VarFlgChangeX = 1
      VarDimY = "Y"   ValDeltaY = 0   VarMenuY = ""  VarMenuFissoY = ""   VarFlgChangeY = 1
      VarDimZ = "Z"   ValDeltaZ = 0   VarMenuZ = ""  VarMenuFissoZ = ""   VarFlgChangeZ = 1

      CtrlRangeRidM2G(ATTUALE(),"X")
      CtrlRangeRidM2G(ATTUALE(),"Y")
      CtrlRangeRidM2G(ATTUALE(),"Z")

      //X
      if( VAR_EXIST( ATTUALE(), "CR_X_min")
        & VAR_EXIST( ATTUALE(), "CR_X_max")
        & VAR_MODE( ATTUALE(), "X") == $MODE_USER )
      {
         if( CR_X_min <= CR_X_max )
         {
            wk_new_menu = STRCAT( "( ", STR(CR_X_min),"-", STR(CR_X_max), " )")
            VAR_SET_MENU( ATTUALE(), "X", wk_new_menu)
         }
      }

      //Y
      if( VAR_EXIST( ATTUALE(), "CR_Y_min")
        & VAR_EXIST( ATTUALE(), "CR_Y_max")
        & VAR_MODE( ATTUALE(), "Y") == $MODE_USER )
      {
         if( CR_Y_min <= CR_Y_max )
         {
            wk_new_menu = STRCAT( "( ", STR(CR_Y_min),"-", STR(CR_Y_max), " )")
            VAR_SET_MENU( ATTUALE(), "Y", wk_new_menu)
         }
      }

      //Z
      if( VAR_EXIST( ATTUALE(), "CR_Z_min")
        & VAR_EXIST( ATTUALE(), "CR_Z_max")
        & VAR_MODE( ATTUALE(), "Z") == $MODE_USER )
      {
         if( CR_Z_min <= CR_Z_max )
         {
            wk_new_menu = STRCAT( "( ", STR(CR_Z_min),"-", STR(CR_Z_max), " )")
            VAR_SET_MENU( ATTUALE(), "Z", wk_new_menu)
         }
      }
   }
   //}Mensole --------------------------------------------------------------------------------

   //{Mensola Cartesio
   PROCEDURA Mens_Cartesio_Assegnazioni
   {
      if( $ATTIVA_DLL != 0 )
      {
         VAR_SET_MODE( ATTUALE(), "VAR_Verso", $MODE_SHOWALWAYS)
      }

      GOSUB Mens_Cartesio_Assegna_Rid_Tecniche

      GOSUB Mens_Cartesio_Assegna_Supporto

      //GOSUB Mens_Cartesio_Assegna_Acc_Trasformatore
   }

   PROCEDURA Mens_Cartesio_Assegna_Rid_Tecniche
   {
      if( $ATTIVA_DLL == 0 )                 { EXITSUB() }
      if( ACTION() <=0 | $OnLoadOrder == 1 ) { EXITSUB() }
      if( VAR_EXIST( ATTUALE(), "ORD_X") == 0
        | VAR_VAL( ATTUALE(), "ORD_X") < X ) { EXITSUB() }

   #ifdef TEC
      FLAG_Rid_Tecniche = 1
   #endif
      if( FLAG_Rid_Tecniche == 0 )           { EXITSUB() }

      wk_x_min = ORD_X - $Mensola_Cartesio_Supp_OffX_Dx - $Mensola_Cartesio_Supp_OffX_Sx - $Mensola_Cartesio_Supp_OffX_R
      wk_x_max = ORD_X

      if( wk_x_min <= wk_x_max )
      {
         wk_new_menu = STRCAT( "( ", STR(wk_x_min),"-", STR(wk_x_max), " )")
         VAR_SET_MENU( ATTUALE(), "X", wk_new_menu)
      }
   }

   PROCEDURA Mens_Cartesio_Assegna_Supporto
   {
      wk_x = X
      if( FLAG_Rid_Tecniche == 1 ) { wk_x = ORD_X }

      VAR_Supporto_lar = 552
      if( wk_x >= 751 ) { VAR_Supporto_lar = 736 }
      if( wk_x > 1104 ) { VAR_Supporto_lar = 920 }
      if( wk_x > 1472 ) { VAR_Supporto_lar = 1104 }
      if( wk_x > 1840 ) { VAR_Supporto_lar = 1288 }
   }

   PROCEDURA Mens_Cartesio_Assegna_Punti_Led
   {
      if( ACTION() <= 0 | ACTION() == 2 | $OnLoadOrder == 1 )  { EXITSUB() }

      DEL_VAR(ATTUALE(), "pnt_stendi_led_*")

      pnt_stendi_led_sx_b = [ $Mensola_Cartesio_Pann_OffX - $Mens_Cartesio_Led_OffX, $Mensola_Cartesio_Pann_OffY + $Mens_Cartesio_Led_Y/2 - 1, $Mensola_Cartesio_Pann_Z/2 ]
      pnt_stendi_led_sx_a = [ $Mensola_Cartesio_Pann_OffX - $Mens_Cartesio_Led_OffX, Y - $Mens_Cartesio_Led_Y/2, $Mens_Cartesio_Led_OffZ + $Mens_Cartesio_Led_Z/2 ]

      pnt_stendi_led_dx_b = [ X - $Mensola_Cartesio_Pann_OffX + $Mens_Cartesio_Led_OffX, $Mensola_Cartesio_Pann_OffY + $Mens_Cartesio_Led_Y/2 - 1, $Mensola_Cartesio_Pann_Z/2 ]
      pnt_stendi_led_dx_a = [ X - $Mensola_Cartesio_Pann_OffX + $Mens_Cartesio_Led_OffX, Y - $Mens_Cartesio_Led_Y/2, $Mens_Cartesio_Led_OffZ + $Mens_Cartesio_Led_Z/2 ]
   }

   PROCEDURA Mens_Cartesio_Assegna_Acc_Trasformatore
   {
      if( IS_VAR_FIXED( ATTUALE(), "VAR_Trasformatore") == 0
        & VAR_MODE( ATTUALE(), "VAR_Trasformatore") != $MODE_IMPLICIT )
      {
         VAR_Acc_Trasformatore = VAR_Acc_Led
      }

      VAR_Trasformatore_assorbimento = 0
      COMPONENTI2( "wk_led", ATTUALE(), "Mensole_Acc_Led")
      $wk_i = 1
      while( $wk_i <= wk_led )
      {
         wk_led_att = wk_led[$wk_i]

         wk_led_ass_att = VAR_VAL( wk_led_att, "LED_Watt" )
         if( wk_led_ass_att == 0 ) { wk_led_ass_att = (VAR_VAL( wk_led_att, "X") / 10) * 0.11 }

         VAR_Trasformatore_assorbimento = VAR_Trasformatore_assorbimento + wk_led_ass_att

         $wk_i = $wk_i + 1
      }

      //Tipo: 0 - 15W, 1 - 30W, 2 - 100W
      VAR_Trasformatore_tipo = 0
      if( VAR_Trasformatore_assorbimento > 15 ) { VAR_Trasformatore_tipo = 1 }
      if( VAR_Trasformatore_assorbimento > 30 ) { VAR_Trasformatore_tipo = 2 }
   }

   PROCEDURA Mens_Cartesio_Controlli
   {
      if( ACTION() <= 0 | ACTION() == 2 | $OnLoadOrder == 1 )  { EXITSUB() }

      GOSUB Mens_Cartesio_Controlli_Verso

      GOSUB Mens_Cartesio_Controlli_Acc_Led

      GOSUB Mens_Cartesio_Assegna_Acc_Trasformatore

      if( ATTUALE() == PADRE( ATTUALE(), -1))
      {
         r = CopiaPunti( ATTUALE(), ATTUALE(), 1, "Mensola_Cartesio_Supporto", "pnt_stendi_led" )
      }
   }

   PROCEDURA Mens_Cartesio_Controlli_Verso
   {
      if( VAR_EXIST( ATTUALE(), "GEST_C116") == 0 ) { EXITSUB() }

      if( IS_VAR_FIXED( ATTUALE(), "VAR_Verso") )   { DEL_VAR_MODIFICATE( ATTUALE(), "VAR_Verso") }

      VAR_Verso = 1
      if( GEST_C116 == "SX001" ) { VAR_Verso = -1 }
   }

   PROCEDURA Mens_Cartesio_Controlli_Acc_Led
   {
      COMPONENTI2( "wk_led", ATTUALE(), "Mensole_Acc_Led")

      if( IS_VAR_FIXED( ATTUALE(), "VAR_Acc_Led") == 1 ) { DEL_VAR_MODIFICATE( ATTUALE(), "VAR_Acc_Led") }
      VAR_Acc_Led = 0
      VAR_Acc_Led_Inf = 0
      VAR_Acc_Led_Sup = 0

      if( wk_led > 0 )
      {
         VAR_Acc_Led = 1

         $wk_i = 1
         while( $wk_i <= wk_led )
         {
            wk_led_att = wk_led[$wk_i]

            //if( VAR_VAL( wk_led_att, "wk_pos_led") == "BASSO" ) { VAR_Acc_Led_Inf = 1 }
            //if( VAR_VAL( wk_led_att, "wk_pos_led") == "ALTO" )  { VAR_Acc_Led_Sup = 1 }
            if( VAR_VAL( wk_led_att, "alto_0.y") <= base_0.y + Y/2 ) { LED_Sotto = 1  VAR_Acc_Led_Inf = 1 }
            if( VAR_VAL( wk_led_att, "base_0.y") >= base_0.y + Y/2 ) { LED_Sopra = 1  VAR_Acc_Led_Sup = 1 }

            $wk_i = $wk_i + 1
         }
      }
      else
      {
         $wk_i = 1
         while( $wk_i <= wk_led )
         {
            HI(ATTUALE(),1)
            DISPLAY2(STRCAT(MSG(1090),"\n",MSG(1245)))
            HI(ATTUALE(),0)

            COMANDO(STRCAT("DELETE ",STR(wk_led[$wk_i]) , " //Mens_Cartesio_Controlli_Acc_Led"))

            $wk_i = $wk_i + 1
         }
      }
   }
      //Simone 20/10/21
      //if( VAR_EXIST(ATTUALE(),"idx_cnear_up") == 0 ) { EXITSUB() }
      //
      //if( IS_IDX(idx_cnear_up) == 0 ) { EXITSUB() }
      //
      //if( IS_VAR_FIXED( ATTUALE(), "VAR_Acc_Led") == 1 ) { DEL_VAR_MODIFICATE( ATTUALE(), "VAR_Acc_Led") }
      //VAR_Acc_Led = 0
      //VAR_Acc_Led_Inf = 0
      //VAR_Acc_Led_Sup = 0
      //
      //LED_Sopra = 0
      //LED_Sotto = 0
      //
      //idx_LED_sopra = -1
      //idx_LED_sotto = -1
      //
      //BOX_MODE(0)
      //NEAR_GLOBALE2("led_up",idx_cnear_up,2,"Led_PannelloRetro_368")
      //NEAR_GLOBALE2("led_dw",idx_cnear_dw,2,"Led_PannelloRetro_368")
      //
      //if( led_up > 0 | led_dw > 0 )  { VAR_Acc_Led = 1 }
      //if( led_up > 0 )               { LED_Sopra = 1   idx_LED_sopra = led_up[1]   VAR_Acc_Led_Sup = 1 }
      //if( led_dw > 0 )               { LED_Sotto = 1   idx_LED_sotto = led_dw[1]   VAR_Acc_Led_Inf = 1 }
   //}

   PROCEDURA Mens_Cartesio_Set_Gest_C008
   {
      if( ACTION()<=0 | ACTION()==2 | $OnLoadOrder==1 ) { EXITSUB() }

      gest_C008 = "__"

      if( IS_VarsUser__(ATTUALE(),"GEST_C008") == 1 )
      {
         DEL_VAR_MODIFICATE(ATTUALE(),"GEST_C008")
         DEL_VARS_USER(ATTUALE(),"GEST_C008")
      }

      if( VAR_Acc_Led > 0 )  { gest_C008 = "SM032" }

      GEST_C008 = gest_C008
      VarAdd = "GEST_C008"   GOSUB Add_TABER_VARSETTATE
   }

   PROCEDURA Mens_Cartesio_Set_Gest_C009
   {
      if( ACTION() <= 0 | ACTION()== 2 ) { EXITSUB() }

      gest_C009  = "__"

      if( IS_VarsUser__(ATTUALE(),"GEST_C009") == 1 )
      {
         DEL_VAR_MODIFICATE(ATTUALE(),"GEST_C009")
         DEL_VARS_USER(ATTUALE(),"GEST_C009")
      }

      if( LED_Sopra == 1 )  { gest_C009 = "SM023" }
      if( LED_Sotto == 1 )  { gest_C009 = "SM025" }
      if( LED_Sopra == 1
        & LED_Sotto == 1 )  { gest_C009 = "SM026" }

      GEST_C009 = gest_C009
      VarAdd = "GEST_C009"   GOSUB Add_TABER_VARSETTATE
   }
   //}Mensola Cartesio

   //{Mensola Rivestita
   PROCEDURA Mens_Riv_Assegnazioni
   {
      idx_topl = GetTopLevel(ATTUALE())
      if( NOME(PADRE(ATTUALE(),1)) == "MensolaLib_AIR" ) { HIDE = 1 }

      Y  = 54
      Zt = Z

      Xp = X - 2 * $Mens_Riv_Vetri_Spe
      Yp = $Mens_Riv_Piano_Y
      Zp = Z - $Mens_Riv_Vetri_Spe - VAR_VAL( ATTUALE(), "VAR_Lib_Air")*$Mens_Riv_Vetri_Spe

      if( Z > 270 )
      {
         Y = 80
         Yp = $Mens_Riv_PianoP406_Y
      }

      if( NOME(ATTUALE()) != "Mensola_Rivestita" )
      {
         Xp = X
         Yp = Y
         Zp = Z

         Xn = X + 2 * $Mens_Riv_Vetri_Spe
         Yn = VAR_VAL( PADRE( ATTUALE(), 1), "Y")
         Zn = Z + $Mens_Riv_Vetri_Spe + VAR_VAL( ATTUALE(), "VAR_Lib_Air")*$Mens_Riv_Vetri_Spe
      }

      GOSUB Mens_Riv_Assegna_Staffe

      //Simone 01/06/2022 - Tengo la gestione della mensola Dub
      GOSUB Mens_Dub_Assegna_Acc_Trasformatore

      GOSUB Mens_Dub_Assegna_Acc_Dimmer

      HIDE_ON_EDIT2( ATTUALE(), "VAR_Lib_Air", $ATTIVA_DLL)
   }

   PROCEDURA Mens_Riv_Set_Gest_C008
   {
      if( ACTION()<=0 | ACTION()==2 | $OnLoadOrder==1 ) { EXITSUB() }

      CAT_VM_var = "C008"
      CAT_VM_opz = "TP008;TP025;TP026;TP027;TP028"
      CAT_VM_sel = ""

      wk_pcv = 0
      wk_scs = 0
      wk_lav = 0

      COMPONENTI2("wk_pcv",ATTUALE(),"Passacavi_368")
      COMPONENTI2("wk_scs",ATTUALE(),"Scasso_EldomTop")

      wk_lav = wk_pcv + wk_scs

      if( wk_lav == 1 )  { AddVal_CAT_VM_sel( CAT_VM_sel , "TP008") }
      if( wk_lav == 2 )  { AddVal_CAT_VM_sel( CAT_VM_sel , "TP025") }
      if( wk_lav == 3 )  { AddVal_CAT_VM_sel( CAT_VM_sel , "TP026") }
      if( wk_lav == 4 )  { AddVal_CAT_VM_sel( CAT_VM_sel , "TP027") }
      if( wk_lav == 5 )  { AddVal_CAT_VM_sel( CAT_VM_sel , "TP028") }

      GOSUB Gest_CAT_VM
   }

   PROCEDURA Mens_Riv_Set_Gest_C165
   {
      if( ACTION()<=0 | ACTION()==2 | $OnLoadOrder==1 ) { EXITSUB() }

      VarAdd = "GEST_C165"
      if( IS_VarsUser__( ATTUALE(), VarAdd) == 1 )
      {
         DEL_VAR_MODIFICATE( ATTUALE(), VarAdd)
         DEL_VARS_USER( ATTUALE(), VarAdd)
      }

      gest_C165 = "__"

      //solo led inferiore
      if( VAR_Acc_Led_Inf > 0 )  { gest_C165 = "SM025" }

      GEST_C165 = gest_C165
      GOSUB Add_TABER_VARSETTATE
   }

   PROCEDURA Mens_Riv_Assegna_TipoCollo_Pcv
   {
      $ATPC_debug_msg  = "Mens_Riv_Assegna_TipoCollo_Pcv"
      LogProcedura2("ATPC_TipoCollo")

      //P31 - P40
      $wk_pre_tp = "P"
      $wk_min_tp = 31
      $wk_max_tp = 40
      Reset_TIPO_COLLO( $wk_pre_tp, $wk_min_tp, $wk_max_tp)

      STRUTTURE("$wk_str")

      $wk_prg = $wk_min_tp

      $wk_i = 1
      while ( $wk_i<=$wk_str )
      {
         $wk_idx_str = $wk_str[$wk_i]
         if( $wk_prg < 10 ) { $wk_val_tp = STRCAT( $wk_pre_tp, "0", STR($wk_prg)) }
         else               { $wk_val_tp = STRCAT( $wk_pre_tp, STR($wk_prg))      }

         $wk_tp_used = 0

         if( NOME($wk_idx_str) == "Mensola_Rivestita" )
         {
            COMPONENTI2( "$wk_pcv", $wk_idx_str, "Passacavi_368")

            $wk_k = 1
            while( $wk_k <= $wk_pcv )
            {
               $wk_pcv_att = $wk_pcv[$wk_k]
               $wk_pcv_att_tipo = VAR_VAL_STR( $wk_pcv_att, "TipoPassacaviStr")

               $wk_check_tipo = 0
               if( $wk_pcv_att_tipo == "D21006-VETRO"
                 | $wk_pcv_att_tipo == "TER052-ROTONDO"
                 | $wk_pcv_att_tipo == "TER050-OVALE"
                 | $wk_pcv_att_tipo == "D21005-TONDO-NERO" ) { $wk_check_tipo = 1 }

               if( $wk_check_tipo > 0
                 & Assegna_TIPO_COLLO_CheckSost( $wk_idx_str, $wk_pcv_att) )
               {
                  #ifdef TEC;AZI
                     if( $wk_prg > $wk_max_tp )
                     {
                        $wk_msg = STRCAT("ATTENZIONE!\nTipoCollo ", $wk_val_tp, " non previsto.\nAvvisare ufficio tecnico.")
                        DISPLAY2($wk_msg)

                        $wk_k = $wk_pcv
                        $BLOCCO_FINE_ORDINE = 1
                     }
                  #endif

                  VAR_VALUESTR_SET( $wk_idx_str, "TIPO_COLLO", $wk_val_tp)
                  VAR_VALUESTR_SET( $wk_pcv_att, "TIPO_COLLO", $wk_val_tp)

                  $wk_tp_used = $wk_tp_used + 1
               }

               $wk_k = $wk_k + 1
            }
         }

         if( $wk_tp_used > 0 ) { $wk_prg = $wk_prg + 1 }

         $wk_i = $wk_i + 1
      }
   }
   //}Mensola Rivestita

   //{Mensola Dub
   PROCEDURA Mens_Dub_Assegnazioni
   {
      idx_topl = GetTopLevel(ATTUALE())

      Xp = X - 2 * $Mens_Dub_Vetri_Spe
      Yp = $Mens_Dub_Piano_Y
      Zp = Z - $Mens_Dub_Vetri_Spe

      if( NOME(ATTUALE()) != "Mensola_Dub" )
      {
         Xp = X
         Yp = Y
         Zp = Z

         Xn = X + 2 * $Mens_Dub_Vetri_Spe
         Yn = VAR_VAL( PADRE( ATTUALE(), 1), "Y")
         Zn = Z + $Mens_Dub_Vetri_Spe
      }

      GOSUB Mens_Dub_Assegna_Staffe

      GOSUB Mens_Dub_Assegna_Acc_Trasformatore

      GOSUB Mens_Dub_Assegna_Acc_Dimmer
   }

   PROCEDURA Mens_Dub_Assegna_Staffe
   {
      VAR_Staffe_tipo = 0
      VAR_Staffe_num  = 2
      VAR_Staffe_lar  = $Mens_Dub_Staffe_0_X
      VAR_Staffe_prof = $Mens_Dub_Staffe_0_Z
      VAR_Staffe_passo_cx = 0
      VAR_Staffe_passo_ex = 0
      if( Xp >= 774  ) { VAR_Staffe_num = 3 }
      if( Xp >= 1231 ) { VAR_Staffe_num = 4 }
      if( Xp >  1640 ) { VAR_Staffe_num = 5 }

      if( Zn > 270 )
      {
         VAR_Staffe_tipo = 1
         VAR_Staffe_num  = 1
         VAR_Staffe_lar  = 392
         VAR_Staffe_prof = 247
         if( Xp >= 904 )  { VAR_Staffe_num = 1 VAR_Staffe_lar = 762 }
         if( Xp >= 1288 ) { VAR_Staffe_num = 2 VAR_Staffe_lar = 392 }
         if( Xp >= 1880 ) { VAR_Staffe_num = 2 VAR_Staffe_lar = 762 }
      }

      if( VAR_Staffe_num > 1 )
      {
         VAR_Staffe_passo_cx = ( Xp - 2*$Mens_Dub_Staffe_0_OffX ) / ( VAR_Staffe_num - 1 )
         VAR_Staffe_passo_ex = VAR_Staffe_passo_cx - $Mens_Dub_Staffe_0_X
      }
   }

   PROCEDURA Mens_Riv_Assegna_Staffe
   {
      VAR_Staffe_tipo = 0
      VAR_Staffe_num  = 2
      VAR_Staffe_lar  = $Mens_Dub_Staffe_0_X
      VAR_Staffe_prof = $Mens_Dub_Staffe_0_Z
      VAR_Staffe_passo_cx = 0
      VAR_Staffe_passo_ex = 0
      if( Xp >= 774  ) { VAR_Staffe_num = 3 }
      if( Xp >= 1231 ) { VAR_Staffe_num = 4 }
      if( Xp >  1640 ) { VAR_Staffe_num = 5 }

      if( VAR_Staffe_num > 1 )
      {
         VAR_Staffe_passo_cx = ( Xp - 2*$Mens_Dub_Staffe_0_OffX ) / ( VAR_Staffe_num - 1 )
         VAR_Staffe_passo_ex = VAR_Staffe_passo_cx - $Mens_Dub_Staffe_0_X
      }

      if( Zn > 270 )
      {
         VAR_Staffe_tipo = 1
         VAR_Staffe_num  = 1
         VAR_Staffe_lar  = 392
         VAR_Staffe_prof = 247
         VAR_Staffe_passo_cx = 0
         VAR_Staffe_passo_ex = (X - VAR_Staffe_lar + 16)/2
         if( Xp > 912 )  { VAR_Staffe_num = 1 VAR_Staffe_lar = 762 VAR_Staffe_passo_ex = (X - VAR_Staffe_lar + 16)/2 }
         if( Xp > 1096 ) { VAR_Staffe_num = 2 VAR_Staffe_lar = 392 VAR_Staffe_passo_ex = 67  }
         if( Xp > 1280 ) {                                         VAR_Staffe_passo_ex = 133 }
         if( Xp > 1832 ) { VAR_Staffe_num = 2 VAR_Staffe_lar = 762 VAR_Staffe_passo_ex = 67  }
         if( Xp > 2200 ) {                                         VAR_Staffe_passo_ex = 133 }
      }

      if( VAR_VAL( ATTUALE(), "VAR_Lib_Air") > 0 )
      {
         VAR_Staffe_tipo = -1
         VAR_Staffe_num  =  0
      }
   }

   PROCEDURA Mens_Dub_Assegna_Acc_Trasformatore
   {
      if( IS_VAR_FIXED( ATTUALE(), "VAR_Trasformatore") == 0
        & VAR_MODE( ATTUALE(), "VAR_Trasformatore") != $MODE_IMPLICIT )
      {
         VAR_Acc_Trasformatore = VAR_Acc_Led
      }

      //Tipo: 0 - 15W, 1 - 30W
      VAR_Trasformatore_tipo = 0
      if( Xp > 1272 ) { VAR_Trasformatore_tipo = 1 }
      //Simone 03/06/2022 - Per mensola rivestita > 2208
      if( Xp > 2200 ) { VAR_Trasformatore_tipo = 2 }

      //Larghezza
      VAR_Trasformatore_lar = 200
      if( (VAR_Trasformatore_lar + 2*$Mens_Dub_Trasf_OffX) > VAR_Staffe_passo_ex ) { VAR_Trasformatore_lar = 160 }
      //Mail di Ramina del 29/11/22 - Soluzione Led USA. Lo scasso passa da 300 a 360
      //if( VAR_Trasformatore_tipo > 0 ) { VAR_Trasformatore_lar = 300 }
      if( VAR_Trasformatore_tipo > 0 ) { VAR_Trasformatore_lar = 360 }

      //Altezza
      VAR_Trasformatore_alt  = 30
      if( VAR_Trasformatore_tipo > 0 ) { VAR_Trasformatore_alt = 22 }

      //Profondità
      VAR_Trasformatore_prof = $Mens_Dub_Trasf_Z

      //Offset X
      VAR_Trasformatore_offx = ( Xp - VAR_Trasformatore_lar )/2
      if( VAR_Staffe_num > 2 ) { VAR_Trasformatore_offx = X - $Mens_Dub_Staffe_0_OffX - $Mens_Dub_Staffe_0_X/2 - $Mens_Dub_Trasf_OffX - VAR_Trasformatore_lar }
      //Slego dalla dimensione, specifiche senza senso
      //if( Xp >= 1456 )         {  }
      //if( Xp >= 2192 )         { VAR_Trasformatore_offx = X - $Mens_Dub_Staffe_0_OffX - VAR_Staffe_passo_ex + VAR_Trasformatore_lar - VAR_Trasformatore_lar }
      if( VAR_Trasformatore_tipo > 0 )
      {
         //Di default centro tra l'ultima e la penultima staffa, questo talvolta comporta sovrapposizione di lavorazioni tra il reggimensola e il trasformatore (voluto)
         VAR_Trasformatore_offx = X - $Mens_Dub_Staffe_0_OffX - $Mens_Dub_Staffe_0_X/2 - ( VAR_Staffe_passo_ex/2 + VAR_Trasformatore_lar/2)

         //Se spazio a sufficienza, resto il più possibile vicino alla penultima staffa
         if( VAR_Trasformatore_lar < VAR_Staffe_passo_ex ) { VAR_Trasformatore_offx = X - $Mens_Dub_Staffe_0_OffX - VAR_Staffe_passo_cx + $Mens_Dub_Staffe_0_X/2 }
      }

      //Gestione con staffe, attualmente utilizzato nella mensola rivestita
      if( VAR_Staffe_tipo == 1 )
      {
         VAR_Trasformatore_lar = $Mens_Riv_Trasf_X
         VAR_Trasformatore_alt = $Mens_Riv_Trasf_Y
         VAR_Trasformatore_prof = Z/2

         VAR_Trasformatore_offx = VAR_Staffe_passo_ex + 8 + (VAR_Staffe_lar - VAR_Trasformatore_lar)/2
      }
   }

   PROCEDURA Mens_Dub_Assegna_Acc_Dimmer
   {
      //Slot aggiuntivo per dimmer, dimensioni statiche, posizionato a sx della seconda staffa a dx
      VAR_Dimmer_lar  = $Mens_Dub_Dimm_X
      VAR_Dimmer_alt  = $Mens_Dub_Dimm_Y
      VAR_Dimmer_prof = $Mens_Dub_Dimm_Z

      VAR_Dimmer_offx = X - $Mens_Dub_Staffe_0_OffX - VAR_Staffe_passo_cx - $Mens_Dub_Staffe_0_X/2 - VAR_Dimmer_lar
   }

   PROCEDURA Mens_Dub_Controlli
   {
      if( ACTION() > 0 & ACTION()!=2 & $OnLoadOrder != 1 )
      {
         GOSUB Mens_Dub_Controlli_Acc_Led
         GOSUB Mens_Dub_Controlli_Acc_Trasformatore
         GOSUB Mens_Dub_Controlli_Acc_Dimmer
      }
   }

   PROCEDURA Mens_Dub_Controlli_Acc_Led
   {
      wk_del = 0
      if( VAR_Staffe_tipo != 0
        & NOME(ATTUALE()) != "Mensola_Rivestita" )  { wk_del = 1 }

      if( Xp > 1272 & Xp < 1456 ) { wk_del = 1 }
      if( Xp > 1640 & Xp < 1824 ) { wk_del = 1 }

      COMPONENTI2( "wk_led", ATTUALE(), "Mensole_Acc_Led")

      if( IS_VAR_FIXED( ATTUALE(), "VAR_Acc_Led") == 1 ) { DEL_VAR_MODIFICATE( ATTUALE(), "VAR_Acc_Led") }
      VAR_Acc_Led = 0
      VAR_Acc_Led_Inf = 0
      VAR_Acc_Led_Sup = 0

      if( wk_led > 0 )
      {
         if( wk_del == 0 )
         {
            VAR_Acc_Led = 1

            $wk_i = 1
            while( $wk_i <= wk_led )
            {
               wk_led_att = wk_led[$wk_i]

               if( VAR_VAL( wk_led_att, "alto_0.y") <= base_0.y + Y/2 ) { VAR_Acc_Led_Inf = 1 }
               if( VAR_VAL( wk_led_att, "base_0.y") >= base_0.y + Y/2 ) { VAR_Acc_Led_Sup = 1 }

               $wk_i = $wk_i + 1
            }
         }
         else
         {
            $wk_i = 1
            while( $wk_i <= wk_led )
            {
               HI(ATTUALE(),1)
               DISPLAY2(STRCAT(MSG(1090),"\n",MSG(1245)))
               HI(ATTUALE(),0)

               COMANDO(STRCAT("DELETE ",STR(wk_led[$wk_i]) , " //Mens_Dub_Controlli_Acc_Led"))

               $wk_i = $wk_i + 1
            }
         }
      }
   }

   PROCEDURA Mens_Dub_Controlli_Acc_Trasformatore
   {
      if( VAR_Acc_Trasformatore > 0 )
      {
         wk_del = 0
         if( VAR_Staffe_tipo != 0
           & NOME(ATTUALE()) != "Mensola_Rivestita" )  { wk_del = 1 }

         if( Z <= 270 )
         {
            lim_max = 2192
            if( NOME(idx_topl) == "Mensola_Rivestita" ) { lim_max = 2200 }

            if( Xp < 499 )              { wk_del = 1 }
            if( Xp > 1272 & Xp < 1456 ) { wk_del = 1 }
            if( Xp > 1640 & Xp < 1824 ) { wk_del = 1 }
            if( Xp > lim_max )          { wk_del = 1 }

            //Elimino eventuali led
            if( wk_del == 1 )
            {
               if( IS_VAR_FIXED( ATTUALE(), "VAR_Acc_Trasformatore") == 1) { DEL_VAR_MODIFICATE( ATTUALE(), "VAR_Acc_Trasformatore") }

               VAR_Acc_Trasformatore = 0

               COMPONENTI2( "wk_led", ATTUALE(), "Mensole_Acc_Led")
               $wk_i = 1
               while( $wk_i <= wk_led )
               {
                  HI(ATTUALE(),1)
                  DISPLAY2(STRCAT(MSG(1090),"\n",MSG(1245)))
                  HI(ATTUALE(),0)

                  COMANDO(STRCAT("DELETE ",STR(wk_led[$wk_i]) , " //Mens_Dub_Controlli_Acc_Trasformatore"))

                  $wk_i = $wk_i + 1
               }
            }
         }
      }
   }

   PROCEDURA Mens_Dub_Controlli_Acc_Dimmer
   {
      if( VAR_Acc_Dimmer > 0 )
      {
         wk_del = 0
         if( VAR_Staffe_tipo != 0 )  { wk_del = 1 }

         if( Xp < 1456 )             { wk_del = 1 }

         //Simone 20/07/2022
         iif( NOME(idx_topl) == "Mensola_Rivestita" )
         {
            wk_del = 0
            if( Xp >= 499 & Xp < 519 ) { wk_del = 1 }
            if( Xp >= 774 & Xp < 834 ) { wk_del = 1 }
         }

         if( wk_del == 1 )
         {
            if( IS_VAR_FIXED( ATTUALE(), "VAR_Acc_Dimmer") == 1) { DEL_VAR_MODIFICATE( ATTUALE(), "VAR_Acc_Dimmer") }

            VAR_Acc_Dimmer = 0
         }
      }
   }

   PROCEDURA Mens_Dub_Set_Gest_C008
   {
      if( ACTION()<=0 | ACTION()==2 | $OnLoadOrder==1 ) { EXITSUB() }

      if( IS_VarsUser__(ATTUALE(),"GEST_C008") == 1 )
      {
         DEL_VAR_MODIFICATE(ATTUALE(),"GEST_C008")
         DEL_VARS_USER(ATTUALE(),"GEST_C008")
      }

      CAT_VM_var = "C008"
      CAT_VM_opz = "SM023;SM025"
      CAT_VM_sel = ""

      if( VAR_Acc_Led_Sup > 0 )  { AddVal_CAT_VM_sel( CAT_VM_sel , "SM023") }
      if( VAR_Acc_Led_Inf > 0 )  { AddVal_CAT_VM_sel( CAT_VM_sel , "SM025") }

      GOSUB Gest_CAT_VM
   }

   PROCEDURA Mens_Dub_Set_Gest_C009
   {
      if( ACTION()<=0 | ACTION()==2 | $OnLoadOrder==1 ) { EXITSUB() }

      if( IS_VarsUser__(ATTUALE(),"GEST_C009") == 1 )
      {
         DEL_VAR_MODIFICATE(ATTUALE(),"GEST_C009")
         DEL_VARS_USER(ATTUALE(),"GEST_C009")
      }

      wk_pcv = 0
      COMPONENTI2("wk_pcv",ATTUALE(),"Passacavi_368")

      gest_C009 = "__"
      if( wk_pcv > 0 ) { gest_C009 = "SM003" }

      GEST_C009 = gest_C009
      VarAdd = "GEST_C009"   GOSUB Add_TABER_VARSETTATE
   }

   PROCEDURA Mens_Dub_Posiziona_Staffa
   {
      @escluso = 1
      @HIDE = 1

      if( VAR_Staffe_tipo == 0 )
      {
         if( @VAR_Staffa_num <= VAR_Staffe_num
           & NOME(ATTUALE()) == "Mensole_Ferr_Reggimensola" ) { @escluso = 0 }

         @X = VAR_Staffe_lar
         @Z = VAR_Staffe_prof

         @base_0.x = base_0.x + $Mens_Dub_Staffe_0_OffX + ( VAR_Staffe_passo_cx * ( @VAR_Staffa_num - 1 )) - ( @X / 2 )
         @base_0.y = base_0.y + (Y - @Y)/2
         @base_0.z = base_0.z - $Glob_Posizione_Coll_OffZ
      }
      else
      {
         if( @VAR_Staffa_num <= VAR_Staffe_num
           & NOME(ATTUALE()) == "Staffa_Mensola_Air" ) { @escluso = 0 }

         @X = VAR_Staffe_lar
         @Z = VAR_Staffe_prof

         @base_0 = base_0
         //In fase di stampa risulta errata
         //@base_0.z = base_0.z - $Glob_Posizione_Coll_OffZ

         if( VAR_Staffe_num == 1 ) { @base_0.x = base_0.x + (X - @X)/2 }
         else
         {
            if( @VAR_Staffa_num == 1 ) { @base_0.x = base_0.x + $Mens_Dub_Staffe_1_OffX }
            if( @VAR_Staffa_num == 2 ) { @base_0.x = base_0.x + X - $Mens_Dub_Staffe_1_OffX - @X - 16 }
         }

         @base_0.y = base_0.y - $Mens_Dub_Staffe_1_OffY
         @VAR_Vedi_Lavorazione = 0

         //Simone 19/07/2022
         if( UN_PADRE("Mensola_Rivestita") )
         {
            @Xt = VAR_Staffe_lar + 16

            @base_0.y = base_0.y + (Y - @Y)/2
            if( @VAR_Staffa_num > 0 )
            {
               if( @VAR_Staffa_num == 1 ) { @base_0.x = base_0.x + VAR_Staffe_passo_ex }
               if( @VAR_Staffa_num == 2 ) { @base_0.x = base_0.x + X - VAR_Staffe_passo_ex - @Xt }
            }

            @VAR_Vedi_Lavorazione = 1
            @Scassa_Chi_Plus = STR(VAR_VAL( idx_pdr, "idx_piano_grafica"))
         }
      }
   }

   PROCEDURA Mens_Dub_Assegna_TipoCollo_Pcv
   {
      $ATPC_debug_msg  = "Mens_Dub_Assegna_TipoCollo_Pcv"
      LogProcedura2("ATPC_TipoCollo")

      //P31 - P40
      $wk_pre_tp = "P"
      $wk_min_tp = 31
      $wk_max_tp = 40
      Reset_TIPO_COLLO( $wk_pre_tp, $wk_min_tp, $wk_max_tp)

      STRUTTURE("$wk_str")

      $wk_prg = $wk_min_tp

      $wk_i = 1
      while ( $wk_i<=$wk_str )
      {
         $wk_idx_str = $wk_str[$wk_i]
         if( $wk_prg < 10 ) { $wk_val_tp = STRCAT( $wk_pre_tp, "0", STR($wk_prg)) }
         else               { $wk_val_tp = STRCAT( $wk_pre_tp, STR($wk_prg))      }

         $wk_tp_used = 0

         if( NOME($wk_idx_str) == "Mensola_Dub" )
         {
            COMPONENTI2( "$wk_pcv", $wk_idx_str, "Passacavi_368")

            $wk_k = 1
            while( $wk_k <= $wk_pcv )
            {
               $wk_pcv_att = $wk_pcv[$wk_k]
               $wk_pcv_att_tipo = VAR_VAL_STR( $wk_pcv_att, "TipoPassacaviStr")

               $wk_check_tipo = 0
               if( $wk_pcv_att_tipo == "D21006-VETRO"
                 | $wk_pcv_att_tipo == "TER052-ROTONDO"
                 | $wk_pcv_att_tipo == "TER050-OVALE"
                 | $wk_pcv_att_tipo == "D21005-TONDO-NERO" ) { $wk_check_tipo = 1 }

               if( $wk_check_tipo > 0
                 & Assegna_TIPO_COLLO_CheckSost( $wk_idx_str, $wk_pcv_att) )
               {
                  #ifdef TEC;AZI
                     if( $wk_prg > $wk_max_tp )
                     {
                        $wk_msg = STRCAT("ATTENZIONE!\nTipoCollo ", $wk_val_tp, " non previsto.\nAvvisare ufficio tecnico.")
                        DISPLAY2($wk_msg)

                        $wk_k = $wk_pcv
                        $BLOCCO_FINE_ORDINE = 1
                     }
                  #endif

                  VAR_VALUESTR_SET( $wk_idx_str, "TIPO_COLLO", $wk_val_tp)
                  VAR_VALUESTR_SET( $wk_pcv_att, "TIPO_COLLO", $wk_val_tp)

                  $wk_tp_used = $wk_tp_used + 1
               }

               $wk_k = $wk_k + 1
            }
         }

         if( $wk_tp_used > 0 ) { $wk_prg = $wk_prg + 1 }

         $wk_i = $wk_i + 1
      }
   }

   PROCEDURA Mens_Dub_Assegna_TipoCollo_Led
   {
      $ATPC_debug_msg  = "Mens_Dub_Assegna_TipoCollo_Led"
      LogProcedura2("ATPC_TipoCollo")

      $wk_pre_tp = "ML"
      Reset_TIPO_COLLO($wk_pre_tp,0,9)

      STRUTTURE("$wk_str")

      $wk_prg = 0

      $wk_i = 1
      while ( $wk_i<=$wk_str )
      {
         $wk_idx_str = $wk_str[$wk_i]
         $wk_val_tp = STRCAT($wk_pre_tp,STR($wk_prg))

         $wk_tp_used = 0

         if( NOME($wk_idx_str) == "Mensola_Dub" )
         {
            COMPONENTI2( "$wk_led", $wk_idx_str, "Mensole_Acc_Led")

            $wk_k = 1
            while( $wk_k <= $wk_led )
            {
               $wk_led_att = $wk_led[$wk_k]

               if( Assegna_TIPO_COLLO_CheckSost( $wk_idx_str, $wk_led_att) )
               {
                  VAR_VALUESTR_SET( $wk_idx_str, "TIPO_COLLO", $wk_val_tp)
                  VAR_VALUESTR_SET( $wk_led_att, "TIPO_COLLO", $wk_val_tp)

                  $wk_tp_used = $wk_tp_used + 1
               }

               $wk_k = $wk_k + 1
            }
         }

         if( $wk_tp_used > 0 ) { $wk_prg = $wk_prg + 1 }

         $wk_i = $wk_i + 1
      }
   }
   //}Mensola Dub

   //{Mensola Glasserie
   PROCEDURA Mens_Glasserie_Assegna_DimReali
   {
      Xr = X - 2*$Mens_Glasserie_OffX
      Yr = Y - 2*$Mens_Glasserie_OffY
      Zr = Z - 2*$Mens_Glasserie_OffZ
   }

   PROCEDURA Mens_Glasserie_Assegna_DimPanello
   {
      VAR_Pan_Rid_Sup = -1
      VAR_Pan_Rid_Inf = -1

      if( NOME(ATTUALE()) == "Mensola_Glasserie")
      {
         if( VAR_Moduli == 1
           & IsIdx( ATTUALE(), "wk_Modulo1_Idx"))
         {
            VAR_Pan_Rid_Sup = VAR_VAL( wk_Modulo1_Idx, "VAR_Pan_Rid_Sup")
            VAR_Pan_Rid_Inf = VAR_VAL( wk_Modulo1_Idx, "VAR_Pan_Rid_Inf")
         }

         EXITSUB()
      }

      VAR_Pan_Rid_Sup = 1
      VAR_Pan_Rid_Inf = 1

      if( VAR_Revisione_PanRt == 0 ) { EXITSUB() }

      wk_idx_pdr = PADRE(ATTUALE(), 1)

      if( IS_IDX(idx_cnear_up)
        & LED_Sopra == 0 )
      {
         BOX_MODE(0)
         NEAR_GLOBALE2( "wk_sopra", idx_cnear_vtr_up, $Mens_Glasserie_OffY*2, NOME(ATTUALE()))

         wk_i = 1
         while( wk_i <= wk_sopra )
         {
            wk_sopra_att  = wk_sopra[wk_i]
            wk_sopra_pdr  = PADRE( wk_sopra_att, 1)

            SET_#(wk_sopra_att)
            wk_sopra_dist = ABS( DISTANZA( alto_0, #base_0)) * 100
            wk_sopra_dist = FLOOR( wk_sopra_dist + 0.5) / 100

            //LZ 14/03/2022: allungo se sovrappongo altre mensole
            //if( wk_sopra_att != ATTUALE()
            //  & wk_sopra_pdr == wk_idx_pdr )
            if( wk_sopra_att != ATTUALE()
              & wk_sopra_dist <= 0.5
              & #X == X )
            {
               VAR_Pan_Rid_Sup = 0
               wk_i = wk_sopra
            }

            wk_i = wk_i + 1
         }
      }

      if( IS_IDX(idx_cnear_dw)
        & LED_Sotto == 0 )
      {
         BOX_MODE(0)
         NEAR_GLOBALE2( "wk_sotto", idx_cnear_vtr_dw, $Mens_Glasserie_OffY*2, NOME(ATTUALE()))

         wk_i = 1
         while( wk_i <= wk_sotto )
         {
            wk_sotto_att = wk_sotto[wk_i]
            wk_sotto_pdr = PADRE( wk_sotto_att, 1)

            SET_#(wk_sotto_att)
            wk_sotto_dist = ABS( DISTANZA( base_0, #alto_0)) * 100
            wk_sotto_dist = FLOOR( wk_sotto_dist + 0.5) / 100

            //LZ 14/03/2022: allungo se sovrappongo altre mensole
            //if( wk_sotto_att != ATTUALE()
            //  & wk_sotto_pdr == wk_idx_pdr )
            if( wk_sotto_att != ATTUALE()
              & wk_sotto_dist <= 0.5
              & #X == X )
            {
               VAR_Pan_Rid_Inf = 0
               wk_i = wk_sotto
            }

            wk_i = wk_i + 1
         }
      }
   }

   PROCEDURA Mens_Glasserie_Moduli_Assegna_Dim
   {
      //Numero moduli
      if( IS_VAR_FIXED( ATTUALE(), "VAR_Moduli") == 0)
      {
         VAR_Moduli = 1
         if( Y > 368 ) { VAR_Moduli = 2 }
         if( Y > 736 ) { VAR_Moduli = 3 }
         if( Y > 920 ) { VAR_Moduli = 4 VAR_Senza_Mensola = 1 }
      }

      //Dimensione moduli
      wk_i = 1
      while( wk_i <= VAR_Moduli )
      {
         wk_var_mod_att = STRCAT( "VAR_Modulo", STR(wk_i), "_Y")

         if( IS_VAR_FIXED( ATTUALE(), wk_var_mod_att) == 0 )
         {
            VAR_VALUE_SET( ATTUALE(), wk_var_mod_att, FLOOR(Y / VAR_Moduli))
         }

         wk_i = wk_i + 1
      }

      if( Y == 920 & VAR_Moduli > 2 )
      {
         VAR_Modulo1_Y = 368
         VAR_Modulo2_Y = 184
         VAR_Modulo3_Y = 368
      }

      if( Y == 1104 & VAR_Moduli > 3 )
      {
         VAR_Modulo1_Y = 368
         VAR_Modulo2_Y = 245
         VAR_Modulo3_Y = 245
         VAR_Modulo4_Y = 245
      }

      wk_arr_aria = 0
      if( VAR_Moduli >= 2 )
      {
         wk_arr_aria = (Y - VAR_Modulo1_Y - VAR_Modulo2_Y - VAR_Modulo3_Y - VAR_Modulo4_Y) / (VAR_Moduli - 1)
      }
   }

   PROCEDURA Mens_Glasserie_Set_Gest_C008
   {
      if( ACTION() <= 0 | ACTION() == 2 | $OnLoadOrder == 1) { EXITSUB() }

      CAT_VM_var = "C008"
      CAT_VM_opz = "TP008;SM075;SM076"
      CAT_VM_sel = ""

      //Trasformatori
      wk_altro = 0
      wk_sm075 = 0
      wk_sm076 = 0
      COMPONENTI2( "wk_trasf", ATTUALE(), "TrasformatoreLED_368")

      wk_i = 1
      while( wk_i <= wk_trasf)
      {
         wk_trasf_att = wk_trasf[wk_i]
         wk_trasf_att_tipo = VAR_VAL( wk_trasf_att, "TLED_Tipologia")

         if( wk_trasf_att_tipo == 0
           | wk_trasf_att_tipo == 1) { wk_sm075 = wk_sm075 + 1 }

         if( wk_trasf_att_tipo == 2) { wk_sm076 = wk_sm076 + 1 }

         if( wk_trasf_att_tipo < 0
           | wk_trasf_att_tipo > 2)   { wk_altro = wk_altro + 1 }

         wk_i = wk_i + 1
      }

      if( X > 1270)
      {
         wk_sm076 = wk_sm076 + wk_sm075
         wk_sm075 = 0
      }

      if( wk_sm075 > 0) { AddVal_CAT_VM_sel( CAT_VM_sel , "SM075") }
      if( wk_sm076 > 0) { AddVal_CAT_VM_sel( CAT_VM_sel , "SM076") }

      //Scassi o trasformatori non gestiti
      COMPONENTI2( "wk_scs", ATTUALE(),"Scasso_*")
      if( wk_scs > 0
        | wk_altro > 0) { AddVal_CAT_VM_sel( CAT_VM_sel , "TP008") }

      GOSUB Gest_CAT_VM
   }

   PROCEDURA Mens_Glasserie_Set_Gest_C009
   {
      if( ACTION() <= 0 | ACTION()== 2 ) { EXITSUB() }

      gest_C009  = "__"

      if( IS_VarsUser__(ATTUALE(),"GEST_C009") == 1 )
      {
         DEL_VAR_MODIFICATE(ATTUALE(),"GEST_C009")
         DEL_VARS_USER(ATTUALE(),"GEST_C009")
      }

      if( LED_Sopra == 1 )  { gest_C009 = "SM023" }
      if( LED_Sotto == 1 )  { gest_C009 = "SM025" }
      if( LED_Sopra == 1
        & LED_Sotto == 1 )  { gest_C009 = "SM026" }

      GEST_C009 = gest_C009
      VarAdd = "GEST_C009"   GOSUB Add_TABER_VARSETTATE
   }

   PROCEDURA Mens_Glasserie_Set_Gest_C062
   {
      if( ACTION() <= 0 | ACTION()== 2 ) { EXITSUB() }

      VarAdd = "GEST_C062"

      if( IS_VarsUser__( ATTUALE(), VarAdd) == 1 )
      {
         DEL_VAR_MODIFICATE( ATTUALE(), VarAdd)
         DEL_VARS_USER( ATTUALE(), VarAdd)
      }

      gest_C062  = "__"

      //PS006: singolo
      if( VAR_Moduli == 1 )          { gest_C062 = "PS006" }

      if( VAR_EXIST( ATTUALE(), "VAR_Pan_Rid_Sup")
        & VAR_EXIST( ATTUALE(), "VAR_Pan_Rid_Sup") )
      {
         //P0001: superiore
         if( VAR_Pan_Rid_Sup == 1
           & VAR_Pan_Rid_Inf == 0 )  { gest_C062 = "P0001" }
         //P0005: intermedio
         if( VAR_Pan_Rid_Sup == 0
           & VAR_Pan_Rid_Inf == 1 )  { gest_C062 = "P0002" }
         //CS002: centrale
         if( VAR_Pan_Rid_Sup == 0
           & VAR_Pan_Rid_Inf == 0 )  { gest_C062 = "CS002" }
      }

      GEST_C062 = gest_C062
      GOSUB Add_TABER_VARSETTATE

      EXITSUB()

      COMANDO2(STRCAT("LOGMSG Mens_Glasserie_Set_Gest_C062 Idx att: ", STR(ATTUALE()),
                                                " - Azione: ", STR(ACTION()),
                                                " - TABER_REGOLA: ", VAR_VAL_STR( ATTUALE(), "TABER_REGOLA"),
                                                " - VAR_Moduli: ", STR(VAR_Moduli),
                                                " - VAR_Pan_Rid_Inf: ", STR(VAR_VAL( ATTUALE(), "VAR_Pan_Rid_Inf")),
                                                " - VAR_Pan_Rid_Sup: ", STR(VAR_VAL( ATTUALE(), "VAR_Pan_Rid_Sup")),
                                                " - GEST_C062: ", GEST_C062,
                                                " - gest_C062: ", gest_C062))
   }

   PROCEDURA Mens_Glasserie_Moduli_Posa
   {
      VAR_VALUE_SET( idx_att, STRCAT( "wk_Modulo", STR(@VAR_Modulo_Num), "_Idx"), ATTUALE())

      @escluso = SE_NUM( @VAR_Modulo_Num <= VAR_Moduli, 0, 1)

      @X = X
      @Y = VAR_VAL( idx_att, STRCAT( "VAR_Modulo", STR(@VAR_Modulo_Num), "_Y"))
      @Z = Z

      @base_0 = base_0
      wk_i = 1
      while( wk_i < @VAR_Modulo_Num )
      {
         @base_0.y = @base_0.y + VAR_VAL( idx_att, STRCAT( "VAR_Modulo", STR(wk_i), "_Y")) + wk_arr_aria
         wk_i = wk_i + 1
      }
   }
   //}Mensola Glasserie

   //{Controlli fine ordine
   PROCEDURA Mens_Ctrl_Posizione
   {
      debug = 0
      #ifdef TE
         debug = VAR_VAL(-1,"ATTIVA_LOG_DBG")
      #endif

      if( debug ) { COMANDO2(STRCAT("LOGMSG Mens_Ctrl_Posizione START")) }

      STRUTTURE("$wk_str")

      if( $wk_str == 0 ) { EXITSUB() }

      $wk_blocca  = 0
      $wk_blo_arr = 0

      $wk_blocca_tipo = "NO_BLOCCO"
    #ifndef TEC;AZI
      $wk_blocca_tipo = "BLOCCO"
    #endif

      $wk_i = 1
      while ( $wk_i<= $wk_str )
      {
         $wk_idx_test = $wk_str[$wk_i]

         $wk_blocca_ele = 0

         if( IS_MATCH( NOME($wk_idx_test) , "Mensola_Dub" ) == 1 )
         {
            if( VAR_VAL( $wk_idx_test, "VAR_Staffe_tipo") == 1
              & VAR_VAL( $wk_idx_test, "alto0y_abs") > 800 )
            {
               $wk_ne              = $wk_blo_arr + 1
               $wk_blo_arr         = $wk_ne
               $wk_blo_arr[$wk_ne] = $wk_idx_test

               $wk_blocca = 1
            }

         }
         $wk_i = $wk_i + 1
      }

      if( $wk_blocca==1 & VAR_VAL(-1,"wk_CG_Riassunto")==1 )
      {
         $wk_CG_Ctrl_Count = VAR_VAL(-1,"wk_CG_Ctrl_Count") + 1

         VAR_VALUE_SET(-1,STRCAT("wk_CG_Ctrl_BLO_",STR($wk_CG_Ctrl_Count)), 1)
         VAR_VALUESTR_SET(-1,STRCAT("wk_CG_Ctrl_TIP_",STR($wk_CG_Ctrl_Count)), $wk_blocca_tipo)
         VAR_VALUESTR_SET(-1,STRCAT("wk_CG_Ctrl_MSG_",STR($wk_CG_Ctrl_Count)), MSG(1400) )
         r = ArrayCopy(-1 ,"wk_blo_arr", STRCAT("wk_CG_Ctrl_ARR_",STR($wk_CG_Ctrl_Count)))
      }

      if( debug ) { COMANDO2(STRCAT("LOGMSG Mens_Ctrl_Posizione END")) }
   }

   PROCEDURA Mens_Tipi_Collo
   {
      GOSUB Mens_Dub_Assegna_TipoCollo_Led
      GOSUB Mens_Dub_Assegna_TipoCollo_Pcv
      GOSUB Mens_Riv_Assegna_TipoCollo_Pcv
   }
   //}Controlli fine ordine
}

Funzioni
{
   //LZ 24/09/2021: CopiaPunti
   //Descrizione: copia i punti
   //Ritorno: 0 - errore; 1 - successo
   //Parametri:
   // - dst_idx: idx nel quale vengono creati i punti
   // - src_idx: idx sorgente
   // - src_level: livello di distinta da analizzare, 0 analizza tutti
   // - src_name: nome sorgente
   // - src_pnt: inizio nome punti da copiare
   number CopiaPunti ( number dst_idx, number src_idx, number src_level, string src_name, string src_pnt )
   {
      Result = 0
      Exit   = 0
      if( IS_IDX(dst_idx) == 0 ) { Exit = 1 }
      if( IS_IDX(src_idx) == 0 ) { Exit = 1 }
      if( src_pnt == "" )        { Exit = 1 }

      if( Exit == 1 )
      {
         DISPLAY2( "CopiaPunti - errore: rivedi parametri" )
         EXITSUB()
      }

      if( dst_idx == src_idx
        & src_level < 1 )
      {
         DISPLAY2( "CopiaPunti - errore: sorgente == destinazione e with_var disabilitato" )
         EXITSUB()
      }

      //Wildcard
      src_pnt = STRCAT( src_pnt, "*")
      if( src_name == "" ) { src_name = "*" }

      //Elimino punti di destinazione esistenti
      DEL_VAR( dst_idx, src_pnt)

      //Colleziono strutture
      if( src_level > 0 )
      {
         //WITH_VAR_LOCAL( src_idx, "$wk_pnt2copy_cmp", src_pnt, 4, 0, "")
         COMPONENTI2( "$wk_pnt2copy_cmp", src_idx, src_name)
      }
      else
      {
         $wk_pnt2copy_cmp    = 1
         $wk_pnt2copy_cmp[1] = src_idx
      }

      if( $wk_pnt2copy_cmp == 0 )    { EXITSUB() }

      //Punti per stuttura
      $wk_i = 1
      while( $wk_i <= $wk_pnt2copy_cmp )
      {
         $wk_pnt2copy_cmp_att = $wk_pnt2copy_cmp[$wk_i]

         if( IS_IDX($wk_pnt2copy_cmp_att)
           & $wk_pnt2copy_cmp_att != dst_idx )
         {
            if( IS_MATCH( NOME($wk_pnt2copy_cmp_att), src_name) == 1
              & ( src_level < 1
                | PADRE( $wk_pnt2copy_cmp_att, src_level) == src_idx ))
            {
               LISTA_VARIABILI( $wk_pnt2copy_cmp_att, 0, "$wk_pnt2copy_vars", src_pnt)

               $wk_j = 1
               while( $wk_j <= $wk_pnt2copy_vars )
               {
                  $wk_pnt2copy_var_att = $wk_pnt2copy_vars[$wk_j]
                  $wk_pnt2copy_dst_var  = STRCAT($wk_pnt2copy_var_att, "_", STR($wk_pnt2copy_cmp_att))

                  $wk_pnt2copy_dst_var_x = VAR_VAL( $wk_pnt2copy_cmp_att, STRCAT( $wk_pnt2copy_var_att, ".x"))
                  $wk_pnt2copy_dst_var_y = VAR_VAL( $wk_pnt2copy_cmp_att, STRCAT( $wk_pnt2copy_var_att, ".y"))
                  $wk_pnt2copy_dst_var_z = VAR_VAL( $wk_pnt2copy_cmp_att, STRCAT( $wk_pnt2copy_var_att, ".z"))

                  VAR_CREATE_XYZ( dst_idx, $wk_pnt2copy_dst_var, $wk_pnt2copy_dst_var_x, $wk_pnt2copy_dst_var_y, $wk_pnt2copy_dst_var_z, 0, "")
                  Result = Result + 1

                  $wk_j = $wk_j + 1
               }
            }
         }
         $wk_i = $wk_i + 1
      }

      if( Result > 0 ) { Result = 1 }
   }
}
