Globali
{
   path_tstp        ""  "%path_bdm%\Tlib\tstp\"          NoSave

   VAR_AnteprimaDiStampa  ""  0 NoSave

   Xscr "" 30                 NoSave
   Yscr "" 50                 NoSave

// ******************************************************
// VISTE PER M4  (STAMPE)
// ******************************************************
   viewhoops_ISOMETRICA    "" "45 35.4"   NoSave
   viewhoops_DIMETRICA     "" "27 25"     NoSave
   viewhoops_DIMETRICA2    "" "-27 21"    NoSave

   //Luca 25/01/2022
   //Anche per le stampe devo attivare delle revisioni
   //StampaProd_FianchiFinC_Rev
   //REV = 1 --> riscritte le stampe per i fianchi in wildwood (allegati di riga) (REV >= 3)
   StampaProd_FianchiFinC_Rev     ""   1  NoSave

   POSTNOMESTAMPA                 ""   "" NoSave
}

Elemento LineaCADXYZ
{
   Descrizione = "linee stampa"
   Code        = GPG0
   Gruppo      = "linee"
   Tipo        = Contenitore
   Forma       = ""
   Alias LineaCAD

   Variabili
   {
      X  ""   1
      Y  ""   1
      Z  ""   1
      c_rivestimento ""  [255, 255, 255]
      c_rivestimento_P1 ""  [0,0,0]
      c_rivestimento_P2 ""  [0,0,0]
      L1  "" [0,0,0]
      L2  "" [0,0,0]
      Colore    "" [0,0,0]
      prec_alias "" ""
      Alias "" ""
      alias_plus "" ""
      HIDE "" 1
      DescEdit__ "" ""
      MP "" 0
      M4_GRUPPO__ "" "Linea_CAD"
   }

   PuntiNotevoli
   {
      GOSUB Stato_78
      if ( STRCMP(prec_alias,Alias)!=0 )
      {
         idx_att = ATTUALE()
         alias_plus = prec_alias
         buf = ALIAS_PLUS(idx_att,0)
         if ( STRCMP(Alias,"")!=0 )
         {
            alias_plus = Alias
            buf = ALIAS_PLUS(idx_att,1)
         }
         prec_alias = Alias
      }
      GOSUB punti

      line_start_0 = c_rivestimento_P1
      line_end_0   = c_rivestimento_P2
      line_col_0   = 4
   }
}

Elemento CilindroY_Quota
{
   Descrizione = "Cilindro in Y"
   Code        = CUBO
   Gruppo      = ""
   Tipo        = ""
   Forma       = YCilindro

   Variabili
   {
      X "Diametro"  200
      Y "Altezza"    30
      c_rivestimento ""  [250, 250,250]
      escluso        ""  0
      HIDE "" 1
   }

   PuntiNotevoli
   {
      Z=X
      base_0 = [0, 0, 0]
      base_1 = [0, 0, Z]
      base_2 = [X, 0, Z]
      base_3 = [X, 0, 0]
      alto_0 = [0, Y, 0]

      base_so = [0, 0, 0]
      alto_ne = [X, Y, Z]

      //utilizzato in stampa
      pnt_centro = [X/2,0,Z/2]
   }
}

Funzioni
{
   void LanciaStampa ( string NomeProc )
   {
      GOSUB GetDataInfo
      $wk_TSTP_DIS_DATAORA = STRCAT($wk_giorno, "/", $wk_mese, "/", $wk_anno, " - ", $wk_ore, ":", $wk_minuti, ":", $wk_secondi)

      if( VAR_EXIST(-1, "wk_log") != 1 )   { $wk_log = 0 }

      if( $DIS_TO_GEMO == 1 )
      {
         $ArrPrnPs = 1
         EXITSUB()
      }

      $wk_stampa_proc = NomeProc

      LogProcedura("Start", $wk_stampa_proc, $wk_log)
      GOSUB $wk_stampa_proc
      LogProcedura("End", $wk_stampa_proc, $wk_log)

      DEL_VAR(-1, "wk_stampa_proc")
   }

   string GetDescCatVal ( number idx , string var , string st_res )
   {
      Result = ""

      lingua = ""

      nome_var = GetVarGest(var)
      if( VAR_EXIST( idx, nome_var) == 0 ) { EXITSUB() }

      val_var = VAR_VAL_STR( idx, nome_var)

      wk_result = ""
      if( st_res == "CAT" )
      {
         Result = nome_var
         wk_result = STRDADB( idx, "DESC_CAT", STRCAT( nome_var, ";0;", lingua))
      }

      if( st_res == "VAL" )
      {
         Result = val_var
         wk_result = STRDADB( idx, "DESC_VAL", STRCAT( nome_var, ";", val_var, ";0;", lingua))
      }

      if( wk_result != "" ) { Result = wk_result }
   }

   number GetAng_P1P2 ( xyz P1 , xyz P2 )
   {
      ang = 0

      a_z = P1.z - P2.z
      a_x = P2.x - P1.x
      if ( a_z==0 & a_x==0 ) { ang= 0 }
      else                   { ang = GRADI(ATAN2(a_z,a_x)) }

      Result = ang
   }

   void PosaQuota_OffsetPoint ( VAR xyz P1 , VAR xyz P2 , number off , number dist )
   {
      ang_off = GetAng_P1P2(P1,P2)

      if( dist>0 )
      {
         P1.x = P1.x -   SENO(ang_off)*off
         P1.z = P1.z + COSENO(ang_off)*off
      }

      if( dist<0 )
      {
         P1.x = P1.x +   SENO(ang_off)*off
         P1.z = P1.z + COSENO(ang_off)*off
      }
   }

   void ResetVarStampa ( string nome_var )
   {
      //reset della variabili utilizzate in stampa
      WITH_VAR( "reset", nome_var, $num_con_figli, 1, "1")

      j = 1
      while ( j <= reset )
      {
         idx_item = reset[j]
         VAR_VALUE_SET( idx_item, nome_var, 0)

         j = j + 1
      }

      //reset della variabili utilizzate in stampa
      WITH_VAR( "reset", nome_var, $num_con_figli, 1, "-1")

      j = 1
      while ( j <= reset )
      {
         idx_item = reset[j]
         VAR_VALUE_SET(idx_item,nome_var,0)

         j = j + 1
      }
   }

   //Luca 21/07/2022 verifico se array contiene il valore val
   number ValExistInArray ( number val , number idx , string array )
   {
      Result = 0

      if( VAR_VAL(idx , array) == 0 ) { EXITSUB() }

      if( VAR_TYPE(idx , STRCAT(array,"_##1")) != 0 ) { EXITSUB() }

      i = 1
      while ( i <= VAR_VAL(idx , array) & Result == 0 )
      {
         if( VAR_VAL(idx , STRCAT(array,"_##",STR(i))) == val  ) { Result = 1 }
         i = i + 1
      }
   }
}

Subroutine
{
   PROCEDURA InizioStampaPDF
   {
      DEL_VAR(-1, "ArrPrnPs*")
      $ArrPrnPs = 0

      //Se è richiesta la generazione dei PDF allora verifico la presenza
      //della TesyPDFPrinter
      if($GENERA_PDF)
      {
         COMANDO2("run_dll_cmd righe2 controlla_tecne_printer_exp PSCOL|100")
         if($TecnePrinterPresente==0)
         {
            COMANDO2(STRCAT("run_dll_cmd righe2 controlla_tecne_printer_exp ",APICI(), "PSCOL|100|A4|Tecne PostScript Printer",APICI()))
         }
         $GENERA_PDF_IN_CORSO = $TecnePrinterPresente
      }
      else
      {
         $GENERA_PDF_IN_CORSO = 0
      }

      //Non è attivata la richiesta dei pdf o manca TesyPDFPrinter: esco
      if($GENERA_PDF_IN_CORSO==0) { EXITSUB() }

      $wk_stp_PrinterMode = READ_INI("stp_option", "PrinterMode")
      $wk_stp_Preview = READ_INI("stp_option", "Preview")
      $wk_stp_NoPrint = READ_INI("stp_option", "NoPrint")

      WRITE_INI("stp_option", "PrinterMode", "2")
      WRITE_INI("stp_option", "PrnCfgName", "PSCOL")
      WRITE_INI("stp_option", "Preview", "0")
      WRITE_INI("stp_option", "NoPrint", "0")
   }

   PROCEDURA FineStampaPDF
   {
      ScriviSuLog( VAR_VAL(-1,"LOG_DTG") , "DIS_TO_GEMO" , STRCAT("DTG=",STR($DIS_TO_GEMO)," FineStampaPDF") )

      if ( $ArrPrnPs>0 )
      {
         if( $DIS_TO_GEMO == 0 )
         {
            //A partire da $ArrPrnPs creo l'array $wk_PathNomePS,
            //i cui elementi hanno il nome comprensivo del percorso
            DEL_VAR(-1,"wk_PathNomePS*")
            $wk_arr = 1
            $wk_PathNomePS = $ArrPrnPs
            while($wk_arr<=$ArrPrnPs)
            {
               $wk_PathNomePS[$wk_arr] = $ArrPrnPs[$wk_arr]
               $wk_arr = $wk_arr + 1
            }
         }

         //Genero i PDF dai file PS

         //Per poter garantire l'apertura del file in anteprima, che viene
         //impedita se Acrobat apre il PDF in modifica,
         //lo genero due volte: una per l'allegato per TGeO (che metto)
         //in TEMP e una per l'eventuale anteprima che metto nella cartella
         //path_pdf in quanto ho scelto che la copia che viene aperta in
         //in modifica da Acrobat deve essere quella definitiva

         //Creazione della PDF definitivo ed eventuale anteprima

         //LZ 20/04/2021 - No anteprima se stampe massive CNP
         //$MOSTRA_PDF_GENERATO = $AnteprimaDiStampa
         //$MOSTRA_PDF_GENERATO = $VAR_AnteprimaDiStampa
         $MOSTRA_PDF_GENERATO = SE_NUM($CNP==1, 0, $VAR_AnteprimaDiStampa)

         // directory di generazione temp
         $wk_prefisso_file = STRCAT($path_temp,$path_archivio)

         // Stampe temporanee lanciate a mano
         //if ( VAR_VAL(-1,"StampeAlVolo") )  { $wk_prefisso_file = STRCAT($path_temp,"~metron_") }

         //COMANDO2("LOGMSG FineStampaPDF")

         if( $DIS_TO_GEMO | $INVIA_DIS_TO_GEMO )
         {
            ScriviSuLog( VAR_VAL(-1,"LOG_DTG") , "DIS_TO_GEMO" , STRCAT("DTG=",STR($DIS_TO_GEMO)," FineStampaPDF 1 - $AllegatiRiga=",STR($AllegatiRiga)) )

            //COMANDO2(STRCAT("LOGMSG FineStampaPDF $DIS_TO_GEMO=",STR($DIS_TO_GEMO) , " $INVIA_DIS_TO_GEMO=",STR($INVIA_DIS_TO_GEMO), " $AllegatiRiga=",STR($AllegatiRiga)))

            //Qui entra solo per gli allegati di testata, ma per sicurezza aggiungo la condizione
            //nella if
            if( $AllegatiRiga==0 )
            {
               if( $SET_STAMPA == "" ) { $SET_STAMPA = "COMM" }

               distogemo = STRCAT($path_wmf,$path_archivio,$File,$POSTNOMESTAMPA,".pdf;",$SET_STAMPA)

               ScriviSuLog( VAR_VAL(-1,"LOG_DTG") , "DIS_TO_GEMO" , STRCAT("FineStampaPDF distogemo=",distogemo) )

               //COMANDO2(STRCAT("LOGMSG FineStampaPDF distogemo ",distogemo))

               $wk_distogemo = STRDADB(-1,"DIS_TO_GEMO",distogemo)
               $LISTA_PDF = STRCAT($LISTA_PDF,$SET_STAMPA,";")

               //$wk_distogemo = STRDADB(-1,"DIS_TO_GEMO","C:\Tesy\Lago.Gemo\wmf\2021_OR\02\45\024541\2021_OR024541-VISTA_SUPERIORE.pdf;COMM")
            }

            if( $AllegatiRiga == 1 ) { GOSUB NomeDisegnoRiga }


            if( $DIS_TO_GEMO )  { EXITSUB() }
         }

         $wk_PathNomePDF = STRCAT($wk_prefisso_file,$File,$POSTNOMESTAMPA,".pdf")

         $wk_StringaPDFtoPS = STRCAT(APICI(),$wk_PathNomePDF,";",STR($PDF_Risoluzione),";",$install_dir,";$wk_PathNomePS",APICI())

         COMANDO2(STRCAT("run_dll_cmd righe2.dll PStoPDF ",$wk_StringaPDFtoPS))

         #ifdef AGE;RIV
         if($TGEO)
         {
            //Allego a TGEO il PDF
            $TGEO_ALLEGA_File = $wk_PathNomePDF
            $TGEO_ALLEGA_Desc = MSG(117)
            //Luca 17/03/2020 devo inviare l'allegato!!
            //$TGEO_ALLEGA_Invia = 0
            $TGEO_ALLEGA_Invia = 1

            //Luca 03/02/2023 Integrazione EASYSTORE
            //nascondo questo pdf che contiene il preventivo
            if( EasyStore() )
            {
               $TGEO_ALLEGA_Desc = STRCAT( MSG(117) , " - AZI")
               $TGEO_ALLEGA_Nascondi = 1
            }

            GOSUB TGEO_ALLEGA
         }
         #endif

         //Luca 03/02/2023 Integrazione EASYSTORE
         #ifdef AGE;RIV
            GOSUB FineStampaPDF_EasyStore
         #endif

         ////Invio a TGEO il PDF
         //if($TGEO)
         //{
         //   //COMANDO2(STRCAT("RUN_DLL_CMD Metron_IPC SendIPC ",APICI(),"[NTFY] ALLEGA [TIPO] PDF [DESCRIZIONE] 'Disegni e Preventivo' ",$wk_PathNomePDF,APICI()))
         //   COMANDO2(STRCAT("RUN_DLL_CMD Metron_IPC SendIPC ",APICI(),"[NTFY] ALLEGA [TIPO] PDF [DESCRIZIONE] '",MSG(117),"' ",$wk_PathNomePDF,APICI()))
         //}

         //altrimenti non vedo il PDF!!
         //if ( $AnteprimaDiStampa==1 )
         //{
         //   $wk_PathNomePDF = STRCAT($path_temp,$File,".pdf")
         //   $wk_StringaPDFtoPS = STRCAT(APICI(),$wk_PathNomePDF,";",STR($PDF_Risoluzione),";",$install_dir,";$wk_PathNomePS",APICI())
         //   $MOSTRA_PDF_GENERATO = $AnteprimaDiStampa
         //   COMANDO2(STRCAT("run_dll_cmd righe2.dll PStoPDF ",$wk_StringaPDFtoPS))
         //}

         //annullo la variabile (se salvata nel rit crea errore a causa degli apici)
         $wk_StringaPDFtoPS = ""
      }

      //Cancello i file di appoggio
      FILE_DEL(STRCAT($path_wmf,$File,"*.ps"))
      FILE_DEL(STRCAT($path_wmf,$File,"*.prn"))

      if( VAR_EXIST(-1,"wk_prefisso_file")==0 ) { EXITSUB() }

      //Cancello i file di appoggio
      FILE_DEL(STRCAT($wk_prefisso_file,$File,"*.ps"))
      FILE_DEL(STRCAT($wk_prefisso_file,$File,"*.prn"))
      FILE_DEL(STRCAT($wk_prefisso_file,$File,"*.PNG"))

      // non voglio cancellare gli emf.FILE_DEL(STRCAT($path_wmf,$File,"*.emf"))
      // se viene generato il PDF gli EMF meglio cancellarli
      // FILE_DEL(STRCAT($wk_prefisso_file,$File,"*.emf"))
   }

   PROCEDURA FineStampaPDF___
   {
      if($GENERA_PDF_IN_CORSO==0) { EXITSUB() }

      WRITE_INI("stp_option", "PrinterMode",$wk_stp_PrinterMode)
      WRITE_INI("stp_option", "Preview",$wk_stp_Preview)
      WRITE_INI("stp_option", "NoPrint",$wk_stp_NoPrint)

      //Chiamo DIS_TO_GEMO per caricare in Gemo i record relativi
      //ai PDF da creare
      //if($wk_pagina>0)
      //{
      //   $LISTA_PDF = ";"
      //   //Aggiungo la voce relativa al pdf a colori
      //   if($STP_UTENTECOL)
      //   {
      //      // nome file + descrizione
      //      $wk_str_distogemo = STRCAT($path_wmf,$path_archivio,$File, "c.pdf;PDFCOL")
      //      $wk_distogemo = STRDADB(-1, "DIS_TO_GEMO",$wk_str_distogemo)
      //      $LISTA_PDF = STRCAT($LISTA_PDF, "PDFCOL;")
      //   }
      //
      //   //Se oltre al disegno a colori c'è anche un'altro disegno
      //   //aggiungo la voce relativa al pdf in b/n
      //   if($wk_pagina>1 | $STP_UTENTECOL==0)
      //   {
      //      // nome file + descrizione
      //      $wk_str_distogemo = STRCAT($path_wmf,$path_archivio,$File, ".pdf;PDF")
      //      $wk_distogemo = STRDADB(-1, "DIS_TO_GEMO",$wk_str_distogemo)
      //      $LISTA_PDF = STRCAT($LISTA_PDF, "PDF;")
      //      //COMANDO2(STRCAT("LOGMSG DIS_TO_GEMO --> ",$wk_str_distogemo))
      //   }
      //}

      if($ArrPrnPs>0)
      {
         //Genero i PDF dai file PS

         //A partire da $ArrPrnPs creo l'array $wk_PathNomePS,
         //i cui elementi hanno il nome comprensivo del percorso
         DEL_VAR(-1, "wk_PathNomePS*")
         arr = 1
         $wk_PathNomePS = $ArrPrnPs
         while(arr<=$ArrPrnPs)
         {
            $wk_PathNomePS[arr] = $ArrPrnPs[arr]
            arr = arr + 1
         }

         //Per poter garantire l'apertura del file in anteprima, che viene
         //impedita se Acrobat apre il PDF in modifica,
         //lo genero due volte: una per l'allegato per TGeO
         //e una per l'eventuale anteprima

         //N.B.: l'invio degli allegati a TGeo deve
         //essere  fatto solo nel Fine Ordine (non con la sola Stampa)

         if( $OnTerminate != 0 )
         {
            $wk_PathNomePDF = STRCAT($path_temp,$File, ".pdf")
            $wk_StringaPDFtoPS = STRCAT(APICI(),$wk_PathNomePDF, ";",STR($PDF_Risoluzione), ";",$install_dir, ";$wk_PathNomePS",APICI())

            $MOSTRA_PDF_GENERATO = 0
            COMANDO2(STRCAT("run_dll_cmd righe2.dll PStoPDF ",$wk_StringaPDFtoPS))

            if($ORD_PDFCREATO)
            {
#ifdef TEC;AZI
               if($ORD_PDFCREATO)
               {
                  //Il primo ha il disegno a colori
                  $wk_destinazione = STRCAT($path_wmf, $File, ".pdf")
                  FILE_COPY($wk_PathNomePDF, $wk_destinazione)
                  // COMANDO2(STRCAT("LOGMSG $OnTerminate: COPIO ", $wk_PathNomePDF, " in ", $wk_destinazione))
               }

               // FT No! perchè genera errore se non è stato copiato il file nel FILE_COPY
               // FT  FILE_DEL($wk_PathNomePDF)
               // FT  COMANDO2(STRCAT("LOGMSG $OnTerminate: ELIMINO ", $wk_PathNomePDF)
#endif
#ifndef TEC;AZI
               if( $FIXALFA > 0 )   {  FILE_COPY($wk_PathNomePDF,STRCAT($path_wmf,$File, ".pdf")) }

               //Invio a TGEO il PDF
               if( $TGEO > 0 )
               {
                  COMANDO2(STRCAT("RUN_DLL_CMD Metron_IPC SendIPC ",APICI(), "[NTFY] ALLEGA [NOME] '",$File, ".pdf' [CANCELLA] [INVIA] [DESCRIZIONE] 'Preventivo e disegni' ",$wk_PathNomePDF,APICI()))
               }
#endif
            }
         }

         //Creazione del PDF per l'eventuale anteprima
         if( $CNP == 0 & $VAR_AnteprimaDiStampa == 1 )
         {
            $wk_PathNomePDF = STRCAT($path_temp, "~metron_",$File, ".pdf")
            $wk_StringaPDFtoPS = STRCAT(APICI(),$wk_PathNomePDF, ";",STR($PDF_Risoluzione), ";",$install_dir, ";$wk_PathNomePS",APICI())

            $MOSTRA_PDF_GENERATO = 1
            COMANDO2(STRCAT("run_dll_cmd righe2.dll PStoPDF ", $wk_StringaPDFtoPS))
         }

         //annullo la variabile (se salvata nel rit crea errore a causa degli apici)
         $wk_StringaPDFtoPS = ""

         //Cancello i file di appoggio

         //Evito però di cancellare il prn del disegno a colori in
         //quanto viene generato solo in interattivo dagli operatori
         //sul fine ordine ed è meglio lasciarlo a disposizione
         //per l'eventuale rigenerazione delle stampe in batch da CNP Metron
         prn_col = STRCAT($path_wmf, $path_archivio, $File, "_CLI_COMPCOL.prn")
         if(IS_MATCH(FILE_DATA(prn_col, 0), "Error!*") != 1)
         {
            FILE_COPY(prn_col,STRCAT(prn_col, ".bak"))
         }

         FILE_DEL(STRCAT($path_wmf, $path_archivio,$File, "*.prn"))
         FILE_DEL(STRCAT($path_wmf, $File, "*.ps"))
         FILE_DEL(STRCAT($path_temp, $File, "*.prn"))
         FILE_DEL(STRCAT($path_temp, $File, "*.emf"))

         //Ripristino il prn del disegno a colori salvato poco sopra
         if(IS_MATCH(FILE_DATA(STRCAT(prn_col, ".bak"),0), "Error!*") != 1)
         {
            FILE_COPY(STRCAT(prn_col, ".bak"),prn_col)
            FILE_DEL(STRCAT(prn_col, ".bak"))
         }
      }

      $GENERA_PDF_IN_CORSO = 0
   }

   PROCEDURA Add_ArrPrnPs
   {
      if($GENERA_PDF_IN_CORSO)
      {
         //Riempimento array per generazione PDF
         $ArrPrnPs = $ArrPrnPs + 1

         $wk_psfile = STRMID( 0, STRLEN($file)-3, $file)
         $wk_psfile = STRCAT($wk_psfile, "prn")
         VAR_CREATE_STR(-1,STRCAT("ArrPrnPs_##", STR($ArrPrnPs)),$wk_psfile,0, "")
      }
   }

   //NomeDisegnoRiga, parametri in ingresso:
   //   $path_wmf/$path_archivio : il path dei wmf
   //   $File                    : ordine gestionale
   //   $wk_idx_riga             : idx_della riga/sottoriga
   //   $SET_STAMPA
   //   $wk_suffisso_nome        : se presente uso questo per comporre il nome

   PROCEDURA NomeDisegnoRiga
   {
      if( VAR_EXIST( -1, "wk_idx_riga") == 0) { EXITSUB() }
      if( IS_IDX($wk_idx_riga) != 1)          { EXITSUB() }

      ScriviSuLog( VAR_VAL(-1,"LOG_DTG") , "DIS_TO_GEMO" , STRCAT("DTG=",STR($DIS_TO_GEMO)," NomeDisegnoRiga 1") )

      //COMANDO2(STRCAT("LOGMSG NomeDisegnoRiga ---- wk_suffisso_nome= ",VAR_VAL_STR(-1,"wk_suffisso_nome")))
      //COMANDO2(STRCAT("LOGMSG NomeDisegnoRiga ---- $wk_suffisso_emf= ",VAR_VAL_STR(-1,"wk_suffisso_emf")))

      $wk_str_name_pdf = $SET_STAMPA
      if( VAR_VAL_STR(-1,"wk_suffisso_nome") != "" ) { $wk_str_name_pdf = $wk_suffisso_nome }
      else
      {
         $wk_suffisso_nome = VAR_VAL_STR(-1,"wk_suffisso_emf")
         if( LEFT($wk_suffisso_nome,1)=="_" )  { $wk_suffisso_nome = STRMID(1,1000,$wk_suffisso_nome) }

         if( VAR_VAL_STR(-1,"wk_suffisso_nome") != "" ) { $wk_str_name_pdf = $wk_suffisso_nome }
      }

      $wk_suffisso_nome = ""

      $wk_suffisso_emf = $wk_str_name_pdf
      VAR_CREATE_NUM(-1,STRCAT("wk_pagina_",$wk_suffisso_emf),0,0,"")

      //COMANDO2(STRCAT("LOGMSG NomeDisegnoRiga ---- $wk_str_name_pdf= ",$wk_str_name_pdf))

      if( VAR_EXIST( $wk_idx_riga, "IDX_GEST")) { $wk_suffisso_pdf = STRCAT("-",$wk_str_name_pdf,"_",STR(VAR_VAL($wk_idx_riga,"IDX_GEST"))) }
      else                                      { $wk_suffisso_pdf = STRCAT("-",$wk_str_name_pdf,"_(",STR($wk_idx_riga),")") }

      ScriviSuLog( VAR_VAL(-1,"LOG_DTG") , "DIS_TO_GEMO" , STRCAT("DTG=",STR($DIS_TO_GEMO)," NomeDisegnoRiga ", $wk_suffisso_pdf) )

      //utilizzato in FineStampaPDF
      $POSTNOMESTAMPA = $wk_suffisso_pdf

      if( $DIS_TO_GEMO
        | $INVIA_DIS_TO_GEMO)
      {
         // Creo array idx a cui allegare la stampa
         $wk_nomedisegnoriga_idx = 0

         if( CheckSel_ORD_SOST($wk_idx_riga) == 1) { AddItem2Array( -1, "wk_nomedisegnoriga_idx", $wk_idx_riga, "") }
         else
         {
            WITH_VAR_LOCAL( $wk_idx_riga, "$wk_nomedisegnoriga_idxtmp", "Ord_Sost_Allegato", $num_con_figli, 1, "1")

            $wk_nomedisegnoriga_idxtmp_num = 1
            while( $wk_nomedisegnoriga_idxtmp_num <= $wk_nomedisegnoriga_idxtmp)
            {
               $wk_nomedisegnoriga_idxtmp_att = GetPrimoGEST( $wk_nomedisegnoriga_idxtmp[$wk_nomedisegnoriga_idxtmp_num], 0)

               if( CheckSel_ORD_SOST($wk_nomedisegnoriga_idxtmp_att) == 1) { AddItem2Array( -1, "wk_nomedisegnoriga_idx", $wk_nomedisegnoriga_idxtmp_att, "") }

               $wk_nomedisegnoriga_idxtmp_num = $wk_nomedisegnoriga_idxtmp_num + 1
            }
         }

         // Allego
         $wk_nomedisegnoriga_idx_num = 1
         while( $wk_nomedisegnoriga_idx_num <= $wk_nomedisegnoriga_idx)
         {
            $wk_nomedisegnoriga_idx_att = $wk_nomedisegnoriga_idx[$wk_nomedisegnoriga_idx_num]

            $wk_nomedisegnoriga_ext_att = VAR_VAL_STR( -1, "wk_estensione_NDR")
            if( $wk_nomedisegnoriga_ext_att == "") { $wk_nomedisegnoriga_ext_att = ".pdf" }

            $wk_nomedisegnoriga_all_att = STRCAT( $SET_STAMPA, ";", $path_wmf, $path_archivio, $File, $wk_suffisso_pdf, $wk_nomedisegnoriga_ext_att)

            VAR_VALUE_SET( $wk_nomedisegnoriga_idx_att, "ALLEGATI", VAR_VAL( $wk_nomedisegnoriga_idx_att, "ALLEGATI"))
            AddItem2Array( $wk_nomedisegnoriga_idx_att, "ALLEGATI", 0, $wk_nomedisegnoriga_all_att)

            $wk_nomedisegnoriga_idx_num = $wk_nomedisegnoriga_idx_num + 1
         }
      }
   }

   PROCEDURA NomeDisegno
   {
      // Parametri in ingresso:
      //  $File: ordine gestionale
      //  $wk_suffisso_emf: tipo stampa

      $wk_var_pagina = STRCAT("wk_pagina_",$wk_suffisso_emf)
      if ( VAR_EXIST(-1,$wk_var_pagina) )
      {
         //Incremento il numero della pagina associato al suffisso $wk_suffisso_emf
         $wk_val_pagina = VAR_VAL(-1,$wk_var_pagina) + 1
         VAR_VALUE_SET(-1,$wk_var_pagina,$wk_val_pagina)
      }
      else
      {
         //Plinio 22/05/2012: la variabile $wk_pagina_(SUFFISSO) deve essere dichiarata
         //prima della procedura che lancia NomeDisegno, ad esempio prima della chiamata
         //di StampaAssonometrie, altrimenti quando vengono generati più disegni non
         //viene incrementato il numero delle pagine e gli emf generati vengono sovrascritti
         $wk_val_pagina = -1
      }

      if($OnTerminate==0)
      {
         // Stampe temporanee lanciate a mano
         $wk_prefisso_file = $path_temp
      }
      else
      {
#ifndef AGE;RIV
         $wk_prefisso_file = STRCAT($path_temp,$path_archivio)
#endif
#ifdef AGE;RIV
         $wk_prefisso_file = $path_temp
#endif
      }

      $wk_suffisso_pag = ""
      if ( $wk_val_pagina>0 ) { $wk_suffisso_pag = STRCAT("_",STR($wk_val_pagina)) }

      $file = STRCAT($wk_prefisso_file,$File,"_",$wk_suffisso_emf,$wk_suffisso_pag,".emf")

      WRITE_INI("SettaggiStampa","forzaNome","1")
      WRITE_INI("SettaggiStampa","nomeWmf",$file)
   }

   PROCEDURA StampaLayout
   {
      GOSUB Add_ArrPrnPs

      WRITE_INI( "stp_option", "layout_name", $wk_nome_layout)

      GOSUB Stampa
   }

   PROCEDURA Stampa
   {
      if($GENERA_PDF_IN_CORSO)
      {
         //stampa senza anteprima
         COMANDO2("M4_PRINT -NoPreview //Stampa 1")
         //crea il prn del files stampato
         COMANDO2( FMT( "M4_PRINT -Print {}{}{} //Stampa 2", APICI(), $file, APICI()))
      }
      else
      {
         if($VAR_AnteprimaDiStampa) { COMANDO2("M4_PRINT  //Stampa 3") }
         else                       { COMANDO2("M4_PRINT -NoPreview  //Stampa 4") }
      }
   }

   PROCEDURA CancellaScritteQuote
   {
      //Cancello eventuali scritte rimaste nel RIT a seguito di blocco

      STRUTTURE("$wk_strutt")
      $wk_strutt_num = 1
      while( $wk_strutt_num <= $wk_strutt)
      {
         $wk_idx_strutt  = ARRAY("$wk_strutt", $wk_strutt_num)
         $wk_nome_strutt = NOME($wk_idx_strutt)

         if($wk_nome_strutt == "Triangolo"
            | $wk_nome_strutt == "TSTP_qLinea"
            | $wk_nome_strutt == "LineaCADXYZ"
            | $wk_nome_strutt == "Bollino_Stampa"
            | IS_MATCH( $wk_nome_strutt, "QUOTA_CAD*")
            | IS_MATCH( $wk_nome_strutt, "Linea*CAD")
            | IS_MATCH( $wk_nome_strutt, "SCRITTA_CAD*")
            | IS_MATCH( $wk_nome_strutt, "LineaGriglia*")
            | VAR_VAL( $wk_idx_strutt,"CancellaScritteQuote") == 1)
            { COMANDO2(STRCAT("DELETE3 ", STR($wk_idx_strutt), " //CancellaScritteQuote")) }

         $wk_strutt_num = $wk_strutt_num + 1
      }
   }

   PROCEDURA CancellaLinee
   {
      //Cancello le linee di ingombro
      WITH_ALIAS("$wk_scr","SCR_Canc")
      $wk_l = 1
      while($wk_l<=$wk_scr)
      {
         if(IS_IDX(ARRAY("$wk_scr",$wk_l)))
         {
            COMANDO2(STRCAT("DELETE3 ",STR(ARRAY("$wk_scr",$wk_l)),"   //CancellaLinee"))
         }
         $wk_l = $wk_l + 1
      }
   }

   PROCEDURA adatta_dim_quote
   {
      $wk_x_min = 999999
      $wk_x_max = -999999
      $wk_z_min = 999999
      $wk_z_max = -999999

      // Strutture
      $wk_struttdim = 0
      $wk_struttdim[1] = -1
      if( IsIdx( -1, "adatta_dim_quote_idx_ref"))
      {
         $wk_struttdim    = 1
         $wk_struttdim[1] = VAR_VAL( -1, "adatta_dim_quote_idx_ref")

         DEL_VAR( -1, "adatta_dim_quote_idx_ref")
      }
      if( $wk_struttdim <= 0) { STRUTTURE("$wk_struttdim") }

      // Ciclo
      $wk_struttdim_num = 1
      while( $wk_struttdim_num <= $wk_struttdim)
      {
         $wk_idx_str = $wk_struttdim[$wk_struttdim_num]

         if( IS_IDX($wk_idx_str)) { GOSUB max_min_basi }

         $wk_struttdim_num = $wk_struttdim_num + 1
      }

      $wk_DisMaxDim   = $wk_x_max - $wk_x_min
      $wk_DisMaxDim_Z = $wk_z_max - $wk_z_min
      if ( $wk_DisMaxDim_Z > $wk_DisMaxDim)  { $wk_DisMaxDim = $wk_DisMaxDim_Z }
      $wk_DisMaxDim = 600 + ($wk_DisMaxDim - 600)*0.25

      $Yscr = ($wk_DisMaxDim/600)*50
      $Xscr = ($wk_DisMaxDim/600)*30

      // Filtro passa-basso per evitare che in grandi
      // composizioni diventino + grandi del mobile stesso
      if( $Xscr>3.5*30)
      {
         $Xscr = 3.5*30
         $Yscr = 3.5*50
      }
   }

   PROCEDURA max_min_basi
   {
      $wk_ins2=INSERIMENTO2($wk_idx_str)
      if ( $wk_ins2 != $ins2_accessorio)
      {
         if( VAR_EXIST( $wk_idx_str, "base_0"))
         {
             SET_#($wk_idx_str)
             $wk_test_dim = #base_0.x GOSUB testa_x_min GOSUB testa_x_max
             $wk_test_dim = #base_0.z GOSUB testa_z_min GOSUB testa_z_max
         }
         if( VAR_EXIST( $wk_idx_str, "base_1"))
         {
             $wk_test_dim = #base_1.x GOSUB testa_x_min GOSUB testa_x_max
             $wk_test_dim = #base_1.z GOSUB testa_z_min GOSUB testa_z_max
         }
         if( VAR_EXIST( $wk_idx_str, "base_2"))
         {
             $wk_test_dim = #base_2.x GOSUB testa_x_min GOSUB testa_x_max
             $wk_test_dim = #base_2.z GOSUB testa_z_min GOSUB testa_z_max
         }
         if( VAR_EXIST( $wk_idx_str, "base_3"))
         {
             $wk_test_dim = #base_3.x GOSUB testa_x_min GOSUB testa_x_max
             $wk_test_dim = #base_3.z GOSUB testa_z_min GOSUB testa_z_max
         }
         if( VAR_EXIST( $wk_idx_str, "base_4"))
         {
             $wk_test_dim = #base_4.x GOSUB testa_x_min GOSUB testa_x_max
             $wk_test_dim = #base_4.z GOSUB testa_z_min GOSUB testa_z_max
         }
         if( VAR_EXIST( $wk_idx_str, "base_5"))
         {
             $wk_test_dim = #base_5.x GOSUB testa_x_min GOSUB testa_x_max
             $wk_test_dim = #base_5.z GOSUB testa_z_min GOSUB testa_z_max
         }
         if( VAR_EXIST( $wk_idx_str, "base_6"))
         {
             $wk_test_dim = #base_6.x GOSUB testa_x_min GOSUB testa_x_max
             $wk_test_dim = #base_6.z GOSUB testa_z_min GOSUB testa_z_max
         }
      }
   }

   PROCEDURA testa_x_min
   {
      if ($wk_test_dim < $wk_x_min) { $wk_x_min = $wk_test_dim }
   }

   PROCEDURA testa_x_max
   {
      if ($wk_test_dim > $wk_x_max) { $wk_x_max = $wk_test_dim }
   }

   PROCEDURA testa_z_min
   {
      if ($wk_test_dim < $wk_z_min) { $wk_z_min = $wk_test_dim }
   }

   PROCEDURA testa_z_max
   {
      if ($wk_test_dim > $wk_z_max) { $wk_z_max = $wk_test_dim }
   }

   PROCEDURA PosizionaQuotaSchienale
   {
      COMANDO2("ELEMENTO QUOTA_CAD")
      COMANDO2("STRUTTURA")
      $wk_cmd = STRCAT("VAR_SET c_rivestimento_P1=[",STR($P1.x),",",STR($P1.y),",",STR($P1.z),"]")
      $wk_cmd = STRCAT($wk_cmd," c_rivestimento_P2=[",STR($P2.x),",",STR($P2.y),",",STR($P2.z),"]")
      // Se è un numero arrotondo
      if ( ATOI($testo)!=0 )
      {
         $wk_buff  = ATOI($testo)
         $wk_buff  = FLOOR($wk_buff*100+0.5)/100
         $testo = STR($wk_buff)
      }
      $wk_cmd = STRCAT($wk_cmd," Testo1=",APICI(),$testo,APICI())
      $wk_cmd = STRCAT($wk_cmd," InterSpazio=12  SpazioT1=7  SpazioT2=7")
      $wk_cmd = STRCAT($wk_cmd," HC1=",STR($HChar)," LC1=",STR($LChar))
      $wk_cmd = STRCAT($wk_cmd," Alias=",APICI(),$AliasQuota,APICI())
      //Colore Nero
      if( VAR_EXIST(-1,"wk_ColoreScrittaQuota") )
      {
         //0:Nero | 1:Rosso | 2:Verde | 3:Blu | 4:Azzurro | 5:Giallo | 6:Fucsia | 7:Bianco
         $wk_cmd = STRCAT($wk_cmd," ColT1=",$wk_ColoreScrittaQuota)
         DEL_VAR(-1,"wk_ColoreScrittaQuota")
      }
      COMANDO2($wk_cmd)
      $wk_cmd = STRCAT("VAR_SET AliasScritta=",APICI(),$alias_scr,APICI())
      $wk_cmd = STRCAT($wk_cmd," AliasLineeLat=",APICI(),$AliasQuotaLat,APICI())
      $wk_cmd = STRCAT($wk_cmd," Distanza=",STR($dist))
      $wk_cmd = STRCAT($wk_cmd," ang_scritta=",STR($ang_scr))

      if ( VAR_EXIST(-1,"wk_Faccia")!=1 ) { $wk_Faccia = "F" }
      $wk_cmd = STRCAT($wk_cmd," Faccia=",APICI(),$wk_Faccia,APICI())

// Frecce: sono lunghe 20 mm, e tra di loro c'è un blocchetto
// di congiunzione. Non le metto mai se la distanza tra P1 e P2 è <=40
//      $wk_P1 = $P1   $wk_P2 = $P2
//      $wk_P2.y = $wk_P1.y
//old      $wk_cmd = STRCAT($wk_cmd," frecce=0")
      if ( DISTANZA($P1,$P2)<=40 )
         { $wk_cmd = STRCAT($wk_cmd," frecce=0") }
      else
      {
         if ( VAR_EXIST(-1,"frecce")==0 ) { $frecce = 1 }
         if ( $frecce==0 )   { $wk_cmd = STRCAT($wk_cmd," frecce=0") }
         else                { $wk_cmd = STRCAT($wk_cmd," frecce=1") }
      }
      $wk_cmd = STRCAT($wk_cmd," Sviluppo=",APICI(),"A",APICI())
      if ( VAR_EXIST(-1,"wk_pointT1") )
         { $wk_cmd = STRCAT($wk_cmd," PointT1=",APICI(),$wk_pointT1,APICI()) }
      else
         { $wk_cmd = STRCAT($wk_cmd," PointT1=",APICI(),"C",APICI()) }
      $wk_cmd = STRCAT($wk_cmd," NoCtrlGest=1")
      if ( VAR_EXIST(-1,"wk_senso") )
         { $wk_cmd = STRCAT($wk_cmd," Senso=",STR($wk_senso)) }
      else
         { $wk_cmd = STRCAT($wk_cmd," Senso=0") }
      if ( VAR_EXIST(-1,"wk_stile") )
         { $wk_cmd = STRCAT($wk_cmd," Stile=",STR($wk_stile)) }
      else
         { $wk_cmd = STRCAT($wk_cmd," Stile=1") }
      if ( VAR_EXIST(-1,"wk_nolinee") )
         { $wk_cmd = STRCAT($wk_cmd," NoLinee=",STR($wk_nolinee)) }
      if ( VAR_EXIST(-1,"wk_scosta") )
         { $wk_cmd = STRCAT($wk_cmd," Scosta=",STR($wk_scosta)) }
      else
         { $wk_cmd = STRCAT($wk_cmd," Scosta=30") }
      $wk_dim_frecce = STR(20*$HChar/50)
      $wk_cmd = STRCAT($wk_cmd," DimFreccia=",$wk_dim_frecce)
      COMANDO2($wk_cmd)

      COMANDO2(STRCAT("POSIZIONA ",STR($P1.x)," ",STR($P1.y)," ",STR($P1.z)," ", STR($ang_quoSCH)))

      if ( VAR_EXIST(-1,"wk_GRASSETTO_SOTTOLINEATO") )
      {
         COMANDO2("ELEMENTO QUOTA_CAD")
         COMANDO2("STRUTTURA")
         $wk_cmd = STRCAT("VAR_SET c_rivestimento_P1=[",STR($P1.x),",",STR($P1.y),",",STR($P1.z),"]")
         $wk_cmd = STRCAT($wk_cmd," c_rivestimento_P2=[",STR($P2.x),",",STR($P2.y),",",STR($P2.z),"]")
         $wk_len_str = STRLEN($testo)
         $testo1 = ""
         $wk_k_txt = 1
         while ( $wk_k_txt<=$wk_len_str )
         {
            $testo1 = STRCAT($testo1,"_")
            $wk_k_txt = $wk_k_txt + 1
         }
         $wk_cmd = STRCAT($wk_cmd," Testo1=",APICI(),$testo1,APICI())
         $wk_cmd = STRCAT($wk_cmd," InterSpazio=12  SpazioT1=7  SpazioT2=7")
         $wk_cmd = STRCAT($wk_cmd," HC1=",STR($HChar)," LC1=",STR($LChar))
         $wk_cmd = STRCAT($wk_cmd," Alias=",APICI(),$AliasQuota,APICI())
         COMANDO2($wk_cmd)
         $wk_cmd = STRCAT("VAR_SET AliasScritta=",APICI(),$alias_scr,APICI())
         $wk_cmd = STRCAT($wk_cmd," AliasLineeLat=",APICI(),$AliasQuotaLat,APICI())
         $wk_cmd = STRCAT($wk_cmd," Distanza=",STR($dist))
         $wk_cmd = STRCAT($wk_cmd," ang_scritta=",STR($ang_scr))
         $wk_cmd = STRCAT($wk_cmd," Faccia=",APICI(),$wk_Faccia,APICI())
// Frecce: sono lunghe 20 mm, e tra di loro c'è un blocchetto
// di congiunzione. Non le metto mai se la distanza tra P1 e P2 è <=40
//         $wk_P1 = $P1   $wk_P2 = $P2
//         $wk_P2.y = $wk_P1.y
//old         $wk_cmd = STRCAT($wk_cmd," frecce=0")
         if ( DISTANZA($P1,$P2)<=40 )
            { $wk_cmd = STRCAT($wk_cmd," frecce=0") }
         else
         {
            if ( VAR_EXIST(-1,"frecce")==0 ) { $frecce = 1 }
            if ( $frecce==0 )   { $wk_cmd = STRCAT($wk_cmd," frecce=0") }
            else                { $wk_cmd = STRCAT($wk_cmd," frecce=1") }
         }
         $wk_cmd = STRCAT($wk_cmd," Sviluppo=",APICI(),"A",APICI())
         if ( VAR_EXIST(-1,"wk_pointT1") )
            { $wk_cmd = STRCAT($wk_cmd," PointT1=",APICI(),$wk_pointT1,APICI()) }
         else
            { $wk_cmd = STRCAT($wk_cmd," PointT1=",APICI(),"C",APICI()) }
         $wk_cmd = STRCAT($wk_cmd," NoCtrlGest=1")
         if ( VAR_EXIST(-1,"wk_stile") )
            { $wk_cmd = STRCAT($wk_cmd," Stile=",STR($wk_stile)) }
         else
            { $wk_cmd = STRCAT($wk_cmd," Stile=1") }
         if ( VAR_EXIST(-1,"wk_nolinee") )
            { $wk_cmd = STRCAT($wk_cmd," NoLinee=",STR($wk_nolinee)) }
         if ( VAR_EXIST(-1,"wk_scosta") )
            { $wk_cmd = STRCAT($wk_cmd," Scosta=",STR($wk_scosta)) }
         else
            { $wk_cmd = STRCAT($wk_cmd," Scosta=30") }
         $wk_dim_frecce = STR(20*$HChar/50)
         $wk_cmd = STRCAT($wk_cmd," DimFreccia=",$wk_dim_frecce)
         COMANDO2($wk_cmd)

         COMANDO2(STRCAT("POSIZIONA ",STR($P1.x)," ",STR($P1.y)," ",STR($P1.z)," ", STR($ang_quoSCH)))

         DEL_VAR(-1,"wk_GRASSETTO_SOTTOLINEATO")
      }

      if( VAR_VAL(-1,"wk_linee_quota") > 0  )
      {
         $wk_da_PosizionaQuotaSchienale = $wk_linee_quota
         GOSUB PosaLineeFineQuota
         $wk_da_PosizionaQuotaSchienale = 0
         DEL_VAR(-1,"wk_linee_quota")
      }

      DEL_VAR(-1,"wk_stile")
      DEL_VAR(-1,"wk_Faccia")
      DEL_VAR(-1,"wk_nolinee")
      DEL_VAR(-1,"wk_scosta")
      DEL_VAR(-1,"wk_pointT1")

      //Azzero per evitare che venga salvata una stringa abnorme
      $wk_cmd = ""
   }

   PROCEDURA PosaLineeFineQuota
   {
      COMANDO2("ELEMENTO TSTP_qLinea")
      COMANDO2("STRUTTURA")

      $wk_ang_x = 0
      $wk_ang_z = 0
      $wk_ang_y = ANG_2_PUNTI($P1,$P2) + 90

      if( VAR_VAL(-1,"wk_da_PosizionaQuotaSchienale") == 1 )
      {
         $wk_ang_z = 90
         $wk_ang_y =  0
      }

      if( VAR_VAL(-1,"wk_da_PosizionaQuotaSchienale") == 2 )
      {
         $wk_ang_x = 90
         $wk_ang_z =  0
         $wk_ang_y =  0
      }


      $wk_xl = $HChar
      $wk_cmd = STRCAT("VAR_SET TSTP_DeleteFineStampa=1 X=",STR($HChar)," Y=1 ang_y=",STR($wk_ang_y), " ang_z=",STR($wk_ang_z), " ang_x=",STR($wk_ang_x))
      $wk_cmd = STRCAT($wk_cmd," Alias=",APICI(),$AliasQuota,APICI())
      COMANDO2($wk_cmd)

      DEL_VAR(-1,"wk_cmd")
      $wk_P1_bak = $P1

      if( VAR_VAL(-1,"wk_da_PosizionaQuotaSchienale") > 0 )
      {
         if( $wk_da_PosizionaQuotaSchienale == 1 )
         {
            $P1.y = $P1.y + $dist - $wk_xl/2
         }

         if( $wk_da_PosizionaQuotaSchienale == 2 )
         {
            $wk_lato_sposta = 0
            if( $P1.y < $P2.y & $dist > 0 ) { $wk_lato_sposta = -1 }
            if( $P1.y > $P2.y & $dist > 0 ) { $wk_lato_sposta =  1 }

            if( $P1.y < $P2.y & $dist < 0 ) { $wk_lato_sposta =  1 }
            if( $P1.y > $P2.y & $dist < 0 ) { $wk_lato_sposta = -1 }

            $P1.y = $P1.y + 1
            if( $wk_lato_sposta < 0 )
            {
               $P1.x = $P1.x - COSENO($ang_quoSCH)*($dist + $wk_xl/2)
               $P1.z = $P1.z +   SENO($ang_quoSCH)*($dist + $wk_xl/2)
            }

            if( $wk_lato_sposta > 0 )
            {
               $P1.x = $P1.x + COSENO($ang_quoSCH)*($dist - $wk_xl/2)
               $P1.z = $P1.z -   SENO($ang_quoSCH)*($dist - $wk_xl/2)
            }
         }
      }
      else
      {
         $wk_ang2p = NORMALIZZA_ANG(ANG_2_PUNTI($P1,$P2))
         $wk_ql_offx = SENO($wk_ang2p)
         $wk_ql_offz = COSENO($wk_ang2p)
         $wk_ql_dist = $dist - $wk_xl/2
         $wk_ql_offx2 = $wk_ql_offx * $wk_ql_dist
         $wk_ql_offz2 = $wk_ql_offz * $wk_ql_dist
         //
         //
         //COMANDO2(STRCAT("LOGMSG ATTUALE: ",STR(ATTUALE()), " | DEBUG ---- ANG=",STR($wk_ang2p) , " $wk_ql_dist=",STR($wk_ql_dist) ))
         //COMANDO2(STRCAT("LOGMSG ATTUALE: ",STR(ATTUALE()), " | DEBUG ---- $wk_ql_offx=",STR($wk_ql_offx)  , " $wk_ql_offx2=",STR($wk_ql_offx2) ))
         //COMANDO2(STRCAT("LOGMSG ATTUALE: ",STR(ATTUALE()), " | DEBUG ---- $wk_ql_offz=",STR($wk_ql_offz)  , " $wk_ql_offz2=",STR($wk_ql_offz2) ))

         $P1.x = $P1.x - $wk_ql_offx2
         //-   SENO(ANG_2_PUNTI($P1,$P2))*($dist - $wk_xl/2 )
         $P1.z = $P1.z - $wk_ql_offz2
         //- COSENO(ANG_2_PUNTI($P1,$P2))*($dist - $wk_xl/2 )
      }
      COMANDO2(STRCAT("POSIZIONA ",STR($P1.x)," ",STR($P1.y)," ",STR($P1.z)," ",STR($ang_quoSCH)))
      $P1 = $wk_P1_bak

      COMANDO2("ELEMENTO TSTP_qLinea")
      COMANDO2("STRUTTURA")
      $wk_xl = $HChar
      $wk_cmd = STRCAT("VAR_SET TSTP_DeleteFineStampa=1 X=",STR($HChar)," Y=1 ang_y=",STR($wk_ang_y), " ang_z=",STR($wk_ang_z) , " ang_x=",STR($wk_ang_x))
      $wk_cmd = STRCAT($wk_cmd," Alias=",APICI(),$AliasQuota,APICI())
      COMANDO2($wk_cmd)

      DEL_VAR(-1,"wk_cmd")
      $wk_P2_bak = $P2
      if( VAR_VAL(-1,"wk_da_PosizionaQuotaSchienale") > 0 )
      {
         if( $wk_da_PosizionaQuotaSchienale == 1 )
         {
            $P2.y = $P2.y + $dist - $wk_xl/2
         }

         if( $wk_da_PosizionaQuotaSchienale == 2 )
         {
            $wk_lato_sposta = 0
            if( $P1.y < $P2.y & $dist > 0 ) { $wk_lato_sposta = -1 }
            if( $P1.y > $P2.y & $dist > 0 ) { $wk_lato_sposta =  1 }

            if( $P1.y < $P2.y & $dist < 0 ) { $wk_lato_sposta =  1 }
            if( $P1.y > $P2.y & $dist < 0 ) { $wk_lato_sposta = -1 }

            $P2.y = $P2.y + 1
            if( $wk_lato_sposta < 0 )
            {
               $P2.x = $P2.x - COSENO($ang_quoSCH)*($dist + $wk_xl/2)
               $P2.z = $P2.z +   SENO($ang_quoSCH)*($dist + $wk_xl/2)
            }

            if( $wk_lato_sposta > 0 )
            {
               $P2.x = $P2.x + COSENO($ang_quoSCH)*($dist - $wk_xl/2)
               $P2.z = $P2.z -   SENO($ang_quoSCH)*($dist - $wk_xl/2)
            }
         }
      }
      else
      {
         //$P2.x = $P2.x -   SENO(ANG_2_PUNTI($P1,$P2))*($dist - $wk_xl/2 )
         //$P2.z = $P2.z - COSENO(ANG_2_PUNTI($P1,$P2))*($dist - $wk_xl/2 )

         $wk_ang2p = NORMALIZZA_ANG(ANG_2_PUNTI($P1,$P2))
         $wk_ql_offx = SENO($wk_ang2p)
         $wk_ql_offz = COSENO($wk_ang2p)
         $wk_ql_dist = $dist - $wk_xl/2
         $wk_ql_offx2 = $wk_ql_offx * $wk_ql_dist
         $wk_ql_offz2 = $wk_ql_offz * $wk_ql_dist

         $P2.x = $P2.x - $wk_ql_offx2
         $P2.z = $P2.z - $wk_ql_offz2
      }

      COMANDO2(STRCAT("POSIZIONA ",STR($P2.x)," ",STR($P2.y)," ",STR($P2.z)," ",STR($ang_quoSCH)))
      $P2 = $wk_P2_bak
   }

   PROCEDURA PosizionaQuota_OffsetP1P2
   {
      $wk_ang_off = GetAng_P1P2($wk_criv_P1,$wk_criv_P2)

      if( $dist>0 )
      {
         $wk_criv_P1.x = $wk_criv_P1.x -   SENO($wk_ang_off)*$wk_scosta_lquota
         $wk_criv_P1.z = $wk_criv_P1.z - COSENO($wk_ang_off)*$wk_scosta_lquota

         $wk_criv_P2.x = $wk_criv_P2.x -   SENO($wk_ang_off)*$wk_scosta_lquota
         $wk_criv_P2.z = $wk_criv_P2.z - COSENO($wk_ang_off)*$wk_scosta_lquota
      }

      if( $dist<0 )
      {
         $wk_criv_P1.x = $wk_criv_P1.x +   SENO($wk_ang_off)*$wk_scosta_lquota
         $wk_criv_P1.z = $wk_criv_P1.z + COSENO($wk_ang_off)*$wk_scosta_lquota

         $wk_criv_P2.x = $wk_criv_P2.x +   SENO($wk_ang_off)*$wk_scosta_lquota
         $wk_criv_P2.z = $wk_criv_P2.z + COSENO($wk_ang_off)*$wk_scosta_lquota
      }
   }

   PROCEDURA PosizionaQuota
   {
      COMANDO2("ELEMENTO QUOTA_CAD")
      COMANDO2("STRUTTURA")

      //Luca 26/10/2019
      //gestisco un offset di spostamento dal punto di quota per vedere le quote staccate dall'oggetto che vado a quotare
      $wk_criv_P1 = $P1
      $wk_criv_P2 = $P2
      if( VAR_EXIST(-1,"wk_scosta_lquota") ) { GOSUB PosizionaQuota_OffsetP1P2 }

      $wk_cmd = STRCAT("VAR_SET c_rivestimento_P1=[",STR($wk_criv_P1.x),",",STR($wk_criv_P1.y),",",STR($wk_criv_P1.z),"]")
      $wk_cmd = STRCAT($wk_cmd," c_rivestimento_P2=[",STR($wk_criv_P2.x),",",STR($wk_criv_P2.y),",",STR($wk_criv_P2.z),"]")

      // Se è un numero arrotondo
      if( VAR_TYPE( -1, "testo") == 0 )
      {
         $wk_buff = MRound( $testo, 0.1)
         $testo   = STR($wk_buff)
      }

      $wk_cmd = STRCAT($wk_cmd," Testo1=",APICI(),$testo,APICI())
      $wk_cmd = STRCAT($wk_cmd," InterSpazio=20  SpazioT1=7  SpazioT2=7")
      $wk_cmd = STRCAT($wk_cmd," HC1=",STR($HChar)," LC1=",STR($LChar))
      $wk_cmd = STRCAT($wk_cmd," Alias=",APICI(),$AliasQuota,APICI())
      COMANDO2($wk_cmd)
      $wk_cmd = STRCAT("VAR_SET AliasScritta=",APICI(),$alias_scr,APICI())
      $wk_cmd = STRCAT($wk_cmd," AliasLineeLat=",APICI(),$AliasQuotaLat,APICI())
      $wk_cmd = STRCAT($wk_cmd," Distanza=",STR($dist))
      $wk_cmd = STRCAT($wk_cmd," Faccia=",APICI(),"A",APICI())

      if ( VAR_EXIST(-1,"wk_stile") )  { $wk_cmd = STRCAT($wk_cmd," Stile=",STR($wk_stile)) }
      else                             { $wk_cmd = STRCAT($wk_cmd," Stile=1") }
      if ( VAR_EXIST(-1,"wk_senso") )  { $wk_cmd = STRCAT($wk_cmd," Senso=",STR($wk_senso)) }
      else                             { $wk_cmd = STRCAT($wk_cmd," Senso=0") }
      if ( VAR_EXIST(-1,"wk_scosta") ) { $wk_cmd = STRCAT($wk_cmd," Scosta=",STR($wk_scosta)) }
      else                             { $wk_cmd = STRCAT($wk_cmd," Scosta=10")  }

      //Luca 23/02/2022
      if ( VAR_VAL(-1,"wk_view_sotto") ) { $wk_cmd = STRCAT($wk_cmd," ViewSotto=1") }

      $wk_cmd = STRCAT($wk_cmd," ang_scritta=",STR($ang_scr))

      $wk_cmd = STRCAT($wk_cmd," ang_scritta=",STR($ang_scr))
      $wk_P1 = $P1   $wk_P2 = $P2
      $wk_P2.y = $wk_P1.y
      if ( DISTANZA($wk_P1,$wk_P2)<=40 )
         { $wk_cmd = STRCAT($wk_cmd," frecce=0") }
      else
      {
         if ( VAR_EXIST(-1,"frecce")==0 ) { $frecce = 1 }
         if ( $frecce==0 )   { $wk_cmd = STRCAT($wk_cmd," frecce=0") }
         else                { $wk_cmd = STRCAT($wk_cmd," frecce=1") }
      }
      $wk_cmd = STRCAT($wk_cmd," PointT1=",APICI(),"C",APICI())
      $wk_cmd = STRCAT($wk_cmd," NoCtrlGest=1")
      $wk_dim_frecce = STR(20*$HChar/50)
      $wk_cmd = STRCAT($wk_cmd," DimFreccia=",$wk_dim_frecce)
      COMANDO2($wk_cmd)

      COMANDO2(STRCAT("POSIZIONA ",STR($wk_criv_P1.x),",",STR($wk_criv_P1.y+50),",",STR($wk_criv_P1.z),",0"))
      //COMANDO2(STRCAT("POSIZIONA ",STR($P1.x),",",STR($P1.y+50),",",STR($P1.z),",0"))

      if( VAR_VAL(-1,"wk_linee_quota") ==1  )
      {
         GOSUB PosaLineeFineQuota
         DEL_VAR(-1,"wk_linee_quota")
      }

      DEL_VAR(-1,"wk_stile")
      DEL_VAR(-1,"wk_senso")
      DEL_VAR(-1,"wk_scosta")
      //Azzero per evitare che venga salvata una stringa abnorme
      $wk_cmd = ""
   }

   PROCEDURA PosizionaScrittaCAD
   {
      if ( STRCMP($testo,"")==0 ) { EXITSUB }

      COMANDO2("ELEMENTO SCRITTA_CAD")
      COMANDO2("STRUTTURA")

      $wk_cmd = STRCAT("VAR_SET base_0=[",STR($P2.x),",",STR($P2.y),",",STR($P2.z),"]")
      $wk_cmd = STRCAT($wk_cmd," scritta=",APICI(),$testo,APICI())
      $wk_cmd = STRCAT($wk_cmd," X=",STR($Lar_Chr)," Y=",STR($Alt_Chr)," point=",STR($point))

      // ATTENZIONE: di default ritorno ad A , solo se voglio stampare
      // in fronte passerò F
      $wk_fatto = 0
      if ( VAR_EXIST(-1,"wk_faccia") )
      {
         $wk_faccia1 = $wk_faccia
         if ( STRCMP($wk_faccia,"")!=0 )
         {
            $wk_cmd = STRCAT($wk_cmd," faccia=",APICI(),$wk_faccia,APICI())
            $wk_fatto = 1
         }
         DEL_VAR(-1,"wk_faccia")
      }
      if ( $wk_fatto==0 )
         { $wk_cmd = STRCAT($wk_cmd," faccia=",APICI(),"A",APICI()) }

      if ( VAR_EXIST(-1,"wk_senso") )
      {
         $wk_cmd = STRCAT($wk_cmd," senso=",STR($wk_senso))
         DEL_VAR(-1,"wk_senso")
      }

      //Luca 23/02/2022
      if ( VAR_VAL(-1,"wk_view_sotto") ) { $wk_cmd = STRCAT($wk_cmd," ang_z=180") }

      if ( STRCMP($alias_scr,"")!=0 )
         { $wk_cmd = STRCAT($wk_cmd," Alias=",APICI(),$alias_scr,APICI()) }
      COMANDO2($wk_cmd)
      COMANDO2(STRCAT("POSIZIONA ",STR($P2.x)," ",STR($P2.y)," ",STR($P2.z)," ",STR($ang_scr)))

      if ( VAR_EXIST(-1,"wk_GRASSETTO_SOTTOLINEATO") )
      {
         COMANDO2("ELEMENTO SCRITTA_CAD")
         COMANDO2("STRUTTURA")

         $wk_cmd = STRCAT("VAR_SET base_0=[",STR($P2.x),",",STR($P2.y),",",STR($P2.z),"]")
         $wk_len_str = STRLEN($testo)
         $testo1 = ""
         $wk_k_txt = 1
         while ( $wk_k_txt<=$wk_len_str )
         {
            $testo1 = STRCAT($testo1,"_")
            $wk_k_txt = $wk_k_txt + 1
         }
         $wk_cmd = STRCAT($wk_cmd," scritta=",APICI(),$testo1,APICI())
         $wk_cmd = STRCAT($wk_cmd," X=",STR($Lar_Chr)," Y=",STR($Alt_Chr)," point=",STR($point))

         // ATTENZIONE: di default ritorno ad A , solo se voglio stampare
         // in fronte passerò F
         $wk_fatto = 0
         if ( VAR_EXIST(-1,"wk_faccia1") )
         {
            if ( STRCMP($wk_faccia1,"")!=0 )
            {
               $wk_cmd = STRCAT($wk_cmd," faccia=",APICI(),$wk_faccia1,APICI())
               $wk_fatto = 1
            }
            DEL_VAR(-1,"wk_faccia1")
         }
         if ( $wk_fatto==0 )
            { $wk_cmd = STRCAT($wk_cmd," faccia=",APICI(),"A",APICI()) }
         if ( STRCMP($alias_scr,"")!=0 )
            { $wk_cmd = STRCAT($wk_cmd," Alias=",APICI(),$alias_scr,APICI()) }
         COMANDO2($wk_cmd)

         COMANDO2(STRCAT("POSIZIONA ",STR($P2.x)," ",STR($P2.y)," ",STR($P2.z)," ",STR($ang_scr)))

         DEL_VAR(-1,"wk_GRASSETTO_SOTTOLINEATO")
      }

      //Azzero per evitare che venga salvata una stringa abnorme
      $wk_cmd = ""
   }

   //Luca 15/10/2019
   //$wk_qr_len   = lunghezza quota
   //$wk_raggio   = raggio
   //$AliasQuota  = per linee
   //$alias_scr   = per testo
   //$wk_ang_qr   = angolo per scritta
   //$P1          = punto iniziale quota (freccia)
   //$wk_dir      = direzione ( 1 SE - 2 SO - 3 NO - 4 NE)
   //        |
   //  3     |     4
   //    \   |   /
   //    _\| | |/_
   //  ______|_____
   //     _  |  _
   //     /| | |\
   //    /   |   \
   //  2           1

   PROCEDURA PosaQuotaRaggio
   {
      //tengo statico - dimensione frecce
      $wk_qr_fre = 10
      $wk_qr_ofx = $wk_qr_len*COSENO(45)
      $wk_qr_ofz = $wk_qr_len*COSENO(45)

      //offset centro quota
      //$wk_qr_off_cq = ($wk_raggio/2)

      //SE
      $wk_PS = $P1
      $P1.x = $wk_PS.x + COSENO($wk_ang_qr)*$wk_qr_off_cq  +   SENO($wk_ang_qr)*$wk_qr_off_cq
      $P1.z = $wk_PS.z -   SENO($wk_ang_qr)*$wk_qr_off_cq  + COSENO($wk_ang_qr)*$wk_qr_off_cq

      if( $wk_dir==2 )
      {
         $P1.x = $wk_PS.x - COSENO($wk_ang_qr)*$wk_qr_off_cq  +   SENO($wk_ang_qr)*$wk_qr_off_cq
         $P1.z = $wk_PS.z +   SENO($wk_ang_qr)*$wk_qr_off_cq  + COSENO($wk_ang_qr)*$wk_qr_off_cq
      }
      if( $wk_dir==3 )
      {
         $P1.x = $wk_PS.x - COSENO($wk_ang_qr)*$wk_qr_off_cq  -   SENO($wk_ang_qr)*$wk_qr_off_cq
         $P1.z = $wk_PS.z +   SENO($wk_ang_qr)*$wk_qr_off_cq  - COSENO($wk_ang_qr)*$wk_qr_off_cq
      }
      if( $wk_dir==4 )
      {
         $P1.x = $wk_PS.x + COSENO($wk_ang_qr)*$wk_qr_off_cq  -   SENO($wk_ang_qr)*$wk_qr_off_cq
         $P1.z = $wk_PS.z -   SENO($wk_ang_qr)*$wk_qr_off_cq  - COSENO($wk_ang_qr)*$wk_qr_off_cq
      }

      $P2   = $P1
      $P2.x = $P1.x + COSENO($wk_ang_qr)*$wk_qr_fre
      $P2.z = $P1.z -   SENO($wk_ang_qr)*$wk_qr_fre

      if( $wk_dir==2 | $wk_dir==3 )
      {
         $P2   = $P1
         $P2.x = $P1.x - COSENO($wk_ang_qr)*$wk_qr_fre
         $P2.z = $P1.z +   SENO($wk_ang_qr)*$wk_qr_fre
      }

      COMANDO2("ELEMENTO LineaCADXYZ")
      COMANDO2("STRUTTURA")
      $wk_cmd = STRCAT("VAR_SET c_rivestimento_P1.x=",STR($P2.x-$P1.x)," c_rivestimento_P1.y=",STR($P2.y-$P1.y)," c_rivestimento_P1.z=",STR($P2.z-$P1.z))
      $wk_cmd = STRCAT($wk_cmd," Alias=",APICI(),$AliasQuota,APICI())
      COMANDO2($wk_cmd)
      COMANDO2(STRCAT("POSIZIONA ",STR($P1.x)," ",STR($P1.y)," ",STR($P1.z)," 0"))

      $P2   = $P1
      $P2.x = $P2.x +   SENO($wk_ang_qr)*$wk_qr_fre
      $P2.z = $P2.z + COSENO($wk_ang_qr)*$wk_qr_fre

      if( $wk_dir==3 | $wk_dir==4 )
      {
         $P2   = $P1
         $P2.x = $P2.x -   SENO($wk_ang_qr)*$wk_qr_fre
         $P2.z = $P2.z - COSENO($wk_ang_qr)*$wk_qr_fre
      }

      COMANDO2("ELEMENTO LineaCADXYZ")
      COMANDO2("STRUTTURA")
      $wk_cmd = STRCAT("VAR_SET c_rivestimento_P1.x=",STR($P2.x-$P1.x)," c_rivestimento_P1.y=",STR($P2.y-$P1.y)," c_rivestimento_P1.z=",STR($P2.z-$P1.z))
      $wk_cmd = STRCAT($wk_cmd," Alias=",APICI(),$AliasQuota,APICI())
      COMANDO2($wk_cmd)
      COMANDO2(STRCAT("POSIZIONA ",STR($P1.x)," ",STR($P1.y)," ",STR($P1.z)," 0"))

      //SE
      $P2.x = $P1.x + COSENO($wk_ang_qr)*$wk_qr_ofx  +   SENO($wk_ang_qr)*$wk_qr_ofz
      $P2.z = $P1.z -   SENO($wk_ang_qr)*$wk_qr_ofx  + COSENO($wk_ang_qr)*$wk_qr_ofz

      if( $wk_dir==2 )
      {
         $P2.x = $P1.x - COSENO($wk_ang_qr)*$wk_qr_ofx  +   SENO($wk_ang_qr)*$wk_qr_ofz
         $P2.z = $P1.z +   SENO($wk_ang_qr)*$wk_qr_ofx  + COSENO($wk_ang_qr)*$wk_qr_ofz
      }
      if( $wk_dir==3 )
      {
         $P2.x = $P1.x - COSENO($wk_ang_qr)*$wk_qr_ofx  -   SENO($wk_ang_qr)*$wk_qr_ofz
         $P2.z = $P1.z +   SENO($wk_ang_qr)*$wk_qr_ofx  - COSENO($wk_ang_qr)*$wk_qr_ofz
      }
      if( $wk_dir==4 )
      {
         $P2.x = $P1.x + COSENO($wk_ang_qr)*$wk_qr_ofx  -   SENO($wk_ang_qr)*$wk_qr_ofz
         $P2.z = $P1.z -   SENO($wk_ang_qr)*$wk_qr_ofx  - COSENO($wk_ang_qr)*$wk_qr_ofz
      }
      COMANDO2("ELEMENTO LineaCADXYZ")
      COMANDO2("STRUTTURA")
      $wk_cmd = STRCAT("VAR_SET c_rivestimento_P1.x=",STR($P2.x-$P1.x)," c_rivestimento_P1.y=",STR($P2.y-$P1.y)," c_rivestimento_P1.z=",STR($P2.z-$P1.z))
      $wk_cmd = STRCAT($wk_cmd," Alias=",APICI(),$AliasQuota,APICI())
      COMANDO2($wk_cmd)
      COMANDO2(STRCAT("POSIZIONA ",STR($P1.x)," ",STR($P1.y)," ",STR($P1.z)," 0"))

      $testo = STRCAT(" ",$testo)
      $point = 1
      if( $wk_dir==2 | $wk_dir==3 )
      {
         $testo = STRCAT($testo,"  ")
         $point = 7
      }

      $wk_faccia = "A"
      $ang_scr = $wk_ang_qr
      GOSUB PosizionaScrittaCAD

      //RESET
      $ang_scr = 0
   }

   //wk_qd_posizione = 0 --> scritta posizionata in alto a sx
   //wk_qd_posizione = 1 --> scritta posizionata in basso a dx
   PROCEDURA PosizionaQuota_DiametroCilindro
   {
      $P1.x = $wk_PC.x - COSENO($wk_ang_quota_dc)*($wk_qd_dim)  -   SENO($wk_ang_quota_dc)*($wk_qd_dim)
      $P1.z = $wk_PC.z +   SENO($wk_ang_quota_dc)*($wk_qd_dim)  - COSENO($wk_ang_quota_dc)*($wk_qd_dim)

      $P2.x = $wk_PC.x + COSENO($wk_ang_quota_dc)*($wk_qd_dim/2)  +   SENO($wk_ang_quota_dc)*($wk_qd_dim/2)
      $P2.z = $wk_PC.z -   SENO($wk_ang_quota_dc)*($wk_qd_dim/2)  + COSENO($wk_ang_quota_dc)*($wk_qd_dim/2)

      if( VAR_VAL(-1,"wk_qd_posizione") == 1 )
      {
         $P1.x = $wk_PC.x - COSENO($wk_ang_quota_dc)*($wk_qd_dim/2)  -   SENO($wk_ang_quota_dc)*($wk_qd_dim/2)
         $P1.z = $wk_PC.z +   SENO($wk_ang_quota_dc)*($wk_qd_dim/2)  - COSENO($wk_ang_quota_dc)*($wk_qd_dim/2)

         $P2.x = $wk_PC.x + COSENO($wk_ang_quota_dc)*($wk_qd_dim)  +   SENO($wk_ang_quota_dc)*($wk_qd_dim)
         $P2.z = $wk_PC.z -   SENO($wk_ang_quota_dc)*($wk_qd_dim)  + COSENO($wk_ang_quota_dc)*($wk_qd_dim)
      }

      COMANDO2("ELEMENTO LineaCADXYZ")
      COMANDO2("STRUTTURA")
      $wk_cmd = STRCAT("VAR_SET c_rivestimento_P1.x=",STR($P2.x-$P1.x)," c_rivestimento_P1.y=",STR($P2.y-$P1.y)," c_rivestimento_P1.z=",STR($P2.z-$P1.z))
      $wk_cmd = STRCAT($wk_cmd," Alias=",APICI(),$AliasQuota,APICI())
      COMANDO2($wk_cmd)
      COMANDO2(STRCAT("POSIZIONA ",STR($P1.x)," ",STR($P1.y)," ",STR($P1.z)," 0"))

      //$P2 = $P1
      $point = 2
      if( VAR_VAL(-1,"wk_qd_posizione") == 0 )
      {
         $P2 = $P1
         $point = 6
      }
      $testo = STRCAT("d. ",STR($wk_qd_dim)," ")
      if( VAR_VAL( -1, "wk_qd_prof") != 0 )
      {
         $testo = STRCAT( $testo, "p. ", STR($wk_qd_prof))
         DEL_VAR( -1 , "wk_qd_prof")
      }

      //$point = 6
      $wk_faccia = "A"
      $ang_scr = $wk_ang_quota_dc
      GOSUB PosizionaScrittaCAD

      DEL_VAR(-1,"wk_qd_posizione")

      //RESET
      $ang_scr = 0
   }


   ////sostituisco gli eventuali "" con '
   //PROCEDURA EliminaDoppiApiciDaStringa
   //{
   //   if( $wk_del_apici=="" ) { EXITSUB() }
   //
   //   while(STR_INDEX_OF($wk_del_apici,0,APICI())>=0)
   //   {
   //      $wk_del_apici = STRCAT(STRMID(0,STR_INDEX_OF($wk_del_apici,0,APICI()),$wk_del_apici), "'",STRMID(STR_INDEX_OF($wk_del_apici,0,APICI())+1,100,$wk_del_apici))
   //   }
   //}
   //PROCEDURA PosizionaScrittaConSfondo
   //{
   //   $wk_del_apici = $wk_SCF_Testo1   GOSUB EliminaDoppiApiciDaStringa    $wk_SCF_Testo1 = $wk_del_apici
   //   $wk_del_apici = $wk_SCF_Testo2   GOSUB EliminaDoppiApiciDaStringa    $wk_SCF_Testo2 = $wk_del_apici
   //   $wk_del_apici = $wk_SCF_Testo3   GOSUB EliminaDoppiApiciDaStringa    $wk_SCF_Testo3 = $wk_del_apici
   //   $wk_del_apici = $wk_SCF_Testo4   GOSUB EliminaDoppiApiciDaStringa    $wk_SCF_Testo4 = $wk_del_apici
   //   $wk_del_apici = $wk_SCF_Testo5   GOSUB EliminaDoppiApiciDaStringa    $wk_SCF_Testo5 = $wk_del_apici
   //
   //   COMANDO2("ELEMENTO ScrittaConSfondo")
   //   COMANDO2("STRUTTURA")
   //
   //   $wk_cmd = STRCAT( "VAR_SET Testo1=",APICI(),$wk_SCF_Testo1,APICI())
   //   $wk_cmd = STRCAT($wk_cmd," Testo2=",APICI(),$wk_SCF_Testo2,APICI())
   //   $wk_cmd = STRCAT($wk_cmd," Testo3=",APICI(),$wk_SCF_Testo3,APICI())
   //   $wk_cmd = STRCAT($wk_cmd," Testo4=",APICI(),$wk_SCF_Testo4,APICI())
   //   $wk_cmd = STRCAT($wk_cmd," Testo5=",APICI(),$wk_SCF_Testo5,APICI())
   //   if(VAR_EXIST(-1,"wk_SCF_Delta")) { $wk_cmd = STRCAT($wk_cmd," DeltaY=",STR($wk_SCF_Delta)) }
   //
   //   if( VAR_EXIST(-1,"wk_SCF_DEBUG") )
   //   {
   //      $wk_cmd = STRCAT($wk_cmd," DEBUG=",APICI(),$wk_SCF_DEBUG,APICI())
   //      DEL_VAR(-1,"wk_SCF_DEBUG")
   //   }
   //   if( VAR_EXIST(-1,"wk_SCF_TestoDaDividere") )
   //   {
   //      $wk_cmd = STRCAT($wk_cmd," TestoDaDividere=",APICI(),$wk_SCF_TestoDaDividere,APICI())
   //      DEL_VAR(-1,"wk_SCF_TestoDaDividere")
   //   }
   //   COMANDO2($wk_cmd)
   //
   //   $wk_cmd = STRCAT("VAR_SET Lar_Chr=",STR($Lar_Chr)," Alt_Chr=",STR($Alt_Chr))
   //   $wk_cmd = STRCAT($wk_cmd," Parete=",STR($wk_SCF_Parete))
   //   $wk_cmd = STRCAT($wk_cmd," SeparaTesto=",STR($wk_SCF_SeparaTesto))
   //   $wk_cmd = STRCAT($wk_cmd," NoSfondo=",STR($wk_SCF_NoSfondo))
   //   $wk_cmd = STRCAT($wk_cmd," Marker=",STR($wk_SCF_Marker))
   //   if( VAR_EXIST(-1,"wk_SCF_StpISO_parete") )
   //   {
   //      $wk_cmd = STRCAT($wk_cmd," StpISO_parete=",STR($wk_SCF_StpISO_parete))
   //      DEL_VAR(-1,"wk_SCF_StpISO_parete")
   //   }
   //   COMANDO2($wk_cmd)
   //
   //   $wk_cmd = STRCAT("VAR_SET AliasScritte=",APICI(),$wk_SCF_AliasScritte,APICI())
   //   if( VAR_EXIST(-1,"wk_SCF_Bianco") )
   //   {
   //      $wk_cmd = STRCAT($wk_cmd," Bianco=1 c_rivestimento=[255,255,255]")
   //      DEL_VAR(-1,"wk_SCF_Bianco")
   //   }
   //   if( VAR_EXIST(-1,"wk_SCF_Ruota") )
   //   {
   //      $wk_cmd = STRCAT($wk_cmd," Ruota=",STR($wk_SCF_Ruota))
   //      DEL_VAR(-1,"wk_SCF_Ruota")
   //   }
   //   if( VAR_EXIST(-1,"wk_SCF_Centra") )
   //   {
   //      $wk_cmd = STRCAT($wk_cmd," Centra=",STR($wk_SCF_Centra))
   //      DEL_VAR(-1,"wk_SCF_Centra")
   //   }
   //   if( VAR_EXIST(-1,"wk_SCF_Verso") )
   //   {
   //      $wk_cmd = STRCAT($wk_cmd," Verso=",STR($wk_SCF_Verso))
   //      DEL_VAR(-1,"wk_SCF_Verso")
   //   }
   //   if( VAR_EXIST(-1,"wk_SCF_SfondoInRilievo") )
   //   {
   //      $wk_cmd = STRCAT($wk_cmd," SfondoInRilievo=",STR($wk_SCF_SfondoInRilievo))
   //      DEL_VAR(-1,"wk_SCF_SfondoInRilievo")
   //   }
   //   if( VAR_EXIST(-1,"wk_SCF_ScrittaDritta") )
   //   {
   //      $wk_cmd = STRCAT($wk_cmd," ScrittaDritta=",STR($wk_SCF_ScrittaDritta))
   //      DEL_VAR(-1,"wk_SCF_ScrittaDritta")
   //   }
   //   //Luca Polesell 06/05/2016
   //   if( VAR_EXIST(-1,"wk_SCF_ContornoSfondo") )
   //   {
   //      $wk_cmd = STRCAT($wk_cmd," ContornoSfondo=",STR($wk_SCF_ContornoSfondo))
   //      DEL_VAR(-1,"wk_SCF_ContornoSfondo")
   //   }
   //
   //   if( VAR_EXIST(-1,"wk_SCF_NoStampaContorni") )
   //   {
   //      $wk_cmd = STRCAT($wk_cmd," NoStampaContorni=",STR($wk_SCF_NoStampaContorni))
   //      DEL_VAR(-1,"wk_SCF_NoStampaContorni")
   //   }
   //   COMANDO2($wk_cmd)
   //
   //   if( VAR_EXIST(-1,"wk_SCF_ScegliAngolo") )
   //   {
   //      GOSUB ScegliAngoloScrittaConSfondo
   //      DEL_VAR(-1,"wk_SCF_ScegliAngolo")
   //   }
   //   COMANDO2(STRCAT("POSIZIONA ",STR($P2.x)," ",STR($P2.y)," ",STR($P2.z)," ",STR($wk_SCF_ang_scr)))
   //
   //   $wk_SCF_Testo1 = ""
   //   $wk_SCF_Testo2 = ""
   //   $wk_SCF_Testo3 = ""
   //   $wk_SCF_Testo4 = ""
   //   $wk_SCF_Testo5 = ""
   //
   //   $wk_SCF_Delta = 0
   //}

   //USATO PER STAMPE PRODUZIONE
   PROCEDURA InfoCartiglioGen
   {
      $wk_STP_DIS_Titolo = ""

      //"Ordine:"
      $wk_STP_DIS_LBL_1 = MSG(226)
      $wk_STP_DIS_1     = VAR_VAL_STR(-1,"File")

      $wk_STP_DIS_LBL_2 = ""
      $wk_STP_DIS_2     = ""

      //"Cliente:"
      $wk_STP_DIS_LBL_3 = MSG(227)

      //Codice cliente non sempre disponibile
      //$wk_STP_DIS_3     = STRCAT($CodiceCliente," - ",VAR_VAL_STR(-1,"Desc1"))
      $wk_STP_DIS_3     = STRCAT(VAR_VAL_STR(-1,"CodiceCliente")," - ",VAR_VAL_STR(-1,"Desc1"))

      //$wk_STP_DIS_LBL_4 = "Riferimento:"
      $wk_STP_DIS_LBL_4 = MSG(228)
      $wk_STP_DIS_4     = VAR_VAL_STR(-1,"Gestionale_Ordine_Riferimento")

      $wk_STP_DIS_LBL_5 = ""
      $wk_STP_DIS_5     = ""

      $wk_STP_DIS_LBL_6 = MSG(229)
      $wk_STP_DIS_6     = VAR_VAL_STR( -1, "CodOperatore")

      $wk_STP_TitoloInfo = ""
      $wk_STP_DIS_VAR1 = ""  $wk_STP_DIS_VAL1 = ""
      $wk_STP_DIS_VAR2 = ""  $wk_STP_DIS_VAL2 = ""
      $wk_STP_DIS_VAR3 = ""  $wk_STP_DIS_VAL3 = ""
      $wk_STP_DIS_VAR4 = ""  $wk_STP_DIS_VAL4 = ""
      $wk_STP_DIS_VAR5 = ""  $wk_STP_DIS_VAL5 = ""
      $wk_STP_DIS_VAR6 = ""  $wk_STP_DIS_VAL6 = ""
      $wk_STP_DIS_VAR7 = ""  $wk_STP_DIS_VAL7 = ""
      $wk_STP_DIS_VAR8 = ""  $wk_STP_DIS_VAL8 = ""


      $wk_STP_DIS_VAR9  = ""  $wk_STP_DIS_VAL9  = ""
      $wk_STP_DIS_VAR10 = ""  $wk_STP_DIS_VAL10 = ""
      $wk_STP_DIS_VAR11 = ""  $wk_STP_DIS_VAL11 = ""
      $wk_STP_DIS_VAR12 = ""  $wk_STP_DIS_VAL12 = ""
      $wk_STP_DIS_VAR13 = ""  $wk_STP_DIS_VAL13 = ""
      $wk_STP_DIS_VAR14 = ""  $wk_STP_DIS_VAL14 = ""
      $wk_STP_DIS_VAR15 = ""  $wk_STP_DIS_VAL15 = ""
      $wk_STP_DIS_VAR16 = ""  $wk_STP_DIS_VAL16 = ""


      $TSTP_FORM_LOGO_PATH = $path_layout
      $TSTP_FORM_LOGO = "LogoLago.bmp"
      $TSTP_FORM_LOGO_dW =  6
      $TSTP_FORM_LOGO_dH =  6
      $TSTP_FORM_LOGO_W  = 32
      $TSTP_FORM_LOGO_H  = 10

      if( $TGEO )
      {
         //$TGeo_rivenditore_logo_path_bmp contiene percorso completo
         $wk_path_logo_riv = SplitPathName($TGeo_rivenditore_logo_path_bmp,"PATH")
         $wk_logo_riv      = SplitPathName($TGeo_rivenditore_logo_path_bmp,"NAME")

         $TSTP_FORM_LOGO_PATH = $wk_path_logo_riv
         $TSTP_FORM_LOGO = $wk_logo_riv
         $TSTP_FORM_LOGO_H  = 32
      }
   }

   // [ Stampe TSTP personalizzate ---------------------------
   PROCEDURA InizializzaVar_TSTP
   {
      //$TSTP_FORM_LOGO_PATH = STRCAT($path_bdm, "Layout\")
      $TSTP_FORM_LOGO_PATH = $path_layout
      $TSTP_FORM_LOGO = "LogoLago.bmp"

      //$TSTP_FORM_LOGO_dW = 5
      //$TSTP_FORM_LOGO_dH = 6
      //$TSTP_FORM_LOGO_W  = 27
      //$TSTP_FORM_LOGO_H  = 8
      $TSTP_FORM_LOGO_dW =  6
      $TSTP_FORM_LOGO_dH =  6
      $TSTP_FORM_LOGO_W  = 32
      $TSTP_FORM_LOGO_H  = 10

      if( $TGEO )
      {
         //$TGeo_rivenditore_logo_path_bmp contiene percorso completo
         $wk_path_logo_riv = SplitPathName($TGeo_rivenditore_logo_path_bmp,"PATH")
         $wk_logo_riv      = SplitPathName($TGeo_rivenditore_logo_path_bmp,"NAME")

         $TSTP_FORM_LOGO_PATH = $wk_path_logo_riv
         $TSTP_FORM_LOGO = $wk_logo_riv
         $TSTP_FORM_LOGO_H  = 32
      }

      $TSTP_FORM_dW =  12
      $TSTP_FORM_dH =  45
      $TSTP_FORM_W  = 272
      $TSTP_FORM_H  = 153


      $TSTP_AliasFrontali  = "Frontale"

      // FT Personalizzo gli emf per Presotto (originali da GENERICO.emf)
      // FT $TSTP_Pianta_Form    = "GENERICO.emf"
      // FT $TSTP_Prospetti_Form = "GENERICO.emf"
      // FT $TSTP_Utente_Form    = "GENERICO.emf"
      // FT $TSTP_ISO_Form       = "GENERICO.emf"
      $TSTP_Pianta_PathForm          = $path_layout
      $TSTP_PianteProspetti_PathForm = $path_layout
      $TSTP_Prospetti_PathForm       = $path_layout
      $TSTP_Utente_PathForm          = $path_layout
      $TSTP_ISO_PathForm             = $path_layout
      $TSTP_Impianti_PathForm        = $path_layout

      $TSTP_Pianta_Form    = "TSTP_A4_O.emf"
      $TSTP_Prospetti_Form = "TSTP_A4_O.emf"
      $TSTP_Utente_Form    = "TSTP_A4_O.emf"
      $TSTP_ISO_Form       = "TSTP_A4_O.emf"
      $TSTP_Impianti_Form  = "TSTP_A4_O.emf"

      //$TSTP_Pianta_Form    = "TSTP_LAGO_A4_O.emf"
      //$TSTP_Prospetti_Form = "TSTP_LAGO_A4_O.emf"
      //$TSTP_Utente_Form    = "TSTP_LAGO_A4_O.emf"
      //$TSTP_ISO_Form       = "TSTP_LAGO_A4_O.emf"

      $TSTP_Pianta_PathLayout    = $path_tstp
      $TSTP_Prospetti_PathLayout = $path_tstp
      $TSTP_Utente_PathLayout    = $path_tstp
      $TSTP_ISO_PathLayout       = $path_tstp

      $TSTP_PosLimiteBasiPensili = 900
      $TSTP_TolleranzaMuroX      = 3

      $TSTP_UMQuote              = 1
      if( $Stampe_UMPollici )    { $TSTP_UMQuote = 25.4 }

      $TSTP_RiduzioneQuote       = 1
   }

   PROCEDURA StampaCommInt_TSTP_Interat
   {
      COMANDO2("PROJECTHSF Show None")

      GOSUB InizializzaVar_TSTP

      $TSTP_ProcInfoCartiglio = "InfoCartiglioGen_TSTP"
      $TSTP_Pianta_PostQuota    = "Stampa_PostQuota"
      $TSTP_Prospetti_PostQuota = "Stampa_PostQuota"
      $TSTP_ISO_PostQuota       = "Stampa_PostQuota"

      $POSTNOMESTAMPA = ""

      //$VAR_AnteprimaDiStampa = 1
      GOSUB InizioStampaPDF
      if( $TSTP_StampaPreventivo == 1 ) { GOSUB StampaPreventivo }

      LanciaStampa( "TSTP_StampaPianta" )
      LanciaStampa( "TSTP_StampaProspetti" )
      LanciaStampa( "TSTP_StampaPianteProspetti" )
      LanciaStampa( "TSTP_StampaISO" )
      LanciaStampa( "TSTP_StampaUtente" )
      LanciaStampa( "TSTP_StampaImpianti" )

      GOSUB FineStampaPDF

      COMANDO2("PROJECTHSF Show All Default")
      //Cancello il file generato dalla stampa per la scala
      FILE_DEL(STRCAT($path_wmf, $File, ".emf"))

      // cancello eventuali file del preventivo e ripristino il flag
      // per il ripo di preventivo interattivo. Attenzione dò per scontato
      // che il tempo sia stato sufficiente per generare il pdf
      FILE_DEL(SUBST_LABEL(STRCAT($path_temp, $File, "prev.ps")))
      $TIPO_PREV = 1
   }

   // Anteprima su stampa interattiva
   PROCEDURA StampaCommInt_TSTP
   {
      // imposto i default per le stampe
      $VAR_AnteprimaDiStampa = 1

      $TSTP_StampaPreventivo = 0

      #ifdef AGE;RIV
         if( EasyStore() )  { $TSTP_EnablePreventivo = 0 }
      #endif

      // stampa in pianta in b/n e a colori
      $TSTP_StampaPianta_BN  = 1
      $TSTP_StampaPianta_COL = 0

      //stampa prospetti in b/n con/senza frontali
      $TSTP_StampaProspetti_BN_CF = 0
      $TSTP_StampaProspetti_BN_SF = 0

      //stampa prospetti a colori con/senza frontali
      $TSTP_StampaProspetti_COL_CF = 0
      $TSTP_StampaProspetti_COL_SF = 0

      //stampa piante/prospetti
      $TSTP_StampaPianteProspetti_BN  = 0
      $TSTP_StampaPianteProspetti_COL = 0

      // stampe assonometrie isometriche in bianco nero (frontali chiusi/aperti/senza)
      $TSTP_StampaAssonometrie_BN_FC = 0
      $TSTP_StampaAssonometrie_BN_FA = 0
      $TSTP_StampaAssonometrie_BN_SF = 0

      // stampe assonometrie isometriche a colori (frontali chiusi/aperti/senza)
      $TSTP_StampaAssonometrie_COL_FC = 1
      $TSTP_StampaAssonometrie_COL_FA = 0
      $TSTP_StampaAssonometrie_COL_SF = 0

      // stampe vista utente in b/n e a colori
      $TSTP_StampaUtente_BN  = 0
      $TSTP_StampaUtente_COL = 0

      //GOSUB DEV_DefualtDlgSTAMPA

      //Luca 03/11/2021 default disabilito tutto
      $TSTP_StampaImpianti_Completo  = 0
      $TSTP_StampaImpianti_Elettrico = 0
      $TSTP_StampaImpianti_Idraulico = 0

      $TSTP_Impianti_VediPF          = 0
      $TSTP_Impianti_VediMobili      = 0
      $TSTP_Impianti_VediSimboli     = 0

      //Simone 15/12/2021
      //attivo stampa impianti
      $TSTP_Impianti = 1
      GOSUB TSTP_SetOptionDLG

      COMANDO2( STRCAT("run_dll_cmd bdmdialog MakeDialog ",APICI(),  $TSTP_FileDialog, "|", "TSTP",APICI()))
      if ( $DlgResult__ ==0 )  { EXITSUB() }

      //piante/prospetti non gestita correttamente, disabilito
      $TSTP_StampaPianteProspetti_BN  = 0
      $TSTP_StampaPianteProspetti_COL = 0

      GOSUB TPRINT_DlgInizio

      GOSUB StampaCommInt_TSTP_Interat

      GOSUB TPRINT_DlgFine
   }

   // Stampa batch nel fine ordine
   PROCEDURA StampaCommBat_TSTP
   {
      // imposto i default per le stampe
      $VAR_AnteprimaDiStampa = 0
      $TSTP_StampaPreventivo = 0

      // stampa in pianta in b/n e a colori
      $TSTP_StampaPianta_BN  = 1
      $TSTP_StampaPianta_COL = 0

      //stampa prospetti in b/n con/senza frontali
      $TSTP_StampaProspetti_BN_CF = 0
      $TSTP_StampaProspetti_BN_SF = 0

      //stampa prospetti a colori con/senza frontali
      $TSTP_StampaProspetti_COL_CF = 1
      $TSTP_StampaProspetti_COL_SF = 0

      //stampa piante/prospetti
      $TSTP_StampaPianteProspetti_BN  = 0
      $TSTP_StampaPianteProspetti_COL = 0

      // stampe assonometrie isometriche in bianco nero (frontali chiusi/aperti/senza)
      $TSTP_StampaAssonometrie_BN_FC = 1
      $TSTP_StampaAssonometrie_BN_FA = 0
      $TSTP_StampaAssonometrie_BN_SF = 0

      // stampe assonometrie isometriche a colori (frontali chiusi/aperti/senza)
      $TSTP_StampaAssonometrie_COL_FC = 0
      $TSTP_StampaAssonometrie_COL_FA = 0
      $TSTP_StampaAssonometrie_COL_SF = 0

      // stampe vista utente in b/n e a colori
      $TSTP_StampaUtente_BN  = 0
      $TSTP_StampaUtente_COL = 0

      $wk_stampa_batch = 1

#ifdef TEC;AZI
      GOSUB StampaComm_TSTP
#endif

#ifndef TEC;AZI
      GOSUB StampaCommRIV_TSTP
#endif
   }

   //fine ordine azienda
   PROCEDURA StampaComm_TSTP
   {
      $wk_log = 0
      LogProcedura( "Start", "StampaComm_TSTP", $wk_log)

      COMANDO2("PROJECTHSF Show None")

      //Luca 22/07/2021
      $SET_STAMPA = "COMM"

      GOSUB InizializzaVar_TSTP
      $TSTP_ProcInfoCartiglio = "InfoCartiglioGen_TSTP"
      //$TSTP_ProcInfoCartiglio = "VariabiliTestata"
      //$TSTP_ProcNomeFile = "TSTP_NomeFile_Pers"
      //GOSUB InfoCartiglio_TSTP
      //Luca 26/09/2019 per ora tengo comune
      $TSTP_Pianta_PostQuota    = "Stampa_PostQuota"
      $TSTP_Prospetti_PostQuota = "Stampa_PostQuota"
      $TSTP_ISO_PostQuota       = "Stampa_PostQuota"

      //GOSUB InizioStampaPDF
      //if( $TSTP_StampaPreventivo == 1 ) { GOSUB StampaPreventivo }
      //$POSTNOMESTAMPA = "-PREVENTIVO"
      //GOSUB FineStampaPDF

      // Chiamata da funzione LanciaStampa
      // FT: OLD GOSUB TSTP_StampaPianta
      // FT: OLD GOSUB TSTP_StampaProspetti
      // FT: OLD GOSUB TSTP_StampaISO
      // FT: OLD GOSUB TSTP_StampaUtente
      GOSUB InizioStampaPDF
      LanciaStampa( "TSTP_StampaPianta" )
      //$POSTNOMESTAMPA = "-pianta"
      //$POSTNOMESTAMPA = "-vista_superiore"
      $POSTNOMESTAMPA = "-VISTA_SUPERIORE"
      GOSUB FineStampaPDF

      GOSUB InizioStampaPDF
      LanciaStampa( "TSTP_StampaProspetti" )
      //$POSTNOMESTAMPA = "-vista_frontale"
      $POSTNOMESTAMPA = "-VISTA_FRONTALE"
      GOSUB FineStampaPDF

      GOSUB InizioStampaPDF
      LanciaStampa( "TSTP_StampaISO" )
      //$POSTNOMESTAMPA = "-assonometria_bn"
      $POSTNOMESTAMPA = "-ASSONOMETRIA_BN"
      GOSUB FineStampaPDF

      GOSUB InizioStampaPDF
      $TSTP_StampaAssonometrie_BN_FC = 0
      $TSTP_StampaAssonometrie_COL_FA = 1
      LanciaStampa( "TSTP_StampaISO" )
      //$POSTNOMESTAMPA = "-assonometria_colori"
      $POSTNOMESTAMPA = "-ASSONOMETRIA_COLORI"
      GOSUB FineStampaPDF

      //Luca 18/07/2019 aggiunta stampa richiesta Francesco
      GOSUB InizioStampaPDF
      $TSTP_StampaAssonometrie_COL_FA = 0
      $TSTP_StampaAssonometrie_COL_FC = 1
      LanciaStampa( "TSTP_StampaISO" )
      //$POSTNOMESTAMPA = "-assonometria_colori"
      $POSTNOMESTAMPA = "-ASSONOMETRIA_DESIGN"
      GOSUB FineStampaPDF

      //GOSUB InizioStampaPDF
      //LanciaStampa( "TSTP_StampaUtente" )
      //GOSUB FineStampaPDF

      COMANDO2("PROJECTHSF Show All Default")

      //Cancello il file generato dalla stampa per la scala
      FILE_DEL(STRCAT($path_wmf, $File, ".emf"))

      // cancello eventuali file del preventivo e ripristino il flag
      // per il ripo di preventivo interattivo. Attenzione dò per scontato
      // che il tempo sia stato sufficiente per generare il pdf
      FILE_DEL(SUBST_LABEL(STRCAT($path_temp, $File, "prev.ps")))
      $TIPO_PREV = 1

      $SET_STAMPA = ""

      LogProcedura( "End", "StampaComm_TSTP", $wk_log)
   }

   //fine ordine rivenditore
   PROCEDURA StampaCommRIV_TSTP
   {
      $wk_log = 0
      LogProcedura( "Start", "StampaComm_TSTP", $wk_log)

      COMANDO2("PROJECTHSF Show None")

      GOSUB InizializzaVar_TSTP

      $TSTP_StampaPreventivo = 1

      $TSTP_ProcInfoCartiglio = "InfoCartiglioGen_TSTP"
      $TSTP_Pianta_PostQuota    = "Stampa_PostQuota"
      $TSTP_Prospetti_PostQuota = "Stampa_PostQuota"
      $TSTP_ISO_PostQuota       = "Stampa_PostQuota"

      GOSUB InizioStampaPDF

      if( $TSTP_StampaPreventivo == 1 ) { GOSUB StampaPreventivo }

      $TSTP_StampaAssonometrie_BN_FC = 0
      $TSTP_StampaAssonometrie_COL_FA = 1

      LanciaStampa( "TSTP_StampaPianta" )
      LanciaStampa( "TSTP_StampaProspetti" )
      LanciaStampa( "TSTP_StampaISO" )

      $POSTNOMESTAMPA = ""

      GOSUB FineStampaPDF

      COMANDO2("PROJECTHSF Show All Default")

      //Cancello il file generato dalla stampa per la scala
      FILE_DEL(STRCAT($path_wmf, $File, ".emf"))

      // cancello eventuali file del preventivo e ripristino il flag
      // per il ripo di preventivo interattivo. Attenzione dò per scontato
      // che il tempo sia stato sufficiente per generare il pdf
      FILE_DEL(SUBST_LABEL(STRCAT($path_temp, $File, "prev.ps")))
      $TIPO_PREV = 1

      LogProcedura( "End", "StampaComm_TSTP", $wk_log)
   }

   PROCEDURA StampaComm
   {
      //in azienda vengono generati n-pdf con varie visti e nomi
      //rivenditori unico PDF

      #ifndef AGE;RIV
         GOSUB StampaComm_AZI
      #endif

      #ifdef AGE;RIV
         GOSUB StampaComm_RIV
      #endif
   }

   PROCEDURA StampaPreventivo
   {
      // Attenzine Metron2Gemo salva il file PS nella cartella WMF con nome: %path_wmf%<File>prev.ps
      //TEST $path_temp = VAR_VAL_STR(-1, "path_temp")
      //TEST if( STRLEN($path_temp)<2 ) { $path_temp = GET_PATH("temp") }
      //TEST if( STRLEN($path_temp)<2 ) { $path_temp = STRCAT(GET_PATH("starting"), "\") }

      COMANDO2(STRCAT("RUN_DLL_CMD ", $InOutDll, " faiPrev2 GENERAPS"))
      //$wk_psfile = STRCAT($path_temp,$File, "prev.ps")
      $wk_psfile = STRCAT($path_wmf, $File, "prev.ps")

      $ArrPrnPs = VAR_VAL(-1, "ArrPrnPs") + 1
      VAR_CREATE_STR(-1, STRCAT("ArrPrnPs_##",  STR($ArrPrnPs)), $wk_psfile, 0, "")

      if( $TXE_TPrintDlg == 1 )
      {
         $MOSTRA_PDF_GENERATO = 0

         $wk_PathNomePS = 1
         $wk_PathNomePS_##1 = $wk_psfile
         $wk_PathNomePDF = STRCAT($path_wmf, "PREVENTIVO_", $File, ".pdf")
         $wk_StringaPDFtoPS = STRCAT(APICI(), $wk_PathNomePDF, ";", STR($PDF_Risoluzione), ";", $install_dir, ";$wk_PathNomePS", APICI())
         COMANDO2(STRCAT("run_dll_cmd righe2.dll PStoPDF ", $wk_StringaPDFtoPS))

         COMANDO2(STRCAT("TPRINT CMD MOVE PDF ", $wk_PathNomePDF))

         //DEL_VAR(-1, "wk_*")
      }
   }

   //per stampe commerciali
   PROCEDURA InfoCartiglioGen_TSTP
   {
      //EXITSUB()
      // reperisco i valori da stampare nel cartiglio
      // GOSUB StpDescrizioniStampa
      // GOSUB StpValoriStampa

      //ordine
      //$wk_TSTP_DIS_LBL_1 = "Ordine:"
      $wk_TSTP_DIS_LBL_1 = MSG(226)
      $wk_TSTP_DIS_1     = VAR_VAL_STR(-1,"File")

      $wk_TSTP_DIS_LBL_2 = ""
      $wk_TSTP_DIS_2     = ""

      //$wk_TSTP_DIS_LBL_3 = "Cliente:"
      $wk_TSTP_DIS_LBL_3 = MSG(227)
      //$wk_TSTP_DIS_3     = STRCAT(VAR_VAL_STR$CodiceCliente," - ",VAR_VAL_STR(-1,"Desc1"))
      $wk_TSTP_DIS_3     = STRCAT(VAR_VAL_STR(-1,"CodiceCliente")," - ",VAR_VAL_STR(-1,"Desc1"))

      //$wk_TSTP_DIS_LBL_4 = "Riferimento:"
      $wk_TSTP_DIS_LBL_4 = MSG(228)
      $wk_TSTP_DIS_4     = VAR_VAL_STR(-1,"Gestionale_Ordine_Riferimento")

      $wk_TSTP_DIS_LBL_5 = ""
      $wk_TSTP_DIS_5     = ""

      $wk_TSTP_DIS_LBL_6 = ""
      $wk_TSTP_DIS_6     = ""

     #ifndef AGE;RIV
      $wk_TSTP_DIS_LBL_6 = "Operatore:"
      $wk_TSTP_DIS_6     = VAR_VAL_STR( -1, "CodOperatore")

      if( STRLEN($wk_TSTP_DIS_4) > 10)
      {
         $wk_TSTP_DIS_4 = FMT( "{} - {}: {}", $wk_TSTP_DIS_4, LEFT($wk_TSTP_DIS_LBL_6, 3), $wk_TSTP_DIS_6)

         $wk_TSTP_DIS_LBL_6 = ""
         $wk_TSTP_DIS_6     = ""
      }
     #endif

      $wk_TSTP_DIS_VAR1 = ""  $wk_TSTP_DIS_VAL1 = ""
      $wk_TSTP_DIS_VAR2 = ""  $wk_TSTP_DIS_VAL2 = ""
      $wk_TSTP_DIS_VAR3 = ""  $wk_TSTP_DIS_VAL3 = ""
      $wk_TSTP_DIS_VAR4 = ""  $wk_TSTP_DIS_VAL4 = ""
      $wk_TSTP_DIS_VAR5 = ""  $wk_TSTP_DIS_VAL5 = ""
      $wk_TSTP_DIS_VAR6 = ""  $wk_TSTP_DIS_VAL6 = ""
      $wk_TSTP_DIS_VAR7 = ""  $wk_TSTP_DIS_VAL7 = ""
      $wk_TSTP_DIS_VAR8 = ""  $wk_TSTP_DIS_VAL8 = ""

      //GOSUB DEV_RiempiVarTESTATA

      //riprendo quello presente in TSTP_InfoCartiglio
      //$wk_TSTP_DIS_SCALA = STRCAT("SCALA 1:",STR($wk_TSTP_Scala))
      $wk_TSTP_DIS_SCALA = STRCAT(MSG(230)," 1:",STR($wk_TSTP_Scala))

      if( $TSTP_ProcInfoCartiglioAdd!="" ) { GOSUB $TSTP_ProcInfoCartiglioAdd }

      $wk_TSTP_DESC_LAYOUT = $TSTP_STAMPA_IN_CORSO

      if( $TSTP_STAMPA_IN_CORSO == "PIANTA" )
      {
         //$wk_TSTP_DIS_Titolo = "PIANTA"
         //$wk_TSTP_DIS_TitoloDisegno = "PIANTA"
         $wk_TSTP_DIS_Titolo = UPPER(MSG(205))
         $wk_TSTP_DIS_TitoloDisegno = UPPER(MSG(205))

         if( $TSTP_Pianta_PostQuota == "StampaPianta_Bottom" )
         {
            $wk_TSTP_DIS_Titolo = "STAMPA VISTA DA SOTTO"
            $wk_TSTP_DIS_TitoloDisegno = "VISTA DA SOTTO"
         }

         $wk_TSTP_DESC_LAYOUT = STRCAT($wk_TSTP_DIS_Titolo," ",$TSTP_STAMPA_IN_CORSO_TP)
         EXITSUB()
      }

      if( $TSTP_STAMPA_IN_CORSO == "PROSPETTI" )
      {
         //$wk_TSTP_DIS_Titolo = "STAMPA PROSPETTI"
         //$wk_TSTP_DIS_TitoloDisegno = STRCAT("PROSPETTO PARETE ",$wk_TSTP_PareteInStampa1)
         $wk_TSTP_DIS_Titolo = MSG(213)
         $wk_TSTP_DIS_TitoloDisegno = STRCAT(MSG(214)," ",$wk_TSTP_PareteInStampa1)

         //if( LEFT($TSTP_STAMPA_IN_CORSO_TP,2)=="BN" )  { $wk_TSTP_DESC_LAYOUT = STRCAT($wk_TSTP_DIS_TitoloDisegno," BN") }
         //else                                          { $wk_TSTP_DESC_LAYOUT = STRCAT($wk_TSTP_DIS_TitoloDisegno," COL") }
         //if( RIGHT($TSTP_STAMPA_IN_CORSO_TP,2)=="CF" ) { $wk_TSTP_DESC_LAYOUT = STRCAT($wk_TSTP_DESC_LAYOUT," CON") }
         //else                                          { $wk_TSTP_DESC_LAYOUT = STRCAT($wk_TSTP_DESC_LAYOUT," SENZA") }
         //$wk_TSTP_DESC_LAYOUT = STRCAT($wk_TSTP_DESC_LAYOUT," FRONTALI")
         if( LEFT($TSTP_STAMPA_IN_CORSO_TP,2)=="BN" )  { $wk_TSTP_DESC_LAYOUT = STRCAT($wk_TSTP_DIS_TitoloDisegno," ",MSG(217)) }
         else                                          { $wk_TSTP_DESC_LAYOUT = STRCAT($wk_TSTP_DIS_TitoloDisegno," ",MSG(218)) }
         if( RIGHT($TSTP_STAMPA_IN_CORSO_TP,2)=="CF" ) { $wk_TSTP_DESC_LAYOUT = STRCAT($wk_TSTP_DESC_LAYOUT," ",MSG(220)) }
         else                                          { $wk_TSTP_DESC_LAYOUT = STRCAT($wk_TSTP_DESC_LAYOUT," ",MSG(221)) }
         //$wk_TSTP_DESC_LAYOUT = STRCAT($wk_TSTP_DESC_LAYOUT," FRONTALI")
         $wk_TSTP_DESC_LAYOUT = STRCAT($wk_TSTP_DESC_LAYOUT," ",MSG(221))

         //Luca 18/05/2020
         GOSUB InfoCartiglio_StampaProspetti
         EXITSUB()
      }

      if( $TSTP_STAMPA_IN_CORSO == "ISO" )
      {
         //$wk_TSTP_DIS_Titolo = "STAMPA ASSONOMETRIE"
         //$wk_TSTP_DIS_TitoloDisegno = STRCAT("ASSONOMETRIA ",$wk_TSTP_PareteInStampa1)
         $wk_TSTP_DIS_Titolo = MSG(215)
         $wk_TSTP_DIS_TitoloDisegno = STRCAT(MSG(216)," ",$wk_TSTP_PareteInStampa1)

         if( $wk_TSTP_PareteInStampa2!="" ) { $wk_TSTP_DIS_TitoloDisegno = STRCAT($wk_TSTP_DIS_TitoloDisegno,"-",$wk_TSTP_PareteInStampa2) }

         //if( LEFT($TSTP_STAMPA_IN_CORSO_TP,2)=="BN" ) { $wk_TSTP_DESC_LAYOUT = STRCAT($wk_TSTP_DIS_TitoloDisegno," BN") }
         //else                                         { $wk_TSTP_DESC_LAYOUT = STRCAT($wk_TSTP_DIS_TitoloDisegno," COL") }
         //if( RIGHT($TSTP_STAMPA_IN_CORSO_TP,2)=="FC" ) { $wk_TSTP_DESC_LAYOUT = STRCAT($wk_TSTP_DESC_LAYOUT," FRONTALI CHIUSI") }
         //if( RIGHT($TSTP_STAMPA_IN_CORSO_TP,2)=="FA" ) { $wk_TSTP_DESC_LAYOUT = STRCAT($wk_TSTP_DESC_LAYOUT," FRONTALI APERTI") }
         //if( RIGHT($TSTP_STAMPA_IN_CORSO_TP,2)=="SF" ) { $wk_TSTP_DESC_LAYOUT = STRCAT($wk_TSTP_DESC_LAYOUT," SENZA FRONTALI") }

         if( LEFT($TSTP_STAMPA_IN_CORSO_TP,2)=="BN" ) { $wk_TSTP_DESC_LAYOUT = STRCAT($wk_TSTP_DIS_TitoloDisegno," ",MSG(217)) }
         else                                         { $wk_TSTP_DESC_LAYOUT = STRCAT($wk_TSTP_DIS_TitoloDisegno," ",MSG(218)) }
         if( RIGHT($TSTP_STAMPA_IN_CORSO_TP,2)=="FC" ) { $wk_TSTP_DESC_LAYOUT = STRCAT($wk_TSTP_DESC_LAYOUT," ",MSG(222)) }
         if( RIGHT($TSTP_STAMPA_IN_CORSO_TP,2)=="FA" ) { $wk_TSTP_DESC_LAYOUT = STRCAT($wk_TSTP_DESC_LAYOUT," ",MSG(223)) }
         if( RIGHT($TSTP_STAMPA_IN_CORSO_TP,2)=="SF" ) { $wk_TSTP_DESC_LAYOUT = STRCAT($wk_TSTP_DESC_LAYOUT," ",MSG(224)) }

         EXITSUB()
      }

      if( $TSTP_STAMPA_IN_CORSO == "UTENTE" )
      {
          //$wk_TSTP_DIS_Titolo = "STAMPA VISTA UTENTE"
         $wk_TSTP_DIS_Titolo = MSG(225)
         $wk_TSTP_DIS_TitoloDisegno = ""
         //$wk_TSTP_DESC_LAYOUT = STRCAT("VISTA UTENTE ",$TSTP_STAMPA_IN_CORSO_TP)
         $wk_TSTP_DESC_LAYOUT = STRCAT(MSG(212)," ",$TSTP_STAMPA_IN_CORSO_TP)
         EXITSUB()
      }

      //if( $TSTP_STAMPA_IN_CORSO == "PIANTE-PROSPETTI" )
      if( $TSTP_STAMPA_IN_CORSO == "PIANTA-PROSPETTO" )
      {
         $wk_TSTP_DIS_Titolo = "STAMPA PIANTE-PROSPETTI"
         $wk_TSTP_DIS_TitoloDisegno = STRCAT("PIANTA-PROSPETTO PARETE ",$wk_TSTP_PareteInStampa1)
         $wk_TSTP_DESC_LAYOUT = STRCAT($wk_TSTP_DIS_TitoloDisegno," ",$TSTP_STAMPA_IN_CORSO_TP)
         EXITSUB()
      }

      if( $TSTP_STAMPA_IN_CORSO == "IMPIANTI" )
      {
         $wk_TSTP_DIS_Titolo = MSG(231)
         $wk_TSTP_DIS_TitoloDisegno = STRCAT(MSG(232)," ",$wk_TSTP_PareteInStampa1)

         EXITSUB()
      }

      //Luca 04/06/2021
      if( $TSTP_STAMPA_IN_CORSO == "2VISTE" )
      {
         $wk_TSTP_DIS_Titolo = MSG(213)
         $wk_TSTP_DIS_TitoloDisegno = MSG(214)

         if( LEFT($TSTP_STAMPA_IN_CORSO_TP,2)=="BN" )  { $wk_TSTP_DESC_LAYOUT = STRCAT($wk_TSTP_DIS_TitoloDisegno," ",MSG(217)) }
         else                                          { $wk_TSTP_DESC_LAYOUT = STRCAT($wk_TSTP_DIS_TitoloDisegno," ",MSG(218)) }
         if( RIGHT($TSTP_STAMPA_IN_CORSO_TP,2)=="CF" ) { $wk_TSTP_DESC_LAYOUT = STRCAT($wk_TSTP_DESC_LAYOUT," ",MSG(220)) }
         else                                          { $wk_TSTP_DESC_LAYOUT = STRCAT($wk_TSTP_DESC_LAYOUT," ",MSG(221)) }
         $wk_TSTP_DESC_LAYOUT = STRCAT($wk_TSTP_DESC_LAYOUT," ",MSG(221))

         GOSUB InfoCartiglio_StampaProspetti
         EXITSUB()
      }

      EXITSUB()

      // Creo dinamicamente le variabili globali per la compilazione del form
      // (si possono gestire fino a 20 variabili/valori per Delta). Al momento
      // ne gestisco solo 8 come permesso dal form generico
      $wk_nc = 1
      //while($wk_nc<=20)
      while( $wk_nc <= 8 )
      {
         $wk_per_nome_var = "TST_Var"

         if($wk_nc<10) { $wk_per_nome_var = "TST_Var0" }

         $wk_nome_var = STRCAT("GEST_",VAR_VAL_STR(-1,STRCAT($wk_per_nome_var,STR($wk_nc))))

         VAR_CREATE_STR(-1,STRCAT("wk_TSTP_DIS_VAR", STR($wk_nc)), STRDADB(-1, "DS_VARIANTE", $wk_nome_var),  0, "")
         VAR_CREATE_STR(-1,STRCAT("wk_TSTP_DIS_VAL", STR($wk_nc)), STRDADB(-1, "DS_OPZIONE", $wk_nome_var),  0, "")

         $wk_nc = $wk_nc + 1
      }

      if( $TSTP_ProcInfoCartiglioAdd != "" ) { GOSUB $TSTP_ProcInfoCartiglioAdd }

      //$wk_TSTP_DIS_Titolo = STRCAT($DES_RagSocCliente, " ", $VAL_RagSocCliente)
      //$wk_TSTP_TitoloInfo = $COLLEZIONE

      //GOSUB InfoCartiglioCurr_TSTP
   }

   //PROCEDURA VariabiliTestata
   //{
   //   //DISPLAY2("VariabiliTestata")
   //
   //   $wk_STP_DES_Cliente = "cliente"
   //   $wk_STP_DES_Rif = "riferimento"
   //   $wk_STP_DES_Ordine = "ordine"
   //   $wk_STP_DES_Data = "data consegna"
   //   $wk_STP_DES_Operatore = "operatore"
   //   $wk_STP_Cliente = VAR_VAL_STR(-1,"CampoCliente")
   //   $wk_STP_Rif = VAR_VAL_STR(-1,"CampoRiferimento")
   //   $wk_STP_Ordine = VAR_VAL_STR(-1,"CampoNOrdine")
   //   $wk_STP_Data = VAR_VAL_STR(-1,"CampoDataConsegna")
   //   $wk_STP_Operatore = VAR_VAL_STR(-1,"CodOperatore")
   //   $wk_STP_DES_Scala = "SCALA 1:20"
   //
   //   $wk_data1=DATA(1)
   //   $wk_Data_Stp=STRCAT(STRMID(8,2,$wk_data1),"/",STRMID(5,2,$wk_data1),"/",STRMID(0,4,$wk_data1))
   //   $wk_Ora_Stp =STRMID(11,5,$wk_data1)
   //   $wk_Testo_Fisso = MSG(10131)
   //}

   //// chiamata all'interno di ogni singola stampa
   //PROCEDURA InfoCartiglioCurr_TSTP
   //{
   //   $wk_TSTP_DIS_SCALA = STRCAT($DES_Scala, " 1:", STR($wk_TSTP_Scala))
   //
   //   wk_desc_stampa = ""
   //   wk_desc_stampa_bn_col = ""
   //   wk_desc_stampa_cs_fro = ""
   //
   //   if( $TSTP_STAMPA_IN_CORSO == "PIANTA" )        { wk_desc_stampa = "PIANTA" }
   //   if( $TSTP_STAMPA_IN_CORSO == "PROSPETTI" )     { wk_desc_stampa = "PROSPETTI" }
   //   if( $TSTP_STAMPA_IN_CORSO == "ISO" )           { wk_desc_stampa = "ASSONOMETRIE" }
   //   if( $TSTP_STAMPA_IN_CORSO == "UTENTE" )        { wk_desc_stampa = "VISTA UTENTE" }
   //
   //   if( $TSTP_StampaPianta_BN == 1
   //     | $TSTP_StampaProspetti_BN_CF == 1
   //     | $TSTP_StampaProspetti_BN_SF == 1
   //     | $TSTP_StampaAssonometrie_BN_FC == 1
   //     | $TSTP_StampaAssonometrie_BN_FA == 1
   //     | $TSTP_StampaAssonometrie_BN_SF == 1
   //     | $TSTP_StampaUtente_BN == 1
   //     )
   //     {
   //       wk_desc_stampa_bn_col = "IN B/N"
   //     }
   //
   //   if( $TSTP_StampaPianta_COL == 1
   //     | $TSTP_StampaProspetti_COL_CF == 1
   //     | $TSTP_StampaProspetti_COL_SF == 1
   //     | $TSTP_StampaAssonometrie_COL_FC == 1
   //     | $TSTP_StampaAssonometrie_COL_FA == 1
   //     | $TSTP_StampaAssonometrie_COL_SF == 1
   //     | $TSTP_StampaUtente_COL == 1
   //     )
   //     {
   //       wk_desc_stampa_bn_col = "A COLORI"
   //     }
   //
   //   if( $TSTP_StampaProspetti_BN_CF == 1
   //     | $TSTP_StampaProspetti_COL_CF == 1
   //     | $TSTP_StampaAssonometrie_BN_FC == 1
   //     | $TSTP_StampaAssonometrie_COL_FC == 1
   //     )
   //     {
   //        //wk_desc_stampa_cs_fro = "CON FRONTALI"
   //        wk_desc_stampa_cs_fro = ""
   //     }
   //
   //   if( $TSTP_StampaProspetti_BN_SF == 1
   //     | $TSTP_StampaProspetti_COL_SF == 1
   //     | $TSTP_StampaAssonometrie_BN_SF == 1
   //     | $TSTP_StampaAssonometrie_COL_SF == 1
   //     )
   //     {
   //        wk_desc_stampa_cs_fro = "SENZA FRONTALI"
   //     }
   //
   //   if( $TSTP_StampaAssonometrie_BN_FA == 1
   //     | $TSTP_StampaAssonometrie_COL_FA == 1
   //     )
   //     {
   //        wk_desc_stampa_cs_fro = "CON FRONTALI APERTI"
   //     }
   //
   //   //$wk_TSTP_DIS_TitoloDisegno = STRCAT("STAMPA ",wk_desc_stampa, " ",wk_desc_stampa_bn_col, " ",wk_desc_stampa_cs_fro)
   //   $wk_TSTP_DIS_TitoloDisegno = STRCAT("STAMPA ",wk_desc_stampa)
   //}

   //PROCEDURA SetStampaInLingua
   //{
   //   if( VAR_EXIST(-1, "StampaInLingua") != 1 )
   //   {
   //      VAR_CREATE_NUM(-1, "StampaInLingua", 0, $MODE_NOSAVE, "")
   //   }
   //   else
   //   {
   //      // per eventuali vecchi ordini
   //      if( IS_VAR_FIXED(-1, "StampaInLingua") == 1 )
   //      {
   //         DEL_VAR_MODIFICATE(-1, "StampaInLingua")
   //         $StampaInLingua = 0
   //      }
   //   }
   //
   //   // verifico il valore in testata ordine per la lingua in stampa
   //   wk_LinguaStampe = VAR_VAL_STR(-1, "TST_LinguaStampe")
   //
   //   // il codice lingua deve essere di 3 caratteri per essere valido
   //   // ITA, FRA, ING, SPA, TED (altrimenti esco se vuoto)
   //   if( STRLEN(wk_LinguaStampe) != 3 )  { EXITSUB() }
   //
   //   // se sono diverso da italiano attivo il flag per le stampe in lingua
   //   if( wk_LinguaStampe != "ITA" )       { $StampaInLingua = 1 }
   //}

   //// setto (o ripristino) il FLAG di stampa
   //PROCEDURA SetDesInLingua
   //{
   //   if( VAR_EXIST(-1, "DesInLingua") == 1 )
   //   {
   //      if( IS_VAR_FIXED(-1, "DesInLingua") == 1 )  { DEL_VAR_MODIFICATE(-1, "DesInLingua") }
   //   }
   //
   //   // la dichiaro nosave
   //   VAR_CREATE_NUM(-1, "DesInLingua", 0, $MODE_NOSAVE, "")
   //
   //   // In caso di azi/tec DesInLingua DEVE sempre essere 0, a parte quando viene temporaneamente
   //   // messo a 1 per prelevare le descrizione per fare le stampe in lingua per clienti stranieri.
   //   // Poi deve essere ripristinato e rimesso al valore originale
   //   #ifdef AZI;TEC
   //      $DesInLingua = 0
   //   #endif
   //
   //   // In caso di age/riv DesInLingua DEVE sempre essere allineata a StampaInLingua,
   //   // in quanto
   //   #ifdef AGE;RIV
   //      // assegno il valore di StampaInLingua
   //      $DesInLingua = VAR_VAL(-1, "StampaInLingua")
   //   #endif
   //}
   //
   //// setto (o ripristino) il FLAG di stampa per le singole procedure di stampa
   //PROCEDURA SetFaiStampaInLingua
   //{
   //   if( VAR_EXIST(-1, "FaiStampaInLingua") == 1 )
   //   {
   //      if( IS_VAR_FIXED(-1, "FaiStampaInLingua") == 1 )  { DEL_VAR_MODIFICATE(-1, "FaiStampaInLingua") }
   //   }
   //
   //   // la dichiaro nosave
   //   VAR_CREATE_NUM(-1, "FaiStampaInLingua", 0, $MODE_NOSAVE, "")
   //
   //   // assegno il valore di StampaInLingua
   //   $FaiStampaInLingua = VAR_VAL(-1, "StampaInLingua")
   //}
   // ] Stampe TSTP personalizzate ---------------------------

   PROCEDURA Stampa_PostQuota
   {
      //Luca 27/09/2019
      //assegna TSTP_Tratteggio agli elementi non selezionati su ordini di sostituzione
      GOSUB OrdSost_Add_TSTP_Tratteggio
   }

   //Luca 27/09/2019
   PROCEDURA OrdSost_Add_TSTP_Tratteggio
   {
      WITH_VAR("$wk_sost","ORD_SOST",3,1,"1")

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

      $wk_i = 1
      while( $wk_i<=$wk_buff )
      {
         $wk_bidx = $wk_buff[$wk_i]

         if( VAR_VAL_STR($wk_bidx,"ORD_SOST")!="1" )
         {
            //devo verificare se c'è nei figli
            WITH_VAR_LOCAL($wk_bidx,"$wk_sbuff","ORD_SOST",1,1,"1")

            if( $wk_sbuff>0 )
            {
               //Se ho trovato almeno un figlio di sostituzione, attivo l'alias su tutti gli altir figli
               COMPONENTI2("$wk_fbuff",$wk_bidx,"*")
               $wk_j = 1
               while ( $wk_j<=$wk_fbuff )
               {
                  $wk_sbidx = $wk_fbuff[$wk_j]
                  if( VAR_VAL_STR($wk_sbidx,"ORD_SOST")!="1"
                    & VAR_VAL_STR($wk_sbidx,"ORD_COD")!=""  )
                  {
                     $wk_TSTP_alias_idx = $wk_fbuff[$wk_j]
                     $wk_TSTP_alias = "TSTP_Tratteggio"
                     GOSUB TSTP_AddAlias
                  }

                  if( NOME($wk_sbidx)=="FornoDbg" )
                  {
                     $wk_TSTP_alias_idx = $wk_fbuff[$wk_j]
                     $wk_TSTP_alias = "TSTP_NoPrint"
                     GOSUB TSTP_AddAlias
                  }

                  $wk_j = $wk_j + 1
               }
            }
            else
            {
               $wk_TSTP_alias_idx = $wk_bidx
               $wk_TSTP_alias = "TSTP_Tratteggio"
               GOSUB TSTP_AddAlias
            }
         }

         $wk_i = $wk_i + 1
      }
   }

   // generica per salvataggio vista/ambiente di lavoro
   PROCEDURA SetStampaInterattiva
   {
      // creo/imposto la variabile di stato a 1 con modo "NoSave"
      // $StampaInterattiva = 1
      VAR_CREATE_NUM(-1, "StampaInterattiva", 1, $MODE_NOSAVE, "")

      //Salvo la vista corrente
      GOSUB View_Camera0

      // Congelo la visualizzazione degli elementi ----------------
      COMANDO2("Show Abilita Off")

      //// creo il modello acis
      //COMANDO2("AcisBridge genera")

      // Resetto i dati che saranno poi impostati dalla stampa interattiva
      // [TODO??]

      MOSTRA_PDF_GENERATO_SAVE = $MOSTRA_PDF_GENERATO
      if( $OnTerminate==1 ) { $MOSTRA_PDF_GENERATO = 0 }
   }

   // generica per ripristino vista/ambiente di lavoro
   PROCEDURA ResetStampaInterattiva
   {
      // creo/imposto la variabile di stato a 0 con modo "NoSave"
      // $StampaInterattiva = 0
      VAR_CREATE_NUM(-1, "StampaInterattiva", 0, $MODE_NOSAVE, "")

      // libero il modello acis
      //COMANDO("AcisBridge libera")

      //// cancello eventuali scritte/quote
      //GOSUB CancellaScritteQuote

      // Ripristino la vista corrente
      GOSUB View_Camera1

      // Ripristino la visualizzazione degli elementi ----------------
      COMANDO2("Show Abilita On")

      // ripristino la vista a video dopo la stampa
      COMANDO2("M4_show Ambienti Show")
      COMANDO2("Show All")
      COMANDO2("Zoomhoops")

      $MOSTRA_PDF_GENERATO = MOSTRA_PDF_GENERATO_SAVE
   }

   // [ Stampe Produzione ---------------------------
   PROCEDURA StampaProduzione
   {
      $wk_StampeProduzione = 1

      if( $Vedi_Speciali > 0 ) { GOSUB VediSpeciali }
      COMANDO2("RIGENERA     //PRE STAMPA PROD")

      //Creo la cartella in cui saranno archiviate stampe e hsf
      GOSUB crea_path_archivio

      //Creo la cartella temporanea in cui saranno generate le stampe
      GOSUB crea_path_temp_archivio

      //Luca 22/07/2021 divido tra stampe di testata e di riga
     //{  ALLEGATI DI TESTATA
      //Luca 11/02/2020 attivata su fine ordine
      GOSUB StampaTOP

      //Luca 21/12/2021 rinominata
      //GOSUB StampaProd_DivaniSand
      GOSUB StampaProd_Divani

      //Stampa Materia/Plenum
      GOSUB Stampa_XGLASS_Materia

      ////Simone 15/06/21 - stampa XGLASS 368
      //GOSUB AssegnaAutoGruppiXGlass
      GOSUB StampaXGLASS

      //Luca 07/04/2021
      GOSUB StampaXGLASS_Armadio

      //Luca 21/12/2021
      //GOSUB StampaXGLASS_Fisse

      //Luca 16/07/2020
      GOSUB StampaProd_FianchiFinitura_Cuc

      // Stampa assieme WW:
      // Se sono presenti più articoli in WW, allego nuovamente la stampa di fine ordine con set differente
      GOSUB StampaProd_Assieme_WW
     //}  ALLEGATI DI TESTATA

     //{  ALLEGATI DI RIGA
      $AllegatiRiga = 1
      //GOSUB T_ALLEGATI_RESET

      GOSUB StampaProd_PianiSnack

      GOSUB StampaProd_SchienaliCucina

      GOSUB StampaProd_Cuc_FrontaleStripes

      GOSUB StampaProd_FianchiFinC_R1

      GOSUB StampaProd_Bifacciali_Materia

      //Luca 15/06/2020
      GOSUB StampaProd_PassacaviTop_Materia

      //LZ 26/05/2021
      GOSUB StampaProd_PassacaviTop_Plenum

      //LZ 02/07/2021
      GOSUB StampaProd_PassacaviTop_36e8

      //Simone 20/04/2021
      GOSUB StampaXGLASS_Teche

      //Luca 16/03/2020
      GOSUB StampaProd_BinarioSco_Arm20

      GOSUB StampaProd_CassArm_TopVetro

      GOSUB StampaProd_WallPanel

      GOSUB StampaProd_MensoleBagno_AIR

      //Luca 11/05/2021
      GOSUB StampaProd_Scrivania_AIR

      //Luca 07/09/2021
      GOSUB StampaProd_Tavolo_AIR

      GOSUB StampaProd_Tavolo_Generico

      //Luca 27/09/2021
      GOSUB StampaProd_PannelliRetro_368

      //LZ 17/05/2021
      GOSUB StampaProd_BarraFPush

      //LZ 09/11/2021
      GOSUB StampaProd_368Glass

      GOSUB StampaProd_AlzateVetroCScassi_AIR

      //Luca 01/03/2022 stampe tecniche letti
      GOSUB StampaProd_PannelloRetroLetto_L21

      //Luca 01/03/2022
      GOSUB StampaProd_Testiera_L21

      //Luca 11/03/2022
      GOSUB PianaleAIR_ExportDXF

      //Luca 28/07/2022
      GOSUB StampaProd_AllegatiAuto

      //Luca 29/07/2022
      GOSUB Stampe_TPAN

      //stampa in test non comprese nelle stampe di fine ordine
      if( $OnTerminate==0 )
      {
      }

      $AllegatiRiga = 0
     //}  ALLEGATI DI RIGA

      $wk_StampeProduzione = 0

      //Luca 14/04/2022
      //aggiorno eventuali morgana
      WITH_ALIAS("$wk_morg","Morgana")
      $wk_i = 1
      while ( $wk_i <= $wk_morg )
      {
         COMANDO2(STRCAT("RICALCOLA_UNA ",STR($wk_morg[$wk_i]) , " //aggiorno morgana fine stampe"))
         $wk_i = $wk_i + 1
      }
   }

   //Luca 14/10/2019
   PROCEDURA StampaTOP
   {
      debug = 0
      #ifdef TEC
         debug = 1
      #endif

      //devo fare 4(o forse 2 o 3) pagina per ogni top
      WITH_ALIAS("$wk_top","StpTop")

      $wk_top_num = 1
      while( $wk_top_num <= $wk_top)
      {
        $wk_top_att = $wk_top[$wk_top_num]
        $wk_top_att_all = VAR_VAL( $wk_top_att, "ALLEGATI")
        $wk_top_att_tall = VAR_VAL( $wk_top_att, "T_ALLEGATI")

        if( $wk_top_att_tall - $wk_top_att_all > 0)
        {
            DEL_ARRAY_ITEM( -1, "wk_top", $wk_top_num)
            $wk_top_num = $wk_top_num - 1
        }

        $wk_top_num = $wk_top_num + 1
      }

      //Luca 05/06/2020 aggiungo stampa SNACK
      //WITH_ALIAS("$wk_snack","PianoSNACK")

      //LZ 15/04/2021 - Aggiungo stampa penisola
      WITH_ALIAS("$wk_pen","Penisola")

      $wk_pen_num = 1
      while( $wk_pen_num <= $wk_pen)
      {
        $wk_pen_att = $wk_pen[$wk_pen_num]
        $wk_pen_att_all = VAR_VAL( $wk_pen_att, "ALLEGATI")
        $wk_pen_att_tall = VAR_VAL( $wk_pen_att, "T_ALLEGATI")

        if( $wk_pen_att_tall - $wk_pen_att_all > 0)
        {
            DEL_ARRAY_ITEM( -1, "wk_pen", $wk_pen_num)
            $wk_pen_num = $wk_pen_num - 1
        }

        $wk_pen_num = $wk_pen_num + 1
      }

      //if( $wk_top==0 & $wk_snack==0 & $wk_pen == 0 ) { EXITSUB() }
      if( $wk_top==0 & $wk_pen == 0 ) { EXITSUB() }

      $SET_STAMPA = "0022"

      GOSUB InizioStampaPDF

      GOSUB InfoCartiglioGen

      //Luca 20/04/2021
      $wk_STP_DIS_LBL_4 = ""
      $wk_STP_DIS_4     = ""

      $wk_STP_DIS_LBL_6 = MSG(228)
      $wk_STP_DIS_6     = VAR_VAL_STR(-1,"Gestionale_Ordine_Riferimento")

      $VAR_AnteprimaDiStampa = 1
      if( $OnTerminate==1 )
      {
         $VAR_AnteprimaDiStampa = 0
         if( $CNP==0 ) { $VAR_AnteprimaDiStampa = 1 }
      }

      $POSTNOMESTAMPA = "-TOP"
      $wk_suffisso_emf = "TOP"
      VAR_CREATE_NUM(-1,STRCAT("wk_pagina_",$wk_suffisso_emf),0,0,"")

      COMANDO2("M4_Message actVisibilityRestoreAll")

      //COMANDO2("RIGENERA     //StampaTOP")
      COMANDO2("ESEGUI Scassa_e_Taglia //StampaTOP")

      COMANDO2("M4_SHOW Ambienti Hide")
      COMANDO2("SHOW None")
      COMANDO2("SHOW Abilita Off")

      $wk_i = 1
      while ( $wk_i<=$wk_top )
      {
         $wk_idx_top = $wk_top[$wk_i]

         $adatta_dim_quote_idx_ref = $wk_idx_top
         GOSUB adatta_dim_quote

         GOSUB InfoCartiglioGen_StampaTop

         $wk_ang_top = ANG_TOT2($wk_idx_top)
         while( $wk_ang_top<0 )    { $wk_ang_top  = $wk_ang_top  + 360 }
         while( $wk_ang_top>360 )  { $wk_ang_top  = $wk_ang_top  - 360 }

         if( debug==1 ) { COMANDO2(STRCAT("LOGMSG STP_TOP TOP(",STR($wk_idx_top),") - ", VAR_VAL_STR($wk_idx_top,"DescEdit__"))) }

         // 1° PAGINA -- STAMPA ISO
         $wk_stampa_TOP = "ASSIEME"
         GOSUB StampaTop_StampaAssieme

         // 2° PAGINA -- STAMPA TOP + SOTTOTOP
         $wk_stampa_TOP = "TOP-S"
         GOSUB StampaTop_StampaTop

         // 3° PAGINA -- STAMPA TOP
         $wk_stampa_TOP = "TOP"
         GOSUB StampaTop_StampaTop

         // 4° PAGINA -- STAMPA SOTTOTOP
         $wk_stampa_TOP = "SOTTOTOP"
         GOSUB StampaTop_StampaTop

         ResetVarStampa("flag_stampa")
         ResetVarStampa("flag_stampa_tratt")

         $wk_i = $wk_i + 1
      }

      //Luca 05/06/2020  aggiungo stampa SNACK
      //$wk_i = 1
      //while ( $wk_i<=$wk_snack )
      //{
      //   $wk_idx_top = $wk_snack[$wk_i]
      //
      //   VAR_VALUE_SET($wk_idx_top,"VediMassellatura",1)
      //   //COMANDO2(STRCAT("RICALCOLA_UNA ",STR($wk_idx_top)," //VediMassellatura"))
      //   RIGENERA_IDX($wk_idx_top)
      //
      //   GOSUB InfoCartiglioGen_StampaTop
      //
      //   $wk_ang_top = ANG_TOT2($wk_idx_top)
      //   while( $wk_ang_top<0 )    { $wk_ang_top  = $wk_ang_top  + 360 }
      //   while( $wk_ang_top>360 )  { $wk_ang_top  = $wk_ang_top  - 360 }
      //
      //   if( debug==1 ) { COMANDO2(STRCAT("LOGMSG STP_TOP SNACK (",STR($wk_idx_top),") - ", VAR_VAL_STR($wk_idx_top,"DescEdit__"))) }
      //
      //
      //   $wk_stampa_TOP = "SNACK"
      //   GOSUB InizializzaVar_StampaTop
      //
      //   $wk_STP_DIS_TitoloDisegno  = "PIANO SNACK"
      //   $wk_STP_DIS_TitoloDisegno2 = "VISTA DA SOPRA"
      //
      //   VAR_VALUE_SET($wk_idx_top,"flag_stampa",1)
      //
      //   //Luca 22/07/2020 aggiungo dettaglio
      //   //mantis 23082: Stampa snack: inserimento dettaglio
      //   if( VAR_VAL($wk_idx_top,"VAR_TipoSnack")==2
      //     & VAR_VAL($wk_idx_top,"VAR_Revisione")==1 )
      //   {
      //      $wk_STP_DT_IMG = STRCAT($path_layout,"Dettagli\SNACK_Staffa500.bmp")
      //      $wk_nome_form = "Stampa_Top_O.emf"
      //      $wk_FORM_W  =  212
      //   }
      //
      //   $wk_view_roll = STRCAT( STR(-1*$wk_ang_top) ," 0" )
      //   $wk_view_ang = STR(-1*$wk_ang_top)
      //
      //   $wk_view_orbit = STRCAT( STR(-1*$wk_ang_top) ," 0" )
      //
      //   $wk_layout_cmd_1 = ""
      //
      //   if( $DIS_TO_GEMO==0 ) { GOSUB StampaTop_QuotaSnack }
      //
      //   GOSUB NomeDisegno
      //   GOSUB StampaLayout
      //
      //   if( $DIS_TO_GEMO==0 ) { GOSUB CancellaScritteQuote }
      //
      //   VAR_VALUE_SET($wk_idx_top,"flag_stampa",0)
      //
      //   VAR_VALUE_SET($wk_idx_top,"VediMassellatura",0)
      //   RIGENERA_IDX($wk_idx_top)
      //
      //   $wk_i = $wk_i + 1
      //}

      //LZ 15/04/2021 - Aggiungo stampa penisola
      $wk_i = 1
      while ( $wk_i<=$wk_pen )
      {
         $wk_idx_top = $wk_pen[$wk_i]

         GOSUB InfoCartiglioGen_StampaTop

         $wk_ang_top = ANG_TOT2($wk_idx_top)

         $wk_ang_top = ANG_TOT2($wk_idx_top)
         while( $wk_ang_top<0 )    { $wk_ang_top  = $wk_ang_top  + 360 }
         while( $wk_ang_top>360 )  { $wk_ang_top  = $wk_ang_top  - 360 }

         $wk_view_roll = STRCAT( STR(-1*$wk_ang_top) ," 0" )
         $wk_view_iso_roll = " -25 25"

         $wk_view_orbit = STRCAT( STR(-1*$wk_ang_top) ," 0" )

         if( debug==1 ) { COMANDO2(STRCAT("LOGMSG STP_TOP PENISOLA (",STR($wk_idx_top),") - ", VAR_VAL_STR($wk_idx_top,"DescEdit__"))) }

         $wk_stampa_TOP = "PENISOLA"
         GOSUB InizializzaVar_StampaTop
         VAR_VALUE_SET($wk_idx_top,"flag_stampa",1)

         $wk_view_roll = STRCAT( STR(-1*$wk_ang_top) ," 0" )
         $wk_view_ang = STR(-1*$wk_ang_top)

         $wk_layout_cmd_1 = ""

         if( $DIS_TO_GEMO==0 ) { GOSUB StampaTop_QuotaPen }

         GOSUB NomeDisegno
         GOSUB StampaLayout

         if( $DIS_TO_GEMO==0 ) { GOSUB CancellaScritteQuote }

         // 2° PAGINA -- VISTA TOP -- SOLO SE WW
         if( VAR_VAL($wk_idx_top,"VAR_TipoPiano") == 22 )
         {
            $wk_stampa_TOP = "TOP"
            GOSUB StampaTop_StampaTop
         }

         ResetVarStampa("flag_stampa")
         ResetVarStampa("flag_stampa_tratt")

         $wk_i = $wk_i + 1
      }

      COMANDO2("M4_SHOW Ambienti Show")
      COMANDO2("SHOW Abilita On")
      COMANDO2("SHOW All")

      GOSUB FineStampaPDF
      $wk_suffisso_PDF = ""

      //Luca 16/12/2019
      FILE_DEL(STRCAT($wk_prefisso_file,$File, "*TOP*.emf"))

      GOSUB CancellaGlobaliStp

      $SET_STAMPA = ""
   }

   PROCEDURA InfoCartiglioGen_StampaTop
   {
      $wk_STP_DIS_Titolo = "STAMPA TECNICA TOP"

      $wk_STP_DIS_LBL_5 = "Operatore:"
      $wk_STP_DIS_5     = VAR_VAL_STR( -1, "CodOperatore")
      $wk_STP_DIS_LBL_6 = ""
      $wk_STP_DIS_6     = ""

      $wk_STP_TitoloInfo = "INFORMAZIONI"

      //Codice + descrizione
      $wk_STP_DIS_VAR1 = VAR_VAL_STR($wk_idx_top,"DescEdit__")

      //finitura
      $wk_STP_DIS_VAR2 = GetDescCatVal($wk_idx_top,"C028","CAT")
      $wk_STP_DIS_VAL2 = GetDescCatVal($wk_idx_top,"C028","VAL")

      if( VAR_VAL($wk_idx_top,"FLAG_ConVascheTermoformate")==1 )
      {
         //Tipologia vasca
         $wk_STP_DIS_VAR2 = GetDescCatVal($wk_idx_top,"C074","CAT")
         $wk_STP_DIS_VAL2 = GetDescCatVal($wk_idx_top,"C074","VAL")
      }
   }

   PROCEDURA StampaTop_StampaAssieme
   {
      if( debug==1 ) { COMANDO2(STRCAT("LOGMSG STP_TOP TOP(",STR($wk_idx_top),") - ", VAR_VAL_STR($wk_idx_top,"DescEdit__"), " StampaTop_StampaAssieme" )) }

      GOSUB InizializzaVar_StampaTop

      VAR_VALUE_SET( $wk_idx_top, "flag_stampa", 1)

      $wk_view_roll = STRCAT( STR(-1*$wk_ang_top) ," 0" )
      $wk_view_iso_roll = " -25 25"

      //cambio iso in caso di base anglo a dx del top
      SET_#($wk_idx_top)
      if( IS_IDX(#idx_rif_steso_dx) )
      {
         if( NOME(#idx_rif_steso_dx)=="ScoccaT_BaseAngPan" ) { $wk_view_iso_roll = "25 25" }
      }

      //Luca 25/10/2019
      //identifico tutti i potenziali elementi vicini
      SET_#($wk_idx_top)
      $wk_x = #X
      $wk_y = #Y
      $wk_z = #Z
      if( NOME($wk_idx_top)=="Top" )
      {
         $wk_x = #Xt
         $wk_y = #Yt
         $wk_z = #Zt
      }

      $wk_bl_cont_par = 1000
      $wk_bl_cont_x = $wk_x + 2*$wk_bl_cont_par
      $wk_bl_cont_y = $wk_y + 2*$wk_bl_cont_par
      $wk_bl_cont_z = $wk_z + 2*$wk_bl_cont_par
      $wk_bl_cont_P.x = #base_0.x - COSENO($wk_ang_top)*$wk_bl_cont_par -   SENO($wk_ang_top)*$wk_bl_cont_par
      $wk_bl_cont_P.y = #base_0.y - 1000
      $wk_bl_cont_P.z = #base_0.z +   SENO($wk_ang_top)*$wk_bl_cont_par - COSENO($wk_ang_top)*$wk_bl_cont_par

      COMANDO2("ELEMENTO Blocco")
      COMANDO2("STRUTTURA")
      COMANDO2(STRCAT("VAR_SET CancellaScritteQuote=1 _cont_near_stp_top=1 X=",STR($wk_bl_cont_x) , " Y=",STR($wk_bl_cont_y) , " Z=",STR($wk_bl_cont_z)))
      COMANDO2(STRCAT("POSIZIONA ",STR($wk_bl_cont_P.x)," ",STR($wk_bl_cont_P.y)," ",STR($wk_bl_cont_P.z)," ",STR($wk_ang_top)))

      $wk_idx_bl_cont = 1
      $wk_near_top = 0

      WITH_VAR( "$wk_bl_con", "_cont_near_stp_top", 0, 1, "1")
      if( $wk_bl_con>0 ) { $wk_idx_bl_cont = $wk_bl_con[1] }

      if( IS_IDX($wk_idx_bl_cont) )
      {
         BOX_MODE(0)
         NEAR_GLOBALE("$wk_near_top",$wk_idx_bl_cont,1,1,"*")

         $wk_near_top_num = 1
         while ( $wk_near_top_num<=$wk_near_top )
         {
            $wk_near_top_att = $wk_near_top[$wk_near_top_num]

            if( $wk_near_top_att != $wk_idx_top
              & GetTopLevel($wk_near_top_att) == $wk_near_top_att)
            {
               VAR_VALUE_SET( $wk_near_top_att, "flag_stampa_tratt", 1)
            }

            $wk_near_top_num = $wk_near_top_num + 1
         }

         COMANDO2(STRCAT("DELETE ",STR($wk_idx_bl_cont)))
      }

      GOSUB NomeDisegno
      GOSUB StampaLayout

      VAR_VALUE_SET($wk_idx_top,"flag_stampa",0)
      //reset
      if( $wk_near_top>0 )
      {
         $wk_j = 1
         while ( $wk_j<=$wk_near_top )
         {
            if( GetTopLevel($wk_near_top[$wk_j])==$wk_near_top[$wk_j]  )
            {
               VAR_VALUE_SET($wk_near_top[$wk_j],"flag_stampa_tratt",0)
            }
            $wk_j = $wk_j + 1
         }
      }
   }

   PROCEDURA StampaTop_StampaTop
   {
      if( $wk_stampa_TOP=="TOP-S"
        | $wk_stampa_TOP=="TOP" )
      {
         if( NOME($wk_idx_top) == "SottopTop")           { EXITSUB() }

         //Luca 09/12/2019
         if( NOME($wk_idx_top) == "SottoTop_2P0")        { EXITSUB() }

         //piano cliente
         if( VAR_VAL($wk_idx_top,"VAR_TipoTop") == 99)   { EXITSUB() }
      }

      //Luca 09/12/2019
      if( $wk_stampa_TOP=="TOP-S"  )
      {
         if( NOME($wk_idx_top)=="Penisola" )             { EXITSUB() }
      }

      //LZ 11/06/2021: disattivo stampa accoppiamento top/sottotop se sottotop è escluso
      if( $wk_stampa_TOP == "TOP-S"
        & VAR_VAL( $wk_idx_top, "EscSottotop") == 1)     { EXITSUB() }

      if( $wk_stampa_TOP=="SOTTOTOP")
      {
         if( VAR_VAL($wk_idx_top,"EscSottotop") == 1)    { EXITSUB() }

         //Luca 24/03/2020
         //attivo stampa sottotop per fenix e laminglass ( no quote scassi)
         if( VAR_VAL($wk_idx_top,"TopUnico") == 1)
         {
            if( VAR_VAL($wk_idx_top,"VAR_TipoTop")!=3
              & VAR_VAL($wk_idx_top,"VAR_TipoTop")!=4
              & VAR_VAL($wk_idx_top,"VAR_TipoTop")!=10
              & VAR_VAL($wk_idx_top,"VAR_TipoTop")!=13 ) { EXITSUB() }
         }

         //Luca 09/12/2019
         if( NOME($wk_idx_top)=="Penisola" )             { EXITSUB() }
      }

      if( debug==1 ) { COMANDO2(STRCAT("LOGMSG STP_TOP TOP(",STR($wk_idx_top),") - ", VAR_VAL_STR($wk_idx_top,"DescEdit__"), " ", $wk_stampa_TOP )) }

      GOSUB InizializzaVar_StampaTop

      GOSUB StampaTop_ImpostaLegenda

      $wk_view_roll = STRCAT( STR(-1*$wk_ang_top) ," 0" )
      $wk_view_ang = STR(-1*$wk_ang_top)

      $wk_view_orbit = STRCAT( STR(-1*$wk_ang_top) ," 0" )

      $wk_idx_st  = -1
      $wk_idx_st2 = -1

      //Luca 24/03/2020
      $wk_idx_uso_st  = -1
      $wk_idx_uso_st2 = -1

      $wk_layout_cmd_1 = ""

      //TROVO SOTTOTOP (solo 2° foglio)
      if( $wk_stampa_TOP=="TOP-S" | $wk_stampa_TOP=="TOP" )
      {
         VAR_VALUE_SET($wk_idx_top,"flag_stampa",1)

         if( VAR_VAL($wk_idx_top,"TopUnico")==1 )
         {
            if( VAR_EXIST($wk_idx_top,"idx_pann_top") )
            {
               $wk_pan_grafico = VAR_VAL($wk_idx_top,"idx_pann_top")
               SET_#($wk_pan_grafico)
               //Luca 19/08/2020
               //if( IS_IDX(#idx_pann_stop)  )  { $wk_idx_st  = #idx_pann_stop }
               //if( IS_IDX(#idx_pann_stop2) )  { $wk_idx_st2 = #idx_pann_stop2 }
               if( VAR_EXIST($wk_pan_grafico,"idx_pann_stop")==1 )
               {
                  if( IS_IDX(#idx_pann_stop)  )  { $wk_idx_st  = #idx_pann_stop }
               }
               if( VAR_EXIST($wk_pan_grafico,"idx_pann_stop2")==1 )
               {
                  if( IS_IDX(#idx_pann_stop2) )  { $wk_idx_st2 = #idx_pann_stop2 }
               }
            }
         }
         else
         {
            if( VAR_EXIST($wk_idx_top,"idx_pann_stop") )
            {
               SET_#($wk_idx_top)
               //if( IS_IDX(#idx_pann_stop)  )  { $wk_idx_st  = #idx_pann_stop }
               //if( IS_IDX(#idx_pann_stop2) )  { $wk_idx_st2 = #idx_pann_stop2 }
               if( VAR_EXIST($wk_idx_top,"idx_pann_stop")==1 )
               {
                  if( IS_IDX(#idx_pann_stop)  )  { $wk_idx_st  = #idx_pann_stop }
               }
               if( VAR_EXIST($wk_idx_top,"idx_pann_stop2")==1 )
               {
                  if( IS_IDX(#idx_pann_stop2) )  { $wk_idx_st2 = #idx_pann_stop2 }
               }
            }
         }

         if( $wk_stampa_TOP=="TOP" )
         {
            if( IS_IDX($wk_idx_st) )   { VAR_VALUE_SET($wk_idx_st ,"flag_stampa",-1) }
            if( IS_IDX($wk_idx_st2) )  { VAR_VALUE_SET($wk_idx_st2,"flag_stampa",-1) }

            //LZ 05/04/2022
            COMPONENTI2("$wk_cmp_top", $wk_idx_top, "*")

            $wk_j = 1
            while( $wk_j <= $wk_cmp_top )
            {
               $wk_cmp_top_att = $wk_cmp_top[$wk_j]
               $wk_cmp_top_ins = INSERIMENTO($wk_cmp_top_att)

               if( $wk_cmp_top_ins == $ins_attrezzato )
               {
                  VAR_VALUE_SET( $wk_cmp_top_att, "flag_stampa", -1)
               }

               $wk_j = $wk_j + 1
            }
         }

         if( $wk_stampa_TOP=="TOP-S" )
         {
            $wk_SP_LINEA_MOBILI_TRATT = 0

            if( IS_IDX($wk_idx_st) )
            {
               VAR_VALUE_SET($wk_idx_st ,"flag_stampa",-1)
               VAR_VALUE_SET($wk_idx_st ,"flag_stampa_tratt",1)
            }

            if( IS_IDX($wk_idx_st2) )
            {
               VAR_VALUE_SET($wk_idx_st2,"flag_stampa",-1)
               VAR_VALUE_SET($wk_idx_st2,"flag_stampa_tratt",1)
            }
         }

         //Luca 25/01/2022
         if( NOME($wk_idx_top)=="Penisola" )
         {
            $wk_STP_DIS_TitoloDisegno  = "PENISOLA"
            SET_#($wk_idx_top)

            if( IsIdx($wk_idx_top,"idx_suppvtr_1") )
            {
               VAR_VALUE_SET(#idx_suppvtr_1,"flag_stampa",-1)
               VAR_VALUE_SET(#idx_suppvtr_1,"flag_stampa_tratt",1)
            }

            if( IsIdx($wk_idx_top,"idx_suppvtr_2") )
            {
               if( IS_ESCLUSO(#idx_suppvtr_2) ==0 )
               {
                  VAR_VALUE_SET(#idx_suppvtr_2 ,"flag_stampa",-1)
                  VAR_VALUE_SET(#idx_suppvtr_2,"flag_stampa_tratt",1)
               }
            }
         }
      }

      if( $wk_stampa_TOP=="SOTTOTOP" )
      {
         if( NOME($wk_idx_top)=="Top" | NOME($wk_idx_top)=="Top_2P0"  )
         {
            if( VAR_EXIST($wk_idx_top,"idx_pann_stop") )
            {
               SET_#($wk_idx_top)
               if( IS_IDX(#idx_pann_stop) )  { $wk_idx_st  = #idx_pann_stop }
               //Luca 19/08/2020
               if( VAR_EXIST($wk_idx_top,"idx_pann_stop2") )
               {
                  if( IS_IDX(#idx_pann_stop2) )
                  {
                     //Luca 24/03/2020 aggiunto controllo esclusione
                     //$wk_idx_st2 = #idx_pann_stop2
                     if( IS_ESCLUSO(#idx_pann_stop2)==0 )  { $wk_idx_st2 = #idx_pann_stop2  }
                  }
               }
            }

            //Luca 24/03/2020
            //attivo stampa sottotop per fenix e laminglass ( no quote scassi)
            if( VAR_VAL($wk_idx_top,"VAR_TipoTop")==3
              | VAR_VAL($wk_idx_top,"VAR_TipoTop")==4
              | VAR_VAL($wk_idx_top,"VAR_TipoTop")==10
              | VAR_VAL($wk_idx_top,"VAR_TipoTop")==13 )
            {
               WITH_VAR_LOCAL($wk_idx_top,"$wk_usotop","UsoSottoTop",2,1,"1")
               SET_#($wk_idx_top)
               SORT_POINT(#base_0,"$wk_usotop","base_0")

               if( $wk_usotop>0 ) { $wk_idx_uso_st  = $wk_usotop[1] $wk_idx_st  = $wk_idx_uso_st }
               //Luca 09/07/2020
               if( $wk_usotop>1 ) { $wk_idx_uso_st2 = $wk_usotop[2] $wk_idx_st2 = $wk_idx_uso_st2 }
            }
         }
         if( NOME($wk_idx_top)=="SottopTop"
           | NOME($wk_idx_top)=="SottoTop_2P0" ) { $wk_idx_st = $wk_idx_top }

         //Luca 09/07/2020
         if( IS_IDX($wk_idx_uso_st)  ) { VAR_VALUE_SET($wk_idx_uso_st  ,"flag_stampa",1) }
         if( IS_IDX($wk_idx_uso_st2) ) { VAR_VALUE_SET($wk_idx_uso_st2 ,"flag_stampa",1) }

         if( IS_IDX($wk_idx_st) )      { VAR_VALUE_SET($wk_idx_st ,"flag_stampa",1) }
         if( IS_IDX($wk_idx_st2) )     { VAR_VALUE_SET($wk_idx_st2,"flag_stampa",1) }
      }

      if( debug==1 ) { COMANDO2(STRCAT("LOGMSG STP_TOP TOP(",STR($wk_idx_top),") - ", VAR_VAL_STR($wk_idx_top,"DescEdit__"), " $wk_idx_st=",STR($wk_idx_st) , " $wk_idx_st2=",STR($wk_idx_st2) )) }

      //QUOTE
      if( $wk_stampa_TOP=="TOP" )
      {
         $wk_STP_DIS_TitoloDisegno = "TOP"
         GOSUB StampaTop_QuotaTop
      }
      if( $wk_stampa_TOP=="TOP-S" )
      {
         $wk_STP_DIS_TitoloDisegno = "TOP+SOTTOTOP"
         GOSUB StampaTop_QuotaTopSottoTop
      }
      if( $wk_stampa_TOP=="SOTTOTOP" )
      {
         $wk_STP_DIS_TitoloDisegno = "SOTTOTOP"
         GOSUB StampaTop_QuotaSottoTop
      }

      GOSUB NomeDisegno
      GOSUB StampaLayout

      if( $DIS_TO_GEMO==0 ) { GOSUB CancellaScritteQuote }

      VAR_VALUE_SET($wk_idx_top,"flag_stampa",0)

      if( IS_IDX($wk_idx_st)  )
      {
         VAR_VALUE_SET($wk_idx_st ,"flag_stampa",0)
         VAR_VALUE_SET($wk_idx_st ,"flag_stampa_tratt",0)
      }
      if( IS_IDX($wk_idx_st2) )
      {
         VAR_VALUE_SET($wk_idx_st2,"flag_stampa",0)
         VAR_VALUE_SET($wk_idx_st2,"flag_stampa_tratt",0)
      }

      //Luca 24/03/2020
      if( IS_IDX($wk_idx_uso_st) )
      {
         VAR_VALUE_SET($wk_idx_uso_st ,"flag_stampa",0)
         VAR_VALUE_SET($wk_idx_uso_st ,"flag_stampa_tratt",0)
      }
      if( IS_IDX($wk_idx_uso_st2) )
      {
         VAR_VALUE_SET($wk_idx_uso_st2 ,"flag_stampa",0)
         VAR_VALUE_SET($wk_idx_uso_st2 ,"flag_stampa_tratt",0)
      }
   }

   PROCEDURA StampaTop_QuotaTop
   {
      if( $DIS_TO_GEMO != 0 ) { EXITSUB() }

      $alias_scr     = "STP_SCR_TOP"
      $AliasQuota    = "STP_QUO_TOP"
      $AliasQuotaLat = "STP_QUO_TOP"
      $wk_faccia = "A"

      $HChar   = $Yscr/4         $LChar   = $Xscr/4
      $Alt_Chr = $Yscr/4         $Lar_Chr = $Xscr/4

      $ang_scr = 0
      $wk_scosta_lquota = 20

      $wk_num_scs_cil = 0
      $wk_num_scs = 0

      SET_#($wk_idx_top)

      //{ AGGIUNGO LETTERA
      $wk_idx_letter = $wk_idx_top
      GOSUB StampaTop_AggiungiLettera
      //} AGGIUNGO LETTERA

      //{ QUOTO GLI SCASSI PRESENTI
      //quoto prima gli scassi, la posizione della quota totale superiore è dinamica in base agli scassi che quoto
      $wk_idx_quota_scassi = $wk_idx_top
      $wk_quota_scassi_t2  =  0
      GOSUB StampaTop_QuotaScassi
      //} QUOTO GLI SCASSI PRESENTI

      //su richiesta di LAGO
      // TOTALE + MISCELATORE -- SOPRA
      // SCASSI ELDOM -- SOTTO
      SET_#($wk_idx_top)

      //{ QUOTO DIMENSIONI
      //quoto larghezza lato retro
      $dist = 120
      if( $wk_num_scs_cil>0 ) { $dist = 70*$wk_num_scs_cil + 120 }
      if( NOME($wk_idx_top)=="Top_2P0" )
      {
         $P1 = #pnt_top_b0
         $P2 = #pnt_top_b3
      }
      else
      {
         $P1 = #pnt_b0
         $P2 = #pnt_b3
      }

      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      //$testo = STR(FLOOR($d+0.5))
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      //quoto profondità lato Sx
      $dist = 120
      if( NOME($wk_idx_top)=="Top_2P0" )
      {
         $P1 = #pnt_top_b1
         $P2 = #pnt_top_b0
      }
      else
      {
         $P1 = #pnt_b1
         $P2 = #pnt_b0
      }
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      //$testo = STR(FLOOR($d+0.5))
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota
      //} QUOTO DIMENSIONI

      //Luca 20/04/2021 quoto penisola vista fronte
      if( VAR_VAL($wk_idx_top,"VAR_TipoTop") == 23 )
      {
         SET_#($wk_idx_top)
         $alias_scr     = "STP_SCR_TOP_VF"
         $AliasQuota    = "STP_QUO_TOP_VF"
         $AliasQuotaLat = "STP_QUO_TOP_VF"
         $wk_faccia = "F"

         $HChar   = $Yscr/4         $LChar   = $Xscr/4
         $Alt_Chr = $Yscr/4         $Lar_Chr = $Xscr/4

         $ang_scr = 0

         $ang_quoSCH = 0
         $dist = 80
         $wk_stile = 0
         $P1 = #pnt_top_b0
         $P1.y = $P1.y + #Y
         $P2 = $P1
         $P2.x = $P2.x + COSENO($wk_ang_top)*(#OffX_SteelPen)
         $P2.z = $P2.z -   SENO($wk_ang_top)*(#OffX_SteelPen)
         if( VAR_VAL($wk_idx_top,"PosX_SteelPen") > 0 )
         {
            $P1 = #pnt_top_b3
            $P1.y = $P1.y + #Y
            $P1.x = $P1.x - COSENO($wk_ang_top)*(#OffX_SteelPen)
            $P1.z = $P1.z +   SENO($wk_ang_top)*(#OffX_SteelPen)
            $P2 = #pnt_top_b3
            $P2.y = $P2.y + #Y
         }
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR($d+0.5))
         GOSUB PosizionaQuotaSchienale

         $alias_scr     = "STP_SCR_TOP"
         $AliasQuota    = "STP_QUO_TOP"
         $AliasQuotaLat = "STP_QUO_TOP"
      }

      //Luca 25/01/2022
      GOSUB StampaTop_QuotaPenisola

      ////{ AGGIUNGO SIMBOLI LEGENDA
      ////quoto larghezza lato fronte
      //$P2 = #pnt_b0
      //$P2.x = #pnt_b0.x + COSENO($wk_ang_top)*(#Xt/2) -   SENO($wk_ang_top)*10
      //$P2.z = #pnt_b0.z -   SENO($wk_ang_top)*(#Xt/2) - COSENO($wk_ang_top)*10
      //$testo = "R"
      //$wk_faccia = "A"
      //$point = 3
      //$ang_scr = $wk_ang_top
      //GOSUB PosizionaScrittaCAD
      //
      //$P2 = #pnt_b1
      //$P2.x = #pnt_b1.x + COSENO($wk_ang_top)*(#Xt/2) +   SENO($wk_ang_top)*10
      //$P2.z = #pnt_b1.z -   SENO($wk_ang_top)*(#Xt/2) + COSENO($wk_ang_top)*10
      //$testo = "F"
      //$wk_faccia = "A"
      //$point = 5
      //$ang_scr = $wk_ang_top
      //GOSUB PosizionaScrittaCAD
      //
      //$ang_scr = 0
      ////} AGGIUNGO SIMBOLI LEGENDA

      //{ QUOTO SMUSSI
      if( VAR_VAL( $wk_idx_top, "Smusso_RS") > 0)
      {
         $P1           = #pnt_top_b0
         $wk_dir       = 3
         $wk_qr_len    = 50
         $wk_qr_off_cq = 5
         $wk_ang_qr    = $wk_ang_top
         $wk_raggio    = VAR_VAL( $wk_idx_top, "Smusso_RS")
         $testo        = STRCAT("R. ",STR($wk_raggio))

         GOSUB PosaQuotaRaggio
      }

      if( VAR_VAL( $wk_idx_top, "Smusso_FS") > 0)
      {
         $P1           = #pnt_top_b1
         $wk_dir       = 2
         $wk_qr_len    = 50
         $wk_qr_off_cq = 5
         $wk_ang_qr    = $wk_ang_top
         $wk_raggio    = VAR_VAL( $wk_idx_top, "Smusso_FS")
         $testo        = STRCAT("R. ",STR($wk_raggio))

         GOSUB PosaQuotaRaggio
      }

      if( VAR_VAL( $wk_idx_top, "Smusso_FD") > 0)
      {
         $P1           = #pnt_top_b2
         $wk_dir       = 1
         $wk_qr_len    = 50
         $wk_qr_off_cq = 5
         $wk_ang_qr    = $wk_ang_top
         $wk_raggio    = VAR_VAL( $wk_idx_top, "Smusso_FD")
         $testo        = STRCAT("R. ",STR($wk_raggio))

         GOSUB PosaQuotaRaggio
      }

      if( VAR_VAL( $wk_idx_top, "Smusso_RD") > 0)
      {
         $P1           = #pnt_top_b3
         $wk_dir       = 4
         $wk_qr_len    = 50
         $wk_qr_off_cq = 5
         $wk_ang_qr    = $wk_ang_top
         $wk_raggio    = VAR_VAL( $wk_idx_top, "Smusso_RD")
         $testo        = STRCAT("R. ",STR($wk_raggio))

         GOSUB PosaQuotaRaggio
      }
      //} QUOTO SMUSSI

      //{ QUOTO TOP FUSION
      if( VAR_EXIST($wk_idx_top,"FSN_ScsPos") == 0
        | VAR_VAL($wk_idx_top,"FLAG_TopFusion") == 0)
      {
         //Luca 05/07/2021 se top non fusion, verifico se c'è il fusion complementare e quoto l'eventuale raggio
         if( IsIdx($wk_idx_top,"idx_top_fusion") )
         {
            $wk_idx_top_fusion = VAR_VAL($wk_idx_top,"idx_top_fusion")
            if( VAR_VAL($wk_idx_top_fusion,"RaggioInterno_Fusion") > 0 )
            {
               if( VAR_VAL_STR($wk_idx_top_fusion,"FSN_ScsPos")=="RS" )
               {
                  $wk_p_fusion = #pnt_top_b2
                  $wk_dir = 3
               }
               if( VAR_VAL_STR($wk_idx_top_fusion,"FSN_ScsPos")=="RD" )
               {
                  $wk_p_fusion = #pnt_top_b1
                  $wk_dir = 4
               }
               if( VAR_VAL_STR($wk_idx_top_fusion,"FSN_ScsPos")=="FS" )
               {
                  $wk_p_fusion = #pnt_top_b3
                  $wk_dir = 2
               }
               if( VAR_VAL_STR($wk_idx_top_fusion,"FSN_ScsPos")=="FD" )
               {
                  $wk_p_fusion = #pnt_top_b0
                  $wk_dir = 1
               }

               $P1 = $wk_p_fusion
               $wk_qr_len  = 100
               $wk_qr_off_cq = 5
               $wk_raggio = VAR_VAL($wk_idx_top_fusion,"RaggioInterno_Fusion")
               $testo = STRCAT("R. ",STR($wk_raggio))
               $wk_ang_qr  = $wk_ang_top
               GOSUB PosaQuotaRaggio
            }
         }

         EXITSUB()
      }

      //quoto interno
      //quoto larghezza lato retro

      $dist = 0
      $wk_offquota = 100
      if( VAR_VAL_STR($wk_idx_top,"FSN_ScsPos")=="RS" )
      {
         $P1 = #pnt_top_b0
         $P1.x = #pnt_top_b0.x +   SENO($wk_ang_top)*$wk_offquota
         $P1.z = #pnt_top_b0.z + COSENO($wk_ang_top)*$wk_offquota
         $P2 = $P1
         $P2.x = $P2.x + COSENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsX")
         $P2.z = $P2.z -   SENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsX")

         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         //Luca 29/11/2021
         $P1 = $P2
         $P2 = INTERFERISCI($P1,$wk_ang_top,$wk_pnt_3_top,$wk_pnt_2_top)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
      }

      if( VAR_VAL_STR($wk_idx_top,"FSN_ScsPos")=="RD" )
      {
         $P2 = #pnt_top_b3
         $P2.x = #pnt_top_b3.x +   SENO($wk_ang_top)*$wk_offquota
         $P2.z = #pnt_top_b3.z + COSENO($wk_ang_top)*$wk_offquota
         $P1 = $P2
         $P1.x = $P2.x - COSENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsX")
         $P1.z = $P2.z +   SENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsX")

         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         //Luca 29/11/2021
         $P2 = $P1
         $P1 = INTERFERISCI($P1,$wk_ang_top,$wk_pnt_0_top,$wk_pnt_1_top)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
      }

      if( VAR_VAL_STR($wk_idx_top,"FSN_ScsPos")=="FS" )
      {
         $P1 = #pnt_top_b1
         $P1.x = #pnt_top_b1.x -   SENO($wk_ang_top)*$wk_offquota
         $P1.z = #pnt_top_b1.z - COSENO($wk_ang_top)*$wk_offquota
         $P2 = $P1
         $P2.x = $P2.x + COSENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsX")
         $P2.z = $P2.z -   SENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsX")

         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         //Luca 29/11/2021
         $P1 = $P2
         $P2 = INTERFERISCI($P1,$wk_ang_top,$wk_pnt_3_top,$wk_pnt_2_top)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
      }

      if( VAR_VAL_STR($wk_idx_top,"FSN_ScsPos")=="FD" )
      {
         $P2 = #pnt_top_b2
         $P2.x = #pnt_top_b2.x -   SENO($wk_ang_top)*$wk_offquota
         $P2.z = #pnt_top_b2.z - COSENO($wk_ang_top)*$wk_offquota
         $P1 = $P2
         $P1.x = $P1.x - COSENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsX")
         $P1.z = $P1.z +   SENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsX")

         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         //Luca 29/11/2021
         $P2 = $P1
         $P1 = INTERFERISCI($P1,$wk_ang_top,$wk_pnt_0_top,$wk_pnt_1_top)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
      }

      //$P2.y = $P1.y
      //$d = DISTANZA($P1,$P2)
      //$testo = STR(FLOOR(($d+0.05)*10)/10)
      //GOSUB PosizionaQuota

      //profondità
      if( VAR_VAL_STR($wk_idx_top,"FSN_ScsPos")=="RS" )
      {
         $P2 = #pnt_top_b0
         $P2.x = #pnt_top_b0.x + COSENO($wk_ang_top)*$wk_offquota
         $P2.z = #pnt_top_b0.z -   SENO($wk_ang_top)*$wk_offquota
         $P1 = $P2
         $P1.x = $P1.x +   SENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsZ")
         $P1.z = $P1.z + COSENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsZ")

         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         //Luca 29/11/2021
         $P2 = $P1
         $P1 = INTERFERISCI($P1,$wk_ang_top+90,$wk_pnt_1_top,$wk_pnt_2_top)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $wk_dir      = 3
         $wk_p_fusion = #pnt_top_b0
         $wk_p_fusion.x = $wk_p_fusion.x + COSENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsX")  +   SENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsZ")
         $wk_p_fusion.z = $wk_p_fusion.z -   SENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsX")  + COSENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsZ")

      }

      if( VAR_VAL_STR($wk_idx_top,"FSN_ScsPos")=="RD" )
      {
         $P2 = #pnt_top_b3
         $P2.x = #pnt_top_b3.x - COSENO($wk_ang_top)*$wk_offquota
         $P2.z = #pnt_top_b3.z +   SENO($wk_ang_top)*$wk_offquota
         $P1 = $P2
         $P1.x = $P2.x +   SENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsZ")
         $P1.z = $P2.z + COSENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsZ")

         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         //Luca 29/11/2021
         $P2 = $P1
         $P1 = INTERFERISCI($P1,$wk_ang_top+90,$wk_pnt_1_top,$wk_pnt_2_top)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $wk_dir = 4
         $wk_p_fusion = #pnt_top_b3
         $wk_p_fusion.x = $wk_p_fusion.x - COSENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsX")  +   SENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsZ")
         $wk_p_fusion.z = $wk_p_fusion.z +   SENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsX")  + COSENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsZ")
      }

      if( VAR_VAL_STR($wk_idx_top,"FSN_ScsPos")=="FS" )
      {
         $P1 = #pnt_top_b1
         $P1.x = #pnt_top_b1.x + COSENO($wk_ang_top)*$wk_offquota
         $P1.z = #pnt_top_b1.z -   SENO($wk_ang_top)*$wk_offquota
         $P2 = $P1
         $P2.x = $P2.x -   SENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsZ")
         $P2.z = $P2.z - COSENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsZ")

         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         //Luca 29/11/2021
         $P1 = $P2
         $P2 = INTERFERISCI($P1,$wk_ang_top+90,$wk_pnt_0_top,$wk_pnt_3_top)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $wk_dir = 2

         $wk_p_fusion = #pnt_top_b1
         $wk_p_fusion.x = $wk_p_fusion.x + COSENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsX")  -   SENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsZ")
         $wk_p_fusion.z = $wk_p_fusion.z -   SENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsX")  - COSENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsZ")

      }

      if( VAR_VAL_STR($wk_idx_top,"FSN_ScsPos")=="FD" )
      {
         $P1 = #pnt_top_b2
         $P1.x = #pnt_top_b2.x - COSENO($wk_ang_top)*$wk_offquota
         $P1.z = #pnt_top_b2.z +   SENO($wk_ang_top)*$wk_offquota
         $P2 = $P1
         $P2.x = $P2.x -   SENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsZ")
         $P2.z = $P2.z - COSENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsZ")

         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         //Luca 29/11/2021
         $P1 = $P2
         $P2 = INTERFERISCI($P1,$wk_ang_top+90,$wk_pnt_0_top,$wk_pnt_3_top)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $wk_dir = 1
         $wk_p_fusion = #pnt_top_b2
         $wk_p_fusion.x = $wk_p_fusion.x - COSENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsX")  -   SENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsZ")
         $wk_p_fusion.z = $wk_p_fusion.z +   SENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsX")  - COSENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_ScsZ")
      }

      //$P2.y = $P1.y
      //$d = DISTANZA($P1,$P2)
      //$testo = STR(FLOOR(($d+0.05)*10)/10)
      //GOSUB PosizionaQuota

      //Luca 05/07/2021
      if( VAR_VAL($wk_idx_top,"RaggioInterno_Fusion") > 0 )
      {
         $P1 = $wk_p_fusion
         $wk_qr_len  = 100
         $wk_qr_off_cq = 5
         $wk_raggio = VAR_VAL($wk_idx_top,"RaggioInterno_Fusion")
         $testo = STRCAT("R. ",STR($wk_raggio))
         $wk_ang_qr  = $wk_ang_top
         GOSUB PosaQuotaRaggio
      }
      //} QUOTO TOP FUSION
   }

   //Luca 25/01/2022
   PROCEDURA StampaTop_QuotaPenisola
   {
      if( NOME($wk_idx_top) != "Penisola" ) { EXITSUB() }

      //Luca 03/02/2022
      $wk_STP_DT_IMG = STRCAT($path_layout,"Dettagli\StampaPenisolaVista.bmp")

      //Luca 25/01/2022
      if( VAR_VAL($wk_idx_top,"VAR_TipoPen") == 1 )
      {
         $P2 = #alto_0
         $P2.x = $P2.x + COSENO($wk_ang_top)*50  +   SENO($wk_ang_top)*(#Z/2)
         $P2.z = $P2.z -   SENO($wk_ang_top)*50  + COSENO($wk_ang_top)*(#Z/2)

         $testo = "MASSELLO A MURO"
         $point = 4
         $wk_faccia = "A"
         $ang_scr = $wk_ang_scr + 90
         GOSUB PosizionaScrittaCAD
      }

      $wk_idx_vetro  = -1
      $wk_idx_staffa = -1

      $wk_idx_vetro2  = -1
      $wk_idx_staffa2 = -1


      //quoto supporto vetro
      COMPONENTI2("$wk_vetro",$wk_idx_top,"SupportoVetro_Sost")
      if( $wk_vetro > 0 ) { $wk_idx_vetro = $wk_vetro[1] }
      if( $wk_vetro > 1 ) { $wk_idx_vetro2 = $wk_vetro[2] }


      //quoto staffa vetro
      COMPONENTI2("$wk_staffa",$wk_idx_top,"SupportoVetro_Staffa")
      if( $wk_staffa > 0 ) { $wk_idx_staffa  = $wk_staffa[1] }
      if( $wk_staffa > 1 ) { $wk_idx_staffa2 = $wk_staffa[2] }

      $wk_B3 = #base_3
      $wk_B2 = #base_2
      $wk_B1 = #base_1
      $wk_B0 = #base_0

      $ang_scr = 0

      if( IS_IDX($wk_idx_staffa) )
      {
         SET_#($wk_idx_staffa)

         $P1 = $wk_B2
         $dist = -120
         $P2 = INTERFERISCI(#stp_p3,$wk_ang_top,$wk_B3,$wk_B2)
         if( VAR_VAL($wk_idx_top,"VAR_PosPenisola") < 0 )
         {
            $P2 = INTERFERISCI(#stp_p0,$wk_ang_top,$wk_B3,$wk_B2)
         }
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = INTERFERISCI(#stp_p0,$wk_ang_top,$wk_B3,$wk_B2)
         if( VAR_VAL($wk_idx_top,"VAR_PosPenisola") < 0 )
         {
            $P2 = INTERFERISCI(#stp_p3,$wk_ang_top,$wk_B3,$wk_B2)
         }
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $wk_B3
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
      }

      if( IS_IDX($wk_idx_vetro) )
      {
         SET_#($wk_idx_vetro)

         $P1 = $wk_B2
         $dist = -60
         $P2 = INTERFERISCI(#stp_p3,$wk_ang_top,$wk_B3,$wk_B2)
         if( VAR_VAL($wk_idx_top,"VAR_PosPenisola") < 0 )
         {
            $P2 = INTERFERISCI(#stp_p0,$wk_ang_top,$wk_B3,$wk_B2)
         }
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = INTERFERISCI(#stp_p0,$wk_ang_top,$wk_B3,$wk_B2)
         if( VAR_VAL($wk_idx_top,"VAR_PosPenisola") < 0 )
         {
            $P2 = INTERFERISCI(#stp_p3,$wk_ang_top,$wk_B3,$wk_B2)
         }

         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $wk_B3
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota


         //quote in larghezza (sotto)
         $dist = -100

         $P1 = $wk_B1
         $P2 = INTERFERISCI(#stp_p2,$wk_ang_top+90,$wk_B1,$wk_B2)
         if( VAR_VAL($wk_idx_top,"VAR_PosPenisola") < 0 )
         {
            $P2 = INTERFERISCI(#stp_p0,$wk_ang_top+90,$wk_B1,$wk_B2)
         }

         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = INTERFERISCI(#stp_p3,$wk_ang_top+90,$wk_B1,$wk_B2)
         if( VAR_VAL($wk_idx_top,"VAR_PosPenisola") < 0 )
         {
            $P2 = INTERFERISCI(#stp_p1,$wk_ang_top+90,$wk_B1,$wk_B2)
         }
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $wk_B2
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
      }

      if( IS_IDX($wk_idx_staffa2) )
      {
         SET_#($wk_idx_staffa2)

         //quote in larghezza (sotto)
         $dist = -160

         $P1 = $wk_B1
         $P2 = INTERFERISCI(#stp_p1,$wk_ang_top+90,$wk_B1,$wk_B2)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = INTERFERISCI(#stp_p2,$wk_ang_top+90,$wk_B1,$wk_B2)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $wk_B2
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
      }

      if( IS_IDX($wk_idx_vetro2) )
      {
         SET_#($wk_idx_vetro2)

         //quote in larghezza (sotto)
         $dist = -220

         $P1 = $wk_B1
         $P2 = INTERFERISCI(#stp_p1,$wk_ang_top+90,$wk_B1,$wk_B2)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = INTERFERISCI(#stp_p2,$wk_ang_top+90,$wk_B1,$wk_B2)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $wk_B2
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         //vetro a sx
         $dist = 60

         $P1 = $wk_B1
         $P2 = INTERFERISCI(#stp_p1,$wk_ang_top,$wk_B0,$wk_B1)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = INTERFERISCI(#stp_p0,$wk_ang_top,$wk_B0,$wk_B1)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $wk_B0
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
      }
   }

   PROCEDURA StampaTop_QuotaTopSottoTop
   {
      if( $DIS_TO_GEMO!=0 )       { EXITSUB() }

      if( VAR_EXIST($wk_idx_top,"pnt_b0")==0
        & VAR_EXIST($wk_idx_top,"pnt_top_b0")==0 ) { EXITSUB() }

      $alias_scr     = "STP_SCR_TOP"
      $AliasQuota    = "STP_QUO_TOP"
      $AliasQuotaLat = "STP_QUO_TOP"
      $wk_faccia = "A"

      $HChar   = $Yscr/4         $LChar   = $Xscr/4
      $Alt_Chr = $Yscr/4         $Lar_Chr = $Xscr/4

      $ang_scr = 0

      $wk_scosta_lquota = 20

      SET_#($wk_idx_top)

      if( NOME($wk_idx_top)=="Top_2P0" )
      {
         $wk_pnt_0_top = #pnt_top_b0
         $wk_pnt_1_top = #pnt_top_b1
         $wk_pnt_2_top = #pnt_top_b2
         $wk_pnt_3_top = #pnt_top_b3

         $wk_pnt_0_stop = #pnt_stop_b0
         $wk_pnt_1_stop = #pnt_stop_b1
         $wk_pnt_2_stop = #pnt_stop_b2
         $wk_pnt_3_stop = #pnt_stop_b3
      }
      else
      {
         $wk_pnt_0_top = #pnt_b0
         $wk_pnt_1_top = #pnt_b1
         $wk_pnt_2_top = #pnt_b2
         $wk_pnt_3_top = #pnt_b3

         $wk_pnt_0_stop = #pnt_st_b0
         $wk_pnt_1_stop = #pnt_st_b1
         $wk_pnt_2_stop = #pnt_st_b2
         $wk_pnt_3_stop = #pnt_st_b3
      }

      $dist = 70

      // RIENTRO SX
      $P1 = $wk_pnt_0_top
      $wk_px = INTERFERISCI($wk_pnt_0_stop,$wk_ang_top+90,$wk_pnt_0_top,$wk_pnt_3_top)
      if($wk_px.x!=$ERR_INTER & $wk_px.y!=$ERR_INTER & $wk_px.z!=$ERR_INTER)
      {
         $P2 = $wk_px
      }
      else
      {
         $P1 = $wk_pnt_0_stop
         $wk_px = INTERFERISCI($wk_pnt_0_top,$wk_ang_top+90,$wk_pnt_0_stop,$wk_pnt_3_stop)
      }
      if($wk_px.x!=$ERR_INTER & $wk_px.y!=$ERR_INTER & $wk_px.z!=$ERR_INTER)
      {
         $P2 = $wk_px
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         //$testo = STR(FLOOR($d+0.5))
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
      }

      // RIENTRO DX
      $P1 = $wk_pnt_3_top
      $wk_px = INTERFERISCI($wk_pnt_3_stop,$wk_ang_top+90,$wk_pnt_0_top,$wk_pnt_3_top)
      if($wk_px.x!=$ERR_INTER & $wk_px.y!=$ERR_INTER & $wk_px.z!=$ERR_INTER)
      {
         $P1 = $wk_px
         $P2 = $wk_pnt_3_top
      }
      else
      {
         $wk_px = INTERFERISCI($wk_pnt_3_top,$wk_ang_top+90,$wk_pnt_0_stop,$wk_pnt_3_stop)
         $P1 = $wk_px
         $P2 = $wk_pnt_3_stop
      }
      if($wk_px.x!=$ERR_INTER & $wk_px.y!=$ERR_INTER & $wk_px.z!=$ERR_INTER)
      {
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         //$testo = STR(FLOOR($d+0.5))
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
      }

      // RIENTRO RETRO
      $P1 = $wk_pnt_0_top
      $wk_px = INTERFERISCI($wk_pnt_0_stop,$wk_ang_top,$wk_pnt_0_top,$wk_pnt_1_top)
      if($wk_px.x!=$ERR_INTER & $wk_px.y!=$ERR_INTER & $wk_px.z!=$ERR_INTER)
      {
         $P1 = $wk_px
         $P2 = $wk_pnt_0_top
      }
      else
      {
         $wk_px = INTERFERISCI($wk_pnt_0_top,$wk_ang_top,$wk_pnt_0_stop,$wk_pnt_1_stop)
         //$P1 = $wk_pnt_0_stop
         //$P2 = $wk_px
         $P1 = $wk_px
         $P2 = $wk_pnt_0_stop
      }
      if($wk_px.x!=$ERR_INTER & $wk_px.y!=$ERR_INTER & $wk_px.z!=$ERR_INTER)
      {
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         //$testo = STR(FLOOR($d+0.5))
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         //$testo = STRCAT("RT",$testo)
         GOSUB PosizionaQuota
      }

      // RIENTRO FRONTE
      $P1 = $wk_pnt_1_top
      $wk_px = INTERFERISCI($wk_pnt_1_stop,$wk_ang_top,$wk_pnt_0_top,$wk_pnt_1_top)
      if($wk_px.x!=$ERR_INTER & $wk_px.y!=$ERR_INTER & $wk_px.z!=$ERR_INTER)
      {
         $P1 = $wk_pnt_1_top
         $P2 = $wk_px
      }
      else
      {
         $wk_px = INTERFERISCI($wk_pnt_1_top,$wk_ang_top,$wk_pnt_0_stop,$wk_pnt_1_stop)
         $P1 = $wk_pnt_0_stop
         $P2 = $wk_px
      }
      if($wk_px.x!=$ERR_INTER & $wk_px.y!=$ERR_INTER & $wk_px.z!=$ERR_INTER)
      {
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         //$testo = STR(FLOOR($d+0.5))
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         //$testo = STRCAT("FR",$testo)
         GOSUB PosizionaQuota
      }
   }

   PROCEDURA StampaTop_QuotaScassi
   {
      NEAR_GLOBALE2( "$wk_scs_tmp", $wk_idx_quota_scassi, 1, "Cuc_StaffaFrigo")

      if( $wk_scs_tmp == 0
        & $wk_stampa_TOP == "SOTTOTOP")
      {
         //Luca 24/03/2020
         //attivo stampa sottotop per fenix e laminglass ( no quote scassi)
         if( VAR_VAL($wk_idx_top,"VAR_TipoTop")==3
           | VAR_VAL($wk_idx_top,"VAR_TipoTop")==4
           | VAR_VAL($wk_idx_top,"VAR_TipoTop")==10
           | VAR_VAL($wk_idx_top,"VAR_TipoTop")==13 ) { EXITSUB() }
      }

      //cerco tutti gli elementi vicini e filtro quelli che hanno la variabile StpQuotaScasso
      $wk_scs = 0
      //quoto a parte (sopra) gli scassi circolari
      $wk_scs_cil = 0

      //Luca 21/01/2020
      $wk_quota_scs_fnd_lav = 0

      BOX_MODE(0)
      NEAR_GLOBALE2("$wk_scs_tmp",$wk_idx_quota_scassi,1,"*")

      //Luca 28/07/2020
      //per top fusion sagomanti, utilizzo il cnear corretto per cercare gli scassi effettivi
      if( NOME( GetTopLevel($wk_idx_quota_scassi)) == "Top_2P0" )
      {
         if( VAR_VAL(GetTopLevel($wk_idx_quota_scassi),"FLAG_TopFusion")==2 )
         {
            SET_#(GetTopLevel($wk_idx_quota_scassi))
            NEAR_GLOBALE2("$wk_scs_tmp",#idx_cnear_FUSION,1,"*")
         }
      }

      $wk_j = 1
      while ( $wk_j < $wk_scs_tmp )
      {
         $wk_scs_tmp_att = $wk_scs_tmp[$wk_j]
         $wk_scs_tmp_pdr = PADRE( $wk_scs_tmp_att, 1)

         if( debug==1 ) { COMANDO2(STRCAT("LOGMSG STP_TOP ", $wk_stampa_TOP, "(", STR($wk_idx_quota_scassi), "-", NOME($wk_idx_quota_scassi), ") QUOTA SCASSI --> $wk_scs_tmp=" ,STR($wk_scs_tmp) , " $wk_scs_tmp[",STR($wk_j),"]=",STR($wk_scs_tmp_att) ,"-",NOME($wk_scs_tmp_att) , " [",STR(VAR_VAL($wk_scs_tmp_att,"StpQuotaScasso")),"]")) }

         //COMANDO2(STRCAT("LOGMSG $wk_idx_top:",STR($wk_idx_top), " $wk_scs_tmp=",STR($wk_scs_tmp) , " $wk_scs_tmp[j]=",STR($wk_scs_tmp[$wk_j]) , " - " , NOME($wk_scs_tmp[$wk_j])))
         if( VAR_VAL($wk_scs_tmp_att,"StpQuotaScasso")==1 )
         {
            $wk_ne = $wk_scs + 1
            $wk_scs = $wk_ne
            $wk_scs[$wk_ne] = $wk_scs_tmp_att
         }

         //Luca 21/01/2020
         if( NOME($wk_idx_quota_scassi)=="SottoTop_2P0"
           & VAR_VAL($wk_scs_tmp_att,"QuotaScassoFondoLavello")==1 )
         {
            $wk_ne = $wk_scs + 1
            $wk_scs = $wk_ne
            $wk_scs[$wk_ne] = $wk_scs_tmp_att
         }

         if( NOME($wk_scs_tmp_att)=="Scasso_EldomTop" )
         {
            if( VAR_VAL($wk_scs_tmp_att,"FormaScasso")==0 )
            {
               $wk_ne = $wk_scs + 1
               $wk_scs = $wk_ne
               $wk_scs[$wk_ne] = $wk_scs_tmp_att
            }

            if( VAR_VAL($wk_scs_tmp_att,"FormaScasso")==1 )
            {
               $wk_ne = $wk_scs_cil + 1
               $wk_scs_cil = $wk_ne
               $wk_scs_cil[$wk_ne] = $wk_scs_tmp_att
            }
         }

         if( $wk_stampa_TOP == "SOTTOTOP"
           & NOME($wk_scs_tmp_att)=="G368_Giunzione" )
         {
               $wk_ne = $wk_scs_cil + 1
               $wk_scs_cil = $wk_ne
               $wk_scs_cil[$wk_ne] = $wk_scs_tmp_att

               VAR_VALUE_SET( $wk_scs_tmp_att, "flag_stampa", 1)
         }

         //Luca 11/05/2020
         //COMANDO2(STRCAT("LOGMSG NOME($wk_idx_quota_scassi): ", NOME($wk_idx_quota_scassi), " - VAR_VAL_STR( $wk_scs_tmp_pdr, TipoLavaboStr): ", VAR_VAL_STR( $wk_scs_tmp_pdr, "TipoLavaboStr"), " - VAR_VAL($wk_scs_tmp_att,StpQuotaScasso_Cil_S): ", STR(VAR_VAL($wk_scs_tmp_att,"StpQuotaScasso_Cil_S"))))

         if( $wk_stampa_TOP=="SOTTOTOP"  )
         {
            if( VAR_VAL_STR( $wk_scs_tmp_pdr, "TipoLavaboStr") == "INBILICO"
              | VAR_VAL_STR( $wk_scs_tmp_pdr, "TipoLavaboStr") == "ELYSSA"  )
            {
               if( VAR_VAL($wk_scs_tmp_att,"StpQuotaScasso_Cil_S")==1 )
               {
                  $wk_ne = $wk_scs_cil + 1
                  $wk_scs_cil = $wk_ne
                  $wk_scs_cil[$wk_ne] = $wk_scs_tmp_att
               }
            }

            //Luca 23/06/2022
            if( VAR_VAL($wk_scs_tmp_att,"StpQuotaScasso_Cil")==2 )
            {
               $wk_ne = $wk_scs_cil + 1
               $wk_scs_cil = $wk_ne
               $wk_scs_cil[$wk_ne] = $wk_scs_tmp_att
            }
         }
         else
         {
            if( VAR_VAL($wk_scs_tmp_att,"StpQuotaScasso_Cil")==1 )
            {
               $wk_ne = $wk_scs_cil + 1
               $wk_scs_cil = $wk_ne
               $wk_scs_cil[$wk_ne] = $wk_scs_tmp_att
            }
         }


         //if( $wk_stampa_TOP=="SOTTOTOP"
         //  & VAR_VAL_STR( $wk_scs_tmp_pdr, "TipoLavaboStr") == "INBILICO" )
         //{
         //   if( VAR_VAL($wk_scs_tmp_att,"StpQuotaScasso_Cil_S")==1 )
         //   {
         //      $wk_ne = $wk_scs_cil + 1
         //      $wk_scs_cil = $wk_ne
         //      $wk_scs_cil[$wk_ne] = $wk_scs_tmp_att
         //   }
         //}
         //else
         //{
         //   if( VAR_VAL($wk_scs_tmp_att,"StpQuotaScasso_Cil")==1 )
         //   {
         //      $wk_ne = $wk_scs_cil + 1
         //      $wk_scs_cil = $wk_ne
         //      $wk_scs_cil[$wk_ne] = $wk_scs_tmp_att
         //   }
         //}

         //Luca 19/07/2021 quoto il kera in entrambi i modi

         //Luca 21/01/2020 gestisco il KERA come scasso miscelatore,
         //quoto solo il centro
         if( NOME($wk_scs_tmp_att)=="LavaboKERA" )
           //| UN_PADRE2($wk_scs_tmp_att ,"LavaboKERA" ) )
         {
            $wk_idx_scasso_add = $wk_scs_tmp_att
            //if( NOME($wk_idx_scasso_add) != "LavaboKERA"  )
            //{
            //   $wk_idx_scasso_add = PADRE($wk_scs_tmp_att ,1)
            //}

            $wk_ne = $wk_scs_cil + 1
            $wk_scs_cil = $wk_ne
            $wk_scs_cil[$wk_ne] = $wk_idx_scasso_add

            $wk_ne = $wk_scs + 1
            $wk_scs = $wk_ne
            $wk_scs[$wk_ne] = $wk_idx_scasso_add
         }

         //Luca 19/11/2020 vasca termoformata quoto anche il centro (gestisco come scasso cilindro)
         //23878: Vasca termoformata: stampa con indicazione del centro vasca
         if( NOME($wk_scs_tmp_att)=="VascaTermoformata" )
         {
            $wk_ne = $wk_scs_cil + 1
            $wk_scs_cil = $wk_ne
            $wk_scs_cil[$wk_ne] = $wk_scs_tmp_att
         }

         //LZ 14/07/2021: quoto il Blocco_Scassa del LavaboGenerico
         if( NOME($wk_scs_tmp_att) == "Blocco_Scassa"
           & NOME(PADRE( $wk_scs_tmp_att, 1)) == "LavaboGenerico" )
         {
            $wk_ne = $wk_scs + 1
            $wk_scs = $wk_ne
            $wk_scs[$wk_ne] = $wk_scs_tmp_att
         }

         //LZ 07/06/2021: staffa base frigo su sottotop
         if( NOME($wk_scs_tmp_att)=="Cuc_StaffaFrigo"
           & $wk_stampa_TOP == "SOTTOTOP" )
         {
            wk_stop_idx = VAR_VAL( $wk_scs_tmp_att, "Staffa_Stop_Idx")

            COMPONENTI( "$wk_cmp_quota", $wk_idx_quota_scassi)
            AddItem2Array( -1, "wk_cmp_quota", $wk_idx_quota_scassi, "")

            $wk_cmp_quota_num = 1
            while( $wk_cmp_quota_num <= $wk_cmp_quota)
            {
               if( wk_stop_idx == $wk_cmp_quota[$wk_cmp_quota_num])
               {
                  $wk_ne = $wk_scs + 1
                  $wk_scs = $wk_ne
                  $wk_scs[$wk_ne] = $wk_scs_tmp_att

                  $wk_cmp_quota_num = $wk_cmp_quota
               }

               $wk_cmp_quota_num = $wk_cmp_quota_num + 1
            }
         }

         //Luca 16/05/2022
         if( $wk_stampa_TOP == "SOTTOTOP" )
         {
            if( VAR_VAL($wk_scs_tmp_att,"StpQuotaScasso") == 2 )
            {
               $wk_ne = $wk_scs + 1
               $wk_scs = $wk_ne
               $wk_scs[$wk_ne] = $wk_scs_tmp_att
            }

            //Simone 12/09/2022
            //Luca 23/06/2022
            //if( VAR_VAL($wk_scs_tmp_att,"StpQuotaScasso_Cil") == 2 )
            //{
            //   $wk_ne = $wk_scs_cil + 1
            //   $wk_scs_cil = $wk_ne
            //   $wk_scs_cil[$wk_ne] = $wk_scs_tmp_att
            //}
         }

         $wk_j = $wk_j + 1
      }

      if( $wk_scs == 0 & $wk_scs_cil==0 )  { EXITSUB() }

      if( debug==1 ) { COMANDO2(STRCAT("LOGMSG STP_TOP TOP(",STR($wk_idx_quota_scassi), ")  ", NOME($wk_idx_quota_scassi), " QUOTA SCASSI --> $wk_scs=" ,STR($wk_scs) , " $wk_scs_cil=",STR($wk_scs_cil))) }

      if( $wk_scs>0 )     { SORT_POINT(#base_0,"$wk_scs","base_0") }
      if( $wk_scs_cil>0 ) { SORT_POINT(#base_0,"$wk_scs_cil","base_0") }

      $wk_num_scs_cil = $wk_scs_cil

      //reset variabili dettaglio filo top (no se secondo sottotop)
      if ( $wk_quota_scassi_t2  == 0 )
      {
         //$wk_STP_dettaglio = ""
         $wk_STP_DT_IMG = ""
         $wk_STP_DT_IMG2 = ""
         $wk_STP_DT_1 = ""
         $wk_STP_DT_2 = ""

         //Luca 24/03/2020 aggiunco codice eldom
         $wk_STP_ELD_1  = ""
         $wk_STP_ELD_2  = ""
         $wk_STP_ELD_C1 = ""
         $wk_STP_ELD_C2 = ""

         $wk_STP_DL_1 = ""  $wk_STP_DV_1 = ""
         $wk_STP_DL_2 = ""  $wk_STP_DV_2 = ""
         $wk_STP_DL_3 = ""  $wk_STP_DV_3 = ""
         $wk_STP_DL_4 = ""  $wk_STP_DV_4 = ""
         $wk_STP_DL_5 = ""  $wk_STP_DV_5 = ""
         $wk_STP_DL_6 = ""  $wk_STP_DV_6 = ""
      }

      SET_#($wk_idx_quota_scassi)

      //ciclo e quoto
      //sopra del top e a dx dello scasso
      $wk_dist = -70
      $wk_pnt_0_top = #base_0
      $wk_pnt_1_top = #base_1
      $wk_pnt_2_top = #base_2
      $wk_pnt_3_top = #base_3

      //if( NOME($wk_idx_quota_scassi)=="SottoTop_generico" )
      if( VAR_EXIST($wk_idx_quota_scassi,"pnt_b0")==1 )
      {
         $wk_pnt_0_top = #pnt_b0
         $wk_pnt_1_top = #pnt_b1
         $wk_pnt_2_top = #pnt_b2
         $wk_pnt_3_top = #pnt_b3
      }

      //Luca 09/12/2019
      if( NOME($wk_idx_quota_scassi)=="Top_2P0" )
      {
         $wk_pnt_0_top = #pnt_top_b0
         $wk_pnt_1_top = #pnt_top_b1
         $wk_pnt_2_top = #pnt_top_b2
         $wk_pnt_3_top = #pnt_top_b3

         if( $wk_stampa_TOP=="SOTTOTOP" )
         {
            $wk_pnt_0_top = #pnt_stop_b0
            $wk_pnt_1_top = #pnt_stop_b1
            $wk_pnt_2_top = #pnt_stop_b2
            $wk_pnt_3_top = #pnt_stop_b3
         }
      }

      //Luca 19/12/2019
      if( NOME($wk_idx_quota_scassi)=="SottoTop_2P0" )
      {
         $wk_pnt_0_top = #pnt_stop_b0
         $wk_pnt_1_top = #pnt_stop_b1
         $wk_pnt_2_top = #pnt_stop_b2
         $wk_pnt_3_top = #pnt_stop_b3
      }

      //Salvo posizione in larghezza delle quote di profondità già posizionate, in caso di sovrapposizione traslo a dx
      $wk_quota_scs_prof_dists_from_b0 = 0
      $wk_dist_from_b0 = 0

      $wk_j = 1
      while ( $wk_j<=$wk_scs )
      {
         if( debug==1 ) { COMANDO2(STRCAT("LOGMSG STP_TOP TOP(",STR($wk_idx_quota_scassi), ")  ", NOME($wk_idx_quota_scassi), " QUOTA SCASSI --> $wk_scs[",STR($wk_j),"]=" ,STR($wk_scs[$wk_j]),"-",NOME($wk_scs[$wk_j]) )) }

         $dist = $wk_dist*$wk_j

         SET_#($wk_scs[$wk_j])

         //punti da utilizzare per le quote
         $wk_pnt_0_scs = #base_0
         $wk_pnt_1_scs = #base_1
         $wk_pnt_2_scs = #base_2
         $wk_pnt_3_scs = #base_3

         if( VAR_EXIST($wk_scs[$wk_j],"pnt_scs_top_0") )
         {
            $wk_pnt_0_scs = #pnt_scs_top_0
            $wk_pnt_1_scs = #pnt_scs_top_1
            $wk_pnt_2_scs = #pnt_scs_top_2
            $wk_pnt_3_scs = #pnt_scs_top_3
         }

         //if( NOME($wk_idx_quota_scassi)=="SottoTop_generico"
         //  & VAR_EXIST($wk_scs[$wk_j],"pnt_scs_stop_0") )
         //{
         //   $wk_pnt_0_scs = #pnt_scs_stop_0
         //   $wk_pnt_1_scs = #pnt_scs_stop_1
         //   $wk_pnt_2_scs = #pnt_scs_stop_2
         //   $wk_pnt_3_scs = #pnt_scs_stop_3
         //}

         if( NOME($wk_idx_quota_scassi)=="SottoTop_generico"
           | NOME($wk_idx_quota_scassi)=="SottoTop_2P0"
           )
         {
            if( VAR_EXIST($wk_scs[$wk_j],"pnt_scs_stop_0")  )
            {
               $wk_pnt_0_scs = #pnt_scs_stop_0
               $wk_pnt_1_scs = #pnt_scs_stop_1
               $wk_pnt_2_scs = #pnt_scs_stop_2
               $wk_pnt_3_scs = #pnt_scs_stop_3
            }
         }

         //Luca 03/06/2020
         //verifico se l'eldom è ruotato di 180°
         $wk_ang_eld = ANG_TOT2($wk_scs[$wk_j])
         if( $wk_ang_eld<0    ) { $wk_ang_eld = $wk_ang_eld + 360 }
         if( $wk_ang_eld>=360 ) { $wk_ang_eld = $wk_ang_eld - 360 }

         if( ABS( $wk_ang_eld - $wk_ang_top)>179.9
           & ABS( $wk_ang_eld - $wk_ang_top)<180.1 )
         {
            $wk_pnt_0_scs_save = $wk_pnt_0_scs
            $wk_pnt_1_scs_save = $wk_pnt_1_scs
            $wk_pnt_2_scs_save = $wk_pnt_2_scs
            $wk_pnt_3_scs_save = $wk_pnt_3_scs

            $wk_pnt_0_scs = $wk_pnt_2_scs_save
            $wk_pnt_1_scs = $wk_pnt_3_scs_save
            $wk_pnt_2_scs = $wk_pnt_0_scs_save
            $wk_pnt_3_scs = $wk_pnt_1_scs_save
         }

         $ang_scr = 0

         //{ quoto larghezza scasso sopra top
         $P1 = $wk_pnt_1_top
         $P2 = INTERFERISCI($wk_pnt_0_scs,$wk_ang_top+90,$wk_pnt_1_top,$wk_pnt_2_top)
         //Luca 14/04/2021
         if( $P2.x == $ERR_INTER | $P2.y == $ERR_INTER | $P2.z == $ERR_INTER)
         {
            $P2 = $wk_pnt_1_top
         }
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         //$testo = STR(FLOOR($d+0.5))
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $wk_px = INTERFERISCI($wk_pnt_3_scs,$wk_ang_top+90,$wk_pnt_1_top,$wk_pnt_2_top)
         if($wk_px.x!=$ERR_INTER & $wk_px.y!=$ERR_INTER & $wk_px.z!=$ERR_INTER)
         {
            $P2 = $wk_px
            $P2.y = $P1.y
            $d = DISTANZA($P1,$P2)
            //$testo = STR(FLOOR($d+0.5))
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuota
         }

         $P1 = $P2
         $P2 = $wk_pnt_2_top
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         //$testo = STR(FLOOR($d+0.5))
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
         //} quoto larghezza scasso sopra top

         //{ quoto profondità scasso a dx
         $dist = -50

         $wk_quota_scs_prof = 1
         //Luca 02/12/2021
         if( $wk_stampa_TOP=="SOTTOTOP" )
         {
            //if( UN_PADRE2($wk_scs[$wk_j],"LavaboKERA") ) {  $wk_quota_scs_prof = 0 }
            if( NOME($wk_scs[$wk_j]) == "LavaboKERA" )
            {
               if( IsIdx($wk_scs[$wk_j],"idx_top") )
               {
                  if( VAR_VAL(#idx_top,"VAR_TipoTop") == 22 )  { $wk_quota_scs_prof = 2 }
               }
            }
         }

         if( $wk_quota_scs_prof == 1 )
         {
            //Luca 24/03/2020 distanza da base_0 .. per controllare vicinanza quote
            $wk_dist_from_b0_att =  DistanzaFraPunti($wk_pnt_0_top,$wk_pnt_3_scs,$wk_ang_top)

            if( $wk_dist_from_b0_att - $wk_dist_from_b0 < 100
              & $wk_dist_from_b0_att - $wk_dist_from_b0 > 0 )   { $dist = -100  $wk_dist_from_b0 = $wk_dist_from_b0_att }

            if( $wk_dist_from_b0_att - $wk_dist_from_b0 > -100
              & $wk_dist_from_b0_att - $wk_dist_from_b0 < 0 )   {  $dist = -20  $wk_dist_from_b0 = $wk_dist_from_b0_att }

            if( $wk_dist_from_b0==0 ) { $wk_dist_from_b0 = $wk_dist_from_b0_att }

            $wk_qta_i = 1
            while( $wk_qta_i <= $wk_quota_scs_prof_dists_from_b0 )
            {
               $wk_quota_scs_prof_dist_from_b0 = $wk_quota_scs_prof_dists_from_b0[$wk_qta_i]
               if( $wk_quota_scs_prof_dist_from_b0 >= $wk_dist_from_b0_att
                 & $wk_quota_scs_prof_dist_from_b0 <= $wk_dist_from_b0_att - $dist )
               {
                  $dist = 2*$dist
                  $wk_qta_i = $wk_quota_scs_prof_dists_from_b0
               }

               $wk_qta_i = $wk_qta_i + 1
            }

            $wk_quota_scs_prof_dists_from_b0 = $wk_quota_scs_prof_dists_from_b0 + 1
            VAR_VALUE_SET( -1, STRCAT( "wk_quota_scs_prof_dists_from_b0_##", STR($wk_quota_scs_prof_dists_from_b0)), $wk_dist_from_b0)

            $wk_quota_solo_fronte = 0
            $P1 = INTERFERISCI($wk_pnt_2_scs,$wk_ang_top+90,$wk_pnt_1_top,$wk_pnt_2_top)
            $P2 = $wk_pnt_2_scs
            if( $P1.x==$ERR_INTER | $P1.y==$ERR_INTER | $P1.z==$ERR_INTER)
            {
               $P1 = $wk_pnt_2_top
               $P2 = INTERFERISCI($wk_pnt_2_scs,$wk_ang_top,$wk_pnt_3_top,$wk_pnt_2_top)
               $wk_quota_solo_fronte = 1
            }
            $P2.y = $P1.y
            $d = DISTANZA($P1,$P2)
            //$testo = STR(FLOOR($d+0.5))
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuota

            if( VAR_VAL($wk_scs[$wk_j],"QuotaScassoFondoLavello")==0 )
            {
               $P1 = $P2
               $P2 = $wk_pnt_3_scs
               $P2.y = $P1.y
               $d = DISTANZA($P1,$P2)
               //$testo = STR(FLOOR($d+0.5))
               $testo = STR(FLOOR(($d+0.05)*10)/10)
               //$testo = STR(FLOOR($d*100)/100)
               GOSUB PosizionaQuota
            }

            $P1 = $P2
            $P2 = INTERFERISCI($wk_pnt_3_scs,$wk_ang_top+90,$wk_pnt_0_top,$wk_pnt_3_top)
            if( $P2.x==$ERR_INTER | $P2.y==$ERR_INTER | $P2.z==$ERR_INTER) { $P2 = $wk_pnt_3_top }

            $P2.y = $P1.y
            $d = DISTANZA($P1,$P2)
            //$testo = STR(FLOOR($d+0.5))
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuota
         }

         //Luca 02/12/2021 quota per KERA speciale
         if( $wk_quota_scs_prof == 2 )
         {
            $P2 = INTERFERISCI2($wk_pnt_2_scs,$wk_ang_top+90,$wk_pnt_0_top,$wk_pnt_3_top)
            if( $P2.x!=$ERR_INTER & $P2.y!=$ERR_INTER )
            {
               $P1 = $P2
               $P1.x = $P2.x +   SENO($wk_ang_top)*(#ScsSTop_Z)
               $P1.z = $P2.z + COSENO($wk_ang_top)*(#ScsSTop_Z)
               $P1.y = $P2.y
               $d = DISTANZA($P1,$P2)
               //$testo = STR(FLOOR($d+0.5))
               $testo = STR(FLOOR(($d+0.05)*10)/10)
               GOSUB PosizionaQuota
            }
         }
         //} quoto profondità scasso a dx

         //{ raggio scasso
         //quoto raggio su base_0 dello scasso
         $wk_raggio_scs = VAR_VAL($wk_scs[$wk_j],"VAR_ELD_Raggio")
         //Luca 04/02/2020
         //stampa sottotop di un incasso sottotop, raggio 0
         if( $wk_stampa_TOP=="SOTTOTOP" )
         {
            if( VAR_VAL($wk_scs[$wk_j],"VAR_ELD_TipoIncasso")==2 ) { $wk_raggio_scs = 0 }

            //Luca 10/06/2020 anche per eldom integrati/saldati
            if( NOME($wk_scs[$wk_j])=="LavelloGenerico" )
            {
               if( VAR_VAL($wk_scs[$wk_j],"VAR_ELD_TipoIncasso")==3 ) { $wk_raggio_scs = 0 }
            }
         }

         //LZ 25/11/2021
         if( $wk_raggio_scs == 0 ) { $wk_raggio_scs = VAR_VAL( $wk_scs[$wk_j], "Raggio") }

         if( $wk_raggio_scs!=0 )
         {
            $wk_qr_len  = 100
            $wk_raggio  = $wk_raggio_scs
            if( $wk_stampa_TOP=="SOTTOTOP" )
            {
               $wk_raggio_st  = VAR_VAL($wk_scs[$wk_j],"VAR_ELD_Raggio") + VAR_VAL($wk_scs[$wk_j],"VAR_ELD_ST_RieScS")
               if( $wk_raggio_st > 0 ) { $wk_raggio = $wk_raggio_st }
            }

            //Luca 26/06/2020
            if( NOME($wk_scs[$wk_j]) == "Scasso_EldomTop"
              | NOME($wk_scs[$wk_j]) == "ScassoTopGenerico" )  { $wk_qr_len  = 40 }

            $wk_qr_off_cq = $wk_raggio/2
            $wk_ang_qr  = $wk_ang_top
            $P1 = $wk_pnt_0_scs
            $wk_dir = 1
            $testo = STRCAT("R. ",STR($wk_raggio))

            //LZ 04/06/2021
            if( NOME($wk_scs[$wk_j]) == "Cuc_StaffaFrigo" )
            {
               $wk_qr_len  = 50

               wk_staffa_tipo  = VAR_VAL($wk_scs[$wk_j], "Staffa_Tipo")
               wk_staffa_verso = VAR_VAL($wk_scs[$wk_j], "Staffa_Verso")

               $P1 = $wk_pnt_0_scs
               $wk_dir = 3
               if( wk_staffa_verso < 0 )
               {
                  $P1 = $wk_pnt_3_scs
                  $wk_dir = 4
               }
            }

            //if( $wk_stampa_TOP=="SOTTOTOP"
            //  & VAR_VAL($wk_scs[$wk_j],"VAR_ELD_TipoIncasso")==1 )
            if( $wk_stampa_TOP=="SOTTOTOP" )
            {
               $wk_add_raggio_int = 0
               if( VAR_VAL($wk_scs[$wk_j],"VAR_ELD_TipoIncasso")==1 ) { $wk_add_raggio_int = 1 }
               //Luca 10/06/2020 anche per eldom integrati/saldati
               if( NOME($wk_scs[$wk_j])=="PianoCotturaGenerico"
                 & VAR_VAL($wk_scs[$wk_j],"VAR_ELD_TipoIncasso")==3 ) { $wk_add_raggio_int = 1 }

               if( $wk_add_raggio_int == 1 )
               {
                  //Luca 12/06/2020 VAR_ELD_RaggioInt non presente su lavello
                  $wk_raggio  = VAR_VAL($wk_scs[$wk_j],"VAR_ELD_Raggio")
                  if( NOME($wk_scs[$wk_j])=="PianoCotturaGenerico" )
                  {
                     $wk_raggio  = VAR_VAL($wk_scs[$wk_j],"VAR_ELD_RaggioInt")
                  }


                  $wk_qr_off_cq = VAR_VAL($wk_scs[$wk_j],"VAR_ELD_FT_RieX") + $wk_raggio
                  $wk_ang_qr  = $wk_ang_top
                  $testo = STRCAT("R. ",STR($wk_raggio))
               }
            }

            $P1.y = $P1.y + 100
            GOSUB PosaQuotaRaggio

            //se scasso filotop, quoto anche raggio interno
            $wk_add_raggio_int = 0
            if( $wk_stampa_TOP!="SOTTOTOP" )
            {
               if( VAR_VAL($wk_scs[$wk_j],"VAR_ELD_TipoIncasso")==1 ) { $wk_add_raggio_int = 1 }

               if( NOME($wk_scs[$wk_j])=="PianoCotturaGenerico"
                 & VAR_VAL($wk_scs[$wk_j],"VAR_ELD_TipoIncasso")==3 ) { $wk_add_raggio_int = 1 }

               //Luca 12/06/2020 non quoto mantis  22730: Eldom top: migliorie filotop
               if( VAR_VAL($wk_scs[$wk_j],"VAR_ELD_YSopra") >= VAR_VAL($wk_idx_quota_scassi,"Y") ) { $wk_add_raggio_int = 0 }
            }
            //if( VAR_VAL($wk_scs[$wk_j],"VAR_ELD_TipoIncasso")==1 & $wk_stampa_TOP!="SOTTOTOP" )

            if( $wk_add_raggio_int == 1 )
            {
               $wk_qr_len  = 100
               //Luca 26/06/2020
               if( NOME($wk_scs[$wk_j]) == "ScassoTopGenerico" )  { $wk_qr_len  = 40 }

               $wk_raggio  = VAR_VAL($wk_scs[$wk_j],"VAR_ELD_RaggioInt")
               $wk_qr_off_cq = VAR_VAL($wk_scs[$wk_j],"VAR_ELD_FT_RieX") + $wk_raggio
               $wk_ang_qr  = $wk_ang_top
               $P1 = $wk_pnt_3_scs
               $testo = STRCAT("R.INT ",STR($wk_raggio))
               $wk_dir = 2
               $P1.y = $P1.y + 100
               GOSUB PosaQuotaRaggio
            }
         }
         //} raggio scasso

         //Luca 23/08/2021
         //mantis 025237: Cucina - Miglioria stampa top
         if( $wk_stampa_TOP == "TOP" )
         {
            if( VAR_VAL_STR($wk_scs[$wk_j],"VAR_ELD_TipoIncassoStr") != "" )
            {
               $P2 = #pnt_scs_centro
               $P2.y = $P2.y + 50
               $testo = VAR_VAL_STR($wk_scs[$wk_j],"VAR_ELD_TipoIncassoStr")
               $wk_faccia = "A"
               $point = 4
               $ang_scr = $wk_ang_top
               GOSUB PosizionaScrittaCAD
            }
         }

         //Luca 18/01/2021
         $wk_scs_idx = $wk_scs[$wk_j]
         GOSUB StampaTop_QuotaScassi_InserisciDettaglio

         //Luca 05/02/2020
         // 0022009: Stampe top: dettaglio lavello sottotop
         if( VAR_VAL($wk_scs[$wk_j],"VAR_ELD_TipoIncasso")==2 & $wk_stampa_TOP=="SOTTOTOP" )
         {
            $wk_STP_DT_IMG = STRCAT($path_layout,"Dettagli\Sottotop.bmp")
         }

         //Luca 24/03/2020
         //aggiungo dettaglio
         if( $wk_j<=2 & $wk_stampa_TOP=="TOP" )
         {
            //DISPLAY2(STRCAT("BP ---> " , STR($wk_scs[$wk_j]), " - " ,NOME($wk_scs[$wk_j])))
            if( VAR_VAL($wk_scs[$wk_j],"InsEldom")==1 )
            {
               //DISPLAY2(STRCAT("BP ---> " , STR(0), " - " ))
               $wk_var_codice = "E004"
               if( NOME($wk_scs[$wk_j])=="LavelloGenerico" ) { $wk_var_codice = "E008" }
               $wk_strcodice = STRCAT(VAR_VAL_STR($wk_scs[$wk_j],STRCAT("GEST_",$wk_var_codice))," - ", GetDescCatVal($wk_scs[$wk_j],$wk_var_codice,"VAL"))
               VAR_VALUESTR_SET(-1,STRCAT("wk_STP_ELD_",STR($wk_j)),$wk_strcodice)

               //DISPLAY2(STRCAT("BP 1 ---> " , $wk_STP_ELD_1  ))
               //DISPLAY2(STRCAT("BP 2 ---> " , $wk_STP_ELD_2  ))
               //$wk_STP_DIS_TitoloDisegno=$wk_STP_ELD_1

            }
         }

         //se scasso filotop, aggiugo il dettaglio
         //massimo 2 dettagli filotop
         $wk_count_FiloTop = 0
         if( VAR_VAL($wk_scs[$wk_j],"VAR_ELD_TipoIncasso")==1 & $wk_count_FiloTop<2 & $wk_stampa_TOP=="TOP" )
         {
            //Luca 12/06/2020 aggiungo dettaglio solo se  VAR_ELD_YSopra < Y
            $wk_add_dett_scasso = 0

            if( VAR_VAL($wk_scs[$wk_j],"VAR_ELD_YSopra") < VAR_VAL($wk_idx_quota_scassi,"Y") ) { $wk_add_dett_scasso = 1 }

            if( $wk_add_dett_scasso==1 )
            {
               $wk_count_FiloTop = $wk_count_FiloTop + 1

               $wk_STP_DT_IMG = STRCAT($path_layout,"Dettagli\FiloTop.bmp")

               if( $wk_count_FiloTop==1 )
               {
                  $wk_STP_DL_1 = "YT"    $wk_STP_DV_1 = STR(VAR_VAL($wk_idx_quota_scassi,"Y"))
                  $wk_STP_DL_2 = "YR"    $wk_STP_DV_2 = STR(VAR_VAL($wk_scs[$wk_j],"VAR_ELD_YSopra"))
                  $wk_STP_DL_3 = "XR"    $wk_STP_DV_3 = STR(VAR_VAL($wk_scs[$wk_j],"VAR_ELD_FT_RieX"))

                  $wk_STP_DT_1 = "DETTAGLIO SCASSO S1"
               }
               if( $wk_count_FiloTop==2 )
               {
                  $wk_STP_DL_4 = "YT"    $wk_STP_DV_4 = STR(VAR_VAL($wk_idx_quota_scassi,"Y"))
                  $wk_STP_DL_5 = "YR"    $wk_STP_DV_5 = STR(VAR_VAL($wk_scs[$wk_j],"VAR_ELD_YSopra"))
                  $wk_STP_DL_6 = "XR"    $wk_STP_DV_6 = STR(VAR_VAL($wk_scs[$wk_j],"VAR_ELD_FT_RieX"))

                  $wk_STP_DT_2 = "DETTAGLIO SCASSO S2"
               }

               //aggiungo la scritta
               //aumento dimensione scritte
               $Lar_Chr = $Xscr/2
               $Alt_Chr = $Yscr/2

               $P2 = #pnt_scs_centro
               $P2.y = $P2.y + 50
               $testo = "S1"
               if( $wk_count_FiloTop==2 ) { $testo = "S2" }
               $wk_faccia = "A"
               $point = 4
               $ang_scr = $wk_ang_top
               GOSUB PosizionaScrittaCAD

               //ripristino dimensione scritte
               $Lar_Chr = $Xscr/4
               $Alt_Chr = $Yscr/4
            }
         }

         //{ *** lettere per scasso
         if( VAR_EXIST($wk_scs[$wk_j],"pnt_stp_letter_rt")==1 )
         {
            $wk_letter2add = "N"

            //se vetro/quarzo
            if( $wk_letter_vtr_qrz!="" )
            {
               $wk_letter2add = "G"
               //se incasso sottotop L/O/S
               if( VAR_VAL($wk_scs[$wk_j],"VAR_ELD_TipoIncasso")==2 ) { $wk_letter2add = $wk_letter_vtr_qrz }

               //Luca 10/06/2020 niente lettera per top integrati
               if( VAR_VAL($wk_scs[$wk_j],"VAR_ELD_TipoIncasso")==3 ) { $wk_letter2add = "" }

               if( $wk_stampa_TOP=="SOTTOTOP" )
               {
                  //Luca 19/12/2019
                  //mantis 21698
                  $wk_letter2add = "N"

                  if( NOME($wk_idx_quota_scassi)=="Top_2P0" )
                  {
                     if( VAR_VAL($wk_idx_quota_scassi,"TopUnico")==1 ) { $wk_letter2add = "N" }
                  }
                  //if( NOME($wk_idx_quota_scassi)=="SottoTop_2P0" ) { $wk_letter2add = "N" }
               }
            }

            if( $wk_letter2add!="" )
            {
               //RETRO
               $P2 = #pnt_stp_letter_rt
               $testo = $wk_letter2add
               $point = 5
               $wk_faccia = "A"
               $ang_scr = $wk_ang_scr
               GOSUB PosizionaScrittaCAD

               //FRONTE
               $P2 = #pnt_stp_letter_fr
               $testo = $wk_letter2add
               $point = 3
               $wk_faccia = "A"
               $ang_scr = $wk_ang_scr
               GOSUB PosizionaScrittaCAD

               //SX
               $P2 = #pnt_stp_letter_sx
               $testo = $wk_letter2add
               $point = 1
               $wk_faccia = "A"
               $ang_scr = $wk_ang_scr
               GOSUB PosizionaScrittaCAD

               //SX
               $P2 = #pnt_stp_letter_dx
               $testo = $wk_letter2add
               $point = 7
               $wk_faccia = "A"
               $ang_scr = $wk_ang_scr
               GOSUB PosizionaScrittaCAD
            }

            $ang_scr = 0
         }
         //} *** lettere per scasso

         $wk_num_scs = $wk_num_scs + 1

         $wk_j = $wk_j + 1
      }

      //Luca 24/09/2020
      //devo gestire i casi in cui la quota in profondità si sovrappone
      //verifico la distanza in x da b0

      $wk_dist_x = 9999

      //quoto scassi miscelatore
      $wk_j = 1
      while ( $wk_j<=$wk_scs_cil )
      {
         if( debug==1 ) { COMANDO2(STRCAT("LOGMSG STP_TOP TOP(",STR($wk_idx_quota_scassi), ")  ", NOME($wk_idx_quota_scassi), " QUOTA SCASSI CIL --> $wk_scs_cil[",STR($wk_j),"]=" ,STR($wk_scs_cil[$wk_j]),"-",NOME($wk_scs_cil[$wk_j]) )) }

         $dist = ABS($wk_dist)*$wk_j

         SET_#($wk_scs_cil[$wk_j])

         //punti da utilizzare per le quote
         $wk_pnt_scs = #pnt_scs_centro
         $ang_scr = 0

         //{ quoto larghezza scasso sopra top
         $P1 = $wk_pnt_0_top
         $P2 = INTERFERISCI($wk_pnt_scs,$wk_ang_top+90,$wk_pnt_0_top,$wk_pnt_3_top)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         //$testo = STR(FLOOR($d+0.5))
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $wk_dist_x_att = $d

         $P1 = $P2
         $P2 = $wk_pnt_3_top
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         //$testo = STR(FLOOR($d+0.5))
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
         //} quoto larghezza scasso sopra top

         //{ quoto profondità scasso a dx
         $dist = -50
         if( NOME($wk_scs_cil[$wk_j])=="LavaboKERA" ) { $dist = 0 }

         //Luca 24/09/2020 vedi commento inizio while
         if( ABS($wk_dist_x_att - $wk_dist_x) < 50 ) { $dist = -80 }
         $wk_dist_x = $wk_dist_x_att

         $P1 = $wk_pnt_scs
         $P2 = INTERFERISCI($P1,$wk_ang_top+90,$wk_pnt_0_top,$wk_pnt_3_top)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         //$testo = STR(FLOOR($d+0.5))
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
         //} quoto profondità scasso a dx

         //{ quoto diametro scs
         $wk_quota_diametro = 0
         if( NOME($wk_scs_cil[$wk_j])!="LavaboKERA"
           & NOME($wk_scs_cil[$wk_j])!="VascaTermoformata"  ) { $wk_quota_diametro = 1 }

         //if( NOME($wk_scs_cil[$wk_j])!="LavaboKERA" )
         if( $wk_quota_diametro == 1 )
         {
            $wk_PC = $wk_pnt_scs

            $wk_qd_dim = #X
            if( VAR_EXIST($wk_scs_cil[$wk_j],"Diametro") ) { $wk_qd_dim = #Diametro }

            if( $wk_stampa_TOP=="SOTTOTOP" )
            {
               $wk_qd_dim = #X
               if( VAR_EXIST($wk_scs_cil[$wk_j],"Diametro") ) { $wk_qd_dim = #DiametroST }
            }

            $wk_ang_quota_dc = $wk_ang_top
            GOSUB PosizionaQuota_DiametroCilindro
         }

         //Luca 18/01/2021
         $wk_scs_idx = $wk_scs_cil[$wk_j]
         GOSUB StampaTop_QuotaScassi_InserisciDettaglio

         if( NOME($wk_scs_cil[$wk_j])=="LavaboKERA" )
         {
            $wk_KERA_X = VAR_VAL($wk_scs_cil[$wk_j],"X")
            $wk_KERA_Z = VAR_VAL($wk_scs_cil[$wk_j],"Z")
            $wk_var_val  = VAR_VAL_STR($wk_idx_top,"GEST_C028")
            $wk_str_test = STRCAT("GEST_C028;",$wk_var_val)
            $wk_no_sig = STRDADB($wk_idx_top,"DAMMI_NONSIGNIF",$wk_str_test)

            $wk_KERA_finTOP = "V"
            if( $wk_no_sig=="WW000" )        { $wk_KERA_finTOP = "W"  }
            if( $wk_no_sig=="FX000"
              | $wk_no_sig=="LA000" )        { $wk_KERA_finTOP = "L"  }
            if( $wk_stampa_TOP=="SOTTOTOP" ) { $wk_KERA_finTOP = "ST" }

            $wk_dt_file = STRCAT($path_layout,"Dettagli\LavaboKERA_",STR($wk_KERA_X),"X",STR($wk_KERA_Z),"_",$wk_KERA_finTOP,".bmp")

            if( $wk_STP_DT_IMG != "" ) { $wk_STP_DT_IMG  = $wk_dt_file }
            else                       { $wk_STP_DT_IMG2 = $wk_dt_file }

            //Luca 03/12/2020
            //mantis 23923: Lavabo kera: aggiunta lettera bordo interno
            if( VAR_VAL($wk_idx_top,"VAR_TipoTop")==3
              | VAR_VAL($wk_idx_top,"VAR_TipoTop")==4
              | VAR_VAL($wk_idx_top,"VAR_TipoTop")==10
              | VAR_VAL($wk_idx_top,"VAR_TipoTop")==13 )
            {
               $P2 = #pnt_stp_letter_sx
               $testo = "F"
               $point = 7
               $wk_faccia = "A"
               $ang_scr = $wk_ang_scr
               GOSUB PosizionaScrittaCAD
            }
         }

         //} quoto profondità scasso a dx

         $wk_j = $wk_j + 1
      }
   }

   //Luca 18/01/2021
   //creo procedura per inserimento dettaglio
   //posso aggiungere 2 dettagli per singolo top
   //in alcuni casi, questi dettagli, possono essere sovrascitti
   //se esiste il file CODICE_TOP o CODICE_SOTTOTOP in \Layout\Dettagli\ aggiungo alla stampa
   //i dettagli devono essere in formato BMP
   PROCEDURA StampaTop_QuotaScassi_InserisciDettaglio
   {
      if( $wk_STP_DT_IMG != "" & $wk_STP_DT_IMG2 !="" )  { EXITSUB() }

      $wk_var_dettaglio = "wk_STP_DT_IMG"
      if( $wk_STP_DT_IMG != "" ) { $wk_var_dettaglio = "wk_STP_DT_IMG2" }

      $wk_var_codice = "E004"
      if( NOME($wk_scs_idx)=="LavelloGenerico" ) { $wk_var_codice = "E008" }
      $wk_strcodice = VAR_VAL_STR($wk_scs_idx,STRCAT("GEST_",$wk_var_codice))

      $wk_dettaglio_scasso = STRCAT($wk_strcodice,"_",$wk_stampa_TOP)
      $wk_file_dettaglio = STRCAT($path_layout,"Dettagli\",$wk_dettaglio_scasso,".bmp")

      if( FILE_EXIST($wk_file_dettaglio) == 1 ) { VAR_VALUESTR_SET(-1,$wk_var_dettaglio,$wk_file_dettaglio) }

      //Luca 16/05/2022 gestisco eventuale secondo dettaglio
      $wk_var_dettaglio = "wk_STP_DT_IMG"
      if( $wk_STP_DT_IMG != "" ) { $wk_var_dettaglio = "wk_STP_DT_IMG2" }

      $wk_dettaglio_scasso = STRCAT($wk_strcodice,"_",$wk_stampa_TOP,"2")
      $wk_file_dettaglio = STRCAT($path_layout,"Dettagli\",$wk_dettaglio_scasso,".bmp")

      if( FILE_EXIST($wk_file_dettaglio) == 1 ) { VAR_VALUESTR_SET(-1,$wk_var_dettaglio,$wk_file_dettaglio) }
   }

   //PROCEDURA StampaTop_StampaSottoTop
   //{
   //   GOSUB InizializzaVar_StampaTop
   //
   //   GOSUB StampaTop_ImpostaLegenda
   //
   //   $wk_view_roll = STRCAT( STR(-1*$wk_ang_top) ," 0" )
   //   $wk_view_ang = STR(-1*$wk_ang_top)
   //
   //   //TROVO SOTTOTOP
   //   $wk_idx_st  = -1
   //   $wk_idx_st2 = -1
   //   if( NOME($wk_idx_top)=="Top" )
   //   {
   //      if( VAR_EXIST($wk_idx_top,"idx_pann_stop") )
   //      {
   //         SET_#($wk_idx_top)
   //         if( IS_IDX(#idx_pann_stop) )  { $wk_idx_st  = #idx_pann_stop }
   //         if( IS_IDX(#idx_pann_stop2) ) { $wk_idx_st2 = #idx_pann_stop2 }
   //      }
   //   }
   //   if( NOME($wk_idx_top)=="SottopTop" ) { $wk_idx_st = $wk_idx_top }
   //
   //   if( IS_IDX($wk_idx_st) )   { VAR_VALUE_SET($wk_idx_st ,"flag_stampa",1) }
   //   if( IS_IDX($wk_idx_st2) )  { VAR_VALUE_SET($wk_idx_st2,"flag_stampa",1) }
   //
   //   if( $DIS_TO_GEMO==0 ) { GOSUB StampaTop_QuotaSottoTop }
   //
   //   GOSUB NomeDisegno
   //   GOSUB StampaLayout
   //
   //   if( $DIS_TO_GEMO==0 ) { GOSUB CancellaScritteQuote }
   //
   //   if( IS_IDX($wk_idx_st)  )  { VAR_VALUE_SET($wk_idx_st ,"flag_stampa",0) }
   //   if( IS_IDX($wk_idx_st2) )  { VAR_VALUE_SET($wk_idx_st2,"flag_stampa",0) }
   //}

   PROCEDURA StampaTop_QuotaSottoTop
   {
      if( $DIS_TO_GEMO!=0 ) { EXITSUB() }

      $alias_scr     = "STP_SCR_TOP"
      $AliasQuota    = "STP_QUO_TOP"
      $AliasQuotaLat = "STP_QUO_TOP"
      $wk_faccia = "A"
      $HChar = 25
      $LChar = 15
      $ang_scr = 0

      $HChar   = $Yscr/4         $LChar   = $Xscr/4
      $Alt_Chr = $Yscr/4         $Lar_Chr = $Xscr/4

      $ang_scr = 0
      $wk_scosta_lquota = 20

      $wk_num_scs_cil = 0
      $wk_num_scs = 0
      //su richiesta di LAGO

      // TOTALE + MISCELATORE -- SOPRA
      // SCASSI ELDOM -- SOTTO

      $wk_pnt_0_stop = #base_0
      $wk_pnt_1_stop = #base_1
      $wk_pnt_2_stop = #base_2
      $wk_pnt_3_stop = #base_3

      if( NOME($wk_idx_top)=="SottoTop_2P0" )
      {
         $wk_pnt_0_stop = #pnt_stop_b0
         $wk_pnt_1_stop = #pnt_stop_b1
         $wk_pnt_2_stop = #pnt_stop_b2
         $wk_pnt_3_stop = #pnt_stop_b3
      }
      if( NOME($wk_idx_top)=="Top_2P0" )
      {
         $wk_pnt_0_stop = #pnt_stop_b0
         $wk_pnt_1_stop = #pnt_stop_b1
         $wk_pnt_2_stop = #pnt_stop_b2
         $wk_pnt_3_stop = #pnt_stop_b3
      }

      //{ AGGIUNGO LETTERA
      $wk_idx_letter = $wk_idx_top
      GOSUB StampaTop_AggiungiLettera
      //} AGGIUNGO LETTERA

      //{ QUOTO GLI SCASSI PRESENTI
      $wk_idx_quota_scassi = $wk_idx_st
      $wk_quota_scassi_t2  =  0
      GOSUB StampaTop_QuotaScassi
      //} QUOTO GLI SCASSI PRESENTI

      //quoto larghezza lato fronte
      SET_#($wk_idx_st)
      $dist = 120
      if( $wk_num_scs_cil>0 ) { $dist = 70*$wk_num_scs_cil + 120 }

      $P1 = $wk_pnt_0_stop
      $P2 = $wk_pnt_3_stop
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))
      GOSUB PosizionaQuota

      //quoto profondità lato Sx
      $dist = 120
      $P1 = $wk_pnt_1_stop
      $P2 = $wk_pnt_0_stop
      if( VAR_EXIST( $wk_idx_st, "pnt_sx")
        & VAR_EXIST( $wk_idx_st, "pnt_sx_fro"))
      {
         $P1 = #pnt_sx_fro
         $P2 = #pnt_sx
      }

      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))
      GOSUB PosizionaQuota

      if( IS_IDX($wk_idx_st2) )
      {
         SET_#($wk_idx_st2)

         ////quoto larghezza lato fronte
         //$dist = 120
         //$P1 = $wk_pnt_0_stop
         //$P2 = $wk_pnt_3_stop
         //$P2.y = $P1.y
         //$d = DISTANZA($P1,$P2)
         //$testo = STR(FLOOR($d+0.5))
         //GOSUB PosizionaQuota

         //Luca 21/01/2020 quoto i singolo top
         $dist = -120
         if( $wk_num_scs>0 ) { $dist = -70*$wk_num_scs  - 120 }

         $P1 = $wk_pnt_1_stop
         $P2 = $P1
         $P2.x = $P1.x + COSENO($wk_ang_top)*VAR_VAL($wk_idx_st,"X")
         $P2.z = $P1.z -   SENO($wk_ang_top)*VAR_VAL($wk_idx_st,"X")
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR($d+0.5))
         GOSUB PosizionaQuota

         $dist = -120
         if( $wk_num_scs>0 ) { $dist = -70*$wk_num_scs - 120 }
         $P1 = $P2
         $P2 = $wk_pnt_2_stop
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR($d+0.5))
         GOSUB PosizionaQuota

         //il secondo quoto a dx
         //quoto profondità lato Dx
         $dist = -120
         if( VAR_VAL( $wk_idx_top, "DividiSottoTop") == 2 ) { $dist = 120 }

         $P1 = $wk_pnt_2_stop
         $P2 = $wk_pnt_3_stop
         if( VAR_EXIST( $wk_idx_st2, "pnt_dx")
           & VAR_EXIST( $wk_idx_st2, "pnt_dx_fro"))
         {
            $P1 = #pnt_dx
            $P2 = #pnt_dx_fro
         }
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR($d+0.5))
         GOSUB PosizionaQuota

         //{ QUOTO GLI SCASSI PRESENTI
         $wk_idx_quota_scassi = $wk_idx_st2
         $wk_quota_scassi_t2  =  1
         GOSUB StampaTop_QuotaScassi
         //} QUOTO GLI SCASSI PRESENTI
      }

      //{ QUOTO TOP FUSION
      if( VAR_EXIST($wk_idx_top,"FSN_ScsPos")==0
        | VAR_VAL($wk_idx_top,"FLAG_TopFusion")==0  ) { EXITSUB() }

      //quoto interno
      //quoto larghezza lato retro

      $dist = 0
      $wk_offquota = 100
      if( VAR_VAL_STR($wk_idx_top,"FSN_ScsPos")=="RS" )
      {
         $P1 = $wk_pnt_0_stop
         $P1.x = $wk_pnt_0_stop.x +   SENO($wk_ang_top)*$wk_offquota
         $P1.z = $wk_pnt_0_stop.z + COSENO($wk_ang_top)*$wk_offquota
         $P2 = $P1
         $P2.x = $P2.x + COSENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_Scs_ST_X")
         $P2.z = $P2.z -   SENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_Scs_ST_X")
      }

      if( VAR_VAL_STR($wk_idx_top,"FSN_ScsPos")=="RD" )
      {
         $P2 = $wk_pnt_3_stop
         $P2.x = $wk_pnt_3_stop.x +   SENO($wk_ang_top)*$wk_offquota
         $P2.z = $wk_pnt_3_stop.z + COSENO($wk_ang_top)*$wk_offquota
         $P1 = $P2
         $P1.x = $P2.x - COSENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_Scs_ST_X")
         $P1.z = $P2.z +   SENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_Scs_ST_X")
      }

      if( VAR_VAL_STR($wk_idx_top,"FSN_ScsPos")=="FS" )
      {
         $P1 = $wk_pnt_1_stop
         $P1.x = $wk_pnt_1_stop.x -   SENO($wk_ang_top)*$wk_offquota
         $P1.z = $wk_pnt_1_stop.z - COSENO($wk_ang_top)*$wk_offquota
         $P2 = $P1
         $P2.x = $P2.x + COSENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_Scs_ST_X")
         $P2.z = $P2.z -   SENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_Scs_ST_X")
      }

      if( VAR_VAL_STR($wk_idx_top,"FSN_ScsPos")=="FD" )
      {
         $P2 = $wk_pnt_2_stop
         $P2.x = $wk_pnt_2_stop.x -   SENO($wk_ang_top)*$wk_offquota
         $P2.z = $wk_pnt_2_stop.z - COSENO($wk_ang_top)*$wk_offquota
         $P1 = $P2
         $P1.x = $P1.x - COSENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_Scs_ST_X")
         $P1.z = $P1.z +   SENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_Scs_ST_X")
      }

      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota


      if( VAR_VAL_STR($wk_idx_top,"FSN_ScsPos")=="RS" )
      {
         $P2 = $wk_pnt_0_stop
         $P2.x = $wk_pnt_0_stop.x + COSENO($wk_ang_top)*$wk_offquota
         $P2.z = $wk_pnt_0_stop.z -   SENO($wk_ang_top)*$wk_offquota
         $P1 = $P2
         $P1.x = $P1.x +   SENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_Scs_ST_Z")
         $P1.z = $P1.z + COSENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_Scs_ST_Z")
      }

      if( VAR_VAL_STR($wk_idx_top,"FSN_ScsPos")=="RD" )
      {
         $P2 = $wk_pnt_3_stop
         $P2.x = $wk_pnt_3_stop.x - COSENO($wk_ang_top)*$wk_offquota
         $P2.z = $wk_pnt_3_stop.z +   SENO($wk_ang_top)*$wk_offquota
         $P1 = $P2
         $P1.x = $P2.x +   SENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_Scs_ST_Z")
         $P1.z = $P2.z + COSENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_Scs_ST_Z")
      }

      if( VAR_VAL_STR($wk_idx_top,"FSN_ScsPos")=="FS" )
      {
         $P1 = $wk_pnt_1_stop
         $P1.x = $wk_pnt_1_stop.x + COSENO($wk_ang_top)*$wk_offquota
         $P1.z = $wk_pnt_1_stop.z -   SENO($wk_ang_top)*$wk_offquota
         $P2 = $P1
         $P2.x = $P2.x -   SENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_Scs_ST_Z")
         $P2.z = $P2.z - COSENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_Scs_ST_Z")
      }

      if( VAR_VAL_STR($wk_idx_top,"FSN_ScsPos")=="FD" )
      {
         $P1 = $wk_pnt_2_stop
         $P1.x = $wk_pnt_2_stop.x - COSENO($wk_ang_top)*$wk_offquota
         $P1.z = $wk_pnt_2_stop.z +   SENO($wk_ang_top)*$wk_offquota
         $P2 = $P1
         $P2.x = $P2.x -   SENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_Scs_ST_Z")
         $P2.z = $P2.z - COSENO($wk_ang_top)*VAR_VAL($wk_idx_top,"FSN_Scs_ST_Z")
      }

      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota
      //} QUOTO TOP FUSION
   }

   PROCEDURA InizializzaVar_StampaTop
   {
      $wk_FORM_dW =  5
      //$wk_FORM_dH =  40
      $wk_FORM_W  =  285
      //$wk_FORM_H  =  164
      $wk_FORM_dH =  52
      $wk_FORM_H  =  152

      //Luca 20/04/2021
      //solo per stampa top steel
      $wk_FORM2_dW = $wk_FORM_dW
      $wk_FORM2_W  = $wk_FORM_W
      $wk_FORM2_dH = 1500
      $wk_FORM2_H  = 50

      //eventualmente per far partire il forma da sotto le scritte
      //$wk_FORM_dH =  53
      //$wk_FORM_H  =  151

      //vecchio versione con 2 viste su foglio verticale
      //$wk_FORM_dW =   5
      //$wk_FORM_dH =  40
      //$wk_FORM_W  = 200
      //$wk_FORM_H  = 126
      //
      //$wk_FORM_ISO_dW =   5
      //$wk_FORM_ISO_dH = 166
      //$wk_FORM_ISO_W  = 200
      //$wk_FORM_ISO_H  = 125

      // Overlay
      $wk_STP_OVERLAY = ""
      if( CheckSel_ORD_SOST($wk_idx_top) != 1) { $wk_STP_OVERLAY = STRCAT( $path_layout, "A4_Orizzontale_Barrato.bmp") }

      $wk_SP_LINEA_MOBILI       = $TSTP_SP_LINEA_MOBILI
      $wk_SP_LINEA_MOBILI_TRATT = $TSTP_SP_LINEA_TRATTEGGIO
      $wk_SP_LINEA_SCRITTE      = $TSTP_SP_LINEA_QUOTE
      $wk_SP_LINEA_QUOTE        = $TSTP_SP_LINEA_SCRITTE

      $wk_SP_LINEA_MOBILI       = 40
      $wk_SP_LINEA_MOBILI_TRATT = 15
      $wk_SP_LINEA_SCRITTE      = 1
      $wk_SP_LINEA_QUOTE        = 1

      $wk_STP_DT_IMG = ""
      $wk_STP_DT_IMG2 = ""

      //Luca 07/02/2022
      $wk_STP_DT_IMG_X = 217
      $wk_STP_DT_IMG_Y = 144
      $wk_STP_DT_IMG_W = 70
      $wk_STP_DT_IMG_H = 57.5

      $wk_STP_DT_IMG2_X = $wk_STP_DT_IMG_X
      $wk_STP_DT_IMG2_Y = $wk_STP_DT_IMG_Y - $wk_STP_DT_IMG_H
      $wk_STP_DT_IMG2_W = $wk_STP_DT_IMG_W
      $wk_STP_DT_IMG2_H = $wk_STP_DT_IMG_H

      $wk_STP_LegendaTitolo = "Legenda"

      $wk_vv = 1
      while ( $wk_vv <= 30 )
      {
         VAR_VALUESTR_SET(-1,STRCAT("wk_STP_LEG_VAR",STR($wk_vv)),"")
         VAR_VALUESTR_SET(-1,STRCAT("wk_STP_LEG_VAL",STR($wk_vv)),"")
         VAR_VALUESTR_SET(-1,STRCAT("wk_STP_LEG_FIN",STR($wk_vv)),"")

         $wk_vv = $wk_vv + 1
      }

      //$wk_STP_LEG_VAR1  = ""         $wk_STP_LEG_VAL1  = ""
      //$wk_STP_LEG_VAR2  = ""         $wk_STP_LEG_VAL2  = ""
      //$wk_STP_LEG_VAR3  = ""         $wk_STP_LEG_VAL3  = ""
      //$wk_STP_LEG_VAR4  = ""         $wk_STP_LEG_VAL4  = ""
      //$wk_STP_LEG_VAR5  = ""         $wk_STP_LEG_VAL5  = ""
      //$wk_STP_LEG_VAR6  = ""         $wk_STP_LEG_VAL6  = ""
      //$wk_STP_LEG_VAR7  = ""         $wk_STP_LEG_VAL7  = ""
      //$wk_STP_LEG_VAR8  = ""         $wk_STP_LEG_VAL8  = ""
      //$wk_STP_LEG_VAR9  = ""         $wk_STP_LEG_VAL9  = ""
      //$wk_STP_LEG_VAR10 = ""         $wk_STP_LEG_VAL10  = ""
      //$wk_STP_LEG_VAR11 = ""         $wk_STP_LEG_VAL11  = ""
      //$wk_STP_LEG_VAR12 = ""         $wk_STP_LEG_VAL12  = ""


      //DETTAGLIO
      $wk_STP_DT_1 = ""
      $wk_STP_DT_2 = ""

      $wk_STP_DL_1 = ""    $wk_STP_DV_1 = ""
      $wk_STP_DL_2 = ""    $wk_STP_DV_2 = ""
      $wk_STP_DL_3 = ""    $wk_STP_DV_3 = ""
      $wk_STP_DL_4 = ""    $wk_STP_DV_4 = ""
      $wk_STP_DL_5 = ""    $wk_STP_DV_5 = ""
      $wk_STP_DL_6 = ""    $wk_STP_DV_6 = ""

      //Luca 24/03/2020 aggiunco codice eldom
      $wk_STP_ELD_1  = ""  $wk_STP_ELD_C1 = ""
      $wk_STP_ELD_2  = ""  $wk_STP_ELD_C2 = ""

      //$wk_nome_form = "Stampa_Top_V.emf"
      //$wk_nome_layout = "Top_Assieme"

      $wk_STP_DIS_TitoloDisegno  = ""
      $wk_STP_DIS_TitoloDisegno2 = ""

      $wk_tipo_top = VAR_VAL($wk_idx_top,"VAR_TipoTop")
      $wk_STP_DIS_TitoloDisegno  = UPPER( VAL_MENU("TipoTop",$wk_tipo_top) )

      if( NOME($wk_idx_top)=="SottopTop"
        | NOME($wk_idx_top)=="SottoTop_2P0" ) { $wk_STP_DIS_TitoloDisegno  = "SOTTOTOP" }

      if( NOME($wk_idx_top)=="Penisola" )     { $wk_STP_DIS_TitoloDisegno  = "PENISOLA" }

      $wk_nome_form = "Stampa_Top2_O.emf"
      $wk_nome_layout = "Top_Assieme"

      if( $wk_stampa_TOP=="TOP"
        | $wk_stampa_TOP=="TOP-S"
        | $wk_stampa_TOP=="SOTTOTOP"  )
      {
         $wk_nome_form = "Stampa_Top_O.emf"
         $wk_nome_layout = "Top_Pianta"

         //riduco per dettaglio
         $wk_FORM_W  =  212

         //$wk_FORM_dH =  52
         //$wk_FORM_H  =  152

         $wk_STP_DIS_TitoloDisegno2 = "VISTA DA SOPRA"

         //Luca 20/04/2021
         if( $wk_stampa_TOP == "TOP"  )
         {
            if( VAR_VAL($wk_idx_top,"VAR_TipoTop")== 23 )
            {
               $wk_FORM2_W = $wk_FORM_W

               $wk_FORM_H = $wk_FORM_H - 48
               $wk_FORM2_dH = 155
            }
         }
      }

      if( $wk_stampa_TOP == "SNACK" )
      {
         $wk_nome_form = "Stampa_Top2_O.emf"
         $wk_nome_layout = "Top_Pianta"
         $wk_STP_DIS_TitoloDisegno  = ""
         $wk_STP_DIS_TitoloDisegno2 = ""
      }
   }

   PROCEDURA StampaTop_ImpostaLegenda
   {
      if( $wk_stampa_TOP == "TOP-S" ) { EXITSUB() }

      if( $wk_stampa_TOP == "TOP" )
      {
         //VETRO E XGLASS
         if( $wk_tipo_top==0  | $wk_tipo_top==1
           | $wk_tipo_top==6  | $wk_tipo_top==7  )
         {
            $wk_STP_LEG_VAR1 = "L"  $wk_STP_LEG_VAL1 = "VETRO LUCIDO"
            $wk_STP_LEG_VAR2 = "O"  $wk_STP_LEG_VAL2 = "VETRO ACIDATO"
            $wk_STP_LEG_VAR3 = "G"  $wk_STP_LEG_VAL3 = "GREZZO / SENZA BORDO"
         }

         //QUARZO
         if( $wk_tipo_top==2 )
         {
            $wk_STP_LEG_VAR1 = "A"  $wk_STP_LEG_VAL1 = "ACCOSTO"
            $wk_STP_LEG_VAR2 = "L"  $wk_STP_LEG_VAL2 = "QUARZO LUCIDO"
            $wk_STP_LEG_VAR3 = "S"  $wk_STP_LEG_VAL3 = "QUARZO SABBIATO"
            $wk_STP_LEG_VAR4 = "G"  $wk_STP_LEG_VAL4 = "GREZZO / SENZA BORDO"
         }

         //ACCIAIO - MADETERRANEO - WILDWOOD sp.80
         if( $wk_tipo_top==20  | $wk_tipo_top==21 | $wk_tipo_top==22 )
         {
            $wk_STP_LEG_VAR1 = "R"  $wk_STP_LEG_VAL1 = "BORDO RETRO"
            $wk_STP_LEG_VAR2 = "F"  $wk_STP_LEG_VAL2 = "BORDO FRONTE"
         }

         //LAMINATO e FENIX
         if( $wk_tipo_top==10  | $wk_tipo_top==3 )
         {
            $wk_STP_LEG_VAR1 = "R"   $wk_STP_LEG_VAL1 = "BORDO RETRO"
            $wk_STP_LEG_VAR2 = "F"   $wk_STP_LEG_VAL2 = "BORDO FRONTE"
            $wk_STP_LEG_VAR3 = "N"   $wk_STP_LEG_VAL3 = "NASTRO RIFLETTENTE"
            $wk_STP_LEG_VAR4 = "MT"  $wk_STP_LEG_VAL4 = "MICROGIUNZIONE CON TIRANTI"
         }

         //ACCIAIO - WILDWOOD sp.30
         if( $wk_tipo_top==11  | $wk_tipo_top==12 | $wk_tipo_top==23 )
         {
            $wk_STP_LEG_VAR1 = "R"  $wk_STP_LEG_VAL1 = "BORDO RETRO"
            $wk_STP_LEG_VAR2 = "F"  $wk_STP_LEG_VAL2 = "BORDO FRONTE"
         }
      }

      if( $wk_stampa_TOP == "SOTTOTOP" )
      {
         $wk_STP_LEG_VAR1 = "G"     $wk_STP_LEG_VAL1 = "GREZZO / SENZA BORDO"
         $wk_STP_LEG_VAR2 = "N"     $wk_STP_LEG_VAL2 = "NASTRO RIFLETTENTE"
         $wk_STP_LEG_VAR3 = "MT"    $wk_STP_LEG_VAL3 = "MICROGIUNZIONE CON TIRANTI"
      }
   }

   PROCEDURA StampaTop_AggiungiLettera
   {
      $wk_ang_scr = ANG_TOT2($wk_idx_top)

      $wk_pletter = [-1,-1,-1]
      $wk_letter2add = ""

      $wk_letter_vtr_qrz = ""

      if( $wk_stampa_TOP=="SOTTOTOP" ) { EXITSUB() }

      //VETRO - XGLASS - QUARZO
      if( $wk_tipo_top==0  | $wk_tipo_top==1
        | $wk_tipo_top==6  | $wk_tipo_top==7
        | $wk_tipo_top==2  )
      {
         $wk_var_val  = VAR_VAL_STR($wk_idx_top,"GEST_C028")
         $wk_str_test = STRCAT("GEST_C028;",$wk_var_val)
         $wk_no_sig = STRDADB($wk_idx_top,"DAMMI_NONSIGNIF",$wk_str_test)

         //VL000 -- VETRO LUCIDO
         if( $wk_no_sig=="VL000" ) { $wk_letter_vtr_qrz = "L" }
         //VO000 -- VETRO OPACO
         if( $wk_no_sig=="VO000" ) { $wk_letter_vtr_qrz = "O" }

         //XE000 -- XGLASS METALLIZZATO LUCIDO
         if( $wk_no_sig=="XE000" ) { $wk_letter_vtr_qrz = "L" }
         //XF000 -- XGLASS METALLIZZATO OPACO
         if( $wk_no_sig=="XF000" ) { $wk_letter_vtr_qrz = "O" }

         //XL000 -- XGLASS LUCIDO
         if( $wk_no_sig=="XL000" ) { $wk_letter_vtr_qrz = "L" }
         //XO000 -- XGLASS OPACO
         if( $wk_no_sig=="XO000" ) { $wk_letter_vtr_qrz = "O" }

         //QUARZO
         if( $wk_no_sig=="QZ901" ) { $wk_letter_vtr_qrz = "L" }
         if( $wk_no_sig=="QZ902" ) { $wk_letter_vtr_qrz = "S" }
         if( $wk_no_sig=="QZ903" ) { $wk_letter_vtr_qrz = "S" }
      }

      if( VAR_EXIST($wk_idx_top,"pnt_stp_letter_rt")==0 ) { EXITSUB() }
      SET_#($wk_idx_top)

      //RETRO
      $wk_letter2add = "F"
      if( VAR_VAL($wk_idx_top,"Muro_rt")==1 ) { $wk_letter2add = "R" }
      if( $wk_letter_vtr_qrz!="" ) { $wk_letter2add = $wk_letter_vtr_qrz }

      $P2 = #pnt_stp_letter_rt
      $testo = $wk_letter2add
      $point = 3
      $wk_faccia = "A"
      $ang_scr = $wk_ang_scr
      GOSUB PosizionaScrittaCAD

      //FRONTE
      $wk_letter2add = "F"
      if( $wk_letter_vtr_qrz!="" ) { $wk_letter2add = $wk_letter_vtr_qrz }

      $P2 = #pnt_stp_letter_fr
      $testo = $wk_letter2add
      $point = 5
      $wk_faccia = "A"
      $ang_scr = $wk_ang_scr
      GOSUB PosizionaScrittaCAD

      //SX
      $wk_letter2add = "F"
      if( VAR_VAL($wk_idx_top,"Muro_sx")==1 ) { $wk_letter2add = "R" }
      if( $wk_letter_vtr_qrz!="" ) { $wk_letter2add = $wk_letter_vtr_qrz }

      //Luca 29/06/2020 mantis 22856
      if( VAR_VAL($wk_idx_top,"Con_MasMT_SX")==1 ) { $wk_letter2add = "" }

      if( $wk_letter2add != "" )
      {
         $P2 = #pnt_stp_letter_sx
         $testo = $wk_letter2add
         $point = 7
         $wk_faccia = "A"
         $ang_scr = $wk_ang_scr
         GOSUB PosizionaScrittaCAD
      }

      //DX
      $wk_letter2add = "F"
      if( VAR_VAL($wk_idx_top,"Muro_dx")==1 ) { $wk_letter2add = "R" }
      if( $wk_letter_vtr_qrz!="" ) { $wk_letter2add = $wk_letter_vtr_qrz }

      //Luca 29/06/2020 mantis 22856
      if( VAR_VAL($wk_idx_top,"Con_MasMT_DX")==1 ) { $wk_letter2add = "" }

      if ( $wk_letter2add != "" )
      {
         $P2 = #pnt_stp_letter_dx
         $testo = $wk_letter2add
         $point = 1
         $wk_faccia = "A"
         $ang_scr = $wk_ang_scr
         GOSUB PosizionaScrittaCAD
      }

      $ang_scr = 0

      //verifico se ho affiancato un TOP

      $wk_letter2add_acc = ""

      //A - ACCOSTO QUARZO
      //MT - MICROGIUNZIONI LAMINGLASS
      if( $wk_tipo_top==2  ) { $wk_letter2add_acc = "A"  }
      if( $wk_tipo_top==10
        | $wk_tipo_top==13 ) { $wk_letter2add_acc = "MT" }

      //Luca 22/10/2020 mantis 23606: Top: manca accosto
      if( $wk_tipo_top==3
        | $wk_tipo_top==4  ) { $wk_letter2add_acc = "MT" }

      if( $wk_letter2add_acc!="" )
      {
         if( IS_IDX(#idx_topvic_sx)==1 )
         {
            if( $wk_tipo_top==VAR_VAL(#idx_topvic_sx,"VAR_TipoTop")
              & #idx_topvic_sx!=#idx_topang_sx )
            {
               //Aggiungo lettara accosto SX
               $wk_letter2add = $wk_letter2add_acc
               $P2 = #pnt_stp_letter_sx
               $P2.x = $P2.x + COSENO($wk_ang_scr)*50 -   SENO($wk_ang_scr)*100
               $P2.z = $P2.z -   SENO($wk_ang_scr)*50 - COSENO($wk_ang_scr)*100
               $testo = $wk_letter2add
               $point = 1
               $wk_faccia = "A"
               $ang_scr = $wk_ang_scr
               GOSUB PosizionaScrittaCAD

               $P2 = #pnt_stp_letter_sx
               $P2.x = $P2.x + COSENO($wk_ang_scr)*50 +   SENO($wk_ang_scr)*100
               $P2.z = $P2.z -   SENO($wk_ang_scr)*50 + COSENO($wk_ang_scr)*100
               $testo = $wk_letter2add
               $point = 1
               $wk_faccia = "A"
               $ang_scr = $wk_ang_scr
               GOSUB PosizionaScrittaCAD
            }
         }

         if( IS_IDX(#idx_topvic_dx)==1 )
         {
            if( $wk_tipo_top==VAR_VAL(#idx_topvic_dx,"VAR_TipoTop")
              & #idx_topvic_dx!=#idx_topang_dx )
            {
               //Aggiungo lettera accosto SX
               $wk_letter2add = $wk_letter2add_acc
               $P2 = #pnt_stp_letter_dx
               $P2.x = $P2.x - COSENO($wk_ang_scr)*50  -   SENO($wk_ang_scr)*100
               $P2.z = $P2.z +   SENO($wk_ang_scr)*50  - COSENO($wk_ang_scr)*100
               $testo = $wk_letter2add
               $point = 7
               $wk_faccia = "A"
               $ang_scr = $wk_ang_scr
               GOSUB PosizionaScrittaCAD

               $P2 = #pnt_stp_letter_dx
               $P2.x = $P2.x - COSENO($wk_ang_scr)*50 +   SENO($wk_ang_scr)*100
               $P2.z = $P2.z +   SENO($wk_ang_scr)*50 + COSENO($wk_ang_scr)*100
               $testo = $wk_letter2add
               $point = 7
               $wk_faccia = "A"
               $ang_scr = $wk_ang_scr
               GOSUB PosizionaScrittaCAD
            }
         }

         if( IS_IDX(#idx_topang_sx)==1 )
         {
            if( $wk_tipo_top==VAR_VAL(#idx_topang_sx,"VAR_TipoTop") )
            {
               $wk_prof_top_sx = VAR_VAL(#idx_topang_sx,"Zt")

               //Aggiungo lettara accosto SX
               $wk_letter2add = $wk_letter2add_acc
               //$P2 = #base_1
               $P2 = #pnt_top_b1
               $P2.x = $P2.x + COSENO($wk_ang_scr)*($wk_prof_top_sx/3) -   SENO($wk_ang_scr)*10
               $P2.z = $P2.z -   SENO($wk_ang_scr)*($wk_prof_top_sx/3) - COSENO($wk_ang_scr)*10
               $testo = $wk_letter2add
               $point = 3
               $wk_faccia = "A"
               $ang_scr = $wk_ang_scr
               GOSUB PosizionaScrittaCAD

               //$P2 = #base_2
               $P2 = #pnt_top_b1
               $P2.x = $P2.x + COSENO($wk_ang_scr)*($wk_prof_top_sx/1.5) -   SENO($wk_ang_scr)*10
               $P2.z = $P2.z -   SENO($wk_ang_scr)*($wk_prof_top_sx/1.5) - COSENO($wk_ang_scr)*10
               $testo = $wk_letter2add
               $point = 3
               $wk_faccia = "A"
               $ang_scr = $wk_ang_scr
               GOSUB PosizionaScrittaCAD

               //Luca 19/12/2019 aggiungo la quota del top in accosto
               $dist = -30
               $P1 = #pnt_top_b1
               $P2 = $P1
               $P2.x = $P2.x + COSENO($wk_ang_scr)*($wk_prof_top_sx)
               $P2.z = $P2.z -   SENO($wk_ang_scr)*($wk_prof_top_sx)
               $d = DISTANZA($P1,$P2)
               $testo = STR(FLOOR(($d+0.05)*10)/10)
               $ang_scr = 0
               GOSUB PosizionaQuota
            }
         }

         if( IS_IDX(#idx_topang_dx)==1 )
         {
            if( $wk_tipo_top==VAR_VAL(#idx_topang_dx,"VAR_TipoTop") )
            {
               $wk_prof_top_dx = VAR_VAL(#idx_topang_dx,"Zt")

               //Aggiungo lettara accosto SX
               $wk_letter2add = $wk_letter2add_acc
               //$P2 = #base_2
               $P2 = #pnt_top_b2
               $P2.x = $P2.x - COSENO($wk_ang_scr)*($wk_prof_top_dx/1.5) -   SENO($wk_ang_scr)*10
               $P2.z = $P2.z +   SENO($wk_ang_scr)*($wk_prof_top_dx/1.5) - COSENO($wk_ang_scr)*10
               $testo = $wk_letter2add
               $point = 3
               $wk_faccia = "A"
               $ang_scr = $wk_ang_scr
               GOSUB PosizionaScrittaCAD

               //$P2 = #base_2
               $P2 = #pnt_top_b2
               $P2.x = $P2.x - COSENO($wk_ang_scr)*($wk_prof_top_dx/3) -   SENO($wk_ang_scr)*10
               $P2.z = $P2.z +   SENO($wk_ang_scr)*($wk_prof_top_dx/3) - COSENO($wk_ang_scr)*10
               $testo = $wk_letter2add
               $point = 3
               $wk_faccia = "A"
               $ang_scr = $wk_ang_scr
               GOSUB PosizionaScrittaCAD

               //Luca 19/12/2019 aggiungo la quota del top in accosto
               $dist = -30
               $P2 = #pnt_top_b2
               $P1 = $P2
               $P1.x = $P1.x - COSENO($wk_ang_scr)*($wk_prof_top_dx)
               $P1.z = $P1.z +   SENO($wk_ang_scr)*($wk_prof_top_dx)
               $d = DISTANZA($P1,$P2)
               $testo = STR(FLOOR(($d+0.05)*10)/10)
               $ang_scr = 0
               GOSUB PosizionaQuota
            }
         }
      }
   }

   PROCEDURA StampaTop_QuotaSnack
   {
      if( $DIS_TO_GEMO!=0 ) { EXITSUB() }

      $alias_scr     = "STP_SCR_TOP"
      $AliasQuota    = "STP_QUO_TOP"
      $AliasQuotaLat = "STP_QUO_TOP"
      //$AliasQuotaLat = "NoPrint"

      $wk_faccia = "A"

      //$HChar   = $Yscr/4         $LChar   = $Xscr/4
      //$Alt_Chr = $Yscr/4         $Lar_Chr = $Xscr/4

      $HChar   = 20         $LChar   = 12
      $Alt_Chr = 20         $Lar_Chr = 12

      $ang_scr = 0
      $wk_scosta_lquota = 20

      $wk_num_scs_cil = 0

      SET_#($wk_idx_top)

      $wk_pnt_0 = #pnt_top_b0
      $wk_pnt_1 = #pnt_top_b1
      $wk_pnt_2 = #pnt_top_b2
      $wk_pnt_3 = #pnt_top_b3
      $wk_pnt_4 = #pnt_top_b4
      $wk_pnt_5 = #pnt_top_b5
      $wk_pnt_6 = #pnt_top_b6
      $wk_pnt_7 = #pnt_top_b7

      //{ QUOTO DIMENSIONI TOTALI
      //quoto larghezza lato retro
      $dist = 240
      $P1 = $wk_pnt_0
      $P2 = $wk_pnt_3
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      //quoto profondità lato Sx
      $dist = 160
      $P1 = $wk_pnt_1
      $P2 = $wk_pnt_0

      if( #VAR_TipoSnack > 0 & #VAR_Verso > 0 )
      {
         $P1 = $wk_pnt_3
         $P2 = $wk_pnt_2
      }

      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      //in caso di SNACK A L quota profondità inferiore
      if( #VAR_TipoSnack > 0  )
      {
         $dist = 160
         $P1 = $wk_pnt_4
         $P2 = $wk_pnt_0

         if( #VAR_Verso < 0 )
         {
            $P1 = $wk_pnt_3
            $P2 = $wk_pnt_7
         }

         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $dist = -240
         $P1   = $wk_pnt_1
         $P2   = $wk_pnt_6
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $dist = -240
         $P1   = $wk_pnt_6
         $P2   = $wk_pnt_2
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
      }
      //} QUOTO DIMENSIONI TOTALI

      //{ QUOTO MASSELLI LARGHEZZA
      $wk_idx_massello = #idx_masselli
      SET_#($wk_idx_massello)
      $dist = 160
      $P1 = $wk_pnt_0
      $P2 = $P1
      $P2.x = $P2.x + COSENO($wk_ang_top)*#Spe_BordoL
      $P2.z = $P2.z -   SENO($wk_ang_top)*#Spe_BordoL
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      //Luca 07/02/2022
      if( VAR_VAL($wk_idx_top,"VAR_RevisioneMas") >=2
        & VAR_VAL($wk_idx_massello,"Testa_sx_Rev1") >=2  )
      {
         //$wk_stile = 0
         //$wk_scosta = $Alt_Chr*1.5
         $wk_stile = 2
         $P1 = $P2
         $P2 = $P1
         $P2.x = $P2.x + COSENO($wk_ang_top)*#MasAggX_Testa_Sx
         $P2.z = $P2.z -  SENO($wk_ang_top)*#MasAggX_Testa_Sx
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $wk_scosta = $Alt_Chr*1.5
         //$wk_stile = 2
         $P1 = $P2
         $P2 = $P1
         $P2.x = $P2.x + COSENO($wk_ang_top)*30
         $P2.z = $P2.z -  SENO($wk_ang_top)*30
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $wk_stile = 2
         //$wk_scosta = $Alt_Chr*1.5
         $P1 = $P2
         $P2 = $P1
         $P2.x = $P2.x + COSENO($wk_ang_top)*#Lar_MasAbeL
         $P2.z = $P2.z -  SENO($wk_ang_top)*#Lar_MasAbeL
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

      }
      else
      {
         $wk_stile = 2
         $P1 = $P2
         $P2 = $P1
         $P2.x = $P2.x + COSENO($wk_ang_top)*#Lar_MasTru
         $P2.z = $P2.z -  SENO($wk_ang_top)*#Lar_MasTru
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
      }

      $P1 = $P2
      $P2 = $P1
      $P2.x = $P2.x + COSENO($wk_ang_top)*#RieX_MasAbe
      $P2.z = $P2.z -   SENO($wk_ang_top)*#RieX_MasAbe
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      $P1 = $P2
      $P2 = $P1
      $P2.x = $P2.x + COSENO($wk_ang_top)*#X_MasselloRetro1
      $P2.z = $P2.z -   SENO($wk_ang_top)*#X_MasselloRetro1
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      $P1 = $P2
      $P2 = $P1
      $P2.x = $P2.x + COSENO($wk_ang_top)*#RieX_MasAbe
      $P2.z = $P2.z -   SENO($wk_ang_top)*#RieX_MasAbe
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota


      //Luca 07/02/2022
      if( VAR_VAL($wk_idx_top,"VAR_RevisioneMas") >=2
        & VAR_VAL($wk_idx_massello,"Testa_dx_Rev1") >=2  )
      {
         //$wk_scosta = $Alt_Chr*1.5
         $wk_stile = 2
         $P1 = $P2
         $P2 = $P1
         $P2.x = $P2.x + COSENO($wk_ang_top)*#Lar_MasAbeL
         $P2.z = $P2.z -  SENO($wk_ang_top)*#Lar_MasAbeL
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $wk_scosta = $Alt_Chr*1.5
         //$wk_stile = 2
         $P1 = $P2
         $P2 = $P1
         $P2.x = $P2.x + COSENO($wk_ang_top)*30
         $P2.z = $P2.z -  SENO($wk_ang_top)*30
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         //$wk_scosta = $Alt_Chr*1.5
         $wk_stile = 2
         $P1 = $P2
         $P2 = $P1
         $P2.x = $P2.x + COSENO($wk_ang_top)*#MasAggX_Testa_Dx
         $P2.z = $P2.z -  SENO($wk_ang_top)*#MasAggX_Testa_Dx
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $wk_stile = 1
      }
      else
      {
         $wk_stile = 2
         $P1 = $P2
         $P2 = $P1
         $P2.x = $P2.x + COSENO($wk_ang_top)*#Lar_MasTru
         $P2.z = $P2.z -   SENO($wk_ang_top)*#Lar_MasTru
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
      }

      $P1 = $P2
      $P2 = $P1
      $P2.x = $P2.x + COSENO($wk_ang_top)*#Spe_BordoL
      $P2.z = $P2.z -   SENO($wk_ang_top)*#Spe_BordoL
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      $P1 = $P2
      $P2 = $wk_pnt_3
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota
      //} QUOTO MASSELLI LARGHEZZA

      //{ QUOTO MASSELLI LARGHEZZA
      $dist = 30
      $P1   = $wk_pnt_4
      $P1.x = $wk_pnt_4.x -   SENO($wk_ang_top)*72 + COSENO($wk_ang_top)*#PosMasStaffe_##1
      $P1.z = $wk_pnt_4.z - COSENO($wk_ang_top)*72 -   SENO($wk_ang_top)*#PosMasStaffe_##1
      $P2   = $P1
      $P2.x = $P2.x + COSENO($wk_ang_top)*#DimMasStaffe_##1
      $P2.z = $P2.z -   SENO($wk_ang_top)*#DimMasStaffe_##1
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      $wk_jj = 2
      while ( $wk_jj<=VAR_VAL($wk_idx_massello,"DimMasStaffe") )
      {
         $P1   = $P2
         $P2   = $P1
         $P2.x = $P2.x + COSENO($wk_ang_top)*30
         $P2.z = $P2.z -   SENO($wk_ang_top)*30
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $wk_len_staffa = VAR_VAL($wk_idx_massello,STRCAT("DimMasStaffe_##",STR($wk_jj)))

         $P1   = $P2
         $P2   = $P1
         $P2.x = $P2.x + COSENO($wk_ang_top)*$wk_len_staffa
         $P2.z = $P2.z -   SENO($wk_ang_top)*$wk_len_staffa
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $wk_jj = $wk_jj + 1
      }
      //} QUOTO MASSELLI FRONTALE

      //{ QUOTO MASSELLI LARGHEZZA FRONTALE (SNACK L)
      if( VAR_VAL($wk_idx_top,"VAR_TipoSnack")>0 )
      {
         $dist = -120
         $P1   = $wk_pnt_1
         if( VAR_VAL($wk_idx_top,"VAR_Verso")>0 ) { $P1   = $wk_pnt_6 }
         $P2 = $P1
         $P2.x = $P2.x + COSENO($wk_ang_top)*#Spe_BordoL
         $P2.z = $P2.z -   SENO($wk_ang_top)*#Spe_BordoL
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $wk_stile = 2
         $P1 = $P2
         $P2 = $P1
         $P2.x = $P2.x + COSENO($wk_ang_top)*#Lar_MasTru
         $P2.z = $P2.z -  SENO($wk_ang_top)*#Lar_MasTru
         if( VAR_VAL($wk_idx_top,"VAR_Verso")>0 )
         {
            $P2 = $P1
            $P2.x = $P2.x + COSENO($wk_ang_top)*#Lar_MasAbe
            $P2.z = $P2.z -   SENO($wk_ang_top)*#Lar_MasAbe
         }
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $P1
         $P2.x = $P2.x + COSENO($wk_ang_top)*#RieX_MasAbe
         $P2.z = $P2.z -   SENO($wk_ang_top)*#RieX_MasAbe
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $P1
         $P2.x = $P2.x + COSENO($wk_ang_top)*#X_MasselloFronte1
         $P2.z = $P2.z -   SENO($wk_ang_top)*#X_MasselloFronte1
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $P1
         $P2.x = $P2.x + COSENO($wk_ang_top)*#RieX_MasAbe
         $P2.z = $P2.z +   SENO($wk_ang_top)*#RieX_MasAbe
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $wk_stile = 2
         $P1 = $P2
         $P2 = $P1
         $P2.x = $P2.x + COSENO($wk_ang_top)*#Lar_MasAbe
         $P2.z = $P2.z -   SENO($wk_ang_top)*#Lar_MasAbe
         if( VAR_VAL($wk_idx_top,"VAR_Verso")>0 )
         {
            $P2 = $P1
            $P2.x = $P2.x + COSENO($wk_ang_top)*#Lar_MasTru
            $P2.z = $P2.z -   SENO($wk_ang_top)*#Lar_MasTru
         }
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $P1
         $P2.x = $P2.x + COSENO($wk_ang_top)*#Spe_BordoL
         $P2.z = $P2.z -   SENO($wk_ang_top)*#Spe_BordoL
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
      }
      //} QUOTO MASSELLI LARGHEZZA FRONTALE (SNACK L)

      //{ QUOTO POSIZIONE GAMBA  (SNACK L)
      if( VAR_VAL($wk_idx_top,"VAR_TipoSnack")==2 )
      {
         $dist = 80
         $P1 = $wk_pnt_0
         $P2 = $P1
         $P2.x = $P2.x + COSENO($wk_ang_top)*#Pos_Massello_Staffa
         $P2.z = $P2.z -   SENO($wk_ang_top)*#Pos_Massello_Staffa
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $P1
         $P2.x = $P2.x + COSENO($wk_ang_top)*#Lar_MasTou
         $P2.z = $P2.z -   SENO($wk_ang_top)*#Lar_MasTou
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $wk_pnt_3
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $dist = 40
         $P1 = $wk_pnt_1
         $P1.x = $wk_pnt_1.x + COSENO($wk_ang_top)*#Pos_Massello_Staffa
         $P1.z = $wk_pnt_1.z -   SENO($wk_ang_top)*#Pos_Massello_Staffa

         $P2 = $P1
         $P2.x = $P2.x -   SENO($wk_ang_top)*#Pos_Massello_Staffa_Z
         $P2.z = $P2.z - COSENO($wk_ang_top)*#Pos_Massello_Staffa_Z
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $P1
         $P2.x = $P2.x -   SENO($wk_ang_top)*660
         $P2.z = $P2.z - COSENO($wk_ang_top)*660
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $P1
         $P2.x = $P2.x -   SENO($wk_ang_top)*#Pos_Massello_Staffa_Z
         $P2.z = $P2.z - COSENO($wk_ang_top)*#Pos_Massello_Staffa_Z
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

      }
      //}QUOTO POSIZIONE GAMBA  (SNACK L)

      //{ QUOTO MASSELLI IN PROFONDITA'
      $dist = 80
      $P1 = $wk_pnt_1
      if( VAR_VAL($wk_idx_top,"VAR_TipoSnack")>0
        & VAR_VAL($wk_idx_top,"VAR_Verso")>0   ) { $P1 = $wk_pnt_4 }
      $P2 = $P1
      $P2.x = $P2.x -   SENO($wk_ang_top)*#Lar_Maregg
      $P2.z = $P2.z - COSENO($wk_ang_top)*#Lar_Maregg
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      $P1 = $P2
      $P2 = $wk_pnt_0
      $P2.x = $P2.x +   SENO($wk_ang_top)*#Lar_Maregg
      $P2.z = $P2.z + COSENO($wk_ang_top)*#Lar_Maregg
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      $P1= $P2
      $P2= $wk_pnt_0
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      if( VAR_VAL($wk_idx_top,"VAR_TipoSnack")>0 )
      {
         $dist = 80
         $P1 = $wk_pnt_3
         $P2 = $P1
         $P2.x = $P2.x +   SENO($wk_ang_top)*#Lar_Maregg
         $P2.z = $P2.z + COSENO($wk_ang_top)*#Lar_Maregg
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $wk_pnt_2
         if( VAR_VAL($wk_idx_top,"VAR_TipoSnack")>0
           & VAR_VAL($wk_idx_top,"VAR_Verso")<0   ) { $P2 = $wk_pnt_7 }

         $P2.x = $P2.x -   SENO($wk_ang_top)*#Lar_Maregg
         $P2.z = $P2.z - COSENO($wk_ang_top)*#Lar_Maregg
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1= $P2
         $P2= $wk_pnt_2
         if( VAR_VAL($wk_idx_top,"VAR_TipoSnack")>0
           & VAR_VAL($wk_idx_top,"VAR_Verso")<0   ) { $P2 = $wk_pnt_7 }
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
      }
      //} QUOTO MASSELLI IN PROFONDITA'

      //{  QUOTO BUSSOLE
      if( #NBussole > 0
        & VAR_VAL($wk_idx_top,"VAR_TipoSnack") > 0)
      {
         $dist = 100
         if( VAR_VAL($wk_idx_top,"VAR_Verso")>0 ) { $dist = -100 }

         $P1 = $wk_pnt_5
         $P2 = $P1
         $P2.x = $P2.x +   SENO($wk_ang_top)*(#Bussola1_PosZ + #DiamBussole/2 )
         $P2.z = $P2.z + COSENO($wk_ang_top)*(#Bussola1_PosZ + #DiamBussole/2 )
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $wk_pnt_5
         $P2.x = $P2.x +   SENO($wk_ang_top)*(#Bussola2_PosZ + #DiamBussole/2 )
         $P2.z = $P2.z + COSENO($wk_ang_top)*(#Bussola2_PosZ + #DiamBussole/2 )
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $wk_pnt_5
         $P2.x = $P2.x +   SENO($wk_ang_top)*(#Bussola3_PosZ + #DiamBussole/2 )
         $P2.z = $P2.z + COSENO($wk_ang_top)*(#Bussola3_PosZ + #DiamBussole/2 )
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $wk_pnt_5
         $P2.x = $P2.x +   SENO($wk_ang_top)*(#Bussola4_PosZ + #DiamBussole/2 )
         $P2.z = $P2.z + COSENO($wk_ang_top)*(#Bussola4_PosZ + #DiamBussole/2 )
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         if( #NBussole>4 )
         {
            $P1 = $P2
            $P2 = $wk_pnt_5
            $P2.x = $P2.x +   SENO($wk_ang_top)*(#Bussola5_PosZ + #DiamBussole/2 )
            $P2.z = $P2.z + COSENO($wk_ang_top)*(#Bussola5_PosZ + #DiamBussole/2 )
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuota
         }

         $P1= $P2
         $P2= $wk_pnt_6
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
      }
      //} QUOTO BUSSOLE

      //{  QUOTO MASSELLI INTERNI PROFONDITA
      $dist = 10
      $P1 = $wk_pnt_0
      $P1.x = $P1.x + COSENO($wk_ang_top)*150 +   SENO($wk_ang_top)*18
      $P1.z = $P1.z -   SENO($wk_ang_top)*150 + COSENO($wk_ang_top)*18

      if( VAR_VAL($wk_idx_top,"VAR_Verso")<0 )
      {
         $P1 = $wk_pnt_0
         $P1.x = $P1.x + COSENO($wk_ang_top)*(#X - 220) +   SENO($wk_ang_top)*18
         $P1.z = $P1.z -   SENO($wk_ang_top)*(#X - 220) + COSENO($wk_ang_top)*18
      }

      $P2 = $P1
      $P2.x = $P2.x +   SENO($wk_ang_top)*#Lar_MasAbe
      $P2.z = $P2.z + COSENO($wk_ang_top)*#Lar_MasAbe
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      $P1 = $P2
      $P2 = $P1
      $P2.x = $P2.x +   SENO($wk_ang_top)*(#Z1-2*#Lar_MasAbe-2*18)
      $P2.z = $P2.z + COSENO($wk_ang_top)*(#Z1-2*#Lar_MasAbe-2*18)
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      $P1 = $P2
      $P2 = $P1
      $P2.x = $P2.x +   SENO($wk_ang_top)*#Lar_MasAbe
      $P2.z = $P2.z + COSENO($wk_ang_top)*#Lar_MasAbe
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota
      //}  QUOTO MASSELLI INTERNI PROFONDITA

      //{ QUOTO LE STAFFE LATERALI SE INTERNE A MASSELLI
      //Luca 08/06/2020
      $wk_quota_staffa_sx = 0
      $wk_quota_staffa_dx = 0
      if( VAR_VAL($wk_idx_top,"VAR_TipoSnack")==0 )
      {
         $wk_quota_staffa_sx = 1
         $wk_quota_staffa_dx = 1
      }
      if( VAR_VAL($wk_idx_top,"VAR_TipoSnack")>0 )
      {
         if( VAR_VAL($wk_idx_top,"VAR_Verso")>0 ) { $wk_quota_staffa_sx = 1 }
         else                                     { $wk_quota_staffa_dx = 1 }
      }

      if( $wk_quota_staffa_sx==1 )
      {
         $wk_stile = 2
         $wk_pos_staffa = VAR_VAL($wk_idx_top,"PosStaffe_##1")
         $dist = -100
         $P1 = $wk_pnt_4
         $P2 = $P1
         $P2.x = $P2.x + COSENO($wk_ang_top)*$wk_pos_staffa
         $P2.z = $P2.z -   SENO($wk_ang_top)*$wk_pos_staffa
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
      }
      if( $wk_quota_staffa_dx==1 )
      {
         $wk_stile = 2
         $wk_pos_staffa = #X - VAR_VAL($wk_idx_top,STRCAT("PosStaffe_##",STR(#NStaffe)))
         $dist = -100
         $P2 = $wk_pnt_7
         $P1 = $P2
         $P1.x = $P1.x - COSENO($wk_ang_top)*$wk_pos_staffa
         $P1.z = $P1.z +   SENO($wk_ang_top)*$wk_pos_staffa
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
      }
      //MicheleC 23/11/2021 { mantis 26925 - aggiunte quote tra una staffa e l'altra
      $wk_j = 1
      while( $wk_j < #NStaffe  )
      {
         $wk_stile = 2
         $wk_pos_staffa = VAR_VAL($wk_idx_top, STRCAT("PosStaffe_##",STR($wk_j + 1)))
         $wk_pos_staffa_pre = VAR_VAL($wk_idx_top, STRCAT("PosStaffe_##",STR($wk_j)))
         $dist = -100

         $P1   = $wk_pnt_4
         $P1.x = $P1.x + COSENO($wk_ang_top)*$wk_pos_staffa_pre
         $P1.z = $P1.z -   SENO($wk_ang_top)*$wk_pos_staffa_pre

         $P2   = $P1
         $P2.x = $P2.x + COSENO($wk_ang_top)*($wk_pos_staffa - $wk_pos_staffa_pre)
         $P2.z = $P2.z -   SENO($wk_ang_top)*($wk_pos_staffa - $wk_pos_staffa_pre)


         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $wk_j = $wk_j + 1
      }
      //MicheleC 23/11/2021 } mantis 26925 - aggiunte quote tra una staffa e l'altra

      //} QUOTO LE STAFFE LATERALI SE INTERNE A MASSELLI
   }

   PROCEDURA StampaTop_QuotaPen
   {
      if( $DIS_TO_GEMO!=0 ) { EXITSUB() }
      EXITSUB()
   }

   //Luca 07/02/2022
   PROCEDURA StampaProd_PianiSnack
   {
      debug = 0
      #ifdef TE
         debug = 1
      #endif

      //Luca 05/06/2020 aggiungo stampa SNACK
      WITH_ALIAS("$wk_snack","PianoSNACK")

      $wk_snack_num = 1
      while( $wk_snack_num <= $wk_snack)
      {
        $wk_snack_att = $wk_snack[$wk_snack_num]
        $wk_snack_att_all = VAR_VAL( $wk_snack_att, "ALLEGATI")
        $wk_snack_att_tall = VAR_VAL( $wk_snack_att, "T_ALLEGATI")

        if( $wk_snack_att_tall - $wk_snack_att_all > 0)
        {
            DEL_ARRAY_ITEM( -1, "wk_snack", $wk_snack_num)
            $wk_snack_num = $wk_snack_num - 1
        }

        $wk_snack_num = $wk_snack_num + 1
      }

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

      COMANDO2("M4_Message actVisibilityRestoreAll")

      COMANDO2("M4_SHOW Ambienti Hide")
      COMANDO2("SHOW None")
      COMANDO2("SHOW Abilita Off")

      //Luca 05/06/2020  aggiungo stampa SNACK
      $wk_i = 1
      while ( $wk_i<=$wk_snack )
      {
         $wk_idx_top = $wk_snack[$wk_i]

         //Luca 27/01/2022
         $wk_idx_riga      = $wk_idx_top
         $SET_STAMPA       = "0015"

         GOSUB InizioStampaPDF
         GOSUB InfoCartiglioGen

         GOSUB adatta_dim_quote
         GOSUB InfoCartiglioGen_StampaTop


         $wk_stampa_TOP = "SNACK"
         GOSUB InizializzaVar_StampaTop

         $VAR_AnteprimaDiStampa = 1
         if( $OnTerminate==1 )
         {
            $VAR_AnteprimaDiStampa = 0
            if( $CNP==0 ) { $VAR_AnteprimaDiStampa = 1 }
         }

         SET_#($wk_idx_riga)
         if( VAR_EXIST($wk_idx_riga,"IDX_GEST") ) { $POSTNOMESTAMPA = STRCAT("-", $wk_stampa_TOP, "_", STR(#IDX_GEST)) }
         else                                     { $POSTNOMESTAMPA = STRCAT("-", $wk_stampa_TOP, "_(", STR($wk_idx_riga), ")") }
         $wk_suffisso_emf = $wk_stampa_TOP
         VAR_CREATE_NUM(-1,STRCAT("wk_pagina_",$wk_suffisso_emf),0,0,"")


         $wk_ang_top = ANG_TOT2($wk_idx_top)
         while( $wk_ang_top<0 )    { $wk_ang_top  = $wk_ang_top  + 360 }
         while( $wk_ang_top>360 )  { $wk_ang_top  = $wk_ang_top  - 360 }

         if( debug==1 ) { COMANDO2(STRCAT("LOGMSG STP_TOP SNACK (",STR($wk_idx_top),") - ", VAR_VAL_STR($wk_idx_top,"DescEdit__"))) }

         $wk_STP_DIS_TitoloDisegno  = "PIANO SNACK"
         $wk_STP_DIS_TitoloDisegno2 = "VISTA DA SOPRA"

         VAR_VALUE_SET($wk_idx_top,"flag_stampa",1)

         //Luca 22/07/2020 aggiungo dettaglio
         //mantis 23082: Stampa snack: inserimento dettaglio
         if( VAR_VAL($wk_idx_top,"VAR_TipoSnack")==2
           & VAR_VAL($wk_idx_top,"VAR_Revisione")==1 )
         {
            $wk_STP_DT_IMG = STRCAT($path_layout,"Dettagli\SNACK_Staffa500.bmp")
            $wk_nome_form = "Stampa_Top_O.emf"
            $wk_FORM_W  =  212
         }

         //Luca 07/02/2022
         if( VAR_VAL($wk_idx_top,"VAR_RevisioneMas") >= 2 )
         {
            //TODO -- GESTIRE DETTAGLIO UNICO
            //$wk_nome_form = "Stampa_Top_O.emf"
            //$wk_FORM_W  =  212

            //$wk_STP_DT_IMG = STRCAT($path_layout,"Dettagli\.bmp")
            //$wk_STP_DT_IMG_W = 30
            //$wk_STP_DT_IMG_H = 57.5
         }

         $wk_view_roll = STRCAT( STR(-1*$wk_ang_top) ," 0" )
         $wk_view_ang = STR(-1*$wk_ang_top)

         $wk_view_orbit = STRCAT( STR(-1*$wk_ang_top) ," 0" )

         $wk_layout_cmd_1 = ""

         if( $DIS_TO_GEMO==0 )
         {
            if( IS_VAR_FIXED( $wk_idx_top, "VediMassellatura") ) { DEL_VAR_MODIFICATE( $wk_idx_top, "VediMassellatura") }
            VAR_VALUE_SET($wk_idx_top,"VediMassellatura",1)
            RIGENERA_IDX($wk_idx_top)

            GOSUB StampaTop_QuotaSnack
         }

         GOSUB NomeDisegno
         GOSUB StampaLayout

         if( $DIS_TO_GEMO==0 )
         {
            GOSUB CancellaScritteQuote

            VAR_VALUE_SET($wk_idx_top,"VediMassellatura",0)

            RIGENERA_IDX($wk_idx_top)
         }

         VAR_VALUE_SET($wk_idx_top,"flag_stampa",0)

         GOSUB FineStampaPDF
         $wk_suffisso_PDF = ""

         //Luca 16/12/2019
         FILE_DEL(STRCAT($wk_prefisso_file,$File, "*TOP*.emf"))

         GOSUB CancellaGlobaliStp

         $wk_i = $wk_i + 1
      }

      COMANDO2("M4_SHOW Ambienti Show")
      COMANDO2("SHOW Abilita On")
      COMANDO2("SHOW All")
   }

   //LZ 17/05/2021: Stampa barra frontale con push a disegno
   PROCEDURA StampaProd_BarraFPush
   {
      debug = 0
      #ifdef TEC
         debug = 1
      #endif

      if( debug==1 ) { COMANDO2(STRCAT("LOGMSG [ StampaProd_BarraFPush INIZIO")) }

      WITH_ALIAS("$wk_itm","Catena")
      if( $wk_itm == 0 ) { EXITSUB() }
      else
      {
         wk_i = 1
         while( wk_i <= $wk_itm )
         {
            wk_itm_att = $wk_itm[wk_i]
            wk_itm_att_c008 = VAR_VAL_STR( wk_itm_att, "GEST_C008")

            if( Is_In_StrArray( "SM007", wk_itm_att_c008, ";") == 1
              & Is_In_StrArray( "SPEC1", wk_itm_att_c008, ";") == 1 )
            {
               COMPONENTI2("ant", PADRE(wk_itm_att, 2), "Cuc_AntaSingola")

               wk_ant_1_X = STR( VAR_VAL( ant[1], "X") )
               wk_ant_1_A = VAR_VAL_STR( ant[1], "GEST_C007")
               wk_ant_2_X = STR( VAR_VAL( ant[2], "X") )
               wk_ant_2_A = VAR_VAL_STR( ant[2], "GEST_C007")

               if( wk_ant_1_A == "SX001" ) { $wk_STP_AntaSx = wk_ant_1_X }
               if( wk_ant_1_A == "DX001" ) { $wk_STP_AntaDx = wk_ant_1_X }
               if( wk_ant_2_A == "SX001" ) { $wk_STP_AntaSx = wk_ant_2_X }
               if( wk_ant_2_A == "DX001" ) { $wk_STP_AntaDx = wk_ant_2_X }

               $wk_STP_Codice = VAR_VAL_STR(wk_itm_att, "ORD_COD")

               $VAR_AnteprimaDiStampa = 1
               if( $OnTerminate==1 ) { $VAR_AnteprimaDiStampa = 0 }

               GOSUB InizioStampaPDF

               GOSUB InfoCartiglioGen

               $wk_nome_form = "Cuc_BarraFrontale_2Push.emf"
               $wk_nome_layout = "Vuoto"

               $POSTNOMESTAMPA = "-BARRA_2PUSH"
               if( VAR_EXIST(wk_itm_att,"IDX_GEST") ) { $POSTNOMESTAMPA = STRCAT( $POSTNOMESTAMPA, "_",STR( VAR_VAL(wk_itm_att,"IDX_GEST") ) }
               else                                   { $POSTNOMESTAMPA = STRCAT( $POSTNOMESTAMPA, "_(",STR(wk_itm_att),")") }

               $wk_suffisso_emf = $POSTNOMESTAMPA
               VAR_CREATE_NUM(-1,STRCAT("wk_pagina_",$wk_suffisso_emf),0,0,"")

               //Luca 27/01/2022
               $wk_idx_riga      = wk_itm_att
               $SET_STAMPA       = "PROD"

               GOSUB NomeDisegno
               GOSUB StampaLayout

               GOSUB FineStampaPDF

               FILE_DEL(STRCAT($wk_prefisso_file,$File,"*.emf"))
               $wk_suffisso_PDF = ""
            }

            wk_i = wk_i + 1
         }
      }

      if( debug==1 ) { COMANDO2(STRCAT("LOGMSG ] StampaProd_BarraFPush FINE")) }
   }

   //Luca 14/10/2019
   //una pagina pdf per ogni bifacciale materia
   PROCEDURA StampaProd_Bifacciali_Materia
   {
      debug = 0

      WITH_ALIAS("$wk_bif","StpBifMateria")
      if( $wk_bif==0 )  { EXITSUB() }

      $wk_i = 1
      while ( $wk_i<=$wk_bif )
      {
         $wk_idx_bif = $wk_bif[$wk_i]

         GOSUB InizioStampaPDF

         GOSUB InfoCartiglioGen
         GOSUB InfoCartiglioGen_StampaBifMat

         $VAR_AnteprimaDiStampa = 1
         if( $OnTerminate==1 ) { $VAR_AnteprimaDiStampa = 0 }

         SET_#($wk_idx_bif)
         //Luca 04/11/2020 mantis 23741: Stampe tecniche: modifica nome
         //if( VAR_EXIST($wk_idx_bif,"IDX_GEST") ) { $POSTNOMESTAMPA = STRCAT("-BIFMAT-",STR(#IDX_GEST)) }
         //else                                    { $POSTNOMESTAMPA = STRCAT("-BIFMAT-(",STR($wk_idx_bif),")") }
         if( VAR_EXIST($wk_idx_bif,"IDX_GEST") ) { $POSTNOMESTAMPA = STRCAT("-BIFMAT_",STR(#IDX_GEST)) }
         else                                    { $POSTNOMESTAMPA = STRCAT("-BIFMAT_(",STR($wk_idx_bif),")") }

         $wk_suffisso_emf = "_BIFMAT"
         VAR_CREATE_NUM(-1,STRCAT("wk_pagina_",$wk_suffisso_emf),0,0,"")

         $wk_idx_riga      = $wk_idx_bif
         $SET_STAMPA       = "0004"
         $wk_suffisso_nome = "BIFMAT"
         GOSUB NomeDisegnoRiga

         GOSUB adatta_dim_quote

         if( $DIS_TO_GEMO==0 )
         {
            COMANDO2("M4_SHOW Ambienti Hide")
            COMANDO2("SHOW None")
            COMANDO2("SHOW Abilita Off")

            GOSUB StampaProd_BifMat_Sub

            COMANDO2("M4_SHOW Ambienti Show")
            COMANDO2("SHOW Abilita On")
            COMANDO2("SHOW All")
         }

         GOSUB FineStampaPDF
         $wk_suffisso_PDF = ""

         GOSUB CancellaGlobaliStp

         $wk_i = $wk_i + 1
      }
   }

   PROCEDURA InfoCartiglioGen_StampaBifMat
   {
      $wk_STP_DIS_Titolo = "STAMPA BIFACCIALI MATERIA"

      $wk_STP_DIS_LBL_5 = "Operatore:"
      $wk_STP_DIS_5     = VAR_VAL_STR( -1, "CodOperatore")
      $wk_STP_DIS_LBL_6 = ""
      $wk_STP_DIS_6     = ""

      $wk_STP_TitoloInfo = "INFORMAZIONI"

      //Codice + descrizione
      $wk_STP_DIS_VAR1 = VAR_VAL_STR($wk_idx_bif,"DescEdit__")

      //finitura
      $wk_STP_DIS_VAR2 = GetDescCatVal($wk_idx_bif,"C028","CAT")
      $wk_STP_DIS_VAL2 = GetDescCatVal($wk_idx_bif,"C028","VAL")

      //materiale struttura
      $wk_STP_DIS_VAR3 = GetDescCatVal($wk_idx_bif,"C002","CAT")
      $wk_STP_DIS_VAL3 = GetDescCatVal($wk_idx_bif,"C002","VAL")
   }

   PROCEDURA StampaProd_BifMat_Sub
   {
      $wk_SP_LINEA_MOBILI       = $TSTP_SP_LINEA_MOBILI
      $wk_SP_LINEA_MOBILI_TRATT = $TSTP_SP_LINEA_TRATTEGGIO
      $wk_SP_LINEA_SCRITTE      = 1
      $wk_SP_LINEA_QUOTE        = 1

      $wk_FORM_dW =  5
      $wk_FORM_dH =  40
      $wk_FORM_W  =  285
      $wk_FORM_H  =  164

      $wk_nome_form = "Stampa_Top2_O.emf"
      $wk_nome_layout = "Bifacciali_Materia"

      $wk_ang_bif  = ANG_TOT2($wk_idx_bif)
      $wk_view_roll = STRCAT( STR(-1*$wk_ang_bif) ," 0" )

      VAR_VALUE_SET($wk_idx_bif ,"flag_stampa",1)

      if( $DIS_TO_GEMO==0 )  { GOSUB StampaProd_BifMat_Quota }

      GOSUB NomeDisegno
      GOSUB StampaLayout

      if( $DIS_TO_GEMO==0 ) { GOSUB CancellaScritteQuote }

      VAR_VALUE_SET($wk_idx_bif ,"flag_stampa",0)
   }

   PROCEDURA StampaProd_BifMat_Quota
   {
      $alias_scr     = "STP_SCR_TOP"
      $AliasQuota    = "STP_QUO_TOP"
      $AliasQuotaLat = "STP_QUO_TOP"
      $wk_faccia = "F"

      $HChar   = $Yscr/5         $LChar   = $Xscr/5
      $Alt_Chr = $Yscr/5         $Lar_Chr = $Xscr/5

      $ang_scr = 0
      $wk_scosta_lquota = 20

      //$ang_scr    = ANG_TOT2($wk_idx_bif)
      //$ang_quoSCH = ANG_TOT2($wk_idx_bif)

      $ang_scr    = 0

      SET_#($wk_idx_bif)

      $wk_pnt_b3 = #base_0
      $wk_pnt_b3.x = #base_0.x + COSENO(ANG_TOT2($wk_idx_bif))*(#Xt)
      $wk_pnt_b3.z = #base_0.z -   SENO(ANG_TOT2($wk_idx_bif))*(#Xt)

      $wk_pnt_a3.x = #base_0.x + COSENO(ANG_TOT2($wk_idx_bif))*(#Xt)
      $wk_pnt_a3.y = #base_0.y + #Yt
      $wk_pnt_a3.z = #base_0.z -   SENO(ANG_TOT2($wk_idx_bif))*(#Xt)

      $ang_quoSCH = 0
      $dist = 80
      $wk_stile = 0
      $P1 = #base_0
      $P1.y = $P1.y + #Yt
      $P2 = $wk_pnt_b3
      $P2.y = $P2.y + #Yt
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))
      GOSUB PosizionaQuotaSchienale

      $ang_quoSCH = ANG_TOT2($wk_idx_bif)
      $wk_stile = 0
      $dist = 80
      $P1 = #base_0
      $P2 = $P1
      $P2.y = $P1.y + #Yt
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))
      GOSUB PosizionaQuotaSchienale

      if( #Pan1==0 )  { EXITSUB() }

      //{ QUOTE LARGHEZZA SOTTO
      $ang_quoSCH = 0
      $dist = -80

      $wk_stile = 0
      $P1 = #base_0
      $P2 = $P1
      $P2.x = $P2.x + COSENO(ANG_TOT2($wk_idx_bif))*(#Pan1_offx)
      $P2.z = $P2.z -   SENO(ANG_TOT2($wk_idx_bif))*(#Pan1_offx)
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))
      GOSUB PosizionaQuotaSchienale

      $P1 = $P2

      $wk_stile = 0
      $P2 = $P1
      $P2.x = $P2.x + COSENO(ANG_TOT2($wk_idx_bif))*(#Pan1_X)
      $P2.z = $P2.z -   SENO(ANG_TOT2($wk_idx_bif))*(#Pan1_X)
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))
      GOSUB PosizionaQuotaSchienale
      $P1 = $P2

      //quoto tutti quelli posizionati alla stessa altezza
      $wk_offy_prec = #Pan1_offy

      $wk_j = 2
      while ( $wk_j<=4 )
      {
         $wk_pref_var = STRCAT("Pan",STR($wk_j))
         if( VAR_VAL($wk_idx_bif,$wk_pref_var)==1 )
         {
            if( VAR_VAL($wk_idx_bif,STRCAT($wk_pref_var,"_offy"))==$wk_offy_prec )
            {
               $wk_pan_offx = VAR_VAL($wk_idx_bif,STRCAT($wk_pref_var,"_offx"))
               $wk_pan_x    = VAR_VAL($wk_idx_bif,STRCAT($wk_pref_var,"_X"))

               $wk_stile = 0
               $P2 = $P1
               $P2.x = #base_0.x + COSENO(ANG_TOT2($wk_idx_bif))*$wk_pan_offx
               $P2.z = #base_0.z -   SENO(ANG_TOT2($wk_idx_bif))*$wk_pan_offx
               $d = DISTANZA($P1,$P2)
               $testo = STR(FLOOR($d+0.5))

               GOSUB PosizionaQuotaSchienale
               $P1 = $P2

               $wk_stile = 0
               $P2 = $P1
               $P2.x = $P2.x + COSENO(ANG_TOT2($wk_idx_bif))*$wk_pan_x
               $P2.z = $P2.z -   SENO(ANG_TOT2($wk_idx_bif))*$wk_pan_x
               $d = DISTANZA($P1,$P2)
               $testo = STR(FLOOR($d+0.5))
               GOSUB PosizionaQuotaSchienale
               $P1 = $P2

            }
         }
         $wk_j = $wk_j + 1
      }

      $wk_stile = 0
      $P2 = $wk_pnt_b3
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))
      GOSUB PosizionaQuotaSchienale
      //} QUOTE LARGHEZZA SOTTO

      //{ QUOTE ALTEZZE DX
      $wk_arr_alt = 2
      $wk_arr_alt[1] = #Pan1_offy
      $wk_arr_alt[2] = #Pan1_offy + #Pan1_Y

      $wk_j = 2
      while ( $wk_j<=4 )
      {
         $wk_pref_var = STRCAT("Pan",STR($wk_j))
         if( VAR_VAL($wk_idx_bif,$wk_pref_var)==1 )
         {
            $wk_pan_offy = VAR_VAL($wk_idx_bif,STRCAT($wk_pref_var,"_offy"))
            $wk_ne = $wk_arr_alt + 1
            $wk_arr_alt = $wk_ne
            $wk_arr_alt[$wk_ne] = $wk_pan_offy

            $wk_pan_Y = VAR_VAL($wk_idx_bif,STRCAT($wk_pref_var,"_Y"))
            $wk_ne = $wk_arr_alt + 1
            $wk_arr_alt = $wk_ne
            $wk_arr_alt[$wk_ne] = $wk_pan_Y + $wk_pan_offy
         }
         $wk_j = $wk_j + 1
      }

      //Faccio il sort dell'array che contiene i livelli
      array2sort = "wk_arr_alt"
      idx_array2sort = -1
      GOSUB sort_array

      $ang_quoSCH = ANG_TOT2($wk_idx_bif)
      $wk_stile = 0
      $dist = -80
      $P1 = $wk_pnt_b3
      $wk_alt_prec = 0

      $wk_j = 1
      while ( $wk_j<=$wk_arr_alt )
      {
         $wk_alt = $wk_arr_alt[$wk_j]
         if( $wk_alt!=$wk_alt_prec )
         {
            $P2 = $P1
            $P2.y = #base_0.y + $wk_alt
            $wk_stile = 0
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR($d+0.5))
            GOSUB PosizionaQuotaSchienale
            $P1 = $P2
            $wk_alt_prec = $wk_alt
         }
         $wk_j = $wk_j + 1
      }

      $P2 = $wk_pnt_a3
      $wk_stile = 0
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))
      GOSUB PosizionaQuotaSchienale

      //} QUOTE ALTEZZE DX
   }

   //{ STAMPA TECNICA TOP BIFACCIALI CON PASSACAVI
   PROCEDURA StampaProd_PassacaviTop_Materia
   {
      debug = 0

      WITH_ALIAS("$wk_top","Stp_TopMat")

      $wk_top_num = 1
      while( $wk_top_num <= $wk_top)
      {
        $wk_top_att = $wk_top[$wk_top_num]
        $wk_top_att_all = VAR_VAL( $wk_top_att, "ALLEGATI")
        $wk_top_att_tall = VAR_VAL( $wk_top_att, "T_ALLEGATI")

        if( $wk_top_att_tall - $wk_top_att_all > 0)
        {
            DEL_ARRAY_ITEM( -1, "wk_top", $wk_top_num)
            $wk_top_num = $wk_top_num - 1
        }

        $wk_top_num = $wk_top_num + 1
      }

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

      $wk_i = 1
      while ( $wk_i<=$wk_top )
      {
         $wk_idx_top = $wk_top[$wk_i]

         //verifico se c'è qualche passacavi inserito
         $wk_passacavi = 0
         BOX_MODE(0)
         NEAR_GLOBALE2("$wk_passacavi",$wk_idx_top,5,"PassaCaviRett_Mat")

         //Luca 03/07/2020 mantis mantis 22919: Stampa top materia: quote ripetitore
         NEAR_GLOBALE2("$wk_rip_ir",$wk_idx_top,5,"RipetitoreIR_Mat")

         $wk_h = 1
         while ( $wk_h <= $wk_rip_ir )
         {
            //solo riperitore da incasso
            if( VAR_VAL($wk_rip_ir[$wk_h],"TipoIR")==1 )
            {
               $wk_ne = $wk_passacavi + 1
               $wk_passacavi = $wk_ne
               $wk_passacavi[$wk_ne] = $wk_rip_ir[$wk_h]
            }
            $wk_h = $wk_h + 1
         }

         if( $wk_passacavi>0 | $wk_rip_ir > 0 )
         {
            GOSUB InizioStampaPDF

            GOSUB InfoCartiglioGen

            $wk_STP_DIS_Titolo = "STAMPA TOP MATERIA"

            $wk_STP_DIS_LBL_5 = "Operatore:"
            $wk_STP_DIS_5     = VAR_VAL_STR( -1, "CodOperatore")
            $wk_STP_DIS_LBL_6 = ""
            $wk_STP_DIS_6     = ""

            $wk_STP_TitoloInfo = "INFORMAZIONI"
            //Codice + descrizione
            $wk_STP_DIS_VAR1 = VAR_VAL_STR($wk_idx_top,"DescEdit__")

            //finitura
            $wk_STP_DIS_VAR2 = GetDescCatVal($wk_idx_top,"C028","CAT")
            $wk_STP_DIS_VAL2 = GetDescCatVal($wk_idx_top,"C028","VAL")

            $VAR_AnteprimaDiStampa = 1
            if( $OnTerminate==1 ) { $VAR_AnteprimaDiStampa = 0 }

            SET_#($wk_idx_top)
            //Luca 04/11/2020 mantis 23741: Stampe tecniche: modifica nome
            //if( VAR_EXIST($wk_idx_top,"IDX_GEST") ) { $POSTNOMESTAMPA = STRCAT("-TOPMAT-",STR(#IDX_GEST)) }
            //else                                    { $POSTNOMESTAMPA = STRCAT("-TOPMAT-(",STR($wk_idx_top),")") }
            if( VAR_EXIST($wk_idx_top,"IDX_GEST") ) { $POSTNOMESTAMPA = STRCAT("-TOPMAT_",STR(#IDX_GEST)) }
            else                                    { $POSTNOMESTAMPA = STRCAT("-TOPMAT_(",STR($wk_idx_top),")") }

            $wk_suffisso_emf = "_TOPMAT"
            VAR_CREATE_NUM(-1,STRCAT("wk_pagina_",$wk_suffisso_emf),0,0,"")

            //Luca 27/01/2022
            $wk_idx_riga      = $wk_idx_top
            $SET_STAMPA       = "0024"
            $wk_suffisso_nome = "TOPMAT"
            GOSUB NomeDisegnoRiga

            GOSUB adatta_dim_quote

            if( $DIS_TO_GEMO==0 )
            {
               COMANDO2("M4_SHOW Ambienti Hide")
               COMANDO2("SHOW None")
               COMANDO2("SHOW Abilita Off")

               GOSUB StampaProd_PassacaviTop_Materia_Sub

               COMANDO2("M4_SHOW Ambienti Show")
               COMANDO2("SHOW Abilita On")
               COMANDO2("SHOW All")
            }

            GOSUB FineStampaPDF
            $wk_suffisso_PDF = ""

            GOSUB CancellaGlobaliStp
         }

         $wk_i = $wk_i + 1
      }
   }

   PROCEDURA StampaProd_PassacaviTop_Materia_Sub
   {
      $wk_SP_LINEA_MOBILI       = $TSTP_SP_LINEA_MOBILI
      $wk_SP_LINEA_MOBILI_TRATT = $TSTP_SP_LINEA_TRATTEGGIO
      $wk_SP_LINEA_SCRITTE      = 1
      $wk_SP_LINEA_QUOTE        = 1

      $wk_FORM_dW =  5
      $wk_FORM_dH =  52
      $wk_FORM_W  =  212
      $wk_FORM_H  =  152

      //Luca 26/07/2023
      $wk_FORM2_dW = $wk_FORM_dW
      $wk_FORM2_W  = $wk_FORM_W
      $wk_FORM2_dH = 1500
      $wk_FORM2_H  = 50

      $wk_STP_DT_IMG  = ""
      $wk_STP_DT_IMG2 = ""

      //Luca 07/02/2022
      $wk_STP_DT_IMG_X = 217
      $wk_STP_DT_IMG_Y = 144
      $wk_STP_DT_IMG_W = 70
      $wk_STP_DT_IMG_H = 57.5

      $wk_STP_DT_IMG2_X = $wk_STP_DT_IMG_X
      $wk_STP_DT_IMG2_Y = $wk_STP_DT_IMG_Y - $wk_STP_DT_IMG_H
      $wk_STP_DT_IMG2_W = $wk_STP_DT_IMG_W
      $wk_STP_DT_IMG2_H = $wk_STP_DT_IMG_H

      $wk_nome_form = "Stampa_Top_O.emf"
      $wk_nome_layout = "Top_Pianta"

      $wk_ang_top = ANG_TOT2($wk_idx_top)
      $wk_view_roll = STRCAT( STR(-1*$wk_ang_top) ," 0" )
      $wk_view_ang = STR(-1*$wk_ang_top)

      $wk_view_orbit = STRCAT( STR(-1*$wk_ang_top) ," 0" )

      VAR_VALUE_SET($wk_idx_top ,"flag_stampa",1)

      if( $DIS_TO_GEMO==0 )  { GOSUB StampaProd_PassacaviTop_Materia_Quota }

      GOSUB NomeDisegno
      GOSUB StampaLayout

      if( $DIS_TO_GEMO==0 ) { GOSUB CancellaScritteQuote }

      $wk_j = 1
      while ( $wk_j<=$wk_passacavi )
      {
         VAR_VALUE_SET($wk_passacavi[$wk_j] ,"flag_stampa",0)
         $wk_j = $wk_j + 1
      }

      VAR_VALUE_SET($wk_idx_top ,"flag_stampa",0)
   }

   PROCEDURA StampaProd_PassacaviTop_Materia_Quota
   {
      $alias_scr     = "STP_SCR_TOP"
      $AliasQuota    = "STP_QUO_TOP"
      $AliasQuotaLat = "STP_QUO_TOP"
      $wk_faccia = "A"

      $HChar   = $Yscr/5         $LChar   = $Xscr/5
      $Alt_Chr = $Yscr/5         $Lar_Chr = $Xscr/5

      $ang_scr = 0
      $wk_scosta_lquota = 20

      SET_#($wk_idx_top)

      $wk_pnt_top_b0 = #pnt_top_b0
      $wk_pnt_top_b1 = #pnt_top_b1
      $wk_pnt_top_b2 = #pnt_top_b2
      $wk_pnt_top_b3 = #pnt_top_b3


      $dist = -100
      $P1 = $wk_pnt_top_b1
      $P2 = $wk_pnt_top_b2
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      //quoto profondità lato Sx
      $dist = 100
      $P1 = $wk_pnt_top_b1
      $P2 = $wk_pnt_top_b0
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      $wk_dett1 = ""
      $wk_dett2 = ""

      $wk_dist = 100
      $wk_j = 1
      while ( $wk_j<=$wk_passacavi )
      {
         SET_#( $wk_passacavi[$wk_j] )

         $dist = $wk_j*$wk_dist

         $P1 = $wk_pnt_top_b0
         $P2 = INTERFERISCI(#pnt_stp_centro,$wk_ang_top+90,$wk_pnt_top_b0,$wk_pnt_top_b3)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $wk_pnt_top_b3
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $wk_pnt_top_b3
         $P2 = INTERFERISCI(#pnt_stp_centro,$wk_ang_top,$wk_pnt_top_b3,$wk_pnt_top_b2)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $wk_pnt_top_b2
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         if( NOME( $wk_passacavi[$wk_j] ) == "RipetitoreIR_Mat" )
         {
            VAR_VALUE_SET($wk_passacavi[$wk_j] ,"flag_stampa",1)

            $wk_qr_len  = 70
            $wk_raggio = #X
            $testo = STRCAT("d. ",STR($wk_raggio), "  ")
            $P1 = #pnt_stp_centro
            $P1.y = $P1.y + 50
            $wk_ang_qr = $ang_scr
            $wk_dir = 3
            if( #OffsetZ < 100 )      { $wk_dir = 2 }

            if( #OffsetX < 100 )
            {
               $wk_dir = 4
               if( #OffsetZ < 100 )   { $wk_dir = 1 }
            }

            $wk_qr_off_cq = 20
            GOSUB PosaQuotaRaggio
         }

         //gestisco al max 2 dettagli
         $wk_cod_pc = VAR_VAL_STR($wk_passacavi[$wk_j],"cmp_name")
         if( $wk_dett1 == "" ) { $wk_dett1 = $wk_cod_pc }
         else
         {
            if( $wk_cod_pc!=$wk_dett1 ) { $wk_dett2 = $wk_cod_pc }
         }
         $wk_j = $wk_j + 1
      }

      //Luca 15/06/2020
      if( $wk_dett1!="" )
      {
         $wk_dett1_str = "PassacaviRet"
         if( $wk_dett1=="D21006" )  { $wk_dett1_str = "PassacaviVetro" }
         if( $wk_dett1=="TER050" )  { $wk_dett1_str = "PassacaviOvale" }
         if( $wk_dett1=="TER052" )  { $wk_dett1_str = "PassacaviTondo" }
         $wk_STP_DT_IMG = STRCAT($path_layout,"Dettagli\",$wk_dett1,"_",$wk_dett1_str,".bmp")
      }

      if( $wk_dett2!="" )
      {
         $wk_dett2_str = "PassacaviRet"
         if( $wk_dett2=="D21006" )  { $wk_dett2_str = "PassacaviVetro" }
         if( $wk_dett2=="TER050" )  { $wk_dett2_str = "PassacaviOvale" }
         if( $wk_dett2=="TER052" )  { $wk_dett2_str = "PassacaviTondo" }
         $wk_STP_DT_IMG2 = STRCAT($path_layout,"Dettagli\",$wk_dett2,"_",$wk_dett2_str,".bmp")
      }
   }
   //} STAMPA TECNICA TOP BIFACCIALI CON PASSACAVI

   //{ STAMPA TECNICA TOP PLENUM CON PASSACAVI
   PROCEDURA StampaProd_PassacaviTop_Plenum
   {
      debug = 0

      WITH_ALIAS("$wk_top","Stp_TopPlenum")
      if( $wk_top==0 )  { EXITSUB() }

      $wk_i = 1
      while ( $wk_i<=$wk_top )
      {
         $wk_idx_top = $wk_top[$wk_i]

         //verifico se c'è qualche passacavi inserito
         $wk_passacavi = 0
         BOX_MODE(0)
         NEAR_GLOBALE2("$wk_passacavi",$wk_idx_top,5,"Passacavi_368")

         if( $wk_passacavi>0 )
         {
            GOSUB InizioStampaPDF

            GOSUB InfoCartiglioGen

            $wk_STP_DIS_Titolo = "STAMPA TOP PLENUM"

            $wk_STP_DIS_LBL_5 = "Operatore:"
            $wk_STP_DIS_5     = VAR_VAL_STR( -1, "CodOperatore")
            $wk_STP_DIS_LBL_6 = ""
            $wk_STP_DIS_6     = ""

            $wk_STP_TitoloInfo = "INFORMAZIONI"
            //Codice + descrizione
            $wk_STP_DIS_VAR1 = VAR_VAL_STR($wk_idx_top,"DescEdit__")

            //finitura
            $wk_STP_DIS_VAR2 = GetDescCatVal($wk_idx_top,"C028","CAT")
            $wk_STP_DIS_VAL2 = GetDescCatVal($wk_idx_top,"C028","VAL")

            $VAR_AnteprimaDiStampa = 1
            if( $OnTerminate==1 ) { $VAR_AnteprimaDiStampa = 0 }

            SET_#($wk_idx_top)
            if( VAR_EXIST($wk_idx_top,"IDX_GEST") ) { $POSTNOMESTAMPA = STRCAT("-TOPPLENUM_",STR(#IDX_GEST)) }
            else                                    { $POSTNOMESTAMPA = STRCAT("-TOPPLENUM_(",STR($wk_idx_top),")") }

            $wk_suffisso_emf = "_TOPPLENUM"
            VAR_CREATE_NUM(-1,STRCAT("wk_pagina_",$wk_suffisso_emf),0,0,"")

            //Luca 27/01/2022
            $wk_idx_riga      = $wk_idx_top
            $SET_STAMPA       = "0024"

            GOSUB adatta_dim_quote

            COMANDO2("M4_SHOW Ambienti Hide")
            COMANDO2("SHOW None")
            COMANDO2("SHOW Abilita Off")

            GOSUB StampaProd_PassacaviTop_Plenum_Sub

            COMANDO2("M4_SHOW Ambienti Show")
            COMANDO2("SHOW Abilita On")
            COMANDO2("SHOW All")

            GOSUB FineStampaPDF
            $wk_suffisso_PDF = ""

            GOSUB CancellaGlobaliStp
         }

         $wk_i = $wk_i + 1
      }
   }

   PROCEDURA StampaProd_PassacaviTop_Plenum_Sub
   {
      $wk_SP_LINEA_MOBILI       = $TSTP_SP_LINEA_MOBILI
      $wk_SP_LINEA_MOBILI_TRATT = $TSTP_SP_LINEA_TRATTEGGIO
      $wk_SP_LINEA_SCRITTE      = 1
      $wk_SP_LINEA_QUOTE        = 1

      $wk_FORM_dW =  5
      $wk_FORM_dH =  52
      $wk_FORM_W  =  212
      $wk_FORM_H  =  152

      $wk_FORM2_dW =  0
      $wk_FORM2_dH =  0
      $wk_FORM2_W  =  1
      $wk_FORM2_H  =  1

      $wk_STP_DT_IMG  = ""
      $wk_STP_DT_IMG2 = ""

      //Luca 07/02/2022
      $wk_STP_DT_IMG_X = 217
      $wk_STP_DT_IMG_Y = 144
      $wk_STP_DT_IMG_W = 70
      $wk_STP_DT_IMG_H = 57.5

      $wk_STP_DT_IMG2_X = $wk_STP_DT_IMG_X
      $wk_STP_DT_IMG2_Y = $wk_STP_DT_IMG_Y - $wk_STP_DT_IMG_H
      $wk_STP_DT_IMG2_W = $wk_STP_DT_IMG_W
      $wk_STP_DT_IMG2_H = $wk_STP_DT_IMG_H

      $wk_nome_form = "Stampa_Top_O.emf"
      $wk_nome_layout = "Top_Pianta"

      $wk_ang_top = ANG_TOT2($wk_idx_top)
      $wk_view_roll = STRCAT( STR(-1*$wk_ang_top) ," 0" )
      $wk_view_ang = STR(-1*$wk_ang_top)

      VAR_VALUE_SET($wk_idx_top ,"flag_stampa",1)

      if( $DIS_TO_GEMO==0 )  { GOSUB StampaProd_PassacaviTop_Plenum_Quota }

      GOSUB NomeDisegno
      GOSUB StampaLayout

      if( $DIS_TO_GEMO==0 ) { GOSUB CancellaScritteQuote }

      $wk_j = 1
      while ( $wk_j<=$wk_passacavi )
      {
         VAR_VALUE_SET($wk_passacavi[$wk_j] ,"flag_stampa",0)
         $wk_j = $wk_j + 1
      }

      VAR_VALUE_SET($wk_idx_top ,"flag_stampa",0)
   }

   PROCEDURA StampaProd_PassacaviTop_Plenum_Quota
   {
      $alias_scr     = "STP_SCR_TOP"
      $AliasQuota    = "STP_QUO_TOP"
      $AliasQuotaLat = "STP_QUO_TOP"
      $wk_faccia = "A"

      $HChar   = $Yscr/5         $LChar   = $Xscr/5
      $Alt_Chr = $Yscr/5         $Lar_Chr = $Xscr/5

      $ang_scr = 0
      $wk_scosta_lquota = 20

      SET_#($wk_idx_top)

      $wk_pnt_top_b0 = #pnt_top_b0
      $wk_pnt_top_b1 = #pnt_top_b1
      $wk_pnt_top_b2 = #pnt_top_b2
      $wk_pnt_top_b3 = #pnt_top_b3


      $dist = -100
      $P1 = $wk_pnt_top_b1
      $P2 = $wk_pnt_top_b2
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      //quoto profondità lato Sx
      $dist = 100
      $P1 = $wk_pnt_top_b1
      $P2 = $wk_pnt_top_b0
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      $wk_dett1 = ""
      $wk_dett2 = ""

      $wk_dist = 100
      $wk_j = 1
      while ( $wk_j<=$wk_passacavi )
      {
         SET_#( $wk_passacavi[$wk_j] )

         $dist = $wk_j*$wk_dist

         $P1 = $wk_pnt_top_b0
         $P2 = INTERFERISCI(#pnt_scs_centro,$wk_ang_top+90,$wk_pnt_top_b0,$wk_pnt_top_b3)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $wk_pnt_top_b3
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $wk_pnt_top_b3
         $P2 = INTERFERISCI(#pnt_scs_centro,$wk_ang_top,$wk_pnt_top_b3,$wk_pnt_top_b2)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $wk_pnt_top_b2
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         //gestisco al max 2 dettagli
         $wk_cod_pc = VAR_VAL_STR($wk_passacavi[$wk_j],"cmp_name")
         wk_cod_pc_pos = STR_INDEX_OF($wk_cod_pc, 0, "#")
         if( wk_cod_pc_pos > 0 ) { $wk_cod_pc = LEFT( $wk_cod_pc, wk_cod_pc_pos) }

         if( $wk_dett1 == "" ) { $wk_dett1 = $wk_cod_pc }
         else
         {
            if( $wk_cod_pc!=$wk_dett1 ) { $wk_dett2 = $wk_cod_pc }
         }
         $wk_j = $wk_j + 1
      }

      //Luca 15/06/2020
      if( $wk_dett1!="" )
      {
         $wk_dett1_str = "PassacaviRet"
         if( $wk_dett1=="D21006" )  { $wk_dett1_str = "PassacaviVetro" }
         if( $wk_dett1=="TER050" )  { $wk_dett1_str = "PassacaviOvale" }
         if( $wk_dett1=="TER052" )  { $wk_dett1_str = "PassacaviTondo" }
         $wk_STP_DT_IMG = STRCAT($path_layout,"Dettagli\",$wk_dett1,"_",$wk_dett1_str,".bmp")
      }

      if( $wk_dett2!="" )
      {
         $wk_dett2_str = "PassacaviRet"
         if( $wk_dett2=="D21006" )  { $wk_dett2_str = "PassacaviVetro" }
         if( $wk_dett2=="TER050" )  { $wk_dett2_str = "PassacaviOvale" }
         if( $wk_dett2=="TER052" )  { $wk_dett2_str = "PassacaviTondo" }
         $wk_STP_DT_IMG2 = STRCAT($path_layout,"Dettagli\",$wk_dett2,"_",$wk_dett2_str,".bmp")
      }
   }
   //} STAMPA TECNICA TOP PLENUM CON PASSACAVI

   //{ STAMPA TECNICA TOP 36E8 CON PASSACAVI
   PROCEDURA StampaProd_PassacaviTop_36e8
   {
      debug = 0

      WITH_ALIAS("$wk_top_vtr","TopVet368")
      WITH_ALIAS("$wk_top_ww", "TopWW368")

      $wk_top = 0
      $wk_i = 1
      while( $wk_i <= $wk_top_vtr )
      {
         AddItem2Array( -1, "wk_top", $wk_top_vtr[$wk_i], "")
         $wk_i = $wk_i + 1
      }
      $wk_i = 1
      while( $wk_i <= $wk_top_ww )
      {
         AddItem2Array( -1, "wk_top", $wk_top_ww[$wk_i], "")
         $wk_i = $wk_i + 1
      }

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

      $wk_top_num = 1
      while( $wk_top_num <= $wk_top)
      {
        $wk_top_att = $wk_top[$wk_top_num]
        $wk_top_att_all = VAR_VAL( $wk_top_att, "ALLEGATI")
        $wk_top_att_tall = VAR_VAL( $wk_top_att, "T_ALLEGATI")

        if( $wk_top_att_tall - $wk_top_att_all > 0)
        {
            DEL_ARRAY_ITEM( -1, "wk_top", $wk_top_num)
            $wk_top_num = $wk_top_num - 1
        }

        $wk_top_num = $wk_top_num + 1
      }

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

      $SET_STAMPA = "0023"

      $wk_i = 1
      while ( $wk_i<=$wk_top )
      {
         $wk_idx_top = $wk_top[$wk_i]

         if( NOME($wk_idx_top) == "Mensola_Riv_Riv_Vtr" )  { $wk_idx_top = PADRE($wk_idx_top,1) }

         //verifico se c'è qualche passacavi inserito
         $wk_passacavi = 0
         BOX_MODE(0)
         NEAR_GLOBALE2("$wk_passacavi",$wk_idx_top,5,"Passacavi_368")

         //LZ 06/09/2021: quota ripetitori
         NEAR_GLOBALE2("$wk_rip_ir",$wk_idx_top,5,"RipetitoreIR_368")

         $wk_h = 1
         while ( $wk_h <= $wk_rip_ir )
         {
            //solo riperitore da incasso
            if( VAR_VAL_STR($wk_rip_ir[$wk_h],"TipoIRStr")=="IR_INCASSO" )
            {
               $wk_ne = $wk_passacavi + 1
               $wk_passacavi = $wk_ne
               $wk_passacavi[$wk_ne] = $wk_rip_ir[$wk_h]
            }
            $wk_h = $wk_h + 1
         }

         //LZ 24/11/2021: gestisco anche vetri teche 30mm
         $wk_teca_30mm = 0
         $wk_tipo_stampa = "TOP36E8"
         $wk_tipo_esteso_stampa = "TOP 36E8"
         if( IS_MATCH( NOME($wk_idx_top), "*30MM") == 1)
         {
            $SET_STAMPA   = "0001"
            $wk_teca_30mm = 1
            $wk_tipo_stampa = "VTRTECA30MM"
            $wk_tipo_esteso_stampa = "VETRO TECA 30MM"
         }

         if( $wk_passacavi>0 | $wk_rip_ir > 0 )
         {
            GOSUB InizioStampaPDF

            GOSUB InfoCartiglioGen

            $wk_STP_DIS_Titolo = STRCAT( "STAMPA ", $wk_tipo_esteso_stampa)

            $wk_STP_DIS_TitoloDisegno = "VISTA DA SOPRA"

            if( NOME($wk_idx_top) == "Mensola_Rivestita" )
            {
               $SET_STAMPA = "0010"
               $wk_STP_DIS_Titolo = "STAMPA MENSOLA RIVESTITA"
               $wk_STP_DIS_TitoloDisegno = "VISTA TOP DA SOPRA"
               $wk_tipo_stampa    = "MENRIVVET"
            }

            $wk_STP_DIS_LBL_5 = "Operatore:"
            $wk_STP_DIS_5     = VAR_VAL_STR( -1, "CodOperatore")
            $wk_STP_DIS_LBL_6 = ""
            $wk_STP_DIS_6     = ""

            $wk_STP_TitoloInfo = "INFORMAZIONI"
            //Codice + descrizione
            $wk_STP_DIS_VAR1 = VAR_VAL_STR($wk_idx_top,"DescEdit__")

            //finitura
            $wk_STP_DIS_VAR2 = GetDescCatVal($wk_idx_top,"C042","CAT")
            $wk_STP_DIS_VAL2 = GetDescCatVal($wk_idx_top,"C042","VAL")

            $VAR_AnteprimaDiStampa = 1
            if( $OnTerminate==1 ) { $VAR_AnteprimaDiStampa = 0 }

            SET_#($wk_idx_top)
            if( VAR_EXIST($wk_idx_top,"IDX_GEST") ) { $POSTNOMESTAMPA = STRCAT("-", $wk_tipo_stampa, "_", STR(#IDX_GEST)) }
            else                                    { $POSTNOMESTAMPA = STRCAT("-", $wk_tipo_stampa, "_", STR($wk_idx_top)) }

            $wk_suffisso_emf = STRCAT( "_", $wk_tipo_stampa)
            VAR_CREATE_NUM( -1, STRCAT( "wk_pagina_", $wk_suffisso_emf), 0, 0, "")

            //Luca 27/01/2022
            $wk_idx_riga      = $wk_idx_top

            GOSUB adatta_dim_quote

            COMANDO2("M4_SHOW Ambienti Hide")
            COMANDO2("SHOW None")
            COMANDO2("SHOW Abilita Off")

            GOSUB StampaProd_PassacaviTop_36e8_Sub

            COMANDO2("M4_SHOW Ambienti Show")
            COMANDO2("SHOW Abilita On")
            COMANDO2("SHOW All")

            GOSUB FineStampaPDF
            $wk_suffisso_PDF = ""

            GOSUB CancellaGlobaliStp
         }

         $wk_i = $wk_i + 1
      }
   }

   PROCEDURA StampaProd_PassacaviTop_36e8_Sub
   {
      $wk_SP_LINEA_MOBILI       = $TSTP_SP_LINEA_MOBILI
      $wk_SP_LINEA_MOBILI_TRATT = $TSTP_SP_LINEA_TRATTEGGIO
      $wk_SP_LINEA_SCRITTE      = 1
      $wk_SP_LINEA_QUOTE        = 1

      $wk_FORM_dW =  5
      $wk_FORM_dH =  52
      $wk_FORM_W  =  212
      $wk_FORM_H  =  152

      $wk_FORM2_dW =  0
      $wk_FORM2_dH =  0
      $wk_FORM2_W  =  1
      $wk_FORM2_H  =  1

      $wk_STP_DT_IMG  = ""
      $wk_STP_DT_IMG2 = ""

      //Luca 07/02/2022
      $wk_STP_DT_IMG_X = 217
      $wk_STP_DT_IMG_Y = 144
      $wk_STP_DT_IMG_W = 70
      $wk_STP_DT_IMG_H = 57.5

      $wk_STP_DT_IMG2_X = $wk_STP_DT_IMG_X
      $wk_STP_DT_IMG2_Y = $wk_STP_DT_IMG_Y - $wk_STP_DT_IMG_H
      $wk_STP_DT_IMG2_W = $wk_STP_DT_IMG_W
      $wk_STP_DT_IMG2_H = $wk_STP_DT_IMG_H

      $wk_nome_form = "Stampa_Top_O.emf"
      $wk_nome_layout = "Top_Pianta"

      $wk_ang_top = ANG_TOT2($wk_idx_top)
      $wk_view_roll = STRCAT( STR(-1*$wk_ang_top) ," 0" )
      $wk_view_ang = STR(-1*$wk_ang_top)

      $wk_view_orbit = STRCAT( STR(-1*$wk_ang_top) ," 0" )

      VAR_VALUE_SET($wk_idx_top ,"flag_stampa",1)

      if( $DIS_TO_GEMO==0 )  { GOSUB StampaProd_PassacaviTop_36e8_Quota }

      GOSUB NomeDisegno
      GOSUB StampaLayout

      if( $DIS_TO_GEMO==0 ) { GOSUB CancellaScritteQuote }

      $wk_j = 1
      while ( $wk_j<=$wk_passacavi )
      {
         VAR_VALUE_SET($wk_passacavi[$wk_j] ,"flag_stampa",0)
         $wk_j = $wk_j + 1
      }

      VAR_VALUE_SET($wk_idx_top ,"flag_stampa",0)
   }

   PROCEDURA StampaProd_PassacaviTop_36e8_Quota
   {
      $alias_scr     = "STP_SCR_TOP"
      $AliasQuota    = "STP_QUO_TOP"
      $AliasQuotaLat = "STP_QUO_TOP"
      $wk_faccia = "A"

      $HChar   = $Yscr/5         $LChar   = $Xscr/5
      $Alt_Chr = $Yscr/5         $Lar_Chr = $Xscr/5

      $ang_scr = 0
      $wk_scosta_lquota = 20

      SET_#($wk_idx_top)

      $wk_pnt_top_b0 = #pnt_top_b0
      $wk_pnt_top_b1 = #pnt_top_b1
      $wk_pnt_top_b2 = #pnt_top_b2
      $wk_pnt_top_b3 = #pnt_top_b3

      $dist = -100
      $P1 = $wk_pnt_top_b1
      $P2 = $wk_pnt_top_b2
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      //quoto profondità lato Sx
      $dist = 100
      $P1 = $wk_pnt_top_b1
      $P2 = $wk_pnt_top_b0
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      $wk_dett1 = ""
      $wk_dett2 = ""

      $wk_dist = 100
      $wk_j = 1
      while ( $wk_j<=$wk_passacavi )
      {
         SET_#( $wk_passacavi[$wk_j] )

         $dist = $wk_j*$wk_dist

         //LZ 06/09/2021: quota ripetitori
         wk_pnt_scs_centro = #pnt_scs_centro

         if( NOME( $wk_passacavi[$wk_j] ) == "RipetitoreIR_368" )
         {
            wk_pnt_scs_centro = #pnt_stp_centro

            VAR_VALUE_SET($wk_passacavi[$wk_j] ,"flag_stampa",1)

            $wk_qr_len  = 70
            $testo = STRCAT("d. ",STR(#diam), "  ")
            $P1 = wk_pnt_scs_centro
            $P1.y = $P1.y + 50
            $wk_ang_qr = $ang_scr
            $wk_dir = 3
            if( #OffsetZ < 100 )      { $wk_dir = 2 }

            if( #OffsetX < 100 )
            {
               $wk_dir = 4
               if( #OffsetZ < 100 )   { $wk_dir = 1 }
            }

            $wk_qr_off_cq = 20
            GOSUB PosaQuotaRaggio
         }

         $P1 = $wk_pnt_top_b0
         $P2 = INTERFERISCI(wk_pnt_scs_centro,$wk_ang_top+90,$wk_pnt_top_b0,$wk_pnt_top_b3)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $wk_pnt_top_b3
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $wk_pnt_top_b3
         $P2 = INTERFERISCI(wk_pnt_scs_centro,$wk_ang_top,$wk_pnt_top_b3,$wk_pnt_top_b2)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $wk_pnt_top_b2
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         //gestisco al max 2 dettagli
         $wk_cod_pc = VAR_VAL_STR($wk_passacavi[$wk_j],"cmp_name")
         wk_cod_pc_pos = STR_INDEX_OF($wk_cod_pc, 0, "#")
         if( wk_cod_pc_pos > 0 ) { $wk_cod_pc = LEFT( $wk_cod_pc, wk_cod_pc_pos) }

         if( $wk_dett1 == "" ) { $wk_dett1 = $wk_cod_pc }
         else
         {
            if( $wk_cod_pc!=$wk_dett1 ) { $wk_dett2 = $wk_cod_pc }
         }
         $wk_j = $wk_j + 1
      }

      //Luca 15/06/2020
      if( $wk_dett1!="" )
      {
         $wk_dett1_str = "PassacaviRet"
         if( $wk_dett1=="D21006" )  { $wk_dett1_str = "PassacaviVetro" }
         if( $wk_dett1=="TER050" )  { $wk_dett1_str = "PassacaviOvale" }
         if( $wk_dett1=="TER052" )  { $wk_dett1_str = "PassacaviTondo" }
         $wk_STP_DT_IMG = STRCAT($path_layout,"Dettagli\",$wk_dett1,"_",$wk_dett1_str,".bmp")
      }

      if( $wk_dett2!="" )
      {
         $wk_dett2_str = "PassacaviRet"
         if( $wk_dett2=="D21006" )  { $wk_dett2_str = "PassacaviVetro" }
         if( $wk_dett2=="TER050" )  { $wk_dett2_str = "PassacaviOvale" }
         if( $wk_dett2=="TER052" )  { $wk_dett2_str = "PassacaviTondo" }
         $wk_STP_DT_IMG2 = STRCAT($path_layout,"Dettagli\",$wk_dett2,"_",$wk_dett2_str,".bmp")
      }
   }
   //} STAMPA TECNICA TOP 36E8 CON PASSACAVI

   //{ STAMPA TECNICA TOP VETRO CASSETTIERA ARMADIO (mantis 0023768)
   PROCEDURA StampaProd_CassArm_TopVetro
   {
      debug = 0

      WITH_ALIAS("$wk_cas","StpCassArm")
      if( $wk_cas==0 )  { EXITSUB() }

      $wk_i = 1
      while ( $wk_i <= $wk_cas )
      {
         $wk_idx_cas = $wk_cas[$wk_i]
         SET_#($wk_idx_cas)

         $wk_idx_top = #idx_top

         //verifico se top in vetro
         $wk_top_vetro = 0
         if( VAR_VAL($wk_idx_top,"TipoTop") == 1 )  { $wk_top_vetro = 1 }

         if( $wk_top_vetro )
         {
            GOSUB InizioStampaPDF

            GOSUB InfoCartiglioGen

            $wk_STP_DIS_Titolo = "STAMPA TOP VETRO CASSETTIERA ARMADIO"

            $wk_STP_DIS_LBL_5 = "Operatore:"
            $wk_STP_DIS_5     = VAR_VAL_STR( -1, "CodOperatore")
            $wk_STP_DIS_LBL_6 = ""
            $wk_STP_DIS_6     = ""

            $wk_STP_TitoloInfo = "INFORMAZIONI"
            //Codice + descrizione
            $wk_STP_DIS_VAR1 = VAR_VAL_STR($wk_idx_top,"DescEdit__")

            //finitura
            $wk_STP_DIS_VAR2 = GetDescCatVal($wk_idx_top,"C042","CAT")
            $wk_STP_DIS_VAL2 = GetDescCatVal($wk_idx_top,"C042","VAL")

            $VAR_AnteprimaDiStampa = 1
            if( $OnTerminate==1 ) { $VAR_AnteprimaDiStampa = 0 }

            SET_#($wk_idx_top)
            if( VAR_EXIST($wk_idx_top,"IDX_GEST") ) { $POSTNOMESTAMPA = STRCAT("-TOPVCASS_",STR(#IDX_GEST)) }
            else                                    { $POSTNOMESTAMPA = STRCAT("-TOPVCASS_(",STR($wk_idx_top),")") }

            $wk_suffisso_emf = "_TOPVCASS"
            VAR_CREATE_NUM(-1,STRCAT("wk_pagina_",$wk_suffisso_emf),0,0,"")

            //Luca 27/01/2022
            $wk_idx_riga      = $wk_idx_top
            $SET_STAMPA       = "PROD"

            GOSUB adatta_dim_quote

            COMANDO2("M4_SHOW Ambienti Hide")
            COMANDO2("SHOW None")
            COMANDO2("SHOW Abilita Off")

            GOSUB StampaProd_CassArm_TopVetro_Sub

            COMANDO2("M4_SHOW Ambienti Show")
            COMANDO2("SHOW Abilita On")
            COMANDO2("SHOW All")

            GOSUB FineStampaPDF
            $wk_suffisso_PDF = ""

            GOSUB CancellaGlobaliStp
         }

         $wk_i = $wk_i + 1
      }
   }

   PROCEDURA StampaProd_CassArm_TopVetro_Sub
   {
      $wk_SP_LINEA_MOBILI       = $TSTP_SP_LINEA_MOBILI
      $wk_SP_LINEA_MOBILI_TRATT = $TSTP_SP_LINEA_TRATTEGGIO
      $wk_SP_LINEA_SCRITTE      = 1
      $wk_SP_LINEA_QUOTE        = 1

      $wk_FORM_dW =  5
      $wk_FORM_dH =  52
      $wk_FORM_W  =  285
      $wk_FORM_H  =  152

      $wk_FORM2_dW =  0
      $wk_FORM2_dH =  0
      $wk_FORM2_W  =  1
      $wk_FORM2_H  =  1

      $wk_STP_DT_IMG  = ""
      $wk_STP_DT_IMG2 = ""

      //Luca 07/02/2022
      $wk_STP_DT_IMG_X = 217
      $wk_STP_DT_IMG_Y = 144
      $wk_STP_DT_IMG_W = 70
      $wk_STP_DT_IMG_H = 57.5

      $wk_STP_DT_IMG2_X = $wk_STP_DT_IMG_X
      $wk_STP_DT_IMG2_Y = $wk_STP_DT_IMG_Y - $wk_STP_DT_IMG_H
      $wk_STP_DT_IMG2_W = $wk_STP_DT_IMG_W
      $wk_STP_DT_IMG2_H = $wk_STP_DT_IMG_H

      $wk_nome_form = "Stampa_Top2_O.emf"
      $wk_nome_layout = "Top_Pianta"

      $wk_ang_top = ANG_TOT2($wk_idx_top)
      $wk_view_roll = STRCAT( STR(-1*$wk_ang_top) ," 0" )
      $wk_view_ang = STR(-1*$wk_ang_top)

      $wk_view_orbit = STRCAT( STR(-1*$wk_ang_top) ," 0" )


      VAR_VALUE_SET($wk_idx_top ,"flag_stampa",1)

      if( $DIS_TO_GEMO==0 )  { GOSUB StampaProd_CassArm_TopVetro_Quota }

      GOSUB NomeDisegno
      GOSUB StampaLayout

      if( $DIS_TO_GEMO==0 ) { GOSUB CancellaScritteQuote }

      VAR_VALUE_SET($wk_idx_top ,"flag_stampa",0)
   }

   PROCEDURA StampaProd_CassArm_TopVetro_Quota
   {
      $alias_scr     = "STP_SCR_TOP"
      $AliasQuota    = "STP_QUO_TOP"
      $AliasQuotaLat = "STP_QUO_TOP"
      $wk_faccia = "A"

      $HChar   = $Yscr/5         $LChar   = $Xscr/5
      $Alt_Chr = $Yscr/5         $Lar_Chr = $Xscr/5

      $ang_scr = 0
      $wk_scosta_lquota = 20

      SET_#($wk_idx_top)

      $dist = -100
      $P1 = #base_1
      $P2 = #base_2
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      //quoto profondità lato Sx
      $dist = 100
      $P1 = #base_1
      $P2 = #base_0
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota
   }
   //} STAMPA TECNICA TOP VETRO CASSETTIERA ARMADIO (mantis 0023768)

   //{ STAMPA TECNICA XGLASS cassettiere armadio
   PROCEDURA StampaXGLASS_Armadio
   {
      if( $OnTerminate == 0 )  { GOSUB Assegna_VarTecnica_XGLASS }

      $SXG_debug = 0
      #ifdef TEC
         $SXG_debug = VAR_VAL(-1,"ATTIVA_LOG_DBG")
      #endif

      ScriviSuLog( $SXG_debug , "StampaXGLASS_Armadio" , "START" )

      //CREO GLI ARRAY CON LE COMPOSIZIONI DEGLI ARMADI
      CreaComposizioniArmadio(-1,"wk_comp_nr","wk_comp_arm")

      if( VAR_VAL(-1,"wk_comp_nr") == 0 )
      {
         ScriviSuLog( $SXG_debug , "StampaXGLASS_Armadio" , "] END - NO COMPOSIZIONI" )
         EXITSUB()
      }

      ScriviSuLog( $SXG_debug , "StampaXGLASS_Armadio" , STRCAT("COMPOSIZIONI ARMADIO ",STR($wk_comp_nr)))

      $wk_Stampa_Init = 0

      //SCORRO E ANALIZZO LE SINGOLE COMPOSIZIONI
      $wk_comp_i = 1
      while ( $wk_comp_i <= $wk_comp_nr )
      {
         ScriviSuLog( $SXG_debug , "StampaXGLASS_Armadio" , STRCAT("INIZIO ANALISI COMPOSIZIONE ",STR($wk_comp_i)))

         r = ArrayCopy(-1 , STRCAT("wk_comp_arm",STR($wk_comp_i) ) , "wk_str")

         $wk_stampa_fro = 0
         $wk_stampa_fro_items = 0

         $wk_stampa_ang = 0

         $wk_stampa_cas = 0
         $wk_stampa_cas_items = 0

         //analizzo l'array e verifico che stampe devo fare
         $wk_j = 1
         while ( $wk_j <= $wk_str )
         {
            $wk_idx_test = $wk_str[$wk_j]

            //verifico se c'è un elemento ad angolo
            if( HAS_ALIAS($wk_idx_test,"Angolo") == 1 ) { $wk_stampa_ang = 1 }

            //Luca 13/04/2021
            if( HAS_ALIAS($wk_idx_test,"Fianco_Arm20") == 1 )
            {
               VAR_VALUE_SET($wk_idx_test,"STP_XG_RUOTA_FIANCO",1)
               RIGENERA_IDX($wk_idx_test)
            }

            //verifico se ci sono cassettiere XGLASS
            COMPONENTI2("$wk_cas",$wk_idx_test,"StrutturaCassettiera_V2_Arm20")
            $wk_cas_num = 1
            while( $wk_cas_num <= $wk_cas)
            {
               $wk_cas_att = $wk_cas[$wk_cas_num]
               //verifico se c'è almeno un elemento XGLASS
               $wk_cass_xglass = 0
               COMPONENTI2( "$wk_cmp", $wk_cas[$wk_cas_num], "*")

               $wk_cmp_num = 1
               while ( $wk_cmp_num <= $wk_cmp )
               {
                  $wk_cmp_att = $wk_cmp[$wk_cmp_num]
                  if( IS_XGLASS($wk_cmp_att) != 0 )
                  {
                     $wk_cass_xglass = 1
                     $wk_stampa_cas = 1
                     AddItem2Array( -1, "wk_stampa_cas_items", $wk_cmp_att, "")
                  }

                  $wk_cmp_num = $wk_cmp_num + 1
               }

               if( $wk_cass_xglass == 1 )
               {
                  VAR_VALUE_SET($wk_cas_att,"STP_XG_RUOTA_TOP",1)
                  RIGENERA_IDX($wk_cas_att)
               }

               $wk_cas_num = $wk_cas_num + 1
            }

            //verifico se c'è un frontale / fianco XGLASS
            COMPONENTI2( "$wk_cmp", $wk_idx_test, "*")
            $wk_cmp_num = 1
            while( $wk_cmp_num <= $wk_cmp)
            {
               $wk_cmp_att = $wk_cmp[$wk_cmp_num]

               $wk_da_stampare = 1
               if( UN_PADRE2( $wk_cmp_att, "StrutturaCassettiera_V2_Arm20") == 1) { $wk_da_stampare = 0 }

               if( $wk_da_stampare == 1)
               {
                  if( IS_XGLASS($wk_cmp_att) != 0)
                  {
                     if( VAR_VAL_STR($wk_cmp_att,"XGLASS") != "" )
                     {
                        $wk_stampa_fro = 1
                        AddItem2Array( -1, "wk_stampa_fro_items", $wk_cmp_att, "")

                        //Luca 19/04/2021 aggiungo manigla FLAPP
                        $wk_idx_fro = PADRE($wk_cmp_att,1)
                        if( NOME($wk_idx_fro) == "FrontaleVetro_Arm20"
                          & VAR_VAL($wk_idx_fro,"ConManigliaFLAPP")==1 )
                        {
                           $wk_idx_man = VAR_VAL($wk_idx_fro,"idx_man_FLAPP")
                           AddItem2Array(-1,"wk_stampa_fro_items",$wk_idx_man ,"")
                        }
                     }
                  }
               }

               $wk_cmp_num = $wk_cmp_num + 1
            }

            $wk_j = $wk_j + 1
         }

         //FINE ANALISI
         ScriviSuLog( $SXG_debug, "StampaXGLASS_Armadio", STRCAT("FINE ANALISI COMPOSIZIONE ", STR($wk_comp_i)))

         ScriviSuLog( $SXG_debug, "StampaXGLASS_Armadio", STRCAT("$wk_stampa_fro = ", STR($wk_stampa_fro)))
         if( $wk_stampa_fro > 0) { ScriviSuLog( 0, "StampaXGLASS_Armadio", STRCAT("$wk_stampa_fro_items = ", STR($wk_stampa_fro_items))) }

         ScriviSuLog( $SXG_debug, "StampaXGLASS_Armadio", STRCAT("$wk_stampa_ang = ", STR($wk_stampa_ang)))

         ScriviSuLog( $SXG_debug, "StampaXGLASS_Armadio", STRCAT("$wk_stampa_cas = ", STR($wk_stampa_cas)))
         if( $wk_stampa_cas > 0) { ScriviSuLog( $SXG_debug, "StampaXGLASS_Armadio", STRCAT("$wk_stampa_cas_items = ", STR($wk_stampa_cas_items))) }

         //INIZIO STAMPA
         if( $wk_stampa_fro + $wk_stampa_cas > 0)
         {
            GOSUB StampaXGLASS_Armadio_Init
         }

         /// FRONTALI
         if( $wk_stampa_fro > 0) { GOSUB StampaXGLASS_Armadio_SubFrontali }

         /// CASSETTIERE
         if( $wk_stampa_cas > 0 ) { GOSUB StampaXGLASS_Armadio_SubCassettiere }

         // WARN:
         // Luca Z - 13/06/24 - Non conosco il caso che ha portato alla realizzazione del caso seguente,
         //                     ma di fatto non funziona se nella composizone sono presenti altri vani.
         // Disabilito
         if( 0
           & $wk_stampa_fro > 0)
         {
            if( $wk_stampa_ang == 1)
            {
               $wk_stp_ang = 0

               $wk_k = 1
               while ( $wk_k <= $wk_stampa_fro_items)
               {
                  $wk_ang_fro = ANG_TOT_NOR($wk_stampa_fro_items[$wk_k])
                  //Luca 19/04/2021 i vetri del fianco vengono ruotati, quindi prendo l'angolo del fianco
                  if( UN_PADRE2($wk_stampa_fro_items[$wk_k], "Fianco_Arm20") ) { $wk_ang_fro = ANG_TOT_NOR(PADRE($wk_stampa_fro_items[$wk_k],1)) }

                  ScriviSuLog( $SXG_debug , "StampaXGLASS_Armadio" , STRCAT("$wk_stampa_ang   $wk_stampa_fro_items[",STR($wk_k),"]=",STR($wk_stampa_fro_items[$wk_k]) , "-",NOME($wk_stampa_fro_items[$wk_k]) , "  $wk_ang_fro=",STR($wk_ang_fro)))

                  AddItem2Array(-1,"wk_stp_ang",$wk_ang_fro ,"")
                  $wk_k = $wk_k + 1
               }

               SORT_ARRAY(-1,"wk_stp_ang")

               //filtro
               $wk_k = 2
               while ( $wk_k <= $wk_stp_ang )
               {
                  if( ABS( $wk_stp_ang[$wk_k] - $wk_stp_ang[$wk_k-1] ) < 0.1 )
                  {
                     DEL_ARRAY_ITEM(-1,"wk_stp_ang",$wk_k)
                     $wk_k = $wk_k - 1
                  }
                  $wk_k = $wk_k + 1
               }

               //ScriviSuLog( $SXG_debug , "StampaXGLASS_Armadio" , STRCAT("$wk_stampa_ang   wk_stp_ang=",STR($wk_stp_ang)))
               //mi salvo gli array originali
               r = ArrayCopy(-1 , "wk_stampa_fro_items" , "wk_stampa_fro_all_items")
               if( r == 0 )  { $wk_stampa_fro_all_items = 0 }
               r = ArrayCopy(-1 , "wk_stampa_cas_items" , "wk_stampa_cas_all_items")
               if( r == 0 )  { $wk_stampa_cas_all_items = 0 }

               ScriviSuLog( $SXG_debug , "StampaXGLASS_Armadio" , STRCAT("$wk_stampa_ang   $wk_stampa_fro_all_items=",STR($wk_stampa_fro_all_items)," $wk_stampa_cas_all_items=",STR($wk_stampa_cas_all_items)))

               $wk_k = 1
               while ( $wk_k <= $wk_stp_ang )
               {
                  $wk_stp_ang_att = $wk_stp_ang[$wk_k]

                  ScriviSuLog( $SXG_debug , "StampaXGLASS_Armadio" , STRCAT("$wk_stampa_ang   wk_stp_ang[",STR($wk_k),"]=",STR($wk_stp_ang[$wk_k])))

                  //creo l'array con tutti gli elementi dell'angolo corrente
                  $wk_stampa_fro_items = 0
                  $wk_stampa_cas_items = 0
                  $wk_h = 1
                  while ( $wk_h <= $wk_stampa_fro_all_items )
                  {
                     $wk_ang_fro = ANG_TOT_NOR($wk_stampa_fro_all_items[$wk_h])
                     //Luca 19/04/2021 i vetri del fianco vengono ruotati, quindi prendo l'angolo del fianco
                     if( UN_PADRE2($wk_stampa_fro_items[$wk_h], "Fianco_Arm20") ) { $wk_ang_fro = ANG_TOT_NOR(PADRE($wk_stampa_fro_all_items[$wk_h],1)) }

                     if( ABS( $wk_stp_ang_att - $wk_ang_fro ) < 0.1) { AddItem2Array(-1,"wk_stampa_fro_items",$wk_stampa_fro_all_items[$wk_h] ,"") }
                     $wk_h = $wk_h + 1
                  }

                  $wk_h = 1
                  while ( $wk_h <= $wk_stampa_cas_all_items )
                  {
                     $wk_ang_fro = ANG_TOT_NOR($wk_stampa_cas_all_items[$wk_h])

                     if( ABS( $wk_stp_ang_att - $wk_ang_fro ) < 0.1) { AddItem2Array(-1,"wk_stampa_cas_items",$wk_stampa_cas_all_items[$wk_h] ,"") }
                     $wk_h = $wk_h + 1
                  }

                  ScriviSuLog( $SXG_debug , "StampaXGLASS_Armadio" , STRCAT("$wk_stampa_ang   $wk_stampa_fro_items=",STR($wk_stampa_fro_items)," wk_stampa_cas_items=",STR($wk_stampa_cas_items)))

                  if( $wk_stampa_fro > 0) { GOSUB StampaXGLASS_Armadio_SubFrontali }
                  if( $wk_stampa_cas > 0) { GOSUB StampaXGLASS_Armadio_SubCassettiere }

                  $wk_k = $wk_k + 1
               }
            }
            else
            {
               if( $wk_stampa_fro > 0) { GOSUB StampaXGLASS_Armadio_SubFrontali }
               if( $wk_stampa_cas > 0) { GOSUB StampaXGLASS_Armadio_SubCassettiere }
            }
         }

         $wk_comp_i = $wk_comp_i + 1
      }

      GOSUB StampaXGLASS_Armadio_Close
   }

   PROCEDURA StampaXGLASS_Armadio_Init
   {
      if( $wk_Stampa_Init == 1 ) { EXITSUB() }

      $wk_Stampa_Init = 1

      GOSUB InizioStampaPDF
      GOSUB InfoCartiglioGen

      $wk_STP_DIS_Titolo = "STAMPA XGLASS ARMADI"

      $wk_STP_DIS_LBL_5 = "Operatore:"
      $wk_STP_DIS_5     = VAR_VAL_STR( -1, "CodOperatore")
      $wk_STP_DIS_LBL_6 = ""
      $wk_STP_DIS_6     = ""

      $wk_STP_DIS_TitoloDisegno  =  ""
      $wk_STP_DIS_TitoloDisegno2 =  ""

      $wk_STP_DIS_SCALA = ""

      $SET_STAMPA="0030"

      $POSTNOMESTAMPA = "-XGARM"
      $wk_suffisso_emf = "XGARM"
      VAR_CREATE_NUM(-1,STRCAT("wk_pagina_",$wk_suffisso_emf),0,0,"")

      $VAR_AnteprimaDiStampa = 1
      if( $OnTerminate==1 ) { $VAR_AnteprimaDiStampa = 0 }

      COMANDO2("M4_SHOW Ambienti Hide")
      COMANDO2("SHOW None")
      COMANDO2("SHOW Abilita Off")
   }

   PROCEDURA StampaXGLASS_Armadio_SubInit
   {
      $wk_SP_LINEA_MOBILI       = 35
      $wk_SP_LINEA_MOBILI_TRATT = $TSTP_SP_LINEA_TRATTEGGIO
      $wk_SP_LINEA_SCRITTE      = 10
      $wk_SP_LINEA_QUOTE        = 10

      //$wk_FORM_dW =  5
      //$wk_FORM_dH =  52
      //$wk_FORM_W  =  285
      //$wk_FORM_H  =  152
      $wk_FORM_dW =  5
      $wk_FORM_W  =  212
      $wk_FORM_dH =  45
      $wk_FORM_H  =  159

      if( $wk_stampa_ang == 1)
      {
         $wk_FORM_dH =  50
         $wk_FORM_H  =  150
      }

      $wk_STP_DT_IMG  = ""
      $wk_STP_DT_IMG2 = ""

      $wk_nome_form = "Stampa_XGLASS_ARMADIO.emf"
      $wk_nome_layout = "Stampa_XGLASS_BN"

      $wk_STP_DIS_SCALA = ""

      $wk_STP_DIS_TitoloDisegno  =  ""
      $wk_STP_DIS_TitoloDisegno2 =  ""

      $wk_AliasLineeTratt = "STP_LINE_TRAT"

      $wk_view_iso_roll = "0 0"
      $wk_view_mini_iso_roll = "0 0"

      $wk_ang_str1 = ANG_TOT_NOR($wk_idx_ref)

      $wk_view_ang = STR(-1*$wk_ang_str1)
      $wk_view_roll = STRCAT( STR(-1*$wk_ang_str1) ," 0" )

      //reset var
      $wk_vv = 1
      while ( $wk_vv <= 30 )
      {
         VAR_VALUESTR_SET(-1,STRCAT("wk_STP_LEG_VAR",STR($wk_vv)),"")
         VAR_VALUESTR_SET(-1,STRCAT("wk_STP_LEG_VAL",STR($wk_vv)),"")
         VAR_VALUESTR_SET(-1,STRCAT("wk_STP_LEG_FIN",STR($wk_vv)),"")

         $wk_vv = $wk_vv + 1
      }

      $wk_FORM2_dW =  400
      $wk_FORM2_dH =  400
      $wk_FORM2_W  =  73
      $wk_FORM2_H  =  60

      $wk_stp_cmd_1 = ""
      $wk_stp_cmd_2 = ""
      // **************************

      VAR_SET_MODE(-1,"SXG_debug_msg",$MODE_NOSAVE)
      VAR_SET_MODE(-1,"SXG_debug",$MODE_NOSAVE)
   }

   PROCEDURA StampaXGLASS_Armadio_Close
   {
      WITH_VAR("$wk_cas","STP_XG_RUOTA_TOP",$num_con_figli,1,"1")
      while( $wk_cas > 0 )
      {
         $wk_idx_cas = $wk_cas[$wk_cas]
         VAR_VALUE_SET($wk_idx_cas,"STP_XG_RUOTA_TOP",0)
         RIGENERA_IDX($wk_idx_cas)
         $wk_cas = $wk_cas - 1
      }

      WITH_VAR("$wk_cas","STP_XG_RUOTA_FIANCO",$num_con_figli,1,"1")
      while( $wk_cas > 0 )
      {
         $wk_idx_cas = $wk_cas[$wk_cas]
         VAR_VALUE_SET($wk_idx_cas,"STP_XG_RUOTA_FIANCO",0)
         RIGENERA_IDX($wk_idx_cas)
         $wk_cas = $wk_cas - 1
      }

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

      COMANDO2("M4_SHOW Ambienti Show")
      COMANDO2("SHOW Abilita On")
      COMANDO2("SHOW All")

      GOSUB FineStampaPDF
      $wk_suffisso_PDF = ""
      GOSUB CancellaGlobaliStp
   }

   PROCEDURA StampaXGLASS_Armadio_SubFrontali
   {
      r = ArrayCopy(-1,"wk_stampa_fro_items","wk_items_xglass")

      if( r == 0 )
      {
         ScriviSuLog( 0 , "StampaXGLASS_Armadio" , "SubFrontali COPIA FALLITA")
         EXITSUB()
      }

      if( $wk_items_xglass == 0 )
      {
         ScriviSuLog( 0 , "StampaXGLASS_Armadio" , "SubFrontali ARRAY VUOTO")
         EXITSUB
      }

      // **************************
      // Idx riferimento
      $wk_idx_ref = -1

      // 1 - Prediligo frontali di armadi lineari
      $wk_stampa_fro_item_num = 1
      while( IS_IDX($wk_idx_ref) != 1
           & $wk_stampa_fro_item_num <= $wk_stampa_fro_items)
      {
         $wk_stampa_fro_item = $wk_stampa_fro_items[$wk_stampa_fro_item_num]
         $wk_stampa_fro_item_topl = GetTopLevel($wk_stampa_fro_item)

         if( HAS_ALIAS( $wk_stampa_fro_item_topl, "Angolo") == 0
           & UN_PADRE2( $wk_stampa_fro_item, "Fianco_Arm20") == 0) { $wk_idx_ref = $wk_stampa_fro_item }

         $wk_stampa_fro_item_num = $wk_stampa_fro_item_num + 1
      }

      // 2 - Se non ho nulla, utilizzo verso angolo
      $wk_stampa_fro_item_num = 1
      while( IS_IDX($wk_idx_ref) != 1
           & $wk_stampa_fro_item_num <= $wk_stampa_fro_items)
      {
         $wk_stampa_fro_item = $wk_stampa_fro_items[$wk_stampa_fro_item_num]
         $wk_stampa_fro_item_topl = GetTopLevel($wk_stampa_fro_item)

         if( UN_PADRE2( $wk_stampa_fro_item, "Fianco_Arm20") == 0) { $wk_idx_ref = $wk_stampa_fro_item }

         $wk_stampa_fro_item_num = $wk_stampa_fro_item_num + 1
      }

      // 3 - Come ultima scelta mantengo utilizzo il padre del primo elemento
      if( IS_IDX($wk_idx_ref) != 1) { $wk_idx_ref = PADRE( $wk_stampa_fro_items[1], 1) }

      GOSUB StampaXGLASS_Armadio_SubInit

      if( $wk_stampa_ang == 1
        & IsIdx( -1, "wk_stp_ang_att"))
      {
         $wk_STP_DIS_TitoloDisegno2 = STRCAT( "COMPOSIZIONE ANGOLO [", STR($wk_stp_ang_att), "]")
      }

      $wk_stampa_XGLASS_CassArm = 1
      $wk_stampa_XGLASS_Arm = 1
      $wk_stampa_bif = 0
      $wk_STP_DIS_TitoloDisegno = "VISTA FRONTALE"

      GOSUB StampaXGLASS_SubQuota
      GOSUB StampaXGLASS_SubLettere

      GOSUB NomeDisegno
      GOSUB StampaLayout

      if( $DIS_TO_GEMO==0 ) { GOSUB CancellaScritteQuote }

      //stampa Vista top
      if( NOME($wk_idx_test) != "Vano_CabinaVista" )
      {
         GOSUB StampaXGLASS_Armadio_SubInit

         $wk_FORM_W  =  285
         $wk_nome_form = "Stampa_Top2_O.emf"
         $wk_nome_layout = "Stampa_XGLASS_BN_TOP"
         $wk_STP_DIS_TitoloDisegno = "VISTA TOP"

         $wk_stampa_XGLASS_Arm_VistaTOP = 1
         GOSUB StampaXGLASS_SubQuota
         GOSUB StampaXGLASS_SubLettere

         GOSUB NomeDisegno
         GOSUB StampaLayout

         $wk_stampa_XGLASS_Arm = 0
         $wk_stampa_XGLASS_Arm_VistaTOP = 0
         $wk_stampa_XGLASS_CassArm = 0

         if( $DIS_TO_GEMO==0 ) { GOSUB CancellaScritteQuote }
      }

      //reset della variabili utilizzate in stampa
      WITH_VAR("$wk_reset","flag_stampa",$num_con_figli,1,"1")
      $wk_j = 1
      while ( $wk_j <= $wk_reset )
      {
         $wk_idx_item = $wk_reset[$wk_j]
         VAR_VALUE_SET($wk_idx_item,"flag_stampa",0)
         $wk_j = $wk_j + 1
      }
   }

   PROCEDURA StampaXGLASS_Armadio_SubCassettiere
   {
      r = ArrayCopy(-1,"wk_stampa_cas_items","wk_items_xglass")

      if( r == 0 )
      {
         ScriviSuLog( 0 , "StampaXGLASS_Armadio" , "SubCassettiere COPIA FALLITA")
         EXITSUB()
      }

      if( $wk_items_xglass == 0 )
      {
         ScriviSuLog( 0 , "StampaXGLASS_Armadio" , "SubCassettiere ARRAY VUOTO")
         EXITSUB
      }

      // **************************
      $wk_idx_ref = $wk_stampa_cas_items[1]
      GOSUB StampaXGLASS_Armadio_SubInit
      $wk_STP_DIS_TitoloDisegno = "VISTA FRONTE"

      $wk_stampa_XGLASS_CassArm = 1
      $wk_stampa_bif = 0
      GOSUB StampaXGLASS_SubQuota
      GOSUB StampaXGLASS_SubLettere
      $wk_stampa_XGLASS_CassArm = 0

      GOSUB NomeDisegno
      GOSUB StampaLayout

      //reset della variabili utilizzate in stampa
      WITH_VAR("$wk_reset","flag_stampa",$num_con_figli,1,"1")
      $wk_j = 1
      while ( $wk_j <= $wk_reset )
      {
         $wk_idx_item = $wk_reset[$wk_j]
         VAR_VALUE_SET($wk_idx_item,"flag_stampa",0)
         $wk_j = $wk_j + 1
      }

      if( $DIS_TO_GEMO==0 ) { GOSUB CancellaScritteQuote }
   }

   // Sostituita da StampaXGLASS_Armadio
   PROCEDURA StampaProd_XGLASS_CassArm
   {
      debug = 0

      GOSUB Assegna_VarTecnica_XGLASS

      WITH_ALIAS("$wk_cas","StpCassArm")
      if( $wk_cas==0 )  { EXITSUB() }

      $wk_cas_num = 1
      while( $wk_cas_num <= $wk_cas)
      {
         $wk_idx_cas = $wk_cas[$wk_cas_num]
         SET_#($wk_idx_cas)

         //verifico se c'è almeno un elemento XGLASS
         COMPONENTI2("$wk_cmp",$wk_idx_cas,"*")

         $wk_items_xglass = 0

         $wk_cmp_num = 1
         while( $wk_cmp_num <= $wk_cmp)
         {
            if( IS_XGLASS($wk_cmp[$wk_cmp_num]) != 0 ) { AddItem2Array(-1,"wk_items_xglass",$wk_cmp[$wk_cmp_num] ,"") }

            $wk_cmp_num = $wk_cmp_num + 1
         }

         if( $wk_items_xglass > 0 )
         {
            VAR_VALUE_SET($wk_idx_cas,"STP_XG_RUOTA_TOP",1)
            RIGENERA_IDX($wk_idx_cas)

            GOSUB InizioStampaPDF

            GOSUB InfoCartiglioGen

            $wk_STP_DIS_Titolo = "STAMPA XGLASS CASSETTIERA"

            $wk_STP_DIS_LBL_5 = "Operatore:"
            $wk_STP_DIS_5     = VAR_VAL_STR( -1, "CodOperatore")
            $wk_STP_DIS_LBL_6 = ""
            $wk_STP_DIS_6     = ""

            $wk_STP_TitoloInfo = "INFORMAZIONI"
            $wk_STP_DIS_VAR1 = VAR_VAL_STR($wk_idx_cas,"DescEdit__")

            //finitura
            $wk_STP_DIS_VAR2 = GetDescCatVal($wk_idx_cas,"C042","CAT")
            $wk_STP_DIS_VAL2 = GetDescCatVal($wk_idx_cas,"C042","VAL")

            $VAR_AnteprimaDiStampa = 1
            if( $OnTerminate==1 ) { $VAR_AnteprimaDiStampa = 0 }

            SET_#($wk_idx_cas)
            if( VAR_EXIST($wk_idx_cas,"IDX_GEST") ) { $POSTNOMESTAMPA = STRCAT("-XGCASS_",STR(#IDX_GEST)) }
            else                                    { $POSTNOMESTAMPA = STRCAT("-XGCASS_(",STR($wk_idx_cas),")") }

            $wk_suffisso_emf = "_XGCASS"
            VAR_CREATE_NUM(-1,STRCAT("wk_pagina_",$wk_suffisso_emf),0,0,"")

            GOSUB adatta_dim_quote

            COMANDO2("M4_SHOW Ambienti Hide")
            COMANDO2("SHOW None")
            COMANDO2("SHOW Abilita Off")

            GOSUB StampaProd_XGLASS_CassArm_Sub

            COMANDO2("M4_SHOW Ambienti Show")
            COMANDO2("SHOW Abilita On")
            COMANDO2("SHOW All")

            GOSUB FineStampaPDF
            $wk_suffisso_PDF = ""

            GOSUB CancellaGlobaliStp

            VAR_VALUE_SET($wk_idx_cas,"STP_XG_RUOTA_TOP",0)
            RIGENERA_IDX($wk_idx_cas)
         }

         $wk_cas_num = $wk_cas_num + 1
      }
   }

   PROCEDURA StampaProd_XGLASS_CassArm_Sub
   {
      //$wk_SP_LINEA_MOBILI       = $TSTP_SP_LINEA_MOBILI
      //$wk_SP_LINEA_MOBILI_TRATT = $TSTP_SP_LINEA_TRATTEGGIO
      $wk_SP_LINEA_MOBILI       = 35
      $wk_SP_LINEA_MOBILI_TRATT = $TSTP_SP_LINEA_TRATTEGGIO
      $wk_SP_LINEA_SCRITTE      = 10
      $wk_SP_LINEA_QUOTE        = 10

      $wk_FORM_dW =  5
      $wk_FORM_dH =  52
      $wk_FORM_W  =  285
      $wk_FORM_H  =  152

      $wk_STP_DT_IMG  = ""
      $wk_STP_DT_IMG2 = ""


      $wk_nome_form = "Stampa_Top2_O.emf"
      $wk_nome_layout = "Stampa_XGLASS_BN"

      $wk_AliasLineeTratt = "STP_LINE_TRAT"

      $wk_view_iso_roll = "0 0"
      $wk_view_mini_iso_roll = "0 0"

      $wk_ang_str1 = ANG_TOT_NOR($wk_idx_cas)
      $wk_view_roll = STRCAT( STR(-1*$wk_ang_str1) ," 0" )

      $wk_FORM2_dW =  400
      $wk_FORM2_dH =  400
      $wk_FORM2_W  =  73
      $wk_FORM2_H  =  60

      $wk_stp_cmd_1 = ""
      $wk_stp_cmd_2 = ""


      $SXG_debug = 0
      #ifdef TE
         $SXG_debug = VAR_VAL(-1,"ATTIVA_LOG_DBG")
      #endif
      $SXG_debug_msg  = "START"     LogProcedura2("SXG_Stampa")

      VAR_SET_MODE(-1,"SXG_debug_msg",$MODE_NOSAVE)
      VAR_SET_MODE(-1,"SXG_debug",$MODE_NOSAVE)

      $wk_stampa_XGLASS_CassArm = 1
      $wk_stampa_bif = 0
      GOSUB StampaXGLASS_SubQuota
      GOSUB StampaXGLASS_SubLettere
      $wk_stampa_XGLASS_CassArm = 0

      GOSUB NomeDisegno
      GOSUB StampaLayout

      if( $DIS_TO_GEMO==0 ) { GOSUB CancellaScritteQuote }

      //reset della variabili utilizzate in stampa
      WITH_VAR("$wk_reset","flag_stampa",$num_con_figli,1,"1")
      $wk_reset_num = 1
      while ( $wk_reset_num <= $wk_reset )
      {
         VAR_VALUE_SET( $wk_reset[$wk_reset_num], "flag_stampa", 0)
         $wk_reset_num = $wk_reset_num + 1
      }
   }

   //PROCEDURA StampaProd_XGLASS_CassArm_Quota
   //{
   //
   //
   //   $alias_scr     = "STP_SCR_TOP"
   //   $AliasQuota    = "STP_QUO_TOP"
   //   $AliasQuotaLat = "STP_QUO_TOP"
   //   $wk_faccia = "A"
   //
   //   $HChar   = $Yscr/5         $LChar   = $Xscr/5
   //   $Alt_Chr = $Yscr/5         $Lar_Chr = $Xscr/5
   //
   //   $ang_scr = 0
   //   $wk_scosta_lquota = 20
   //
   //   SET_#($wk_idx_top)
   //
   //   $dist = -100
   //   $P1 = #base_1
   //   $P2 = #base_2
   //   $P2.y = $P1.y
   //   $d = DISTANZA($P1,$P2)
   //   $testo = STR(FLOOR(($d+0.05)*10)/10)
   //   GOSUB PosizionaQuota
   //
   //   //quoto profondità lato Sx
   //   $dist = 100
   //   $P1 = #base_1
   //   $P2 = #base_0
   //   $P2.y = $P1.y
   //   $d = DISTANZA($P1,$P2)
   //   $testo = STR(FLOOR(($d+0.05)*10)/10)
   //   GOSUB PosizionaQuota
   //}
   //} STAMPA TECNICA XGLASS cassettiere armadio

   PROCEDURA StampaXGLASS_Teche
   {
      if( $OnTerminate == 0 )  { GOSUB Assegna_VarTecnica_XGLASS }

      ScriviSuLog( 0 , "StampaXGLASS_Teche" , "START" )

      WITH_ALIAS("$wk_teche","Teca_30MM")

      if( $wk_teche == 0 ) { ScriviSuLog( 0 , "StampaXGLASS_Teche" , "] END - NO TECHE" ) EXITSUB() }

      $wk_teca_num = 1
      while( $wk_teca_num <= $wk_teche )
      {
         $wk_teca_att = $wk_teche[$wk_teca_num]

         $wk_teca_xglass = 0 //Genero stampa se ho almeno un vetro xglass
         $wk_teca_mista  = 0 //... o ho componenti di finitura diversa

         COMPONENTI2( "$wk_teca_cmp", $wk_teca_att, "*Teca_30*")
         $wk_teca_cmp_num = 1
         while( $wk_teca_cmp_num <= $wk_teca_cmp )
         {
            $wk_teca_cmp_att            = $wk_teca_cmp[$wk_teca_cmp_num]

            $wk_teca_cmp_att_finvar     = VAR_VAL_STR( $wk_teca_cmp_att, "FIN_var")
            $wk_teca_cmp_att_fingestvar = GetVarGest($wk_teca_cmp_att_finvar)

            $wk_teca_cmp_att_finval     = ""
            if( VAR_EXIST( $wk_teca_cmp_att, $wk_teca_cmp_att_fingestvar))
            {
               $wk_teca_cmp_att_finval = VAR_VAL_STR( $wk_teca_cmp_att, $wk_teca_cmp_att_fingestvar)
            }

            //XGlass
            $wk_teca_cmp_att_finval_ns  = ""
            if( $wk_teca_cmp_att_finval != "" )
            {
               $wk_teca_cmp_att_finval_ns = STRDADB( $wk_teca_cmp_att, "DAMMI_NONSIGNIF", STRCAT( $wk_teca_cmp_att_fingestvar, ";", $wk_teca_cmp_att_finval))

               if( $wk_teca_cmp_att_finval_ns == "XL000"
                 | $wk_teca_cmp_att_finval_ns == "XO000"
                 | $wk_teca_cmp_att_finval_ns == "XE000"
                 | $wk_teca_cmp_att_finval_ns == "XF000" ) { $wk_teca_xglass = $wk_teca_xglass + 1 }
            }

            //Finiture differenti
            if( $wk_teca_cmp_num == 1 ) { $wk_teca_cmp_att_finval_prev = $wk_teca_cmp_att_finval }
            if( $wk_teca_cmp_att_finval != $wk_teca_cmp_att_finval_prev ) { $wk_teca_mista = $wk_teca_mista + 1 }

            $wk_teca_cmp_att_finval_prev = $wk_teca_cmp_att_finval

            $wk_teca_cmp_num = $wk_teca_cmp_num + 1
         }

         //Elimino dall'array le teche da non stampare
         if( $wk_teca_mista == 0
           & $wk_teca_xglass == 0 )
         {
            DEL_ARRAY_ITEM( -1, "wk_teche", $wk_teca_num)
            $wk_teca_num = $wk_teca_num - 1
         }

         $wk_teca_num = $wk_teca_num + 1
      }

      //allegati di riga, 1 pdf per teca
      $wk_teca_num = 1
      while ( $wk_teca_num <= $wk_teche )
      {
         $wk_idx_tec = $wk_teche[$wk_teca_num]
         GOSUB InizioStampaPDF

         COMANDO2("M4_SHOW Ambienti Hide")
         COMANDO2("SHOW None")
         COMANDO2("SHOW Abilita Off")

         GOSUB StampaXGLASS_Teche_Sub

         if( $DIS_TO_GEMO==0 )  { GOSUB StampaXGLASS_Teche_Quota }

         GOSUB NomeDisegno
         GOSUB StampaLayout

         //reset della variabili utilizzate in stampa
         VAR_VALUE_SET($wk_idx_tec,"flag_stampa_zoom",0)
         VAR_VALUE_SET($wk_idx_tec,"flag_stampa",0)
         COMPONENTI2("$wk_reset",$wk_idx_tec,"*")
         $wk_reset_num = 1
         while ( $wk_reset_num <= $wk_reset )
         {
            VAR_VALUE_SET($wk_reset[$wk_reset_num] ,"flag_stampa",0)
            VAR_VALUE_SET($wk_reset[$wk_reset_num] ,"flag_stampa_mini_iso",0)
            $wk_reset_num = $wk_reset_num + 1
         }

         VAR_VALUE_SET($wk_idx_tec,"EsplodiTECA",0)
         RIGENERA_IDX($wk_idx_tec)

         if( $DIS_TO_GEMO==0 ) { GOSUB CancellaScritteQuote }

         COMANDO2("M4_SHOW Ambienti Show")
         COMANDO2("SHOW Abilita On")
         COMANDO2("SHOW All")

         GOSUB FineStampaPDF
         $wk_suffisso_PDF = ""

         GOSUB CancellaGlobaliStp

         $wk_teca_num = $wk_teca_num + 1
      }

      if( $wk_teche == 0 ) { ScriviSuLog( 0 , "StampaXGLASS_Teche" , "] END - NO TECHE XGLASS O MISTE" ) EXITSUB() }

      ScriviSuLog( 0 , "StampaXGLASS_Teche" , "END" )
   }

   PROCEDURA StampaXGLASS_Teche_Sub
   {
      GOSUB InfoCartiglioGen

      $wk_vv = 1
      while ( $wk_vv <= 30 )
      {
         VAR_VALUESTR_SET(-1,STRCAT("wk_STP_LEG_VAR",STR($wk_vv)),"")
         VAR_VALUESTR_SET(-1,STRCAT("wk_STP_LEG_VAL",STR($wk_vv)),"")
         VAR_VALUESTR_SET(-1,STRCAT("wk_STP_LEG_FIN",STR($wk_vv)),"")

         $wk_vv = $wk_vv + 1
      }

      $wk_SP_LINEA_MOBILI       = 35
      $wk_SP_LINEA_MOBILI_TRATT = $TSTP_SP_LINEA_TRATTEGGIO
      $wk_SP_LINEA_SCRITTE      = 10
      $wk_SP_LINEA_QUOTE        = 10

      $wk_FORM_dW = 5
      $wk_FORM_W  = 212
      $wk_FORM_dH = 45
      $wk_FORM_H  = 159

      $wk_STP_DT_IMG  = ""
      $wk_STP_DT_IMG2 = ""

      //x mini iso
      $wk_FORM2_dW = 217
      $wk_FORM2_dH = 143
      $wk_FORM2_W  = 73
      $wk_FORM2_H  = 60

      $wk_stp_cmd_1 = ""
      $wk_stp_cmd_2 = ""

      $wk_AliasLineeTratt = "STP_LINE_TRAT"

      $wk_STP_DIS_Titolo = "STAMPA XGLASS TECA"
      //Luca 19/04/2021 mantis 25003: Teche 30MM - Stampa X-glass
      $wk_STP_DIS_TitoloDisegno  = "L'ARIA TRA I VETRI E' SEMPRE 4.5 mm"

      $wk_STP_DIS_LBL_4 = ""
      $wk_STP_DIS_4     = ""

      $wk_STP_DIS_LBL_5 = "Operatore:"
      $wk_STP_DIS_5     = VAR_VAL_STR( -1, "CodOperatore")
      $wk_STP_DIS_LBL_6 = MSG(228)
      $wk_STP_DIS_6     = VAR_VAL_STR(-1,"Gestionale_Ordine_Riferimento")

      $wk_STP_TitoloInfo = "INFORMAZIONI"

      //Codice + descrizione
      $wk_STP_DIS_VAR1 = VAR_VAL_STR($wk_idx_tec,"DescEdit__")

      //finitura
      $wk_STP_DIS_VAR2 = GetDescCatVal($wk_idx_tec,"C042","CAT")
      $wk_STP_DIS_VAL2 = GetDescCatVal($wk_idx_tec ,"C042","VAL")

      $wk_STP_DIS_VAR3 = GetDescCatVal($wk_idx_tec,"C048","CAT")
      $wk_STP_DIS_VAL3 = GetDescCatVal($wk_idx_tec ,"C048","VAL")

      $wk_nome_layout = "Stampa_XGLASS_BN"
      $wk_nome_form = "Stampa_Top_O.emf"
      $wk_FORM_W  =  212

      $VAR_AnteprimaDiStampa = 1
      if( $OnTerminate==1 )
      {
         $VAR_AnteprimaDiStampa = 0
         if( $CNP==0 ) { $VAR_AnteprimaDiStampa = 1 }
      }

      SET_#($wk_idx_tec)
      if( VAR_EXIST($wk_idx_tec,"IDX_GEST") ) { $POSTNOMESTAMPA = STRCAT("-30MMTECA_",STR(#IDX_GEST)) }
      else                                    { $POSTNOMESTAMPA = STRCAT("-30MMTECA_(",STR($wk_idx_tec),")") }

      $wk_suffisso_emf = "_30MMTECA"
      VAR_CREATE_NUM(-1,STRCAT("wk_pagina_",$wk_suffisso_emf),0,0,"")

      //Luca 27/01/2022
      $wk_idx_riga = $wk_idx_tec

      $SET_STAMPA = "0001"

      $wk_ang = ANG_TOT2($wk_idx_tec)

      $wk_view_roll = STRCAT( STR(-1*$wk_ang) ," 0" )
      $wk_view_iso_roll = " 0 0"
      $wk_view_mini_iso_roll = " -25 25"
   }

   PROCEDURA StampaXGLASS_Teche_Quota
   {
      VAR_VALUE_SET($wk_idx_tec,"EsplodiTECA",1)
      RIGENERA_IDX($wk_idx_tec)

      VAR_VALUE_SET($wk_idx_tec,"flag_stampa_zoom",1)

      //Simone 23/01/2023
      $adatta_dim_quote_idx_ref = $wk_idx_tec
      GOSUB adatta_dim_quote

      SET_#($wk_idx_tec)

      COMPONENTI2("$wk_cmp",$wk_idx_tec,"*")
      $wk_cmp_num = 1
      while ( $wk_cmp_num <= $wk_cmp )
      {
         if( VAR_VAL($wk_cmp[$wk_cmp_num],"STP_XG_VISTA_ISO") )     { VAR_VALUE_SET($wk_cmp[$wk_cmp_num],"flag_stampa_mini_iso",1) }
         if( VAR_VAL($wk_cmp[$wk_cmp_num],"STP_XG_VISTA_ESPLOSO") ) { VAR_VALUE_SET($wk_cmp[$wk_cmp_num],"flag_stampa",1) }
         $wk_cmp_num = $wk_cmp_num+ 1
      }

      $wk_STP_LegendaTitolo = "Dimensioni"

      $alias_scr     = "STP_SCR_XG"
      $AliasQuota    = "STP_QUO_XG"
      $AliasQuotaLat = "STP_QUO_XG"
      $HChar = 25
      $LChar = 15

      $HChar   = $Yscr        $LChar   = $Xscr
      $Alt_Chr = $Yscr        $Lar_Chr = $Xscr

      $wk_ang_tec = ANG_TOT2($wk_idx_tec)
      $ang_scr = $wk_ang_tec
      $point = 4
      $wk_faccia = "F"

      $wk_stp_cmd_1 ="Show Alias delete STP_SCR_XG"
      $wk_stp_cmd_2 ="Show Alias add STP_SCR_ISO"

      $wk_STP_DT_IMG = ""
      $wk_STP_DT_IMG2 = STRCAT($path_layout,"Dettagli\Teca3_Inf.bmp")
      if( VAR_VAL($wk_idx_tec,"ConLedSotto") == 1)  { $wk_STP_DT_IMG2 = STRCAT($path_layout,"Dettagli\Teca3_InfLED.bmp") }

      //FIANCO SX
      $wk_str_legenda = VAR_VAL_STR( #idx_vetro_fiasx, "XGLASS")
      if( $wk_str_legenda == ""
        & VAR_EXIST( #idx_vetro_fiasx, "IDX_GEST"))
      {
         $wk_str_legenda = STR( VAR_VAL( #idx_vetro_fiasx, "IDX_GEST"))
      }
      if( $wk_str_legenda == "") { $wk_str_legenda = STR(#idx_vetro_fiasx) }

      $wk_str_scritta_testo = $wk_str_legenda

      $wk_str_legenda = STRCAT($wk_str_legenda,": " , GetDescCatVal(#idx_vetro_fiasx , VAR_VAL_STR( #idx_vetro_fiasx, "FIN_var"), "VAL"))
      $wk_str_legenda = STRCAT($wk_str_legenda," - " , STR(VAR_VAL(#idx_vetro_fiasx,"Z")))
      $wk_str_legenda = STRCAT($wk_str_legenda,"x" , STR(VAR_VAL(#idx_vetro_fiasx,"Y")))
      $wk_str_legenda = STRCAT($wk_str_legenda,"x" , STR(VAR_VAL(#idx_vetro_fiasx,"X")))
      $wk_STP_LEG_VAR1 = $wk_str_legenda

      $P2 = #base_0
      $P2.x = $P2.x - COSENO($wk_ang_tec)*(#Z/2) + SENO($wk_ang_tec)*(#Z/2)
      $P2.y = $P2.y + #Y/2
      $P2.z = $P2.z + SENO($wk_ang_tec)*(#Z/2) + COSENO($wk_ang_tec)*(#Z/2)
      $testo = $wk_str_scritta_testo
      GOSUB PosizionaScrittaCAD

      $alias_scr = "STP_SCR_ISO"
      $wk_faccia = "F"
      $P2 = #base_0
      $P2.x = $P2.x + COSENO($wk_ang_tec)*(20) + SENO($wk_ang_tec)*(#Z/2)
      $P2.y = $P2.y + #Y/2
      $P2.z = $P2.z - SENO($wk_ang_tec)*(20) + COSENO($wk_ang_tec)*(#Z/2)
      $testo = $wk_str_scritta_testo
      $ang_scr = $wk_ang_tec + 70
      GOSUB PosizionaScrittaCAD

      //FONDO
      $alias_scr = "STP_SCR_XG"
      $ang_scr = $wk_ang_tec

      $wk_str_legenda = VAR_VAL_STR( #idx_vetro_base, "XGLASS")
      if( $wk_str_legenda == ""
        & VAR_EXIST( #idx_vetro_base, "IDX_GEST"))
      {
         $wk_str_legenda = STR( VAR_VAL( #idx_vetro_base, "IDX_GEST"))
      }
      if( $wk_str_legenda == "") { $wk_str_legenda = STR(#idx_vetro_base) }

      $wk_str_scritta_testo = $wk_str_legenda

      $wk_str_legenda = STRCAT($wk_str_legenda,": " , GetDescCatVal(#idx_vetro_base , VAR_VAL_STR( #idx_vetro_base, "FIN_var"), "VAL"))
      $wk_str_legenda = STRCAT($wk_str_legenda," - " , STR(VAR_VAL(#idx_vetro_base,"X")))
      $wk_str_legenda = STRCAT($wk_str_legenda,"x" , STR(VAR_VAL(#idx_vetro_base,"Z")))
      $wk_str_legenda = STRCAT($wk_str_legenda,"x" , STR(VAR_VAL(#idx_vetro_base,"Y")))
      $wk_STP_LEG_VAR2 = $wk_str_legenda

      $wk_faccia = "F"
      $P2 = #base_0
      $P2.x = $P2.x + COSENO($wk_ang_tec)*(#X/2) + SENO($wk_ang_tec)*(#Z/2)
      $P2.y = $P2.y - #Z/2
      $P2.z = $P2.z - SENO($wk_ang_tec)*(#X/2) + COSENO($wk_ang_tec)*(#Z/2)
      $testo = $wk_str_scritta_testo
      GOSUB PosizionaScrittaCAD

      $alias_scr = "STP_SCR_ISO"
      $wk_faccia = "F"
      $P2 = #base_0
      $P2.x = $P2.x + COSENO($wk_ang_tec)*(#X/2) + SENO($wk_ang_tec)*(#Z/2)
      $P2.y = $P2.y + 10
      $P2.z = $P2.z - SENO($wk_ang_tec)*(#X/2) + COSENO($wk_ang_tec)*(#Z/2)
      $testo = $wk_str_scritta_testo
      $point = 3
      GOSUB PosizionaScrittaCAD

      //FIANCO DX
      $alias_scr = "STP_SCR_XG"
      $point = 3

      $wk_str_legenda = VAR_VAL_STR( #idx_vetro_fiadx, "XGLASS")
      if( $wk_str_legenda == ""
        & VAR_EXIST( #idx_vetro_fiadx, "IDX_GEST"))
      {
         $wk_str_legenda = STR( VAR_VAL( #idx_vetro_fiadx, "IDX_GEST"))
      }
      if( $wk_str_legenda == "") { $wk_str_legenda = STR(#idx_vetro_fiadx) }

      $wk_str_scritta_testo = $wk_str_legenda

      $wk_str_legenda = STRCAT($wk_str_legenda,": " , GetDescCatVal(#idx_vetro_fiadx , VAR_VAL_STR( #idx_vetro_fiadx, "FIN_var"), "VAL"))
      $wk_str_legenda = STRCAT($wk_str_legenda," - " , STR(VAR_VAL(#idx_vetro_fiadx,"Z")))
      $wk_str_legenda = STRCAT($wk_str_legenda,"x" , STR(VAR_VAL(#idx_vetro_fiadx,"Y")))
      $wk_str_legenda = STRCAT($wk_str_legenda,"x" , STR(VAR_VAL(#idx_vetro_fiadx,"X")))
      $wk_STP_LEG_VAR3 = $wk_str_legenda

      $wk_faccia = "F"
      $P2 = #base_3
      $P2.x = $P2.x + COSENO($wk_ang_tec)*(#Z/2) + SENO($wk_ang_tec)*(#Z/2)
      $P2.y = $P2.y + #Y/2
      $P2.z = $P2.z - SENO($wk_ang_tec)*(#Z/2) + COSENO($wk_ang_tec)*(#Z/2)
      $testo = $wk_str_scritta_testo
      $ang_scr = $wk_ang_tec
      GOSUB PosizionaScrittaCAD

      $alias_scr = "STP_SCR_ISO"
      $wk_faccia = "F"
      $P2 = #base_3
      $P2.x = $P2.x + COSENO($wk_ang_tec)*(20) + SENO($wk_ang_tec)*(#Z/2)
      $P2.y = $P2.y + #Y/2
      $P2.z = $P2.z - SENO($wk_ang_tec)*(20) + COSENO($wk_ang_tec)*(#Z/2)
      $testo = $wk_str_scritta_testo
      $ang_scr = $wk_ang_tec + 70
      GOSUB PosizionaScrittaCAD

      $wk_diam = #Y/4
      $P2 = #base_2
      $P2.x = $P2.x - COSENO($wk_ang_tec)*($wk_diam/2)
      $P2.y = $P2.y - $wk_diam/2
      $P2.z = $P2.z +   SENO($wk_ang_tec)*($wk_diam/2)
      //COMANDO2("ELEMENTO CilindroZ")
      COMANDO2("ELEMENTO Blocco")
      COMANDO2("STRUTTURA")
      $wk_cmd = STRCAT("VAR_SET CancellaScritteQuote=1 X=",STR($wk_diam)," Y=",STR($wk_diam)," Z=",STR(100)," STP_LINE_TRAT=1")
      //$wk_cmd = STRCAT("VAR_SET CancellaScritteQuote=1 X=",STR($wk_diam)," Y=",STR($wk_diam)," Z=",STR(100)," STP_LINE=1")
      COMANDO2($wk_cmd)
      COMANDO2(STRCAT("POSIZIONA ",STR($P2.x)," ",STR($P2.y)," ",STR($P2.z)," ",STR($wk_ang_tec)))

      $alias_scr = "STP_SCR_XG"
      $testo = "A"
      $P2 = #base_2
      $point = 2
      $P2.x = $P2.x + COSENO($wk_ang_tec)*($wk_diam/2)
      $P2.y = $P2.y - $wk_diam/2
      $P2.z = $P2.z -   SENO($wk_ang_tec)*($wk_diam/2)
      $ang_scr = $wk_ang_tec
      $wk_faccia = "F"
      GOSUB PosizionaScrittaCAD

      if( VAR_VAL($wk_idx_tec,"TipoTeca") == 4 )
      {
         $wk_STP_DT_IMG  = STRCAT($path_layout,"Dettagli\Teca4_Sup.bmp")
         $wk_STP_DT_IMG2 = STRCAT($path_layout,"Dettagli\Teca4_Inf.bmp")

         if( VAR_VAL($wk_idx_tec,"ConLedSopra") == 1)  { $wk_STP_DT_IMG  = STRCAT($path_layout,"Dettagli\Teca4_SupLED.bmp")  }
         if( VAR_VAL($wk_idx_tec,"ConLedSotto") == 1)  { $wk_STP_DT_IMG2 = STRCAT($path_layout,"Dettagli\Teca4_InfLED.bmp") }

         //coperchio
         $wk_str_legenda = VAR_VAL_STR( #idx_vetro_cop, "XGLASS")
         if( $wk_str_legenda == ""
           & VAR_EXIST( #idx_vetro_cop, "IDX_GEST"))
         {
            $wk_str_legenda = STR( VAR_VAL( #idx_vetro_cop, "IDX_GEST"))
         }
         if( $wk_str_legenda == "") { $wk_str_legenda = STR(#idx_vetro_cop) }

         $wk_str_scritta_testo = $wk_str_legenda

         $wk_str_legenda = STRCAT($wk_str_legenda,": " , GetDescCatVal(#idx_vetro_cop , VAR_VAL_STR( #idx_vetro_cop, "FIN_var"), "VAL"))
         $wk_str_legenda = STRCAT($wk_str_legenda," - " , STR(VAR_VAL(#idx_vetro_cop,"X")))
         $wk_str_legenda = STRCAT($wk_str_legenda,"x" , STR(VAR_VAL(#idx_vetro_cop,"Z")))
         $wk_str_legenda = STRCAT($wk_str_legenda,"x" , STR(VAR_VAL(#idx_vetro_cop,"Y")))
         $wk_STP_LEG_VAR4 = $wk_str_legenda

         $alias_scr = "STP_SCR_XG"
         $ang_scr = $wk_ang_tec

         $wk_faccia = "F"
         $P2 = #base_0
         $P2.x = $P2.x + COSENO($wk_ang_tec)*(#X/2) + SENO($wk_ang_tec)*(#Z/2)
         $P2.y = $P2.y + #Y +  #Z/2
         $P2.z = $P2.z - SENO($wk_ang_tec)*(#X/2) + COSENO($wk_ang_tec)*(#Z/2)
         $testo = $wk_str_scritta_testo
         GOSUB PosizionaScrittaCAD

         $alias_scr = "STP_SCR_ISO"
         $wk_faccia = "F"
         $P2 = #base_0
         $P2.x = $P2.x + COSENO($wk_ang_tec)*(#X/2) + SENO($wk_ang_tec)*(#Z/2)
         $P2.y = $P2.y + #Y + 10
         $P2.z = $P2.z - SENO($wk_ang_tec)*(#X/2) + COSENO($wk_ang_tec)*(#Z/2)
         $testo = $wk_str_scritta_testo
         $point = 3
         GOSUB PosizionaScrittaCAD

         $alias_scr = "STP_SCR_XG"
         $point = 4

         //schiena
         $wk_str_legenda = VAR_VAL_STR( #idx_schiena_teca, "XGLASS")
         if( $wk_str_legenda == ""
           & VAR_EXIST( #idx_schiena_teca, "IDX_GEST"))
         {
            $wk_str_legenda = STR( VAR_VAL( #idx_schiena_teca, "IDX_GEST"))
         }
         if( $wk_str_legenda == "") { $wk_str_legenda = STR(#idx_schiena_teca) }

         $wk_str_scritta_testo = $wk_str_legenda

         $wk_str_legenda = STRCAT($wk_str_legenda,": " , GetDescCatVal(#idx_schiena_teca , VAR_VAL_STR( #idx_schiena_teca, "FIN_var"), "VAL"))
         $wk_str_legenda = STRCAT($wk_str_legenda," - " , STR(VAR_VAL(#idx_schiena_teca,"X")))
         $wk_str_legenda = STRCAT($wk_str_legenda,"x" , STR(VAR_VAL(#idx_schiena_teca,"Y")))
         $wk_str_legenda = STRCAT($wk_str_legenda,"x" , STR(VAR_VAL(#idx_schiena_teca,"Z_Vetro")))
         $wk_STP_LEG_VAR5 = $wk_str_legenda

         $wk_faccia = "F"
         $P2 = #base_0
         $P2.x = $P2.x + COSENO($wk_ang_tec)*(#X/2) + SENO($wk_ang_tec)*(30)
         $P2.y = $P2.y + #Y/2
         $P2.z = $P2.z - SENO($wk_ang_tec)*(#X/2) + COSENO($wk_ang_tec)*(30)
         $testo = $wk_str_scritta_testo
         GOSUB PosizionaScrittaCAD

         $alias_scr = "STP_SCR_ISO"
         $wk_faccia = "F"
         $testo = $wk_str_scritta_testo
         GOSUB PosizionaScrittaCAD

         //posiziono i due dettagli
         $wk_diam =  #Y/4
         $P2 = #alto_2
         $P2.x = $P2.x - COSENO($wk_ang_tec)*($wk_diam/2)
         $P2.y = $P2.y - $wk_diam/2
         $P2.z = $P2.z +   SENO($wk_ang_tec)*($wk_diam/2)
         //COMANDO2("ELEMENTO CilindroZ")
         COMANDO2("ELEMENTO Blocco")
         COMANDO2("STRUTTURA")
         //$wk_cmd = STRCAT("VAR_SET CancellaScritteQuote=1 X=",STR($wk_diam)," Y=",STR($wk_diam)," Z=",STR(100)," STP_LINE=1")
         $wk_cmd = STRCAT("VAR_SET CancellaScritteQuote=1 X=",STR($wk_diam)," Y=",STR($wk_diam)," Z=",STR(100)," STP_LINE_TRAT=1")
         COMANDO2($wk_cmd)
         COMANDO2(STRCAT("POSIZIONA ",STR($P2.x)," ",STR($P2.y)," ",STR($P2.z)," ",STR($wk_ang_tec)))

         $alias_scr = "STP_SCR_XG"
         $testo = "B"
         $P2 = #alto_2
         $P2.x = $P2.x + COSENO($wk_ang_tec)*($wk_diam/2)
         $P2.y = $P2.y + $wk_diam/2
         $P2.z = $P2.z - SENO($wk_ang_tec)*($wk_diam/2)
         $ang_scr = $wk_ang_tec
         $point = 3
         $wk_faccia = "F"
         GOSUB PosizionaScrittaCAD
      }
      else
      {
         //schiena
         $wk_str_legenda = VAR_VAL_STR( #idx_schiena_teca, "XGLASS")
         if( $wk_str_legenda == ""
           & VAR_EXIST( #idx_schiena_teca, "IDX_GEST"))
         {
            $wk_str_legenda = STR( VAR_VAL( #idx_schiena_teca, "IDX_GEST"))
         }
         if( $wk_str_legenda == "") { $wk_str_legenda = STR(#idx_schiena_teca) }

         $wk_str_scritta_testo = $wk_str_legenda

         $wk_str_legenda = STRCAT($wk_str_legenda,": " , GetDescCatVal(#idx_schiena_teca, VAR_VAL_STR( #idx_schiena_teca, "FIN_var"), "VAL"))
         $wk_str_legenda = STRCAT($wk_str_legenda," - " , STR(VAR_VAL(#idx_schiena_teca,"X")))
         $wk_str_legenda = STRCAT($wk_str_legenda,"x" , STR(VAR_VAL(#idx_schiena_teca,"Y")))
         $wk_str_legenda = STRCAT($wk_str_legenda,"x" , STR(VAR_VAL(#idx_schiena_teca,"Z_Vetro")))
         $wk_STP_LEG_VAR4 = $wk_str_legenda

         $alias_scr = "STP_SCR_XG"
         $ang_scr = $wk_ang_tec

         $wk_faccia = "F"
         $P2 = #base_0
         $P2.x = $P2.x + COSENO($wk_ang_tec)*(#X/2) + SENO($wk_ang_tec)*(30)
         $P2.y = $P2.y + #Y/2
         $P2.z = $P2.z - SENO($wk_ang_tec)*(#X/2) + COSENO($wk_ang_tec)*(30)
         $testo = $wk_str_scritta_testo
         GOSUB PosizionaScrittaCAD

         $alias_scr = "STP_SCR_ISO"
         $testo = $wk_str_scritta_testo
         $wk_faccia = "F"
         GOSUB PosizionaScrittaCAD
      }

      $alias_scr = "STP_SCR_XG"

      //VAR_VALUE_SET($wk_idx_tec,"flag_stampa",1)

      if( VAR_VAL($wk_idx_tec,"ConLedSopra") == 1 ) { $wk_STP_DIS_VAR4 = "CON LED SOPRA" }
      if( VAR_VAL($wk_idx_tec,"ConLedSotto") == 1 ) { $wk_STP_DIS_VAR5 = "CON LED SOTTO" }
   }

   //{ STAMPA TECNICA XGLASS con EMF FISSI
   PROCEDURA StampaXGLASS_Fisse
   {
      log = 0
      ScriviSuLog( log , "StampaXGLASS_Fisse" , "START" )

      WITH_ALIAS("$wk_items","StpXG_Fisse")

      if( $wk_items == 0 )
      {
         ScriviSuLog( log , "StampaXGLASS_Fisse" , "-- NON CI SONO ELEMENTI DA STAMPARE" )
         ScriviSuLog( log , "StampaXGLASS_Fisse" , "END" )
         EXITSUB()
      }

      $wk_items_num = 1
      while ( $wk_items_num <= $wk_items )
      {
         $wk_idx_riga = $wk_items[$wk_items_num]

         GOSUB InizioStampaPDF
         GOSUB InfoCartiglioGen

         $wk_STP_DIS_Titolo = "STAMPA XGLASS"

         $wk_STP_DIS_TitoloDisegno  =  ""
         $wk_STP_DIS_TitoloDisegno2 =  ""

         $wk_STP_DIS_LBL_5 = "Operatore:"
         $wk_STP_DIS_5     = VAR_VAL_STR( -1, "CodOperatore")

         //sposto riferimento
         $wk_STP_DIS_LBL_4 = ""
         $wk_STP_DIS_4     = ""
         $wk_STP_DIS_LBL_6 = MSG(228)
         $wk_STP_DIS_6     = VAR_VAL_STR(-1,"Gestionale_Ordine_Riferimento")

         $wk_STP_TitoloInfo = "INFORMAZIONI"
         $wk_STP_DIS_VAR1 = VAR_VAL_STR($wk_idx_riga,"DescEdit__")

         $VAR_AnteprimaDiStampa = 1
         if( $OnTerminate==1 ) { $VAR_AnteprimaDiStampa = 0 }

         SET_#($wk_idx_riga)

         if( VAR_EXIST($wk_idx_riga,"IDX_GEST") ) { $POSTNOMESTAMPA = STRCAT("-XGF_",STR(#IDX_GEST)) }
         else                                     { $POSTNOMESTAMPA = STRCAT("-XGF_(",STR($wk_idx_riga),")") }

         $wk_suffisso_emf = "_XGF"
         VAR_CREATE_NUM(-1,STRCAT("wk_pagina_",$wk_suffisso_emf),0,0,"")

         GOSUB StampaXGLASS_Fisse_Sub

         GOSUB NomeDisegno
         GOSUB StampaLayout

         GOSUB FineStampaPDF
         $wk_suffisso_PDF = ""

         GOSUB CancellaGlobaliStp

         $wk_items_num = $wk_items_num + 1
      }
   }

   PROCEDURA StampaXGLASS_Fisse_Sub
   {
      $wk_FORM_dW =  5
      $wk_FORM_dH =  52
      $wk_FORM_W  =  285
      $wk_FORM_H  =  152

      $wk_STP_DT_IMG  = ""
      $wk_STP_DT_IMG2 = ""

      $wk_nome_layout = "StampaXG_Fissa"
      $wk_nome_form = "Stampa_Top2_O.emf"

      //reset delle variabili generiche da utilizzare nei form fissi
      DEL_VAR(-1,"wk_STP_XGF*")
      $wk_form_num = 1
      while ( $wk_form_num <= 20 )
      {
         VAR_CREATE_STR(-1,STRCAT("wk_STP_XGF_",STR($wk_form_num)),"",0,"")
         $wk_form_num = $wk_form_num + 1
      }

      //Luca 21/12/2021
      if( NOME($wk_idx_riga) == "Tavolo_AIR" )  { $wk_nome_form = "Stampa_XG_Tavolo.emf"  }
      if( NOME($wk_idx_riga) == "Mensola_Dub" ) { $wk_nome_form = "Stampa_XG_Mensola.emf" }

      $wk_STP_XGF_1 = "A 100 x 100"
      $wk_STP_XGF_4 = "B 100 x 100"

   }
   //{ STAMPA TECNICA XGLASS con EMF FISSI

   //Luca 22/11/2019
   //PROCEDURA StampaProd_DivaniSand
   PROCEDURA StampaProd_Divani
   {
      debug = 0
      #ifdef TE
         debug = 1
      #endif

      if( debug==1 ) { COMANDO2(STRCAT("LOGMSG [ StampaProd_Divani INIZIO")) }

      WITH_ALIAS("$wk_div","StpDivani")
      if( $wk_div==0 )
      {
         if( debug==1 ) { COMANDO2(STRCAT("LOGMSG ] StampaProd_Divani FINE - NO DIVANI")) }
         EXITSUB()
      }

      COMANDO2("SHOW None")
      COMANDO2("SHOW Abilita Off")

      GOSUB InizioStampaPDF
      GOSUB InfoCartiglioGen

      $wk_STP_DIS_Titolo = "STAMPA DIVANI"
      $SET_STAMPA = "0026"

      $wk_STP_DIS_LBL_5 = "Operatore:"
      $wk_STP_DIS_5     = VAR_VAL_STR( -1, "CodOperatore")
      $wk_STP_DIS_LBL_6 = ""
      $wk_STP_DIS_6     = ""

      $VAR_AnteprimaDiStampa = 1
      if( $OnTerminate==1 ) { $VAR_AnteprimaDiStampa = 0 }

      $wk_SP_LINEA_MOBILI       = $TSTP_SP_LINEA_MOBILI
      $wk_SP_LINEA_MOBILI_TRATT = $TSTP_SP_LINEA_TRATTEGGIO
      $wk_SP_LINEA_SCRITTE      = 1
      $wk_SP_LINEA_QUOTE        = 1

      $wk_FORM_dW =  5
      $wk_FORM_dH =  40
      $wk_FORM_W  =  285
      $wk_FORM_H  =  164

      $TSTP_FORM_LOGO_dW =  5
      $TSTP_FORM_LOGO_dH =  6
      $TSTP_FORM_LOGO_W  = 32
      $TSTP_FORM_LOGO_H  = 10

      $wk_nome_form = "Stampa_Top2_O.emf"
      $wk_nome_layout = "Pianta_BN"

      $wk_cmd_alias_add = "StpDivani"
      $wk_cmd_alias_del = ""

      GOSUB adatta_dim_quote

      //$POSTNOMESTAMPA = "-DIV_SAND"
      //$wk_suffisso_emf = "DIV_SAND"
      $POSTNOMESTAMPA = "-DIV"
      $wk_suffisso_emf = "DIV"

      VAR_CREATE_NUM(-1,STRCAT("wk_pagina_",$wk_suffisso_emf),0,0,"")

      $Lar_Chr = $Xscr/3
      $Alt_Chr = $Yscr/3

      $wk_leg_var     = 0
      $wk_leg_val     = 0
      $wk_leg_val_dsc = 0


      if( $DIS_TO_GEMO==0 )
      {
         $wk_leg_var     = 0
         $wk_leg_val     = 0
         $wk_leg_val_dsc = 0

         WITH_VAR("$wk_ele","Stp_var_legenda",3,0,"")
         $wk_i = 1
         while ( $wk_i<=$wk_ele )
         {
            $wk_idx_div = $wk_ele[$wk_i]

            $wk_cat     = VAR_VAL_STR($wk_idx_div,"Stp_var_legenda")
            $wk_cat_val = VAR_VAL_STR($wk_idx_div,STRCAT("GEST_",$wk_cat))

            $wk_pos_arr = 0
            if( $wk_cat_val!="" & $wk_cat_val!="__" )
            {
               $wk_nuova_finitura = 1

               $wk_j = 1
               while ( $wk_j<=$wk_leg_var & $wk_nuova_finitura==1 )
               {
                  if( $wk_cat==$wk_leg_var[$wk_j] )
                  {
                     if( $wk_cat_val==$wk_leg_val[$wk_j] ) { $wk_nuova_finitura = 0  $wk_pos_arr = $wk_j }
                  }

                  $wk_j = $wk_j + 1
               }

               if( $wk_nuova_finitura==1 )
               {
                  $wk_leg_var     = $wk_leg_var + 1
                  $wk_leg_val     = $wk_leg_val + 1
                  $wk_leg_val_dsc = $wk_leg_val_dsc + 1

                  $wk_desc = GetDescCatVal($wk_idx_div,$wk_cat,"VAL")

                  VAR_CREATE_STR(-1,STRCAT("wk_leg_var_##",STR($wk_leg_var)), $wk_cat, 0,"")
                  VAR_CREATE_STR(-1,STRCAT("wk_leg_val_##",STR($wk_leg_val)), $wk_cat_val, 0,"")
                  VAR_CREATE_STR(-1,STRCAT("wk_leg_val_dsc_##",STR($wk_leg_val)),$wk_desc , 0,"")

                  $wk_pos_arr = $wk_leg_var
               }

               SET_#($wk_idx_div)
               #Stp_letter_leg = NumToAlfa($wk_pos_arr)
            }

            //$alias_scr     = "ScrittaBlu"
            //$AliasQuota    = "QuotaBlu"
            //$AliasQuotaLat = "QuotaLBlu"
            //
            //SET_#($wk_idx_div)
            //$P2 = #Stp_pnt_legenda
            //
            //$testo = NumToAlfa($wk_pos_arr)
            //$point = 4
            //$wk_faccia = "A"
            //$ang_scr = ANG_TOT2($wk_idx_div)
            //if( NOME($wk_idx_div)=="SchienaleFSDivanoSand" )
            //{
            //   $ang_scr = ANG_TOT2($wk_idx_div) +  VAR_VAL($wk_idx_div,"__relative_add_angy")
            //}
            //GOSUB PosizionaScrittaCAD


            $wk_i = $wk_i + 1
         }

         $wk_i = 1
         while ( $wk_i<=$wk_leg_var )
         {
            VAR_VALUESTR_SET(-1,STRCAT("wk_STP_DIS_VAR",STR($wk_i)),NumToAlfa($wk_i))
            VAR_VALUESTR_SET(-1,STRCAT("wk_STP_DIS_VAL",STR($wk_i)),STRCAT($wk_leg_val[$wk_i]," - " ,$wk_leg_val_dsc[$wk_i]))
            $wk_i = $wk_i + 1
         }

         $wk_i = 1
         while ( $wk_i<=$wk_div )
         {
            $wk_idx_div = $wk_div[$wk_i]

            //aggiungo scritta codice
            SET_#($wk_idx_div)
            $P2 = #pnt_scritta

            $alias_scr     = "ScrittaRossa"
            $AliasQuota    = "QuotaRossa"
            $AliasQuotaLat = "QuotaLRossa"

            //Luca 21/12/2021 air e slide
            if( Is_In_StrArray( NOME($wk_idx_div), "Schiena*;Cuscino*", ";") == 1)
            {
               $alias_scr     = "ScrittaBlu"
               $AliasQuota    = "QuotaBlu"
               $AliasQuotaLat = "QuotaLBlu"
            }

            $testo = VAR_VAL_STR($wk_idx_div,"ORD_COD")
            $testo = STRCAT($testo," - ",STR(VAR_VAL($wk_idx_div,"X")),"x",STR(VAR_VAL($wk_idx_div,"Z")))
            //Luca 25/05/2020
            if( VAR_EXIST($wk_idx_div,"Stp_letter_leg")==1 ) { $testo = STRCAT($testo," - ",#Stp_letter_leg) }
            $point = 4
            $wk_faccia = "A"
            $ang_scr = ANG_TOT2($wk_idx_div)
            GOSUB PosizionaScrittaCAD

            COMPONENTI2("$wk_sch",$wk_idx_div,"Schienale*Sand")
            $wk_j = 1
            while ( $wk_j<=$wk_sch )
            {
               $alias_scr     = "ScrittaBlu"
               $AliasQuota    = "QuotaBlu"
               $AliasQuotaLat = "QuotaLBlu"

               $wk_idx_sch = $wk_sch[$wk_j]
               //aggiungo scritta codice
               SET_#($wk_idx_sch)
               $P2 = #pnt_scritta

               $testo = VAR_VAL_STR($wk_idx_sch,"ORD_COD")
               $testo = STRCAT($testo," - ",STR(VAR_VAL($wk_idx_sch,"X")),"x",STR(VAR_VAL($wk_idx_sch,"Z")))
               //Luca 25/05/2020
               if( VAR_EXIST($wk_idx_sch,"Stp_letter_leg")==1 ) { $testo = STRCAT($testo," - ",#Stp_letter_leg) }
               $point = 5
               $wk_faccia = "A"
               $ang_scr = ANG_TOT2($wk_idx_sch)
               if( NOME($wk_idx_sch)=="SchienaleFSDivanoSand" )
               {
                  $ang_scr = ANG_TOT2($wk_idx_sch) +  VAR_VAL($wk_idx_sch,"__relative_add_angy")
               }
               GOSUB PosizionaScrittaCAD
               $wk_j = $wk_j + 1
            }

            $wk_i = $wk_i + 1
         }

         //Luca 13/06/2022
         WITH_ALIAS("$wk_tel","TelaioDivAIR")
         $wk_i = 1
         while ( $wk_i <= $wk_tel )
         {
            VAR_VALUE_SET($wk_tel[$wk_i],"flag_stampa_tratt",1)
            $wk_i = $wk_i + 1
         }

      }

      GOSUB NomeDisegno
      GOSUB StampaLayout

      if( $DIS_TO_GEMO==0 ) { GOSUB CancellaScritteQuote }

      ResetVarStampa("flag_stampa")
      ResetVarStampa("flag_stampa_tratt")

      COMANDO2("M4_SHOW Ambienti Show")
      COMANDO2("SHOW Abilita On")
      COMANDO2("SHOW All")

      GOSUB FineStampaPDF

      FILE_DEL(STRCAT($wk_prefisso_file,$File,"*.emf"))
      $wk_suffisso_PDF = ""

      GOSUB CancellaGlobaliStp

      if( debug==1 ) { COMANDO2(STRCAT("LOGMSG ] StampaProd_Divani FINE")) }
   }

   //Luca 14/10/2019
   //riporto la stampa del XGLASS MATERIA
   PROCEDURA Stampa_XGLASS_Materia
   {
      //per ora gestisco una stampa per ogni singolo preconfigurato materia presente
      //TODO -- gestire assemblati non pcf
      WITH_VAR("$wk_mat_tmp","PCF_MATERIA",0,0,"")

      WITH_ALIAS("$wk_pln_tmp", "MadiaPlenum")
      MergeArray2Array( -1, "wk_pln_tmp", "wk_mat_tmp")

      if( debug==1 ) { COMANDO2(STRCAT("LOGMSG  Stampa_XGLASS_Materia trovati ",STR($wk_mat_tmp), " PCF MATERIA")) }

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

      //filtro solo quelli che hanno almeno un frontale XGLASS
      $wk_mat = 0
      $wk_mat_num = 1
      while ( $wk_mat_num<=$wk_mat_tmp )
      {
         $wk_mat_tmp_att_idx = $wk_mat_tmp[$wk_mat_num]
         if( VAR_VAL_STR($wk_mat_tmp_att_idx, "ATTREZZATO_SU") != "Boiserie_TV" )
         {
            WITH_VAR_LOCAL($wk_mat_tmp_att_idx,"$wk_elements","GEST_MOD",3,0,"")
            $wk_j = 1
            while ( $wk_j<=$wk_elements )
            {
               $wk_idx_component = $wk_elements[$wk_j]
               if( IS_XGLASS($wk_idx_component)==1 )
               {
                  ne = $wk_mat + 1
                  $wk_mat = ne
                  $wk_mat[ne] = $wk_mat_tmp_att_idx

                  $wk_j =  $wk_elements
               }
               $wk_j = $wk_j + 1
            }
         }
         $wk_mat_num = $wk_mat_num + 1
      }

      if( debug==1 ) { COMANDO2(STRCAT("LOGMSG  Stampa_XGLASS_Materia trovati ",STR($wk_mat), " PCF MATERIA CON XGLASS")) }

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

      GOSUB Assegna_VarTecnica_XGLASS

      $VAR_AnteprimaDiStampa = 1
      if( $OnTerminate==1 ) { $VAR_AnteprimaDiStampa = 0 }

      $wk_mat_num = 1
      while( $wk_mat_num <= $wk_mat )
      {
         $wk_idx_mat = $wk_mat[$wk_mat_num]
         $wk_idx_pln = $wk_idx_mat
         $wk_nome_mat = NOME($wk_idx_mat)

         GOSUB InizioStampaPDF
         GOSUB InfoCartiglioGen
         if( $wk_nome_mat == "Madia_Plenum") { GOSUB InfoCartiglioGen_Stampa_XGLASS_Plenum  }
         else                                { GOSUB InfoCartiglioGen_Stampa_XGLASS_Materia }

         $SET_STAMPA      = "0028"
         $wk_suffisso_emf = "_XGMATERIA"
         if( $wk_nome_mat == "Madia_Plenum") { $SET_STAMPA = "0029"  $wk_suffisso_emf = "_XGPLENUM" }
         $wk_idx_riga      = $wk_idx_mat
         GOSUB NomeDisegnoRiga

         GOSUB adatta_dim_quote

         if( $DIS_TO_GEMO==0 )
         {
            $wk_stp_Materia_ConBifacciale = 0
            if( VAR_VAL($wk_idx_mat,"ConBifacciale")==1 ) { $wk_stp_Materia_ConBifacciale = 1 }
            $wk_stp_Plenum_ConBifacciale = $wk_stp_Materia_ConBifacciale

            COMANDO2("M4_SHOW Ambienti Hide")
            COMANDO2("SHOW None")
            COMANDO2("SHOW Abilita Off")

            if( $wk_nome_mat == "Madia_Plenum") { GOSUB SetupLayout_XGLASS_Plenum  }
            else                                { GOSUB SetupLayout_XGLASS_Materia }

            $wk_ang_mat = ANG_TOT2($wk_idx_mat)
            while( $wk_ang_mat<0 )    { $wk_ang_mat = $wk_ang_mat  + 360 }
            while( $wk_ang_mat>360 )  { $wk_ang_mat = $wk_ang_mat  - 360 }

            if( debug==1 ) { COMANDO2(STRCAT("LOGMSG   Stampa_XGLASS_Materia PCF[",STR($wk_mat_num),"] -- idx:",STR($wk_idx_mat), " - " ,VAR_VAL_STR($wk_idx_mat,"DescEdit__"))) }

            //decido la vista
            $wk_vista = ANG_TOT2($wk_idx_mat)

            //iso 1
            cmd = STRCAT("setviewhoops w0 orbit ", STR(45-$wk_vista), " 15")
            VAR_CREATE_STR(-1 , "wk_stp_cmd_rot_iso1", cmd, $MODE_NOSAVE, "")
            //iso 2
            cmd = STRCAT("setviewhoops w0 orbit ", STR(225-$wk_vista), " 15")
            VAR_CREATE_STR(-1 , "wk_stp_cmd_rot_iso2", cmd, $MODE_NOSAVE, "")

            //front
            cmd =    STRCAT("setviewhoops w0 orbit -", STR($wk_vista), " 0")
            VAR_CREATE_STR(-1 , "wk_stp_cmd_rot_front", cmd, $MODE_NOSAVE, "")
            //top
            cmd =    STRCAT("setviewhoops view roll  -", STR($wk_vista))
            VAR_CREATE_STR(-1 , "wk_stp_cmd_rot_top", cmd, $MODE_NOSAVE, "")

            //left
            cmd =    STRCAT("setviewhoops w0 orbit ", STR(90 - $wk_vista), " 0")
            VAR_CREATE_STR(-1 , "wk_stp_cmd_rot_left", cmd, $MODE_NOSAVE, "")
            //right
            cmd =    STRCAT("setviewhoops w0 orbit ", STR(270 - $wk_vista), " 0")
            VAR_CREATE_STR(-1 , "wk_stp_cmd_rot_right", cmd, $MODE_NOSAVE, "")
            //back
            cmd =    STRCAT("setviewhoops w0 orbit ", STR(180 - $wk_vista), " 0")
            VAR_CREATE_STR(-1 , "wk_stp_cmd_rot_back", cmd, $MODE_NOSAVE, "")

            if( $wk_nome_mat == "Madia_Plenum") { GOSUB Sub_Stampa_XGLASS_Plenum  }
            else                                { GOSUB Sub_Stampa_XGLASS_Materia }

            GOSUB NomeDisegno
            GOSUB StampaLayout

            GOSUB CancellaScritteQuote
            GOSUB Stampa_XGLASS_Reset

            COMANDO2("M4_SHOW Ambienti Show")
            COMANDO2("SHOW Abilita On")
            COMANDO2("SHOW All")
         }

         GOSUB FineStampaPDF
         $wk_suffisso_PDF = ""

         GOSUB CancellaGlobaliStp

         $wk_mat_num = $wk_mat_num + 1
      }
   }

   PROCEDURA InfoCartiglioGen_Stampa_XGLASS_Materia
   {
      $wk_STP_DIS_Titolo = "STAMPA XGLASS MATERIA"

      $wk_STP_DIS_LBL_5 = "Operatore:"

      //Codice operatore non sempre disponibile
      //$wk_STP_DIS_5     = VAR_VAL_STR( -1, "CodOperatore")
      $wk_STP_DIS_5     = VAR_VAL_STR(-1,"CodOperatore")
      $wk_STP_DIS_LBL_6 = ""
      $wk_STP_DIS_6     = ""

      $wk_STP_TitoloInfo = "INFORMAZIONI"

      //Codice + descrizione
      $wk_STP_DIS_VAR1 = VAR_VAL_STR($wk_idx_mat,"DescEdit__")

      //finitura
      $wk_STP_DIS_VAR2 = GetDescCatVal($wk_idx_mat,"C028","CAT")
      $wk_STP_DIS_VAL2 = GetDescCatVal($wk_idx_mat,"C028","VAL")
   }

   PROCEDURA Sub_Stampa_XGLASS_Materia
   {
      //per ora recupero tutti i figli del pcf xglass
      //TODO -- gestire assemblati non pcf
      COMPONENTI2("$wk_cmp",$wk_idx_mat,"*")

      $wk_cont_leg = 1

      //assegno
      //flag_stampa_front
      //flag_stampa_left
      //flag_stampa_top
      //flag_stampa_back
      $wk_k = 1
      while ( $wk_k<=$wk_cmp )
      {
         $wk_idx_cmp = $wk_cmp[$wk_k]

         $wk_lato    = ""

         //per prima cosa verifico se XGLASS
         if( IS_XGLASS($wk_idx_cmp)==1 )
         {
            if( NOME($wk_idx_cmp)=="FiancoVetroMateria_Mat" )
            {
               $wk_idx_grafica = $wk_idx_cmp
               if( VAR_VAL($wk_idx_cmp,"Verso")>0 ) { $wk_lato = "right" }
               else                                 { $wk_lato = "left" }
               VAR_CREATE_NUM($wk_idx_grafica,STRCAT("flag_stampa_",$wk_lato),1,0,"")
            }

            if( NOME($wk_idx_cmp)=="TopVetroMateria_Mat" )
            {
               $wk_idx_grafica = $wk_idx_cmp
               $wk_lato    = "top"
               VAR_CREATE_NUM($wk_idx_grafica,STRCAT("flag_stampa_",$wk_lato),1,0,"")
            }

            if( NOME($wk_idx_cmp)=="AntaSingola_Mat"
              | NOME($wk_idx_cmp)=="Cassetto_Mat"
              | NOME($wk_idx_cmp)=="Cestone_Mat" )
            {
               $wk_idx_grafica = $wk_idx_cmp
               WITH_VAR_LOCAL($wk_idx_cmp,"wk_vetro","VetroFrontale",2,0,"")

               $wk_lato = "front"
               i = 1
               while ( i<=wk_vetro  )
               {
                  VAR_CREATE_NUM(wk_vetro[i],STRCAT("flag_stampa_",$wk_lato),1,0,"")
                  i = i + 1
               }
            }

            GOSUB Add_Letter_Stampa_XGLASS_Materia
         }

         $wk_k = $wk_k + 1
      }

      if( $wk_stp_Materia_ConBifacciale==1 )
      {
         $wk_idx_bif = -1
         AGGANCIATI("agg","*",$wk_idx_mat)
         while( agg>0 )
         {
            if( NOME(agg[agg])=="Bifacciale_Mat" ) { $wk_idx_bif = agg[agg] }
            agg = agg - 1
         }
         if( IS_IDX($wk_idx_bif) )
         {
            VAR_CREATE_NUM($wk_idx_bif,"flag_stampa_back",1,0,"")
            $wk_idx_cmp = $wk_idx_bif
            $wk_lato = "back"
            GOSUB Add_Letter_Stampa_XGLASS_Materia
         }
      }
   }

   PROCEDURA Add_Letter_Stampa_XGLASS_Materia
   {
      $wk_vart_xglass =  VAR_VAL_STR($wk_idx_cmp,"XGLASS")
      if( $wk_vart_xglass=="" ) { EXITSUB() }

      //aggiungo dimensioni
      VAR_VALUESTR_SET(-1,STRCAT("wk_STP_LEG_VAR",STR($wk_cont_leg)),$wk_vart_xglass)
      $wk_gest_x = VAR_VAL($wk_idx_cmp,"GEST_X")
      if( $wk_gest_x==0 ) { $wk_gest_x = VAR_VAL($wk_idx_cmp,"X") }
      $wk_gest_y = VAR_VAL($wk_idx_cmp,"GEST_Y")
      if( $wk_gest_y==0 ) { $wk_gest_y = VAR_VAL($wk_idx_cmp,"Y") }

      $wk_gest_z = VAR_VAL($wk_idx_cmp,"GEST_Z")
      if( $wk_gest_z==0 ) { $wk_gest_z = VAR_VAL($wk_idx_cmp,"Z") }

      //tutti i vetri dei frontali spessore 4mm
      if( HAS_ALIAS($wk_idx_cmp,"Frontale")
        | NOME($wk_idx_cmp)=="Bifacciale_Mat") { $wk_gest_z = 4 }

      $wk_str_dim = STRCAT(STR($wk_gest_x),"x",STR($wk_gest_y),"x",STR($wk_gest_z))
      VAR_VALUESTR_SET(-1,STRCAT("wk_STP_LEG_VAL",STR($wk_cont_leg)),$wk_str_dim)
      $wk_cont_leg = $wk_cont_leg + 1

      SET_#($wk_idx_cmp)

      //aggiungo lettera
      $alias_scr = STRCAT("scr_stp_",$wk_lato)
      $P2 = #base_0
      $P2.x = #base_0.x + COSENO(ANG_TOT2($wk_idx_mat))*#X/2 + SENO(ANG_TOT2($wk_idx_mat))*(#Z+10)
      $P2.z = #base_0.z - SENO(ANG_TOT2($wk_idx_mat))*#X/2   + COSENO(ANG_TOT2($wk_idx_mat))*(#Z+10)
      $P2.y = #base_0.y + #Y/2

      if( $wk_lato=="back" )
      {
         $P2.x = #base_0.x - COSENO(ANG_TOT2($wk_idx_mat))*#X/2 - SENO(ANG_TOT2($wk_idx_mat))*(#Z+10)
         $P2.z = #base_0.z + SENO(ANG_TOT2($wk_idx_mat))*#X/2   - COSENO(ANG_TOT2($wk_idx_mat))*(#Z+10)
      }

      if( $wk_lato=="left" )
      {
         $P2.x = #base_0.x + SENO(ANG_TOT2($wk_idx_mat))*#Z/2
         $P2.z = #base_0.z + COSENO(ANG_TOT2($wk_idx_mat))*#Z/2
      }
      if( $wk_lato=="right" )
      {
         $P2.x = #base_3.x + SENO(ANG_TOT2($wk_idx_mat))*#Z/2
         $P2.z = #base_3.z + COSENO(ANG_TOT2($wk_idx_mat))*#Z/2
      }

      if( $wk_lato=="top" )
      {
         $P2.x = #base_0.x + COSENO(ANG_TOT2($wk_idx_mat))*#X/2 + SENO(ANG_TOT2($wk_idx_mat))*#Z/2
         $P2.y = #base_0.y + #Y
         $P2.z = #base_0.z - SENO(ANG_TOT2($wk_idx_mat))*#X/2   + COSENO(ANG_TOT2($wk_idx_mat))*#Z/2
      }

      $Alt_Chr = $Yscr/2     $Lar_Chr = $Xscr/1.5
      $testo = $wk_vart_xglass

      $ang_scr = ANG_TOT2($wk_idx_mat)
      $point = 4
      $wk_faccia = "F"
      if( $wk_lato=="top" )  { $wk_faccia = "A" }
      if( $wk_lato=="left" ) { $wk_faccia = "S" }
      if( $wk_lato=="right") { $wk_faccia = "D" }
      if( $wk_lato=="back")  { $ang_scr = ANG_TOT2($wk_idx_mat) + 180 }
      GOSUB PosizionaScrittaCAD

      //aggiungo finitura
      $Alt_Chr = $Yscr/5     $Lar_Chr = $Xscr/3.5
      $P2.y = #base_0.y + #Y - $Alt_Chr
      if( $wk_lato=="top" )
      {
         $P2.x = #base_0.x + COSENO(ANG_TOT2($wk_idx_mat))*#X/2 + SENO(ANG_TOT2($wk_idx_mat))*($Alt_Chr)
         $P2.y = #base_0.y + #Y
         $P2.z = #base_0.z - SENO(ANG_TOT2($wk_idx_mat))*#X/2   + COSENO(ANG_TOT2($wk_idx_mat))*($Alt_Chr)
      }
      $ang_scr = ANG_TOT2($wk_idx_mat)
      $point = 5
      $wk_faccia = "F"
      if( $wk_lato=="top" )  { $wk_faccia = "A" }
      if( $wk_lato=="left" ) { $wk_faccia = "S" }
      if( $wk_lato=="right") { $wk_faccia = "D" }
      if( $wk_lato=="back")  { $ang_scr = ANG_TOT2($wk_idx_mat) + 180 }

      $testo = GetDescCatVal($wk_idx_cmp,"C028","VAL")
      //DA XGLASS LUCIDO --> LuX
      //DA XGLASS OPACO --> OpX
      if( LEFT($testo,13)=="XGLASS LUCIDO" ) { $testo = STRCAT("LuX ", STRMID(14,100,$testo)) }
      if( LEFT($testo,12)=="XGLASS OPACO" )  { $testo = STRCAT("OpX ", STRMID(13,100,$testo)) }
      GOSUB PosizionaScrittaCAD
   }

   PROCEDURA Stampa_XGLASS_Reset
   {
      wk_var_delme = 15
      wk_var_delme[1]  = "flag_stampa_iso"
      wk_var_delme[2]  = "flag_stampa_1"
      wk_var_delme[3]  = "flag_stampa_2"
      wk_var_delme[4]  = "flag_stampa_trt_1"
      wk_var_delme[5]  = "flag_stampa_trt_2"
      //usate da stampe madie
      wk_var_delme[6]  = "flag_stampa_front"
      wk_var_delme[7]  = "flag_stampa_left"
      wk_var_delme[8]  = "flag_stampa_right"
      wk_var_delme[9]  = "flag_stampa_top"
      wk_var_delme[10] = "flag_stampa_back"
      wk_var_delme[11] = "flag_stampa_trt_front"
      wk_var_delme[12] = "flag_stampa_trt_left"
      wk_var_delme[13] = "flag_stampa_trt_right"
      wk_var_delme[14] = "flag_stampa_trt_top"
      wk_var_delme[15] = "flag_stampa_trt_back"

      j = 1
      while ( j<= wk_var_delme  )
      {
         wk_var_del = wk_var_delme[j]
         WITH_VAR("wk_delme",wk_var_del,2,1,"1")
         h = 1
         while ( h<=wk_delme )
         {
            VAR_VALUE_SET(wk_delme[h],wk_var_del,0)
            h = h + 1
         }

         j = j + 1
      }

      GOSUB CancellaScritteQuote
   }

   PROCEDURA SetupLayout_XGLASS_Materia
   {
      $wk_SP_LINEA_MOBILI       = 40
      $wk_SP_LINEA_MOBILI_TRATT = 15
      $wk_SP_LINEA_SCRITTE      = 1
      $wk_SP_LINEA_QUOTE        = 1

      $wk_STP_DT_IMG = ""
      $wk_STP_DT_IMG2 = ""

      $wk_STP_LegendaTitolo = "Dimensioni"

      $wk_STP_LEG_VAR1  = ""         $wk_STP_LEG_VAL1  = ""
      $wk_STP_LEG_VAR2  = ""         $wk_STP_LEG_VAL2  = ""
      $wk_STP_LEG_VAR3  = ""         $wk_STP_LEG_VAL3  = ""
      $wk_STP_LEG_VAR4  = ""         $wk_STP_LEG_VAL4  = ""
      $wk_STP_LEG_VAR5  = ""         $wk_STP_LEG_VAL5  = ""
      $wk_STP_LEG_VAR6  = ""         $wk_STP_LEG_VAL6  = ""
      $wk_STP_LEG_VAR7  = ""         $wk_STP_LEG_VAL7  = ""
      $wk_STP_LEG_VAR8  = ""         $wk_STP_LEG_VAL8  = ""
      $wk_STP_LEG_VAR9  = ""         $wk_STP_LEG_VAL9  = ""
      $wk_STP_LEG_VAR10 = ""         $wk_STP_LEG_VAL10  = ""
      $wk_STP_LEG_VAR11 = ""         $wk_STP_LEG_VAL11  = ""
      $wk_STP_LEG_VAR12 = ""         $wk_STP_LEG_VAL12  = ""
      $wk_STP_LEG_VAR13 = ""         $wk_STP_LEG_VAL13  = ""
      $wk_STP_LEG_VAR14 = ""         $wk_STP_LEG_VAL14  = ""
      $wk_STP_LEG_VAR15 = ""         $wk_STP_LEG_VAL15  = ""
      $wk_STP_LEG_VAR16 = ""         $wk_STP_LEG_VAL16  = ""

      //$wk_nome_form = "Stampa_Top_V.emf"
      //$wk_nome_layout = "Top_Assieme"

      $wk_STP_DIS_TitoloDisegno  = VAR_VAL_STR($wk_idx_mat,"DescEdit__")
      $wk_STP_DIS_TitoloDisegno2 = ""

      $wk_nome_form = "Stampa_XGLASS_Materia.emf"
      $wk_nome_layout = "Stampa_XGLASS_Materia"

      //ISO
      $wk_stp_iso1_dW = 217    $wk_stp_iso1_dH  = 87
      $wk_stp_iso1_W  = 73     $wk_stp_iso1_H   = 58

      $wk_stp_iso2_dW = 217    $wk_stp_iso2_dH  = 145
      $wk_stp_iso2_W  = 73     $wk_stp_iso2_H   = 58

      ///completo
      //dW = 6
      //dH = 47
      //W  = 210
      //H  = 156

      $wk_stp_left_dW = 5      $wk_stp_left_dH = 151
      $wk_stp_left_W  = 53     $wk_stp_left_H  = 52

      $wk_stp_right_dW = 164   $wk_stp_right_dH  = 151
      $wk_stp_right_W  = 53    $wk_stp_right_H   = 52

      $wk_stp_front_dW = 58    $wk_stp_front_dH = 151
      $wk_stp_front_W  = 106   $wk_stp_front_H  = 52

      $wk_stp_top_dW   = 58    $wk_stp_top_dH   = 99
      $wk_stp_top_W    = 106   $wk_stp_top_H    = 52

      $wk_stp_back_dW  = 58    $wk_stp_back_dH  = 47
      $wk_stp_back_W   = 106   $wk_stp_back_H   = 52

      if( $wk_stp_Materia_ConBifacciale==0 )
      {
         $wk_stp_top_dH   = $wk_stp_top_dH   - $wk_stp_back_H/2
         $wk_stp_front_dH = $wk_stp_front_dH - $wk_stp_back_H/2
         $wk_stp_left_dH  = $wk_stp_left_dH  - $wk_stp_back_H/2
         $wk_stp_right_dH = $wk_stp_right_dH - $wk_stp_back_H/2
      }
   }

   PROCEDURA InfoCartiglioGen_Stampa_XGLASS_Plenum
   {
      $wk_STP_DIS_Titolo = "STAMPA XGLASS PLENUM"

      $wk_STP_DIS_LBL_5 = "Operatore:"

      //Codice operatore non sempre disponibile
      //$wk_STP_DIS_5     = VAR_VAL_STR( -1, "CodOperatore")
      $wk_STP_DIS_5     = VAR_VAL_STR(-1,"CodOperatore")
      $wk_STP_DIS_LBL_6 = ""
      $wk_STP_DIS_6     = ""

      $wk_STP_TitoloInfo = "INFORMAZIONI"

      //Codice + descrizione
      $wk_STP_DIS_VAR1 = VAR_VAL_STR($wk_idx_pln,"DescEdit__")

      //finitura
      $wk_STP_DIS_VAR2 = GetDescCatVal($wk_idx_pln,"C042","CAT")
      $wk_STP_DIS_VAL2 = GetDescCatVal($wk_idx_pln,"C042","VAL")
   }

   PROCEDURA Sub_Stampa_XGLASS_Plenum
   {
      //per ora recupero tutti i figli del pcf xglass
      COMPONENTI2("$wk_cmp",$wk_idx_pln,"*")

      $wk_cont_leg = 1

      //assegno
      //flag_stampa_front
      //flag_stampa_left
      //flag_stampa_top
      //flag_stampa_back
      $wk_k = 1
      while ( $wk_k<=$wk_cmp )
      {
         $wk_idx_cmp = $wk_cmp[$wk_k]

         $wk_lato    = ""

         //per prima cosa verifico se XGLASS
         if( IS_XGLASS($wk_idx_cmp)==1 )
         {
            if( NOME($wk_idx_cmp)=="Fianco_Plenum" )
            {
               $wk_idx_grafica = $wk_idx_cmp
               if( VAR_VAL($wk_idx_cmp,"Verso")>0 ) { $wk_lato = "right" }
               else                                 { $wk_lato = "left" }
               VAR_CREATE_NUM($wk_idx_grafica,STRCAT("flag_stampa_",$wk_lato),1,0,"")
            }

            if( NOME($wk_idx_cmp)=="Top_Vetro_Plenum" )
            {
               $wk_idx_grafica = $wk_idx_cmp
               $wk_lato    = "top"
               VAR_CREATE_NUM($wk_idx_grafica,STRCAT("flag_stampa_",$wk_lato),1,0,"")
            }

            if( NOME($wk_idx_cmp)=="Anta_Plenum" )
            {
               $wk_idx_grafica = $wk_idx_cmp
               $wk_lato = "front"
               VAR_CREATE_NUM($wk_idx_grafica,STRCAT("flag_stampa_",$wk_lato),1,0,"")
            }

            GOSUB Add_Letter_Stampa_XGLASS_Plenum
         }

         $wk_k = $wk_k + 1
      }

      if( $wk_stp_Plenum_ConBifacciale==1 )
      {
         $wk_idx_bif = -1
         AGGANCIATI("agg","*",$wk_idx_pln)
         while( agg>0 )
         {
            if( NOME(agg[agg])=="Bifacciale_Plenum" ) { $wk_idx_bif = agg[agg] }
            agg = agg - 1
         }
         if( IS_IDX($wk_idx_bif) )
         {
            VAR_CREATE_NUM($wk_idx_bif,"flag_stampa_back",1,0,"")
            $wk_idx_cmp = $wk_idx_bif
            $wk_lato = "back"
            GOSUB Add_Letter_Stampa_XGLASS_Plenum
         }
      }
   }

   PROCEDURA Add_Letter_Stampa_XGLASS_Plenum
   {
      $wk_vart_xglass =  VAR_VAL_STR($wk_idx_cmp,"XGLASS")
      if( $wk_vart_xglass=="" ) { EXITSUB() }

      //aggiungo dimensioni
      VAR_VALUESTR_SET(-1,STRCAT("wk_STP_LEG_VAR",STR($wk_cont_leg)),$wk_vart_xglass)
      $wk_gest_x = VAR_VAL($wk_idx_cmp,"GEST_X")
      if( $wk_gest_x==0 ) { $wk_gest_x = VAR_VAL($wk_idx_cmp,"X") }
      $wk_gest_y = VAR_VAL($wk_idx_cmp,"GEST_Y")
      if( $wk_gest_y==0 ) { $wk_gest_y = VAR_VAL($wk_idx_cmp,"Y") }

      $wk_gest_z = VAR_VAL($wk_idx_cmp,"GEST_Z")
      if( $wk_gest_z==0 ) { $wk_gest_z = VAR_VAL($wk_idx_cmp,"Z") }

      //tutti i vetri dei frontali spessore 4mm
      if( HAS_ALIAS($wk_idx_cmp,"Frontale")
        | NOME($wk_idx_cmp)=="Bifacciale_Plenum") { $wk_gest_z = 4 }

      $wk_str_dim = STRCAT(STR($wk_gest_x),"x",STR($wk_gest_y),"x",STR($wk_gest_z))
      VAR_VALUESTR_SET(-1,STRCAT("wk_STP_LEG_VAL",STR($wk_cont_leg)),$wk_str_dim)
      $wk_cont_leg = $wk_cont_leg + 1

      SET_#($wk_idx_cmp)

      //aggiungo lettera
      $alias_scr = STRCAT("scr_stp_",$wk_lato)
      $P2 = #base_0
      $P2.x = #base_0.x + COSENO(ANG_TOT2($wk_idx_pln))*#X/2 + SENO(ANG_TOT2($wk_idx_pln))*(#Z+10)
      $P2.z = #base_0.z - SENO(ANG_TOT2($wk_idx_pln))*#X/2   + COSENO(ANG_TOT2($wk_idx_pln))*(#Z+10)
      $P2.y = #base_0.y + #Y/2

      if( $wk_lato=="back" )
      {
         $P2.x = #base_0.x - COSENO(ANG_TOT2($wk_idx_pln))*#X/2 - SENO(ANG_TOT2($wk_idx_pln))*(#Z+10)
         $P2.z = #base_0.z + SENO(ANG_TOT2($wk_idx_pln))*#X/2   - COSENO(ANG_TOT2($wk_idx_pln))*(#Z+10)
      }

      if( $wk_lato=="left" )
      {
         $P2.x = #base_0.x + SENO(ANG_TOT2($wk_idx_pln))*#Z/2
         $P2.z = #base_0.z + COSENO(ANG_TOT2($wk_idx_pln))*#Z/2
      }
      if( $wk_lato=="right" )
      {
         $P2.x = #base_3.x + SENO(ANG_TOT2($wk_idx_pln))*#Z/2
         $P2.z = #base_3.z + COSENO(ANG_TOT2($wk_idx_pln))*#Z/2
      }

      if( $wk_lato=="top" )
      {
         $P2.x = #base_0.x + COSENO(ANG_TOT2($wk_idx_pln))*#X/2 + SENO(ANG_TOT2($wk_idx_pln))*#Z/2
         $P2.y = #base_0.y + #Y
         $P2.z = #base_0.z - SENO(ANG_TOT2($wk_idx_pln))*#X/2   + COSENO(ANG_TOT2($wk_idx_pln))*#Z/2
      }

      $Alt_Chr = $Yscr/2     $Lar_Chr = $Xscr/1.5
      $testo = $wk_vart_xglass

      $ang_scr = ANG_TOT2($wk_idx_pln)
      $point = 4
      $wk_faccia = "F"
      if( $wk_lato=="top" )  { $wk_faccia = "A" }
      if( $wk_lato=="left" ) { $wk_faccia = "S" }
      if( $wk_lato=="right") { $wk_faccia = "D" }
      if( $wk_lato=="back")  { $ang_scr = ANG_TOT2($wk_idx_pln) + 180 }
      GOSUB PosizionaScrittaCAD

      //aggiungo finitura
      $Alt_Chr = $Yscr/5     $Lar_Chr = $Xscr/3.5
      $P2.y = #base_0.y + #Y - $Alt_Chr
      if( $wk_lato=="top" )
      {
         $P2.x = #base_0.x + COSENO(ANG_TOT2($wk_idx_pln))*#X/2 + SENO(ANG_TOT2($wk_idx_pln))*($Alt_Chr)
         $P2.y = #base_0.y + #Y
         $P2.z = #base_0.z - SENO(ANG_TOT2($wk_idx_pln))*#X/2   + COSENO(ANG_TOT2($wk_idx_pln))*($Alt_Chr)
      }
      $ang_scr = ANG_TOT2($wk_idx_pln)
      $point = 5
      $wk_faccia = "F"
      if( $wk_lato=="top" )  { $wk_faccia = "A" }
      if( $wk_lato=="left" ) { $wk_faccia = "S" }
      if( $wk_lato=="right") { $wk_faccia = "D" }
      if( $wk_lato=="back")  { $ang_scr = ANG_TOT2($wk_idx_pln) + 180 }

      $testo = GetDescCatVal($wk_idx_cmp,"C028","VAL")
      if( $testo == "" ) { $testo = GetDescCatVal($wk_idx_cmp,"C042","VAL") }
      if( $testo == "" ) { $testo = GetDescCatVal($wk_idx_cmp,"C001","VAL") }
      //DA XGLASS LUCIDO --> LuX
      //DA XGLASS OPACO --> OpX
      if( LEFT($testo,13)=="XGLASS LUCIDO" ) { $testo = STRCAT("LuX ", STRMID(14,100,$testo)) }
      if( LEFT($testo,12)=="XGLASS OPACO" )  { $testo = STRCAT("OpX ", STRMID(13,100,$testo)) }
      GOSUB PosizionaScrittaCAD
   }

   PROCEDURA SetupLayout_XGLASS_Plenum
   {
      $wk_SP_LINEA_MOBILI       = 40
      $wk_SP_LINEA_MOBILI_TRATT = 15
      $wk_SP_LINEA_SCRITTE      = 1
      $wk_SP_LINEA_QUOTE        = 1

      $wk_STP_DT_IMG = ""
      $wk_STP_DT_IMG2 = ""

      $wk_STP_LegendaTitolo = "Dimensioni"

      $wk_STP_LEG_VAR1  = ""         $wk_STP_LEG_VAL1  = ""
      $wk_STP_LEG_VAR2  = ""         $wk_STP_LEG_VAL2  = ""
      $wk_STP_LEG_VAR3  = ""         $wk_STP_LEG_VAL3  = ""
      $wk_STP_LEG_VAR4  = ""         $wk_STP_LEG_VAL4  = ""
      $wk_STP_LEG_VAR5  = ""         $wk_STP_LEG_VAL5  = ""
      $wk_STP_LEG_VAR6  = ""         $wk_STP_LEG_VAL6  = ""
      $wk_STP_LEG_VAR7  = ""         $wk_STP_LEG_VAL7  = ""
      $wk_STP_LEG_VAR8  = ""         $wk_STP_LEG_VAL8  = ""
      $wk_STP_LEG_VAR9  = ""         $wk_STP_LEG_VAL9  = ""
      $wk_STP_LEG_VAR10 = ""         $wk_STP_LEG_VAL10  = ""
      $wk_STP_LEG_VAR11 = ""         $wk_STP_LEG_VAL11  = ""
      $wk_STP_LEG_VAR12 = ""         $wk_STP_LEG_VAL12  = ""
      $wk_STP_LEG_VAR13 = ""         $wk_STP_LEG_VAL13  = ""
      $wk_STP_LEG_VAR14 = ""         $wk_STP_LEG_VAL14  = ""
      $wk_STP_LEG_VAR15 = ""         $wk_STP_LEG_VAL15  = ""
      $wk_STP_LEG_VAR16 = ""         $wk_STP_LEG_VAL16  = ""

      //$wk_nome_form = "Stampa_Top_V.emf"
      //$wk_nome_layout = "Top_Assieme"

      $wk_STP_DIS_TitoloDisegno  = VAR_VAL_STR($wk_idx_pln,"DescEdit__")
      $wk_STP_DIS_TitoloDisegno2 = ""

      $wk_nome_form = "Stampa_XGLASS_Materia.emf"
      $wk_nome_layout = "Stampa_XGLASS_Materia"

      //ISO
      $wk_stp_iso1_dW = 217    $wk_stp_iso1_dH  = 87
      $wk_stp_iso1_W  = 73     $wk_stp_iso1_H   = 58

      $wk_stp_iso2_dW = 217    $wk_stp_iso2_dH  = 145
      $wk_stp_iso2_W  = 73     $wk_stp_iso2_H   = 58

      ///completo
      //dW = 6
      //dH = 47
      //W  = 210
      //H  = 156

      $wk_stp_left_dW = 5      $wk_stp_left_dH = 151
      $wk_stp_left_W  = 53     $wk_stp_left_H  = 52

      $wk_stp_right_dW = 164   $wk_stp_right_dH  = 151
      $wk_stp_right_W  = 53    $wk_stp_right_H   = 52

      $wk_stp_front_dW = 58    $wk_stp_front_dH = 151
      $wk_stp_front_W  = 106   $wk_stp_front_H  = 52

      $wk_stp_top_dW   = 58    $wk_stp_top_dH   = 99
      $wk_stp_top_W    = 106   $wk_stp_top_H    = 52

      $wk_stp_back_dW  = 58    $wk_stp_back_dH  = 47
      $wk_stp_back_W   = 106   $wk_stp_back_H   = 52

      if( $wk_stp_Plenum_ConBifacciale==0 )
      {
         $wk_stp_top_dH   = $wk_stp_top_dH   - $wk_stp_back_H/2
         $wk_stp_front_dH = $wk_stp_front_dH - $wk_stp_back_H/2
         $wk_stp_left_dH  = $wk_stp_left_dH  - $wk_stp_back_H/2
         $wk_stp_right_dH = $wk_stp_right_dH - $wk_stp_back_H/2
      }
   }

   PROCEDURA StampaProd_BinarioSco_Arm20
   {
      WITH_ALIAS("$wk_bin","Stp_BinarioSco")
      if( $wk_bin==0 )  { EXITSUB() }

      $wk_i = 1
      while ( $wk_i<=$wk_bin )
      {
         $wk_idx_bin = $wk_bin[$wk_i]

         GOSUB InizioStampaPDF

         GOSUB InfoCartiglioGen

         $wk_STP_DIS_Titolo = "STAMPA BINARIO SCORREVOLE"

         $wk_STP_DIS_LBL_5 = "Operatore:"
         $wk_STP_DIS_5     = VAR_VAL_STR( -1, "CodOperatore")
         $wk_STP_DIS_LBL_6 = ""
         $wk_STP_DIS_6     = ""

         $wk_STP_TitoloInfo = "INFORMAZIONI"

         //Codice + descrizione
         $wk_STP_DIS_VAR1 = VAR_VAL_STR($wk_idx_bin,"DescEdit__")

         $VAR_AnteprimaDiStampa = 1
         if( $OnTerminate==1 ) { $VAR_AnteprimaDiStampa = 0 }

         SET_#($wk_idx_bin)
         //Luca 04/11/2020 mantis 23741: Stampe tecniche: modifica nome
         //if( VAR_EXIST($wk_idx_bin,"IDX_GEST") ) { $POSTNOMESTAMPA = STRCAT("-BINSCO-",STR(#IDX_GEST)) }
         //else                                    { $POSTNOMESTAMPA = STRCAT("-BINSCO-(",STR($wk_idx_bin),")") }
         if( VAR_EXIST($wk_idx_bin,"IDX_GEST") ) { $POSTNOMESTAMPA = STRCAT("-BINSCO_",STR(#IDX_GEST)) }
         else                                    { $POSTNOMESTAMPA = STRCAT("-BINSCO_(",STR($wk_idx_bin),")") }

         $wk_suffisso_emf = "_BINSCO"
         VAR_CREATE_NUM(-1,STRCAT("wk_pagina_",$wk_suffisso_emf),0,0,"")

         //Luca 27/01/2022
         $wk_idx_riga      = $wk_idx_bin
         $SET_STAMPA       = "0005"

         GOSUB adatta_dim_quote

         COMANDO2("M4_SHOW Ambienti Hide")
         COMANDO2("SHOW None")
         COMANDO2("SHOW Abilita Off")

         GOSUB StampaProd_BinSco_Sub

         GOSUB FineStampaPDF
         $wk_suffisso_PDF = ""

         COMANDO2("M4_SHOW Ambienti Show")
         COMANDO2("SHOW Abilita On")
         COMANDO2("SHOW All")

         GOSUB CancellaGlobaliStp

         $wk_i = $wk_i + 1
      }
   }

   PROCEDURA StampaProd_BinSco_Sub
   {
      $wk_SP_LINEA_MOBILI       = $TSTP_SP_LINEA_MOBILI
      $wk_SP_LINEA_MOBILI_TRATT = $TSTP_SP_LINEA_TRATTEGGIO
      $wk_SP_LINEA_SCRITTE      = 1
      $wk_SP_LINEA_QUOTE        = 1

      $wk_FORM_dW =  5
      $wk_FORM_dH =  40
      $wk_FORM_W  =  285
      $wk_FORM_H  =  164

      $wk_nome_form = "Stampa_Top2_O.emf"
      $wk_nome_layout = "Binario_Scorrevole"

      $wk_STP_DIS_TitoloDisegno = "BINARIO SUPERIORE"

      $wk_ang_bin = ANG_TOT2($wk_idx_bin)
      $wk_view_ang = STR(-1*$wk_ang_bin)

      //attivo visualizzazione dei fermi
      VAR_VALUE_SET($wk_idx_bin ,"VediFermi",1)
      COMANDO2(STRCAT("RICALCOLA_UNA ",STR($wk_idx_bin)," //attiva vedi fermi"))

      //attivo flag_di stampa sul binario e su tutte le ante interessate
      VAR_VALUE_SET($wk_idx_bin ,"flag_stampa",1)
      $wk_fro = 0
      if( VAR_EXIST($wk_idx_bin,"idx_cnear") )
      {
         SET_#($wk_idx_bin)
         if( IS_IDX(#idx_cnear) )
         {
            BOX_MODE(0)
            NEAR_GLOBALE("$wk_fro",#idx_cnear,5,0,"AntaScorrevole_Arm20")
            $wk_j = 1
            while ( $wk_j<=$wk_fro )
            {
               VAR_VALUE_SET($wk_fro[$wk_j] ,"flag_stampa",1)
               $wk_j = $wk_j + 1
            }
         }
      }

      if( $DIS_TO_GEMO==0 )  { GOSUB StampaProd_BinSco_Quota }

      GOSUB NomeDisegno
      GOSUB StampaLayout

      if( $DIS_TO_GEMO==0 ) { GOSUB CancellaScritteQuote }

      $wk_j = 1
      while ( $wk_j<=$wk_fro )
      {
         VAR_VALUE_SET($wk_fro[$wk_j] ,"flag_stampa",0)
         $wk_j = $wk_j + 1
      }
      VAR_VALUE_SET($wk_idx_bin ,"flag_stampa",0)

      VAR_VALUE_SET($wk_idx_bin ,"VediFermi",0)
      COMANDO2(STRCAT("RICALCOLA_UNA ",STR($wk_idx_bin)," //attiva vedi fermi" ))
   }

   PROCEDURA StampaProd_BinSco_Quota
   {
      $alias_scr     = "STP_SCR_TOP"
      $AliasQuota    = "STP_QUO_TOP"
      $AliasQuotaLat = "STP_QUO_TOP"
      $wk_faccia = "A"

      $HChar   = $Yscr/3         $LChar   = $Xscr/3
      $Alt_Chr = $Yscr/3         $Lar_Chr = $Xscr/3

      $ang_scr = 0
      $wk_scosta_lquota = 20
      $wk_ang_scr = ANG_TOT2($wk_idx_bin)

      $wk_len_bin_sup = 9999

      SET_#($wk_idx_bin)

      $dist = -450
      $P1 = #base_1
      $P2 = #base_2
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $wk_len_bin_sup = $d
      //Luca 09/10/20 riporto modifiche inviate da LAGO
      //$testo = STRCAT("LUNGHEZZA TOTALE C/TAPPI ", STR(FLOOR(($d+0.05)*10)/10))
      $testo = STRCAT("LUNGHEZZA TOTALE C/TAPPI ", STR(FLOOR(($d+0.05)*10)/10),"mm")
      GOSUB PosizionaQuota

      $dist = -350
      $P1 = #base_1_bin
      $P2 = #base_2_bin
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      //Luca 09/10/20 riporto modifiche inviate da LAGO
      //$testo = STRCAT("LUNGHEZZA BINARIO SUP. ", STR(FLOOR(($d+0.05)*10)/10))
      $testo = STRCAT("LUNGHEZZA BINARIO SUP. ", STR(FLOOR(($d+0.05)*10)/10),"mm")
      GOSUB PosizionaQuota

      //quoto dimensione totale binario (sopra)

      //quoto i fermi 2 quote per ogni anta
      // ante esterne quoto sopra, ante interne quoto sotto
      if( #BIN_Ammo1_DimX>0 )
      {
         $dist = 50
         $P1 = #base_0
         $P2 = $P1
         $P2.x = $P1.x + COSENO($wk_ang_scr)*(#BIN_Ammo1_OffX)
         $P2.z = $P1.z -   SENO($wk_ang_scr)*(#BIN_Ammo1_OffX)
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $dist = 50
         $P1 = #base_0
         $P2 = $P1
         $P2.x = $P1.x + COSENO($wk_ang_scr)*(#BIN_Ammo1_OffX + #BIN_Ammo1_DimX)
         $P2.z = $P1.z -   SENO($wk_ang_scr)*(#BIN_Ammo1_OffX + #BIN_Ammo1_DimX)
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
      }

      if( #BIN_Ammo2_DimX>0 )
      {
         //se composizione a 3 ante
         if( #BIN_Ammo3_DimX>0 )
         {
            $dist = 200
            $P1 = #base_0
            $P2 = $P1
            $P2.x = $P1.x + COSENO($wk_ang_scr)*(#BIN_Ammo2_OffX)
            $P2.z = $P1.z -   SENO($wk_ang_scr)*(#BIN_Ammo2_OffX)
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuota

            if( #BIN_Ammo2_Ver=="DX" )
            {
               $dist = 200
               $P1 = #base_0
               $P1.x = $P1.x + COSENO($wk_ang_scr)*(#BIN_Ammo2_OffX + #BIN_Ammo2_DimX)
               $P1.z = $P1.z -   SENO($wk_ang_scr)*(#BIN_Ammo2_OffX + #BIN_Ammo2_DimX)
               $P2 = #base_3
               $P2.y = $P1.y
               $d = DISTANZA($P1,$P2)
               $testo = STR(FLOOR(($d+0.05)*10)/10)
               GOSUB PosizionaQuota
            }
            else
            {
               $dist = 200
               $P1 = #base_0
               $P2 = $P1
               $P2.x = $P1.x + COSENO($wk_ang_scr)*(#BIN_Ammo2_OffX + #BIN_Ammo2_DimX)
               $P2.z = $P1.z -   SENO($wk_ang_scr)*(#BIN_Ammo2_OffX + #BIN_Ammo2_DimX)
               $d = DISTANZA($P1,$P2)
               $testo = STR(FLOOR(($d+0.05)*10)/10)
               GOSUB PosizionaQuota
            }
         }
         else
         {
            $dist = 120
            $P1 = #base_0
            $P1.x = $P1.x + COSENO($wk_ang_scr)*(#BIN_Ammo2_OffX)
            $P1.z = $P1.z -   SENO($wk_ang_scr)*(#BIN_Ammo2_OffX)
            $P2 = #base_3
            $P2.y = $P1.y
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuota

            $dist = 120
            $P1 = #base_0
            $P1.x = $P1.x + COSENO($wk_ang_scr)*(#BIN_Ammo2_OffX + #BIN_Ammo2_DimX)
            $P1.z = $P1.z -   SENO($wk_ang_scr)*(#BIN_Ammo2_OffX + #BIN_Ammo2_DimX)
            $P2 = #base_3
            $P2.y = $P1.y
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuota
         }
      }

      if( #BIN_Ammo3_DimX>0 )
      {
         $dist = 120
         $P1 = #base_0
         $P1.x = $P1.x + COSENO($wk_ang_scr)*(#BIN_Ammo3_OffX)
         $P1.z = $P1.z -   SENO($wk_ang_scr)*(#BIN_Ammo3_OffX)
         $P2 = #base_3
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $dist = 120
         $P1 = #base_0
         $P1.x = $P1.x + COSENO($wk_ang_scr)*(#BIN_Ammo3_OffX + #BIN_Ammo3_DimX)
         $P1.z = $P1.z -   SENO($wk_ang_scr)*(#BIN_Ammo3_OffX + #BIN_Ammo3_DimX)
         $P2 = #base_3
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
      }


      //verso e tipologia anta
      $wk_j = 1
      while ( $wk_j<=$wk_fro )
      {
         $wk_idx_fro = $wk_fro[$wk_j]
         SET_#($wk_idx_fro)

         $P2 = #pnt_stp_centro
         $testo = "ANTA INTERNA"
         if( VAR_VAL($wk_idx_fro,"InternoEsterno")==1 ) { $testo = "ANTA ESTERNA" }
         $point = 5
         $wk_faccia = "A"
         $ang_scr = $wk_ang_scr
         GOSUB PosizionaScrittaCAD

         $P2 = #pnt_stp_centro
         $P2.x = #pnt_stp_centro.x +   SENO($wk_ang_scr)*($Alt_Chr*1.5)
         $P2.z = #pnt_stp_centro.z + COSENO($wk_ang_scr)*($Alt_Chr*1.5)
         $testo = "<--- APERTURA SX"
         if( VAR_VAL($wk_idx_fro,"Verso")==1 ) { $testo = "APERTURA DX --->" }
         $point = 5
         $wk_faccia = "A"
         $ang_scr = $wk_ang_scr
         GOSUB PosizionaScrittaCAD

         $wk_j = $wk_j + 1
      }


      //Luca 28/07/2020 aggiunta lunghezza binario inferiore
      SET_#($wk_idx_bin)

      $dist = 50
      $P2.x = #base_0.x + COSENO($wk_ang_scr)*(#X/2)   +   SENO($wk_ang_scr)*800
      $P2.y = #base_0.y
      $P2.z = #base_0.z -   SENO($wk_ang_scr)*(#X/2)   + COSENO($wk_ang_scr)*800

      $testo = STRCAT("LUNGHEZZA BINARIO INFERIORE ",STR($wk_len_bin_sup-1),"mm")
      $point = 5
      $wk_faccia = "A"
      $ang_scr = $wk_ang_scr
      GOSUB PosizionaScrittaCAD
   }

   //*****************************************************
   //{ FIANCHI FINITURA CUCINA
   //*****************************************************
   PROCEDURA StampaProd_FianchiFinitura_Cuc
   {
      WITH_ALIAS("$wk_fia_tmp","StpTrafileFiancoFin")
      if( $wk_fia_tmp==0 )  { EXITSUB() }

      $Cuc_FFLavorazioniShow = 1
      COMANDO2("RIGENERA")
      COMANDO2("RIGENERA")

      //filtro solo i fianchi delle basi
      $wk_fia = 0
      $wk_i = 1
      while ( $wk_i<=$wk_fia_tmp )
      {
         $SET_STAMPA = "PROD"

         $wk_idx_fia = $wk_fia_tmp[$wk_i]

         //if( VAR_VAL_STR($wk_idx_fia,"FF_Tipologia") != "COLONNA" )
         //{
         //   $wk_ne = $wk_fia + 1
         //   $wk_fia = $wk_ne
         //   $wk_fia[$wk_ne] = $wk_idx_fia
         //}

         $wk_stampa_fianco = 0

         if( VAR_VAL_STR($wk_idx_fia,"FF_Tipologia") != "COLONNA" ) { $wk_stampa_fianco = 1 }

         //Luca 11/11/2020 NON STAMPO SE NON SELEZIONATO
         //23760: Stampa tecnica ffinitura: indicazione no trafile e stampa elementi esclusi
         if( VAR_VAL_STR(-1,"TST_OrdineSostituzione") == "1" )
         {
            if( VAR_VAL_STR($wk_idx_fia,"ORD_SOST") != "1" ) { $wk_stampa_fianco = 0 }
         }

         //Luca 25/01/2022
         //questa procedura di stampa resta solo per i fianchi in vetro (per ora resta tutto come prima)
         if( $StampaProd_FianchiFinC_Rev >= 1 )
         {
            if( VAR_VAL_STR($wk_idx_fia,"FF_Materiale") == "WILDWOOD" ) { $wk_stampa_fianco = 0 }
         }

         //No se ho una stampa allegata manualmente
         if( VAR_VAL( $wk_idx_fia, "T_ALLEGATI") - VAR_VAL( $wk_idx_fia, "ALLEGATI") > 0) { $wk_stampa_fianco = 0 }

         if( $wk_stampa_fianco )
         {
            $wk_ne = $wk_fia + 1
            $wk_fia = $wk_ne
            $wk_fia[$wk_ne] = $wk_idx_fia
         }

         $wk_i = $wk_i + 1
      }

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

      //trafile/magneti
      GOSUB StampaProd_FianchiFinitura_Cuc_TF

      //Luca 25/01/2022
      //questa procedura di stampa resta solo per i fianchi in vetro (per ora resta tutto come prima)
      if( $StampaProd_FianchiFinC_Rev >= 1 ) { EXITSUB() }

      //lamiere per fianchi in WW
      GOSUB StampaProd_FianchiFinitura_Cuc_Lamiere

      $SET_STAMPA = ""
   }

   PROCEDURA InfoCartiglio_FianchiFinitura_Cuc
   {
      $wk_STP_DIS_Titolo = "STAMPA TRAFILE/MAGNETI FIANCHI"
      $wk_STP_DIS_LBL_5 = "Operatore:"
      $wk_STP_DIS_5     = VAR_VAL_STR( -1, "CodOperatore")
      $wk_STP_TitoloInfo = "INFORMAZIONI"
      $wk_STP_DIS_VAR1 = VAR_VAL_STR($wk_idx_fia,"DescEdit__")
      //finitura
      $wk_STP_DIS_VAR2 = GetDescCatVal($wk_idx_fia,"C018","CAT")
      $wk_STP_DIS_VAL2 = GetDescCatVal($wk_idx_fia,"C018","VAL")

      $wk_SP_LINEA_MOBILI       = $TSTP_SP_LINEA_MOBILI
      $wk_SP_LINEA_MOBILI       = 75
      $wk_SP_LINEA_MOBILI_TRATT = $TSTP_SP_LINEA_TRATTEGGIO
      $wk_SP_LINEA_SCRITTE      = 1
      $wk_SP_LINEA_QUOTE        = 1

      $wk_FORM_dW =  20
      $wk_FORM_dH =  55
      $wk_FORM_W  =  255
      $wk_FORM_H  =  145

      $wk_nome_form = "Stampa_Top2_O.emf"
      $wk_nome_layout = "FianchiFinitura_CUC"

      $wk_STP_DIS_TitoloDisegno  = "VISTA LATO INTERNO"
      $wk_STP_DIS_TitoloDisegno2 = STRCAT("FIANCO ",VAR_VAL_STR($wk_idx_fia,"FF_PosizioneSD_Ref"))

      //aggiungo dimensioni effettive fianco
      $wk_STP_DIS_TitoloDisegno2 = STRCAT($wk_STP_DIS_TitoloDisegno2," ( ",STR(VAR_VAL($wk_idx_fia,"Z")) , "x", STR(VAR_VAL($wk_idx_fia,"Yr")), " )")
      //Simone 26/07/2022
      if( NOME($wk_idx_fia) == "FasciaFinitura_Fusion" )
      {
         $wk_STP_DIS_TitoloDisegno2 = ""
         $wk_STP_DIS_TitoloDisegno2 = STRCAT("FIANCO ",VAR_VAL_STR($wk_idx_fia,"FF_PosizioneSD_Ref"))
         $wk_STP_DIS_TitoloDisegno2 = STRCAT($wk_STP_DIS_TitoloDisegno2," ( ",STR(VAR_VAL($wk_idx_fia,"Z")) , "x", STR(VAR_VAL($wk_idx_fia,"Y")), " )")
      }
      //Luca 11/11/2020 mantis 23760: Stampa tecnica ffinitura: indicazione no trafile e stampa elementi esclusi
      $wk_STP_DIS_VAR7 = ""
      if( VAR_VAL($wk_idx_fia,"FF_Disattiva") == 1 )
      {
         $wk_STP_DIS_VAR7 = "ATTENZIONE: TRAFILE DISATTIVATE MANUALMENTE"
      }
   }

   PROCEDURA StampaProd_FianchiFinitura_Cuc_TF
   {
      COMANDO2("M4_SHOW Ambienti Hide")
      COMANDO2("SHOW None")
      COMANDO2("SHOW Abilita Off")

      GOSUB InizioStampaPDF
      GOSUB InfoCartiglioGen

      $POSTNOMESTAMPA = "-TRAFILE_FIANCO"
      $wk_suffisso_emf = "_TRAFILE_FIANCO"
      VAR_CREATE_NUM(-1,STRCAT("wk_pagina_",$wk_suffisso_emf),0,0,"")

      $VAR_AnteprimaDiStampa = 1
      if( $OnTerminate==1 ) { $VAR_AnteprimaDiStampa = 0 }

      $wk_i = 1
      while ( $wk_i<=$wk_fia )
      {
         $wk_idx_fia = $wk_fia[$wk_i]

         GOSUB InfoCartiglio_FianchiFinitura_Cuc

         $wk_ang_fia = ANG_TOT_NOR($wk_idx_fia)
         $wk_ang_rot = -90
         $wk_verso   = "SX"

         if( VAR_VAL_STR($wk_idx_fia,"FF_PosizioneSD_Ref")=="DX" )
         {
            $wk_verso   = "DX"
            $wk_ang_rot = 90
         }

         $wk_view_roll = STRCAT( STR(-1*$wk_ang_fia) ," 0" )
         $wk_view_roll_lato = STRCAT( STR($wk_ang_rot) ," 0" )

         $wk_idx_lam1 = -1
         $wk_idx_lam2 = -1

         VAR_VALUE_SET($wk_idx_fia ,"flag_stampa",1)

         if( $DIS_TO_GEMO==0 )  { GOSUB StampaProd_FianchiFinitura_Cuc_TF_Quota }

         GOSUB NomeDisegno
         GOSUB StampaLayout

         if( $DIS_TO_GEMO==0 ) { GOSUB CancellaScritteQuote }

         //VAR_VALUE_SET($wk_idx_fia ,"flag_stampa",0)
         //if( IS_IDX($wk_idx_lam1) )  { VAR_VALUE_SET($wk_idx_lam1 ,"flag_stampa_tratt",0) }
         //if( IS_IDX($wk_idx_lam2) )  { VAR_VALUE_SET($wk_idx_lam2 ,"flag_stampa_tratt",0) }

         ResetVarStampa("flag_stampa")
         ResetVarStampa("flag_stampa_tratt")

         $wk_i = $wk_i + 1
      }

      GOSUB FineStampaPDF
      $wk_suffisso_PDF = ""

      //Luca 16/12/2019
      FILE_DEL(STRCAT($wk_prefisso_file,$File, "*TRAFILE_FIANCO*.emf"))

      GOSUB CancellaGlobaliStp

      COMANDO2("M4_SHOW Ambienti Show")
      COMANDO2("SHOW Abilita On")
      COMANDO2("SHOW All")
   }

   PROCEDURA StampaProd_FianchiFinitura_Cuc_TF_Quota
   {
      $alias_scr     = "ScrittaBlu"
      $AliasQuota    = "QuotaBlu"
      $AliasQuotaLat = "QuotaLBlu"

      $wk_faccia     = "F"

      //$HChar   = $Yscr/4         $LChar   = $Xscr/4
      //$Alt_Chr = $Yscr/4         $Lar_Chr = $Xscr/4

      //$HChar   = $Yscr/6         $LChar   = $Xscr/6
      //$Alt_Chr = $Yscr/6         $Lar_Chr = $Xscr/6

      $HChar   = 15         $LChar   = 10
      $Alt_Chr = 15         $Lar_Chr = 10

      $wk_ang_quo = $wk_ang_fia + 90
      if( $wk_verso=="DX" )
      {
         $wk_ang_quo = $wk_ang_fia - 90
      }

      SET_#($wk_idx_fia)

      $wk_base_0 = #stp_base_0      $wk_alto_0 = #stp_alto_0
      $wk_base_1 = #stp_base_1      $wk_alto_1 = #stp_alto_1
      $wk_base_2 = #stp_base_2      $wk_alto_2 = #stp_alto_2
      $wk_base_3 = #stp_base_3      $wk_alto_3 = #stp_alto_3

      $wk_idx_grp1 = #FF_idx_grp1
      $wk_idx_grp2 = #FF_idx_grp2

      //$dist = 80
      $dist = 70
      $ang_scr    = 0
      $ang_quoSCH = 0
      $wk_stile   = 0

      //************************
      //quota larghezza sopra
      //************************
      $P1 = $wk_alto_1
      $P2 = $wk_alto_0
      if( $wk_verso=="DX" )
      {
         $P1 = $wk_alto_3
         $P2 = $wk_alto_2
      }
      $P1.y = $P1.y + 10
      $P2.y = $P2.y + 10

      $d = DISTANZA($P1,$P2)
      //$testo = STR(FLOOR($d+0.5))
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuotaSchienale

      //************************
      //quota altezza a dx
      $ang_scr    = 0
      $ang_quoSCH = $wk_ang_quo
      $wk_stile   = 0
      //************************
      $wk_offq = 10

      // Per revisione 3 aumento la misura
      // per farci stare un'altra fila di quote
      if( VAR_VAL($wk_idx_fia, "REV") >= 3 )
      {
         // se sono su una base doppia aumento la distanza
         // della quota per farci stare le quote singole
         // delle trafile interne
         if( VAR_VAL($wk_idx_fia, "FF_ScoccheInZ") > 0 )   { $dist = 140 }
      }

      $P2 = $wk_base_0
      $P1 = $wk_alto_0
      if( $wk_verso=="DX" )
      {
         $P2 = $wk_base_2
         $P1 = $wk_alto_2
      }
      $P1.x =  $P1.x + COSENO($wk_ang_quo)*$wk_offq
      $P1.z =  $P1.z -   SENO($wk_ang_quo)*$wk_offq
      $P2.x =  $P2.x + COSENO($wk_ang_quo)*$wk_offq
      $P2.z =  $P2.z -   SENO($wk_ang_quo)*$wk_offq

      $d = DISTANZA($P1,$P2)
      //$testo = STR(FLOOR($d+0.05))
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuotaSchienale

      //************************
      //quota trafile / magneti
      //************************
      $wk_tot_gruppo = 1
      if( VAR_VAL( $wk_idx_fia, "FF_ProfBase_Bif") > 0) { $wk_tot_gruppo = 2 }

      //quoto trafile
      if( #FF_Materiale=="VETRO"
        | #FF_Materiale=="LAMINATO")
      {
         $wk_idx_gruppo = $wk_idx_grp1
         $wk_nr_gruppo  = 1

         GOSUB StampaProd_FianchiFinitura_Cuc_TF_Quota_Trafile_R1

         if( $wk_tot_gruppo == 2)
         {
            $wk_idx_gruppo = $wk_idx_grp2
            $wk_nr_gruppo  = 2

            //gruppo 2 è ruotato di 180
            $wk_verso_bak = $wk_verso
            if( $wk_nr_gruppo == 2)
            {
               if( $wk_verso=="SX" )  { $wk_verso = "DX" }
               else                   { $wk_verso = "SX" }
            }

            //GOSUB StampaProd_FianchiFinitura_Cuc_TF_Quota_Trafile
            GOSUB StampaProd_FianchiFinitura_Cuc_TF_Quota_Trafile_R1

            $wk_verso = $wk_verso_bak
         }
      }
      //quoto magneti
      else
      {
         if( VAR_VAL($wk_idx_fia, "REV") < 3 )
         {
            $wk_idx_gruppo = $wk_idx_grp1
            $wk_nr_gruppo  = 1

            GOSUB StampaProd_FianchiFinitura_Cuc_TF_Quota_Magneti

            if( $wk_tot_gruppo==2 )
            {
               $wk_idx_gruppo = $wk_idx_grp2
               $wk_nr_gruppo  = 2

               //gruppo 2 è ruotato di 180
               $wk_verso_bak = $wk_verso
               if( $wk_nr_gruppo==2 )
               {
                  if( $wk_verso=="SX" )  { $wk_verso = "DX" }
                  else                   { $wk_verso = "SX" }
               }

               GOSUB StampaProd_FianchiFinitura_Cuc_TF_Quota_Magneti

               $wk_verso = $wk_verso_bak
            }
         }
         else
         {
            // WIP per REV >= 3
            GOSUB StampaProd_FianchiFinitura_Cuc_TF_Quota_MagnetiR3
         }
      }
   }

   PROCEDURA StampaProd_FianchiFinitura_Cuc_TF_Quota_Trafile
   {
      $alias_scr     = "ScrittaRossa"
      $AliasQuota    = "QuotaRossa"
      $AliasQuotaLat = "QuotaLRossa"

      //quoto in altezza
      SET_#($wk_idx_gruppo)

      //Luca 04/09/2020 mantis 23272: Fianchi di finitura: stampa anche se non presenti
      if( #FF_NumeroTrafile==0 ) { EXITSUB() }

      //*************************************
      //QUOTA ALTEZZE  - CENTRO TRAfILA
      //*************************************
      $wk_offy_1 = #OffY_TraB
      $wk_offy_2 = 0
      $wk_offy_3 = 0

      //Luca 06/05/2021
      if( #FF_NumeroTrafile == 1 )
      {
         if( #FF_PosizioneABCI == "A" ) { $wk_offy_1 = #Yr - #OffY_TraA }
      }

      if( #FF_NumeroTrafile>1 ) { $wk_offy_3 = #Yr - #OffY_TraA }
      if( #FF_NumeroTrafile>2 ) { $wk_offy_2 = #OffY_TraC }

      $wk_quota_y = 1
      $wk_quota_y[1] = $wk_offy_1

      if( $wk_offy_2>0 )
      {
         $wk_ne = $wk_quota_y + 1
         $wk_quota_y = $wk_ne
         $wk_quota_y[$wk_ne] = $wk_offy_2
      }

      if( $wk_offy_3>0 )
      {
         $wk_ne = $wk_quota_y + 1
         $wk_quota_y = $wk_ne
         $wk_quota_y[$wk_ne] = $wk_offy_3
      }

      $wk_ne = $wk_quota_y + 1
      $wk_quota_y = $wk_ne
      $wk_quota_y[$wk_ne] = #Yr

      $wk_b0y = $wk_base_0.y

      //*************************************
      //QUOTA ALTEZZE  - CENTRO TRAfILA
      //*************************************
      $dist = 60
      $wk_offq = 10
      if( $wk_tot_gruppo==2 )
      {
         if( $wk_verso=="DX" )
         {
            $wk_offq = 0
            $dist = 10
         }
      }

      $ang_scr    = 180
      $ang_quoSCH = $wk_ang_quo
      $wk_stile   = 0
      $P1 = #FF_Stp_B1
      if( $wk_verso=="DX" ) { $P1 = #FF_Stp_B0 }
      $P1.x =  $P1.x - COSENO($wk_ang_quo)*$wk_offq
      $P1.z =  $P1.z +   SENO($wk_ang_quo)*$wk_offq
      $P2 = $P1
      $P2.y = $P1.y + $wk_offy_1
      $d = DISTANZA($P1,$P2)
      $testo = STR($d)
      GOSUB PosizionaQuotaSchienale

      $wk_j = 2
      while ( $wk_j<=$wk_quota_y )
      {
         $P1 = $P2
         $ang_scr    = 180
         $ang_quoSCH = $wk_ang_quo
         $wk_stile   = 0
         $P2 = $P1
         $P2.y = $wk_b0y + $wk_quota_y[$wk_j]
         $d = DISTANZA($P1,$P2)
         $testo = STR($d)
         GOSUB PosizionaQuotaSchienale

         $wk_j = $wk_j + 1
      }

      //*************************************
      //QUOTA ALTEZZE  - SOPRA/SOTTO TRAfILA
      //*************************************
      $dist = 30
      $wk_offq = 100
      if( $wk_tot_gruppo==2 )
      {
         if( $wk_verso=="DX" )
         {
            $wk_offq = 40
            $dist = 10
         }
      }

      $ang_scr    = 180
      $ang_quoSCH = $wk_ang_quo
      $wk_stile   = 0
      $P1 = #FF_Stp_B1
      if( $wk_verso=="DX" ) { $P1 = #FF_Stp_B0 }

      $P1.x =  $P1.x - COSENO($wk_ang_quo)*$wk_offq
      $P1.z =  $P1.z +   SENO($wk_ang_quo)*$wk_offq

      $P2 = $P1
      $P2.y = $P1.y + $wk_offy_1 - #Y_Tra/2
      $d = DISTANZA($P1,$P2)
      $testo = STR($d)
      GOSUB PosizionaQuotaSchienale

      $wk_stile   = 0
      $P1 = $P2
      $P2.y = $P2.y + #Y_Tra
      $d = DISTANZA($P1,$P2)
      $testo = STR($d)
      GOSUB PosizionaQuotaSchienale

      $wk_j = 2
      while ( $wk_j<=$wk_quota_y )
      {
         if( $wk_j==$wk_quota_y )
         {
            $P1 = $P2
            $ang_scr    = 180
            $ang_quoSCH = $wk_ang_quo
            $wk_stile   = 0
            $P2 = $P1
            $P2.y = $wk_b0y + $wk_quota_y[$wk_j]
            $d = DISTANZA($P1,$P2)
            $testo = STR($d)
            GOSUB PosizionaQuotaSchienale
         }
         else
         {
            $P1 = $P2
            $ang_scr    = 180
            $ang_quoSCH = $wk_ang_quo
            $wk_stile   = 0
            $P2 = $P1
            $P2.y = $wk_b0y + $wk_quota_y[$wk_j] - #Y_Tra/2
            $d = DISTANZA($P1,$P2)
            $testo = STR($d)
            GOSUB PosizionaQuotaSchienale

            $P1 = $P2
            $ang_scr    = 180
            $ang_quoSCH = $wk_ang_quo
            $wk_stile   = 0
            $P2 = $P1
            $P2.y = $wk_b0y + $wk_quota_y[$wk_j] + #Y_Tra/2
            $d = DISTANZA($P1,$P2)
            $testo = STR($d)
            GOSUB PosizionaQuotaSchienale
         }

         $wk_j = $wk_j + 1
      }

      //------------------------------------
      //QUOTA LARGHEZZA E DISTANZA DAL FRONTE
      //------------------------------------

      $dist = 10
      $ang_scr    = 0
      if( $wk_nr_gruppo==2 ) { $ang_scr  = 180 }
      $ang_quoSCH = 0
      $wk_stile   = 0

      $P1 = #FF_Stp_B1
      $P2 = #FF_Stp_Tra1_B1
      if( $wk_verso=="DX" )
      {
         $P1 = #FF_Stp_Tra1_B3
         $P2 = #FF_Stp_Tra1_B2
      }
      $P1.y = $wk_b0y + #OffY_TraB + #Y_Tra
      $P2.y = $wk_b0y + #OffY_TraB + #Y_Tra
      $d = DISTANZA($P1,$P2)
      //$testo = STR(FLOOR($d+0.5))
      $testo = STR(FLOOR(($d+0.05)*10)/10)

      GOSUB PosizionaQuotaSchienale

      $dist = 10
      $ang_scr    = 0
      if( $wk_nr_gruppo==2 ) { $ang_scr  = 180 }
      $ang_quoSCH = 0
      $wk_stile   = 0

      $P1 = #FF_Stp_Tra1_B1
      $P2 = #FF_Stp_Tra1_B0
      if( $wk_verso=="DX" )
      {
         $P1 = #FF_Stp_Tra1_B2
         $P2 = #FF_Stp_B2
      }
      $P1.y = $wk_b0y + #OffY_TraB + #Y_Tra
      $P2.y = $wk_b0y + #OffY_TraB + #Y_Tra
      $d = DISTANZA($P1,$P2)
      //$testo = STR(FLOOR($d+0.5))
      $testo = STR(FLOOR(($d+0.05)*10)/10)

      GOSUB PosizionaQuotaSchienale

      //TRAFILA SUPERIORE
      if( #FF_NumeroTrafile>1 )
      {
         $dist = 10
         $ang_scr    = 0
         if( $wk_nr_gruppo==2 ) { $ang_scr  = 180 }
         $ang_quoSCH = 0
         $wk_stile   = 0

         $P1 = #FF_Stp_B1
         $P2 = #FF_Stp_Tra2_B1
         if( $wk_verso=="DX" )
         {
            $P1 = #FF_Stp_Tra2_B3
            $P2 = #FF_Stp_Tra2_B2
         }
         $P1.y = $wk_b0y + #Yr - #OffY_TraA + #Y_Tra
         $P2.y = $wk_b0y + #Yr - #OffY_TraA + #Y_Tra

         $d = DISTANZA($P1,$P2)
         //$testo = STR(FLOOR($d+0.5))
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuotaSchienale

         $dist = 10
         $ang_scr    = 0
         if( $wk_nr_gruppo==2 ) { $ang_scr  = 180 }
         $ang_quoSCH = 0
         $wk_stile   = 0

         $P1 = #FF_Stp_Tra2_B1
         $P2 = #FF_Stp_Tra2_B0
         if( $wk_verso=="DX" )
         {
            $P1 = #FF_Stp_Tra2_B2
            $P2 = #FF_Stp_B2
         }
         $P1.y = $wk_b0y + #Yr - #OffY_TraA + #Y_Tra
         $P2.y = $wk_b0y + #Yr - #OffY_TraA + #Y_Tra

         $d = DISTANZA($P1,$P2)
         //$testo = STR(FLOOR($d+0.5))
         $testo = STR(FLOOR(($d+0.05)*10)/10)

         GOSUB PosizionaQuotaSchienale
      }

      if( #FF_NumeroTrafile>2 )
      {
         $dist = 10
         $ang_scr    = 0
         if( $wk_nr_gruppo==2 ) { $ang_scr  = 180 }
         $ang_quoSCH = 0
         $wk_stile   = 0

         $P1 = #FF_Stp_B1
         $P2 = #FF_Stp_Tra3_B1
         if( $wk_verso=="DX" )
         {
            $P1 = #FF_Stp_Tra3_B3
            $P2 = #FF_Stp_Tra3_B2
         }
         $P1.y = $wk_b0y + #OffY_TraC + #Y_Tra
         $P2.y = $wk_b0y + #OffY_TraC + #Y_Tra
         $d = DISTANZA($P1,$P2)
         //$testo = STR(FLOOR($d+0.5))
         $testo = STR(FLOOR(($d+0.05)*10)/10)

         GOSUB PosizionaQuotaSchienale

         $dist = 10
         $ang_scr    = 0
         if( $wk_nr_gruppo==2 ) { $ang_scr  = 180 }
         $ang_quoSCH = 0
         $wk_stile   = 0

         $P1 = #FF_Stp_Tra3_B1
         $P2 = #FF_Stp_Tra3_B0
         if( $wk_verso=="DX" )
         {
            $P1 = #FF_Stp_Tra3_B2
            $P2 = #FF_Stp_B2
         }
         $P1.y = $wk_b0y + #OffY_TraC + #Y_Tra
         $P2.y = $wk_b0y + #OffY_TraC + #Y_Tra
         $d = DISTANZA($P1,$P2)
         //$testo = STR(FLOOR($d+0.5))
         $testo = STR(FLOOR(($d+0.05)*10)/10)

         GOSUB PosizionaQuotaSchienale
      }
   }

   //Riscrivo procedura, utilizzo posizionamento reale delle trafile, non gli offset del gruppo lavorazioni
   PROCEDURA StampaProd_FianchiFinitura_Cuc_TF_Quota_Trafile_R1
   {
      if( IS_IDX($wk_idx_gruppo) == 0) { EXITSUB() }

      $alias_scr     = "ScrittaRossa"
      $AliasQuota    = "QuotaRossa"
      $AliasQuotaLat = "QuotaLRossa"

      // 0 - Array trafile
      COMPONENTI2( "$wk_trafile", $wk_idx_gruppo, "FFTrafila")
      if( $wk_trafile <= 0 ) { EXITSUB() }
      r = ArraySortVarNum( -1, "wk_trafile", "base0y_abs")

      SET_#($wk_idx_gruppo)
      $wk_ff_stp_yr = #Yr
      $wk_ff_stp_b0 = #FF_Stp_B0
      $wk_ff_stp_b1 = #FF_Stp_B1

      // 1 - Altezza
      // 1.1 - Array altezze da quotare, includo anche estremi fianco
      $wk_quota_y_centro  = 1  $wk_quota_y_centro_##1 = $wk_ff_stp_b0.y
      $wk_quota_y_esterno = 1  $wk_quota_y_centro_##1 = $wk_ff_stp_b0.y

      $wk_trafila_num = 1
      while( $wk_trafila_num <= $wk_trafile )
      {
         $wk_trafila_att = $wk_trafile[$wk_trafila_num]

         $wk_trafila_att_b0_y = VAR_VAL( $wk_trafila_att, "base_0.y")
         $wk_trafila_att_a0_y = VAR_VAL( $wk_trafila_att, "alto_0.y")
         $wk_trafila_att_m0_y = $wk_trafila_att_b0_y + ($wk_trafila_att_a0_y - $wk_trafila_att_b0_y)/2

         AddItem2Array( -1, "wk_quota_y_esterno", $wk_trafila_att_b0_y, "")
         AddItem2Array( -1, "wk_quota_y_esterno", $wk_trafila_att_a0_y, "")
         AddItem2Array( -1, "wk_quota_y_centro",  $wk_trafila_att_m0_y, "")

         $wk_trafila_num = $wk_trafila_num + 1
      }

      AddItem2Array( -1, "wk_quota_y_esterno", $wk_ff_stp_b0.y + $wk_ff_stp_yr, "")
      AddItem2Array( -1, "wk_quota_y_centro",  $wk_ff_stp_b0.y + $wk_ff_stp_yr, "")

      // 1.2 - Quote centrali
      // 1.2.1 - Punto di partenza
      $P1 = $wk_ff_stp_b1
      if( $wk_verso=="DX" ) { $P1 = $wk_ff_stp_b0 }

      // 1.2.1.1 - Scosto punto di partenza
      $dist    = 60
      $wk_offq = 10
      if( $wk_verso == "DX"
        & $wk_tot_gruppo == 2 )
      {
         $dist    = 10
         $wk_offq = 0
      }

      $P1.x =  $P1.x - COSENO($wk_ang_quo)*$wk_offq
      $P1.z =  $P1.z +   SENO($wk_ang_quo)*$wk_offq

      // 1.2.2 - Quoto
      $wk_quota_y_centro_num = 2
      while( $wk_quota_y_centro_num <= $wk_quota_y_centro )
      {
         $wk_quota_y_centro_att = $wk_quota_y_centro[$wk_quota_y_centro_num]

         $P2 = $P1
         $P2.y = $wk_quota_y_centro_att

         $ang_scr    = 180
         $ang_quoSCH = $wk_ang_quo
         $wk_stile   = 0
         $testo      = STR( $P2.y - $P1.y)
         GOSUB PosizionaQuotaSchienale

         $P1 = $P2

         $wk_quota_y_centro_num = $wk_quota_y_centro_num + 1
      }

      // 1.3 - Quote esterne
      // 1.3.1 - Punto di partenza
      $P1 = $wk_ff_stp_b1
      if( $wk_verso=="DX" ) { $P1 = $wk_ff_stp_b0 }

      // 1.3.1.1 - Scosto punto di partenza
      $dist    = 30
      $wk_offq = 100
      if( $wk_verso == "DX"
        & $wk_tot_gruppo == 2 )
      {
         $dist    = 10
         $wk_offq = 40
      }

      $P1.x =  $P1.x - COSENO($wk_ang_quo)*$wk_offq
      $P1.z =  $P1.z +   SENO($wk_ang_quo)*$wk_offq

      // 1.3.2 - Quoto
      $wk_quota_y_esterno_num = 2
      while( $wk_quota_y_esterno_num <= $wk_quota_y_esterno )
      {
         $wk_quota_y_esterno_att = $wk_quota_y_esterno[$wk_quota_y_esterno_num]

         $P2 = $P1
         $P2.y = $wk_quota_y_esterno_att

         $ang_scr    = 180
         $ang_quoSCH = $wk_ang_quo
         $wk_stile   = 0
         $testo      = STR( $P2.y - $P1.y)
         GOSUB PosizionaQuotaSchienale

         $P1 = $P2

         $wk_quota_y_esterno_num = $wk_quota_y_esterno_num + 1
      }

      // 2 - Larghezze
      $dist = 10

      $wk_trafila_num = 1
      while( $wk_trafila_num <= $wk_trafile )
      {
         $wk_trafila_att = $wk_trafile[$wk_trafila_num]

         SET_#($wk_trafila_att)

         $P1 = $wk_ff_stp_b1
         $P2 = #alto_1
         if( $wk_verso == "DX" ) { $P1 = #alto_0 }
         $P2.y = $P2.y + $dist

         $P1.y = $P2.y

         $ang_scr    = 0
         $ang_quoSCH = 0
         $wk_stile   = 0
         $testo      = STR( Punti_Distanza_Idx( $P1, $P2, $wk_idx_gruppo, "zx", 0.1))
         GOSUB PosizionaQuotaSchienale

         $P1 = $P2
         $P2 = #alto_0
         if( $wk_verso == "DX" ) { $P2 = $wk_ff_stp_b1 }

         $P2.y = $P1.y

         $ang_scr    = 0
         $ang_quoSCH = 0
         $wk_stile   = 0
         $testo      = STR( Punti_Distanza_Idx( $P1, $P2, $wk_idx_gruppo, "zx", 0.1))
         GOSUB PosizionaQuotaSchienale

         $wk_trafila_num = $wk_trafila_num + 1
      }
   }

   PROCEDURA StampaProd_FianchiFinitura_Cuc_TF_Quota_Magneti
   {
      $alias_scr     = "ScrittaRossa"
      $AliasQuota    = "QuotaRossa"
      $AliasQuotaLat = "QuotaLRossa"

      //quoto in altezza
      SET_#($wk_idx_gruppo)

      //Luca 04/09/2020 mantis 23272: Fianchi di finitura: stampa anche se non presenti
      if( #FF_NumeroTrafile==0 ) { EXITSUB() }

      if( $wk_nr_gruppo==1 )
      {
         $wk_idx_lam1 = #FF_idx_lamiera
         VAR_VALUE_SET($wk_idx_lam1 ,"flag_stampa_tratt",1)
         $wk_idx_lam = $wk_idx_lam1
      }
      if( $wk_nr_gruppo==2 )
      {
         $wk_idx_lam2 = #FF_idx_lamiera
         VAR_VALUE_SET($wk_idx_lam2 ,"flag_stampa_tratt",1)

         $wk_idx_lam = $wk_idx_lam2
      }

      //------------------------------------
      //QUOTA ALTEZZE
      //------------------------------------
      $wk_offy_1 = #OffY_TraB
      $wk_offy_2 = 0
      $wk_offy_3 = 0

      if( #FF_NumeroTrafile>1 ) { $wk_offy_3 = #Yr - #OffY_TraA }
      if( #FF_NumeroTrafile>2 ) { $wk_offy_2 = #OffY_TraC }

      $wk_quota_y = 1
      $wk_quota_y[1] = $wk_offy_1

      if( $wk_offy_2>0 )
      {
         $wk_ne = $wk_quota_y + 1
         $wk_quota_y = $wk_ne
         $wk_quota_y[$wk_ne] = $wk_offy_2
      }

      if( $wk_offy_3>0 )
      {
         $wk_ne = $wk_quota_y + 1
         $wk_quota_y = $wk_ne
         $wk_quota_y[$wk_ne] = $wk_offy_3
      }

      $wk_b0y = $wk_base_0.y

      //*************************************
      //QUOTA ALTEZZE  - CENTRO TRAfILA
      //*************************************
      $dist = 60
      $wk_offq = 10
      if( $wk_tot_gruppo==2 )
      {
         if( $wk_verso=="DX" )
         {
            $wk_offq = 0
            $dist = 10
         }
      }

      $ang_scr    = 180
      $ang_quoSCH = $wk_ang_quo

      $wk_stile   = 0
      $P1 = #FF_Stp_B1
      if( $wk_verso=="DX" ) { $P1 = #FF_Stp_B0 }
      $P1.x =  $P1.x - COSENO($wk_ang_quo)*$wk_offq
      $P1.z =  $P1.z +   SENO($wk_ang_quo)*$wk_offq

      $P2 = $P1
      $P2.y = $P1.y + $wk_offy_1 - #Y_Tra/2
      $d = DISTANZA($P1,$P2)
      $testo = STR($d)
      GOSUB PosizionaQuotaSchienale

      $wk_stile   = 0
      $P1 = $P2
      $P2.y = $P1.y + #Y_Tra
      $d = DISTANZA($P1,$P2)
      $testo = STR($d)
      GOSUB PosizionaQuotaSchienale

      $wk_j = 2
      while ( $wk_j<=$wk_quota_y )
      {
         $P1 = $P2
         $wk_stile   = 0
         $P2 = $P1
         $P2.y = $wk_b0y + $wk_quota_y[$wk_j]  - #Y_Tra/2
         $d = DISTANZA($P1,$P2)
         $testo = STR($d)
         GOSUB PosizionaQuotaSchienale

         $wk_stile   = 0
         $P1 = $P2
         $P2.y = $P1.y + #Y_Tra
         $d = DISTANZA($P1,$P2)
         $testo = STR($d)
         GOSUB PosizionaQuotaSchienale


         $wk_j = $wk_j + 1
      }

      $P1 = $P2
      $wk_stile   = 0
      $P2 = #FF_Stp_B1
      if( $wk_verso=="DX" ) { $P2 = #FF_Stp_B0 }
      $P2.x =  $P2.x - COSENO($wk_ang_quo)*$wk_offq
      $P2.z =  $P2.z +   SENO($wk_ang_quo)*$wk_offq

      $P2.y = $wk_b0y + #Yr
      $d = DISTANZA($P1,$P2)
      $testo = STR($d)
      GOSUB PosizionaQuotaSchienale

      //------------------------------------
      //QUOTA LARGHEZZA E DISTANZA DAL FRONTE
      //------------------------------------

      $wk_b0y = $wk_b0y - 10

      //$dist = -80
      $dist = -60
      $ang_scr    = 0
      if( $wk_nr_gruppo==2 ) { $ang_scr  = 180 }
      $ang_quoSCH = 0

      $wk_stile   = 0
      $P1 = #FF_Stp_B2
      $P2 = #FF_Stp_Tra1_B2
      if( $wk_verso=="DX" )
      {
         $P1 = #FF_Stp_B0
         $P2 = #FF_Stp_Tra1_B0
      }

      $P1.y = $wk_b0y
      $P2.y = $wk_b0y
      $wk_prima_quota = 1
      if( $wk_tot_gruppo==2 & $wk_verso=="DX" ) { $wk_prima_quota = 0 }

      if( $wk_prima_quota==1 )
      {
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR($d+0.5))
         GOSUB PosizionaQuotaSchienale
      }

      $wk_stile = 0
      $P1 = $P2
      if( $wk_verso=="DX" )
      {
         $P2.x = $P1.x + COSENO($wk_ang_quo)*(#Z_ForoWW)
         $P2.z = $P1.z -   SENO($wk_ang_quo)*(#Z_ForoWW)
      }
      else
      {
         $P2.x = $P1.x + COSENO($wk_ang_quo)*(#Z_ForoWW)
         $P2.z = $P1.z -   SENO($wk_ang_quo)*(#Z_ForoWW)
      }
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))
      GOSUB PosizionaQuotaSchienale


      $wk_stile   = 0
      $P1 = $P2
      if( $wk_verso=="DX" )
      {
         $P2 = #FF_Stp_Tra1_B1
         $P2.x = $P2.x - COSENO($wk_ang_quo)*(#Z_ForoWW)
         $P2.z = $P2.z +   SENO($wk_ang_quo)*(#Z_ForoWW)
      }
      else
      {
         $P2 = #FF_Stp_Tra1_B3
         $P2.x = $P2.x - COSENO($wk_ang_quo)*(#Z_ForoWW)
         $P2.z = $P2.z +   SENO($wk_ang_quo)*(#Z_ForoWW)
      }
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))
      GOSUB PosizionaQuotaSchienale

      $wk_stile   = 0
      $P1 = $P2
      if( $wk_verso=="DX" )   { $P2 = #FF_Stp_Tra1_B1 }
      else                    { $P2 = #FF_Stp_Tra1_B3 }
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))
      GOSUB PosizionaQuotaSchienale

      $wk_stile   = 0
      $P1 = $P2
      if( $wk_verso=="DX" ) { $P2 = #FF_Stp_B1 }
      else                  { $P2 = #FF_Stp_B3 }
      $P2.y = $P1.y

      $wk_ultima_quota = 1
      if( $wk_tot_gruppo==2 & $wk_verso=="SX" ) { $wk_ultima_quota = 0 }

      if( $wk_ultima_quota==1 )
      {
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR($d+0.5))
         GOSUB PosizionaQuotaSchienale
      }

      if( #Z_TraSup != #Z_TraInf )
      {
         $dist = 10
         $ang_scr    = 0
         if( $wk_nr_gruppo==2 ) { $ang_scr  = 180 }
         $ang_quoSCH = 0

         $wk_stile   = 0
         $P1 = #FF_Stp_B2
         $P2 = #FF_Stp_Tra2_B2
         if( $wk_verso=="DX" )
         {
            //$P1 = #FF_Stp_B0
            //$P2 = #FF_Stp_Tra2_B0
            $P2 = #FF_Stp_B2
            $P1 = #FF_Stp_Tra2_B2
         }

         $P1.y = #FF_Stp_Tra2_B0.y + #Y_Tra
         $P2.y = #FF_Stp_Tra2_B0.y + #Y_Tra

         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR($d+0.5))
         GOSUB PosizionaQuotaSchienale
      }
   }

   PROCEDURA StampaProd_FianchiFinitura_Cuc_TF_Quota_MagnetiR3
   {

//TODO      DISPLAY2(STRCAT("StampaProd_FianchiFinitura_Cuc_TF_Quota_MagnetiR3"
//TODO                    , "\ni = ", STR(i)
//TODO                    , "\nFiancoFinitura idx = ", STR($wk_idx_fia)
//TODO                    , "\n$wk_idx_lamiera = ", STR($wk_idx_lamiera)
//TODO                    , "\n$wk_idx_gruppo = ", STR($wk_idx_gruppo)
//TODO                    ))

      $alias_scr     = "ScrittaRossa"
      $AliasQuota    = "QuotaRossa"
      $AliasQuotaLat = "QuotaLRossa"

      $wk_idx_lam1 = -1

      // mi salvo i punti notevoli del fianco
      SET_#($wk_idx_fia)
      base_0_fia = #base_0   alto_0_fia = #alto_0
      base_1_fia = #base_1   alto_1_fia = #alto_1
      base_2_fia = #base_2   alto_2_fia = #alto_2
      base_3_fia = #base_3   alto_3_fia = #alto_3

      FF_ScoccheInY = #FF_ScoccheInY
      FF_ScoccheInZ = #FF_ScoccheInZ

      // scocche in altezza
      if( FF_ScoccheInY > 0 )
      {
         // mi prendo il primo gruppo lavorazioni (posizionato) dedicato solo alla lamiera totale
         // dal quale recupero l'idx della lamiera stessa

         // prendo l'idx con var_val, tanto sono sicuramente > 0 perchè componente
         FF_idx_grp1 = #FF_idx_grp1

         if( IS_IDX(FF_idx_grp1) == 1 )
         {
            // prendo l'idx con var_val, tanto sono sicuramente > 0 perchè componente
            $wk_idx_lam1 = VAR_VAL(FF_idx_grp1, "FF_idx_lamiera")

            // lamiera tratteggiata
            VAR_VALUE_SET($wk_idx_lam1, "flag_stampa_tratt", 1)
         }
      }

      //------------------------------------
      //QUOTA ALTEZZE
      //------------------------------------
      // le scocche sono già ordinate in altezza
      // parto dalla base_0 del fianco

      COMPONENTI2("grp_lav_tmp", $wk_idx_fia, "FFGruppoLavorazioni")
      SORT_POINT(base_0_fia, "grp_lav_tmp", "base_0")

      //DISPLAY("grp_lav_tmp=", grp_lav_tmp)

      // -----------------------------------------------
      // QUOTE VERTICALI SE SU BASI SINGOLE/UNICHE
      // -----------------------------------------------

      $ang_scr    = 180
      $ang_quoSCH = $wk_ang_quo

      if( $wk_verso == "DX" )   { $dist =  60  $wk_offq = -10 }
      else                      { $dist = -60  $wk_offq =  10 }

      // default partenza della prima quota alla base del fianco
      // poi le altre si svilupperanno nella verticale
      $wk_p2_prec.x = base_0_fia.x + COSENO($wk_ang_quo) * $wk_offq
      $wk_p2_prec.z = base_0_fia.z -   SENO($wk_ang_quo) * $wk_offq
      $wk_p2_prec.y = base_0_fia.y + $Cuc_Aria_Ant_Y

      i = 1
      while( i <= grp_lav_tmp )
      {
         idx_grp_tmp = grp_lav_tmp[i]

         SET_#(idx_grp_tmp)
         base_0_grp_tmp = #base_0

         // se sono un gruppo attrezzato in Y e non sono sulla base doppia
         if( #FF_GruppoLavAttrRefY > 0 & #FF_SonoSuBaseDoppia == 0 )
         {
            COMPONENTI2("trafile_tmp", idx_grp_tmp, "FFTrafila")
            SORT_POINT(base_0_grp_tmp, "trafile_tmp", "base_0")

            j = 1
            while( j <= trafile_tmp )
            {
               idx_tra_tmp = trafile_tmp[j]

               // mi setto sull'idx della scocca
               SET_#(idx_tra_tmp)

               // aggiungo la quota che arriva dal basso
               // devo passare solo  $P2.y
               // // imposto lo stile = 0 per posizionare diversamente la scritta su questa quota
               $wk_stile = 0
               $P2.y = #base_0.y
               GOSUB PosizionaQuotaSchienaleSubY

               // aggiungo la quota in altezza della trafila
               // devo passare solo  $P2.y
               $P2.y = #alto_0.y
               GOSUB PosizionaQuotaSchienaleSubY

               j = j + 1
            }
         }

         i = i + 1
      }

      // aggiungo la quota finale in altezza
      // // imposto lo stile = 0 per posizionare diversamente la scritta su questa quota
      $wk_stile = 0
      $P2.y = alto_0_fia.y - $Cuc_Aria_Ant_Y
      GOSUB PosizionaQuotaSchienaleSubY

      // -----------------------------------------------
      // QUOTE VERTICALI SE SU BASI DOPPIE
      // -----------------------------------------------
      // default partenza della prima quota alla base del fianco
      // poi le altre si svilupperanno nella verticale

      if( VAR_VAL($wk_idx_fia, "FF_ScoccheInZ") > 0 )
      {
         $ang_scr    = 0
         $ang_quoSCH = $wk_ang_quo

         if( $wk_verso == "DX" )   { $dist = -70   $wk_offq =  10 }
         else                      { $dist =  70   $wk_offq = -10 }

         $wk_p2_prec.x = base_1_fia.x + COSENO($wk_ang_quo) * $wk_offq
         $wk_p2_prec.z = base_1_fia.z -   SENO($wk_ang_quo) * $wk_offq
         $wk_p2_prec.y = base_1_fia.y + $Cuc_Aria_Ant_Y

         i = 1
         while( i <= grp_lav_tmp )
         {
            idx_grp_tmp = grp_lav_tmp[i]

            SET_#(idx_grp_tmp)
            base_0_grp_tmp = #base_1

            // se sono un gruppo attrezzato in Y e non sono sulla base doppia
            if( #FF_GruppoLavAttrRefZ > 0 & #FF_SonoSuBaseDoppia == 1 )
            {
               COMPONENTI2("trafile_tmp", idx_grp_tmp, "FFTrafila")
               SORT_POINT(base_0_grp_tmp, "trafile_tmp", "base_1")

               j = 1
               while( j <= trafile_tmp )
               {
                  idx_tra_tmp = trafile_tmp[j]

                  // mi setto sull'idx della scocca
                  SET_#(idx_tra_tmp)

                  // aggiungo la quota che arriva dal basso
                  // devo passare solo  $P2.y
                  $wk_stile = 0
                  $P2.y = #base_0.y
                  GOSUB PosizionaQuotaSchienaleSubY

                  // aggiungo la quota in altezza della trafila
                  // devo passare solo  $P2.y
                  $wk_stile = 1
                  $P2.y = #alto_0.y
                  GOSUB PosizionaQuotaSchienaleSubY

                  j = j + 1
               }
            }

            i = i + 1
         }

         // aggiungo la quota finale in altezza
         // // imposto lo stile = 0 per posizionare diversamente la scritta su questa quota
         $wk_stile = 0
         $P2.y = alto_0_fia.y - $Cuc_Aria_Ant_Y
         GOSUB PosizionaQuotaSchienaleSubY
      }

      //-----------------------------------------------------------------
      //QUOTE ORIZZONTALI IN BASSO PER PROFONDITA FIANCO/LAVORAZIONI
      //-----------------------------------------------------------------
      $dist = - 60
      $wk_ang_scr = 0

      if( $wk_verso == "DX" )   { $wk_ang_quoSCH = $wk_ang_quo + 90 }
      else                      { $wk_ang_quoSCH = $wk_ang_quo - 90 }

      $ang_quoSCH = 0

      // QUOTA INIZIALE A PARTIRE DALLA BASE_0 DEL FIANCO
      // default prima quota alla base 0 del fianco
      $wk_p2_prec.x = base_0_fia.x
      $wk_p2_prec.y = base_0_fia.y
      $wk_p2_prec.z = base_0_fia.z


      COMPONENTI2("grp_lav_tmp", $wk_idx_fia, "FFGruppoLavorazioni")
      SORT_POINT(base_0_fia, "grp_lav_tmp", "base_0")

      //DISPLAY("grp_lav_tmp=", grp_lav_tmp)

      i = 1
      while( i <= grp_lav_tmp )
      {
         idx_grp_tmp = grp_lav_tmp[i]

         SET_#(idx_grp_tmp)
         // prendo come riferimento per l'ordinamento la base_1
         base_0_grp_tmp = #base_0

         // PRIMA VERIFICO LA BASE DOPPIA, che è girata di 180 rispetto il fianco
         // quindi devo verificare da base 1 e tornare indietro verso base 0
         // Successivamente aggiungo le quote per la base orientata
         // SOLO se sono il primo gruppo dal basso attrezzato
         if( #FF_GruppoLavAttrRefZ == 1 & #FF_SonoSuBaseDoppia == 1 )
         {
            // siccome sono "girato" di 180° rispetto la base orientata,
            // ordino le trafile in riferimento alla base_1 del gruppo
            COMPONENTI2("trafile_tmp", idx_grp_tmp, "FFTrafila")
            SORT_POINT(base_0_grp_tmp, "trafile_tmp", "base_1")

            // solo sulla prima trafila in basso
            idx_tra_tmp = trafile_tmp[1]

            // mi setto sull'idx della scocca
            SET_#(idx_tra_tmp)

            $ang_quoSCH = $wk_ang_quoSCH
            $ang_scr = $wk_ang_scr

            // per debug
            // $wk_desc_quota = "Quota su base doppia #FF_GruppoLavAttrRefZ=1 & #FF_SonoSuBaseDoppia=1"

            $P2.x = #base_1.x
            $P2.z = #base_1.z
            GOSUB PosizionaQuotaSchienaleSubZ

            if( VAR_EXIST(idx_tra_tmp, "stp_foro_ww_f") == 1 )
            {
               $P2.x = #stp_foro_ww_f.x
               $P2.z = #stp_foro_ww_f.z
               GOSUB PosizionaQuotaSchienaleSubZ
            }

            if( VAR_EXIST(idx_tra_tmp, "stp_foro_ww_r") == 1 )
            {
               $P2.x = #stp_foro_ww_r.x
               $P2.z = #stp_foro_ww_r.z
               GOSUB PosizionaQuotaSchienaleSubZ
            }

            $P2.x = #base_0.x
            $P2.z = #base_0.z
            GOSUB PosizionaQuotaSchienaleSubZ
         }

         // AGGIUNGO LE QUOTE PER LA BASE ORIENTATA
         // per la base normale le quote proseguono in Z da base_0 verso base_1
         SET_#(idx_grp_tmp)
         // prendo come riferimento per l'ordinamento la base_0
         base_0_grp_tmp = #base_0

         if( #FF_GruppoLavAttrRefY == 1 & #FF_SonoSuBaseDoppia == 0 )
         {
            COMPONENTI2("trafile_tmp", idx_grp_tmp, "FFTrafila")
            // siccome sono "orientato" rispetto la base,
            // ordino le trafile in riferimento alla base_0 del gruppo
            SORT_POINT(base_0_grp_tmp, "trafile_tmp", "base_0")

            // solo sulla prima trafila in basso
            idx_tra_tmp = trafile_tmp[1]

            // mi setto sull'idx della scocca
            SET_#(idx_tra_tmp)

            //$ang_quoSCH = $wk_ang_quoSCH
            $ang_quoSCH = 0
            $ang_scr = $wk_ang_scr


            // per debug
            // $wk_desc_quota = "Quota su base singola #FF_GruppoLavAttrRefZ=1 & #FF_SonoSuBaseDoppia=0"

            $P2.x = #base_0.x
            $P2.z = #base_0.z
            GOSUB PosizionaQuotaSchienaleSubZ

            if( VAR_EXIST(idx_tra_tmp, "stp_foro_ww_r") == 1 )
            {
               $P2.x = #stp_foro_ww_r.x
               $P2.z = #stp_foro_ww_r.z
               GOSUB PosizionaQuotaSchienaleSubZ
            }

            if( VAR_EXIST(idx_tra_tmp, "stp_foro_ww_f") == 1 )
            {
               $P2.x = #stp_foro_ww_f.x
               $P2.z = #stp_foro_ww_f.z
               GOSUB PosizionaQuotaSchienaleSubZ
            }

            $P2.x = #base_1.x
            $P2.z = #base_1.z
            GOSUB PosizionaQuotaSchienaleSubZ
         }

         i = i + 1
      }

      // QUOTA FINALE VERSO LA PRODONDITA' DEL FIANCO
      $P2.x = base_1_fia.x
      $P2.z = base_1_fia.z
      GOSUB PosizionaQuotaSchienaleSubZ

//TODO??      //-----------------------------------------------------------------
//TODO??      // QUOTE ORIZZONTALI IN ALTO PER PROFONDITA FIANCO/LAVORAZIONI
//TODO??      //-----------------------------------------------------------------
//TODO??      if( VAR_VAL($wk_idx_fia, "FF_ScoccheInZ") > 0 )
//TODO??      {
//TODO??         $dist = 60
//TODO??
//TODO??         if( $wk_verso == "DX" )
//TODO??         {
//TODO??            $wk_ang_quoSCH = $wk_ang_quo + 90
//TODO??            $wk_ang_scr = 0
//TODO??         }
//TODO??         else
//TODO??         {
//TODO??            $wk_ang_quoSCH = $wk_ang_quo - 90
//TODO??            $wk_ang_scr = 180
//TODO??         }
//TODO??
//TODO??         // QUOTA INIZIALE A PARTIRE DALLA BASE_0 DEL FIANCO
//TODO??         // default prima quota alla base 0 del fianco
//TODO??         $wk_p2_prec.x = alto_0_fia.x
//TODO??         $wk_p2_prec.y = alto_0_fia.y
//TODO??         $wk_p2_prec.z = alto_0_fia.z
//TODO??
//TODO??
//TODO??         COMPONENTI2("grp_lav_tmp", $wk_idx_fia, "FFGruppoLavorazioni")
//TODO??         SORT_POINT(alto_0_fia, "grp_lav_tmp", "alto_0")
//TODO??
//TODO??         //DISPLAY("grp_lav_tmp=", grp_lav_tmp)
//TODO??
//TODO??         i = 1
//TODO??         while( i <= grp_lav_tmp )
//TODO??         {
//TODO??            idx_grp_tmp = grp_lav_tmp[i]
//TODO??
//TODO??            SET_#(idx_grp_tmp)
//TODO??            // prendo come riferimento per l'ordinamento la base_1
//TODO??            base_0_grp_tmp = #alto_0
//TODO??
//TODO??            // PRIMA VERIFICO LA BASE DOPPIA, che è girata di 180 rispetto il fianco
//TODO??            // quindi devo verificare da base 1 e tornare indietro verso base 0
//TODO??            // Successivamente aggiungo le quote per la base orientata
//TODO??            // SOLO se sono il primo gruppo dal basso attrezzato
//TODO??            if( #FF_GruppoLavAttrRefZ == #FF_ScoccheInZ & #FF_SonoSuBaseDoppia == 1 )
//TODO??            {
//TODO??               // siccome sono "girato" di 180° rispetto la base orientata,
//TODO??               // ordino le trafile in riferimento alla base_1 del gruppo
//TODO??               COMPONENTI2("trafile_tmp", idx_grp_tmp, "FFTrafila")
//TODO??               SORT_POINT(base_0_grp_tmp, "trafile_tmp", "alto_1")
//TODO??
//TODO??               // solo sulla prima trafila in basso
//TODO??               idx_tra_tmp = trafile_tmp[1]
//TODO??
//TODO??               // mi setto sull'idx della scocca
//TODO??               SET_#(idx_tra_tmp)
//TODO??
//TODO??               $ang_quoSCH = $wk_ang_quoSCH
//TODO??               $ang_scr = $wk_ang_scr
//TODO??
//TODO??               // per debug
//TODO??               // $wk_desc_quota = "Quota su base doppia #FF_GruppoLavAttrRefZ=1 & #FF_SonoSuBaseDoppia=1"
//TODO??
//TODO??               $P2.x = #alto_1.x
//TODO??               $P2.z = #alto_1.z
//TODO??               GOSUB PosizionaQuotaSchienaleSubZ
//TODO??
//TODO??               if( VAR_EXIST(idx_tra_tmp, "stp_foro_ww_f") == 1 )
//TODO??               {
//TODO??                  $P2.x = #stp_foro_ww_f.x
//TODO??                  $P2.z = #stp_foro_ww_f.z
//TODO??                  GOSUB PosizionaQuotaSchienaleSubZ
//TODO??               }
//TODO??
//TODO??               if( VAR_EXIST(idx_tra_tmp, "stp_foro_ww_r") == 1 )
//TODO??               {
//TODO??                  $P2.x = #stp_foro_ww_r.x
//TODO??                  $P2.z = #stp_foro_ww_r.z
//TODO??                  GOSUB PosizionaQuotaSchienaleSubZ
//TODO??               }
//TODO??
//TODO??               $P2.x = #alto_0.x
//TODO??               $P2.z = #alto_0.z
//TODO??               GOSUB PosizionaQuotaSchienaleSubZ
//TODO??            }
//TODO??
//TODO??            // AGGIUNGO LE QUOTE PER LA BASE ORIENTATA
//TODO??            // per la base normale le quote proseguono in Z da base_0 verso base_1
//TODO??            SET_#(idx_grp_tmp)
//TODO??            // prendo come riferimento per l'ordinamento la base_0
//TODO??            base_0_grp_tmp = #alto_0
//TODO??
//TODO??            if( #FF_GruppoLavAttrRefY == #FF_ScoccheInY & #FF_SonoSuBaseDoppia == 0 )
//TODO??            {
//TODO??               COMPONENTI2("trafile_tmp", idx_grp_tmp, "FFTrafila")
//TODO??               // siccome sono "orientato" rispetto la base,
//TODO??               // ordino le trafile in riferimento alla base_0 del gruppo
//TODO??               SORT_POINT(base_0_grp_tmp, "trafile_tmp", "alto_0")
//TODO??
//TODO??               // solo sulla prima trafila in basso
//TODO??               idx_tra_tmp = trafile_tmp[1]
//TODO??
//TODO??               // mi setto sull'idx della scocca
//TODO??               SET_#(idx_tra_tmp)
//TODO??
//TODO??               $ang_quoSCH = $wk_ang_quoSCH
//TODO??               $ang_scr = $wk_ang_scr
//TODO??
//TODO??
//TODO??               // per debug
//TODO??               // $wk_desc_quota = "Quota su base singola #FF_GruppoLavAttrRefZ=1 & #FF_SonoSuBaseDoppia=0"
//TODO??
//TODO??               $P2.x = #alto_0.x
//TODO??               $P2.z = #alto_0.z
//TODO??               GOSUB PosizionaQuotaSchienaleSubZ
//TODO??
//TODO??               if( VAR_EXIST(idx_tra_tmp, "stp_foro_ww_r") == 1 )
//TODO??               {
//TODO??                  $P2.x = #stp_foro_ww_r.x
//TODO??                  $P2.z = #stp_foro_ww_r.z
//TODO??                  GOSUB PosizionaQuotaSchienaleSubZ
//TODO??               }
//TODO??
//TODO??               if( VAR_EXIST(idx_tra_tmp, "stp_foro_ww_f") == 1 )
//TODO??               {
//TODO??                  $P2.x = #stp_foro_ww_f.x
//TODO??                  $P2.z = #stp_foro_ww_f.z
//TODO??                  GOSUB PosizionaQuotaSchienaleSubZ
//TODO??               }
//TODO??
//TODO??               $P2.x = #alto_1.x
//TODO??               $P2.z = #alto_1.z
//TODO??               GOSUB PosizionaQuotaSchienaleSubZ
//TODO??            }
//TODO??
//TODO??            i = i + 1
//TODO??         }
//TODO??
//TODO??         // QUOTA FINALE VERSO LA PRODONDITA' DEL FIANCO
//TODO??         $P2.x = alto_1_fia.x
//TODO??         $P2.z = alto_1_fia.z
//TODO??         GOSUB PosizionaQuotaSchienaleSubZ
//TODO??      }
   }

   PROCEDURA StampaProd_FianchiFinitura_Cuc_Lamiere
   {
      //filtro solo i fianchi  in wildwood
      DEL_VAR(-1,"wk_fia_tmp")
      ArrayCopy(-1, "wk_fia", "wk_fia_tmp")

      $wk_fia = 0
      $wk_i = 1
      while ( $wk_i<=$wk_fia_tmp )
      {
         $wk_idx_fia = $wk_fia_tmp[$wk_i]

         if( VAR_VAL_STR($wk_idx_fia,"FF_Materiale")=="WILDWOOD" )
         {
            $wk_ne = $wk_fia + 1
            $wk_fia = $wk_ne
            $wk_fia[$wk_ne] = $wk_idx_fia
         }
         $wk_i = $wk_i + 1
      }

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

      COMANDO2("M4_SHOW Ambienti Hide")
      COMANDO2("SHOW None")
      COMANDO2("SHOW Abilita Off")

      GOSUB InizioStampaPDF
      GOSUB InfoCartiglioGen

      $POSTNOMESTAMPA = "-LAMIERE_FIANCOWW"
      $wk_suffisso_emf = "_LAMIERE_FIANCOWW"
      VAR_CREATE_NUM(-1,STRCAT("wk_pagina_",$wk_suffisso_emf),0,0,"")

      $VAR_AnteprimaDiStampa = 1
      if( $OnTerminate==1 ) { $VAR_AnteprimaDiStampa = 0 }

      $wk_i = 1
      while ( $wk_i<=$wk_fia )
      {
         $wk_idx_fia = $wk_fia[$wk_i]

         GOSUB InfoCartiglio_FianchiFinitura_Cuc
         $wk_STP_DIS_Titolo = "STAMPA LAMIERA FIANCHI WILDWOOD"

         $wk_ang_fia = ANG_TOT_NOR($wk_idx_fia)
         $wk_ang_rot = -90
         $wk_verso   = "SX"

         if( VAR_VAL_STR($wk_idx_fia,"FF_PosizioneSD_Ref")=="DX" )
         {
            $wk_verso   = "DX"
            $wk_ang_rot = 90
         }

         $wk_view_roll = STRCAT( STR(-1*$wk_ang_fia) ," 0" )
         $wk_view_roll_lato = STRCAT( STR($wk_ang_rot) ," 0" )

         $wk_tot_gruppo = 1
         if( VAR_VAL($wk_idx_fia,"FF_ProfBase_Bif")>0 ) { $wk_tot_gruppo = 2 }

         VAR_VALUE_SET($wk_idx_fia ,"flag_stampa_tratt",1)

         $wk_idx_lam1 = -1
         $wk_idx_lam2 = -1

// LP 26/04/2021 - stampa fianchi di finitura per REVISIONE = 3
//         if( $DIS_TO_GEMO==0 )  { GOSUB StampaProd_FianchiFinitura_Cuc_Lamiera_Quota }
         if( $DIS_TO_GEMO==0 )
         {
            //GOSUB StampaProd_FianchiFinitura_Cuc_Lamiera_Quota

            //LP 26/04/2021 - OLD GOSUB StampaProd_FianchiFinitura_Cuc_Lamiera_Quota
            if( VAR_VAL($wk_idx_fia, "REV") < 3 )   { GOSUB StampaProd_FianchiFinitura_Cuc_Lamiera_Quota }
            else                                    { GOSUB StampaProd_FianchiFinitura_Cuc_Lamiera_QuotaR3 }
         }

         GOSUB NomeDisegno
         GOSUB StampaLayout

         if( $DIS_TO_GEMO==0 ) { GOSUB CancellaScritteQuote }

         //VAR_VALUE_SET($wk_idx_fia ,"flag_stampa_tratt",0)

         ResetVarStampa("flag_stampa")
         ResetVarStampa("flag_stampa_col")
         ResetVarStampa("flag_stampa_tratt")

         //if( IS_IDX($wk_idx_lam1) )  { VAR_VALUE_SET($wk_idx_lam1 ,"flag_stampa",0) }
         //if( IS_IDX($wk_idx_lam2) )  { VAR_VALUE_SET($wk_idx_lam2 ,"flag_stampa",0) }

         $wk_i = $wk_i + 1
      }

      GOSUB FineStampaPDF
      $wk_suffisso_PDF = ""

      //Luca 16/12/2019
      FILE_DEL(STRCAT($wk_prefisso_file,$File, "*LAMIERE_FIANCOWW*.emf"))

      GOSUB CancellaGlobaliStp

      COMANDO2("M4_SHOW Ambienti Show")
      COMANDO2("SHOW Abilita On")
      COMANDO2("SHOW All")
   }

   PROCEDURA StampaProd_FianchiFinitura_Cuc_Lamiera_Quota
   {
      //********************************
      //recupero idx gruppi lavorazioni e lamiere
      SET_#($wk_idx_fia)

      $wk_idx_grp1 = #FF_idx_grp1
      $wk_idx_grp2 = -1

      if( $wk_tot_gruppo==2 ) { $wk_idx_grp2 = #FF_idx_grp2 }

      if( IS_IDX($wk_idx_grp1)==1 )
      {
         SET_#($wk_idx_grp1)
         $wk_idx_lam1 = #FF_idx_lamiera
         VAR_VALUE_SET($wk_idx_lam1 ,"flag_stampa",1)

         //Luca 12/04/2022 aggiunto controllo esclusione
         if( IS_ESCLUSO(#FF_idx_perno1) != 1 )
         {
            //Luca 11/01/2022
            //aggiungo anche i perni
            VAR_VALUE_SET(#FF_idx_perno1 ,"flag_stampa",1)
            VAR_VALUE_SET(#FF_idx_perno2 ,"flag_stampa",1)
         }

      }

      if( IS_IDX($wk_idx_grp2)==1 )
      {
         SET_#($wk_idx_grp2)
         $wk_idx_lam2 = #FF_idx_lamiera
         VAR_VALUE_SET($wk_idx_lam2 ,"flag_stampa",1)

         //Luca 12/04/2022 aggiunto controllo esclusione
         if( IS_ESCLUSO(#FF_idx_perno1) != 1 )
         {
            //Luca 11/01/2022
            //aggiungo anche i perni
            VAR_VALUE_SET(#FF_idx_perno1 ,"flag_stampa",1)
            VAR_VALUE_SET(#FF_idx_perno2 ,"flag_stampa",1)
         }
      }

      $wk_ang_quo = $wk_ang_fia + 90
      if( $wk_verso=="DX" )
      {
         $wk_ang_quo = $wk_ang_fia - 90
      }

      $wk_idx_gruppo  = $wk_idx_grp1
      $wk_idx_lamiera = $wk_idx_lam1
      $wk_nr_gruppo  = 1
      GOSUB StampaProd_FianchiFinitura_Cuc_Lamiera_Quota_Sub

      if( $wk_tot_gruppo==2 )
      {
         $wk_idx_gruppo  = $wk_idx_grp2
         $wk_idx_lamiera = $wk_idx_lam2
         $wk_nr_gruppo  = 2

         //gruppo 2 è ruotato di 180
         $wk_verso_bak = $wk_verso
         if( $wk_nr_gruppo==2 )
         {
            if( $wk_verso=="SX" )  { $wk_verso = "DX" }
            else                   { $wk_verso = "SX" }
         }

         GOSUB StampaProd_FianchiFinitura_Cuc_Lamiera_Quota_Sub

         $wk_verso = $wk_verso_bak
      }
   }

   // LP 24/05/2021 - DA COMPLETARE
   PROCEDURA StampaProd_FianchiFinitura_Cuc_Lamiera_QuotaR3
   {
      //********************************
      //recupero idx gruppi lavorazioni e lamiere

      $wk_idx_lamiera = -1
      $wk_idx_gruppo = -1

      // devo prendermi tutti i gruppi lavorazioni
      COMPONENTI2("$wk_grp_lav", $wk_idx_fia, "FFGruppoLavorazioni")

      //ordino per idx così da avere quello posizionato per primo
      r = ArraySortVarNum(-1,"wk_grp_lav","idx_att")

      $wk_verso = VAR_VAL_STR($wk_idx_fia, "FF_PosizioneSD_Ref")

      //per il primo gruppo trovato:
      // - se unico quoto tutto
      // - se primo quoto solo la lamiera (REV 3)
      if( $wk_grp_lav > 0 )
      {
         $wk_idx_gruppo = $wk_grp_lav[1]
         $wk_idx_lamiera = VAR_VAL($wk_idx_gruppo, "FF_idx_lamiera")

         $wk_tot_gruppo = 1
         $wk_nr_gruppo = 1

         $wk_ang_quo = $wk_ang_fia
         if( $wk_verso == "DX" )  { $wk_ang_quo = $wk_ang_fia - 90 }
         else                     { $wk_ang_quo = $wk_ang_fia + 90 }

         if( IS_IDX($wk_idx_lamiera) == 1 )
         {
            VAR_VALUE_SET($wk_idx_lamiera, "flag_stampa", 1)
            VAR_VALUE_SET($wk_idx_lamiera, "flag_stampa_col", 1)
            VAR_VALUE_SET($wk_idx_lamiera, "flag_stampa_tratt", 1)
         }


         if( IS_IDX($wk_idx_gruppo) == 1 )
         {
            VAR_VALUE_SET($wk_idx_gruppo, "flag_stampa", 1)
            VAR_VALUE_SET($wk_idx_gruppo, "flag_stampa_col", 1)
            VAR_VALUE_SET($wk_idx_gruppo, "flag_stampa_tratt", 1)
         }

         //mi salvo i punti della lamieria da utilizzare poi per le varie quote successive
         SET_#($wk_idx_lamiera)
         $wk_lam_b0 = #base_0      $wk_lam_a0 = #alto_0
         $wk_lam_b1 = #base_1      $wk_lam_a1 = #alto_1
         $wk_lam_b2 = #base_2      $wk_lam_a2 = #alto_2
         $wk_lam_b3 = #base_3      $wk_lam_a3 = #alto_3

         GOSUB StampaProd_FianchiFinitura_Cuc_Lamiera_R3_QuotaLamiera

         if( $wk_grp_lav == 1 )
         {
            GOSUB StampaProd_FianchiFinitura_Cuc_Lamiera_Quota_Sub2

            GOSUB StampaProd_FianchiFinitura_Cuc_Lamiera_R3_QuotaPerni
            EXITSUB()
         }
      }

      //DA COMPLETARE:
      //casi con più FFGruppiLavorazione
      //dove il primo (posizionato) è quello con la sola lamiere (quotato sopra)
      //tutti i gruppi successivi contengono magneti e perni

      //recupero tutti i magnenti/perni da quotare
      //$wk_arr_mgnt_lar = 0
      //$wk_arr_mgnt_alt = 0
      //
      //$wk_arr_perni_lar = 0
      //$wk_arr_perni_alt = 0

      i = 2
      while( i <= $wk_grp_lav )
      {
         $wk_idx_grp_tmp = $wk_grp_lav[i]
         $wk_idx_lamiera = VAR_VAL($wk_idx_grp_tmp, "FF_idx_lamiera")
         $wk_idx_gruppo  = $wk_idx_grp_tmp

         //COMPONENTI2("$wk_mgnt",$wk_idx_grp_tmp,"FFTrafila")
         //COMPONENTI2("$wk_perni",$wk_idx_grp_tmp,"FFPerno")

         if( IS_IDX($wk_idx_lamiera) == 1 )
         {
            VAR_VALUE_SET($wk_idx_lamiera, "flag_stampa", 1)
            VAR_VALUE_SET($wk_idx_lamiera, "flag_stampa_col", 1)
            VAR_VALUE_SET($wk_idx_lamiera, "flag_stampa_tratt", 1)
         }

         if( IS_IDX($wk_idx_gruppo) == 1 )
         {
            VAR_VALUE_SET($wk_idx_gruppo, "flag_stampa", 1)
            VAR_VALUE_SET($wk_idx_gruppo, "flag_stampa_col", 1)
            VAR_VALUE_SET($wk_idx_gruppo, "flag_stampa_tratt", 1)
         }

         //quoto i perni delle varie lavorazioni
         GOSUB StampaProd_FianchiFinitura_Cuc_Lamiera_R3_QuotaPerni

         i = i + 1
      }

      EXITSUB()
      $wk_tot_gruppo = 1
      $wk_nr_gruppo = 1

      $wk_idx_grp_lam = -1

      i = 1
      while( i <= $wk_grp_lav )
      {
         $wk_idx_grp_tmp = $wk_grp_lav[i]

         //$wk_tot_gruppo = 1
         //$wk_nr_gruppo = 1
         $wk_ang_quo = $wk_ang_fia

         if( $wk_verso == "DX" )  { $wk_ang_quo = $wk_ang_fia - 90 }
         else                     { $wk_ang_quo = $wk_ang_fia + 90 }

         $wk_idx_lamiera = VAR_VAL($wk_idx_grp_tmp, "FF_idx_lamiera")
         $wk_idx_gruppo = $wk_idx_grp_tmp

         if( i >= 2 )
         {
            $wk_tot_gruppo = $wk_grp_lav -1
            $wk_nr_gruppo = i - 1
         }

         //if( INSERIMENTO2($wk_idx_grp_tmp) == 0 )
         //{
         //   $wk_tot_gruppo = 1
         //   $wk_nr_gruppo = 1
         //}
         //else
         //{
         //   $wk_prg_grp_A2 = $wk_prg_grp_A2 + 1
         //
         //   $wk_tot_gruppo = $wk_prg_grp_A2
         //   $wk_nr_gruppo  = $wk_prg_grp_A2
         //}

         // se sono componente mi prendo la lamiera,
         // altrimenti se attrezzato mi prendo le lavorazioni
         //if( INSERIMENTO2($wk_idx_grp_tmp) == 0 )
         //{
         //   $wk_idx_lamiera = VAR_VAL($wk_idx_grp_tmp, "FF_idx_lamiera")
         //}
         //else
         //{
         //  // per non stampare le singole quote in rosso
         //  // $wk_idx_gruppo = $wk_idx_grp_tmp
         //  $wk_idx_gruppo = -1
         //}

        //DISPLAY2(STRCAT("StampaProd_FianchiFinitura_Cuc_Lamiera_QuotaR3"
        //              , "\ni = ", STR(i)
        //              , "\nFiancoFinitura idx = ", STR($wk_idx_fia)
        //              , "\n$wk_idx_lamiera = ", STR($wk_idx_lamiera), "  ", NOME($wk_idx_lamiera)
        //              , "\n$wk_idx_gruppo = ", STR($wk_idx_gruppo), "  ", NOME($wk_idx_gruppo)
        //              ))

         if( IS_IDX($wk_idx_lamiera) == 1 )
         {
            VAR_VALUE_SET($wk_idx_lamiera, "flag_stampa", 1)
            VAR_VALUE_SET($wk_idx_lamiera, "flag_stampa_col", 1)
            VAR_VALUE_SET($wk_idx_lamiera, "flag_stampa_tratt", 1)
         }

         if( IS_IDX($wk_idx_gruppo) == 1 )
         {
            VAR_VALUE_SET($wk_idx_gruppo, "flag_stampa", 1)
            VAR_VALUE_SET($wk_idx_gruppo, "flag_stampa_col", 1)
            VAR_VALUE_SET($wk_idx_gruppo, "flag_stampa_tratt", 1)
         }

         // chiamo la procedura già esistente passando i parametri
         // per le sole quote in blu
         GOSUB StampaProd_FianchiFinitura_Cuc_Lamiera_Quota_Sub

         i = i + 1
      }
   }

   PROCEDURA StampaProd_FianchiFinitura_Cuc_Lamiera_R3_QuotaLamiera
   {
      if( IS_IDX($wk_idx_lamiera) != 1 )   { EXITSUB() }

      $alias_scr     = "ScrittaBlu"
      $AliasQuota    = "QuotaBlu"
      $AliasQuotaLat = "QuotaLBlu"
      $wk_faccia     = "F"

      //$HChar   = 15         $LChar   = 10
      //$Alt_Chr = 15         $Lar_Chr = 10

      //aggiungo controllo dimensioni
      par_dim = 1
      if( VAR_VAL($wk_idx_fia, "Z") < 450 ) { par_dim = VAR_VAL($wk_idx_fia, "Z")/450 }
      if( VAR_VAL($wk_idx_fia, "Y") < 300 ) { par_dim = VAR_VAL($wk_idx_fia, "Y")/300 }

      //evito quote troppo piccole
      if( par_dim < 0.6  ) { par_dim = 0.6 }

      $HChar   = 15*par_dim         $LChar   = 10*par_dim
      $Alt_Chr = 15*par_dim         $Lar_Chr = 10*par_dim

      SET_#($wk_idx_lamiera)

      $dist = 80
      $ang_scr    = 0
      $ang_quoSCH = 0
      $wk_stile   = 0

      //************************
      //quota larghezza sopra
      //************************
      $P1 = #alto_1
      $P2 = #alto_0
      if( $wk_verso=="DX" )
      {
         $P1 = #alto_3
         $P2 = #alto_2
      }
      $P1.y = $P1.y + 10
      $P2.y = $P2.y + 10
      $d = DISTANZA($P1,$P2)
      //$testo = STR(FLOOR($d+0.5))
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuotaSchienale

      //************************
      //quota altezza a dx
      $ang_scr    = 0
      $ang_quoSCH = $wk_ang_quo
      $wk_stile   = 0
      //************************
      $wk_offq = 10

      $P2 = #base_0
      $P1 = #alto_0
      if( $wk_verso=="DX" )
      {
         $P2 = #base_2
         $P1 = #alto_2
      }
      $P1.x =  $P1.x + COSENO($wk_ang_quo)*$wk_offq
      $P1.z =  $P1.z -   SENO($wk_ang_quo)*$wk_offq
      $P2.x =  $P2.x + COSENO($wk_ang_quo)*$wk_offq
      $P2.z =  $P2.z -   SENO($wk_ang_quo)*$wk_offq

      $d = DISTANZA($P1,$P2)
      //$testo = STR(FLOOR($d+0.5))
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuotaSchienale
   }

   PROCEDURA StampaProd_FianchiFinitura_Cuc_Lamiera_R3_QuotaMagneti
   {
      if( IS_IDX($wk_idx_gruppo) != 1 )   { EXITSUB() }
   }

   PROCEDURA StampaProd_FianchiFinitura_Cuc_Lamiera_R3_QuotaPerni
   {
      if( VAR_VAL($wk_idx_fia, "REV") < 3 ) { EXITSUB() }

      if( IS_IDX($wk_idx_gruppo) != 1 )     { EXITSUB() }

      $alias_scr     = "ScrittaBlu"
      $AliasQuota    = "QuotaBlu"
      $AliasQuotaLat = "QuotaLBlu"

      $wk_faccia     = "F"

      $dist    = 15
      $wk_offq = 10

      $ang_scr    = 0
      $ang_quoSCH = $wk_ang_quo
      $wk_stile   = 0

      SET_#($wk_idx_gruppo)
      $wk_idx_perno1 = #FF_idx_perno1
      $wk_idx_perno2 = #FF_idx_perno2

      //Luca 12/04/2022 aggiunto controllo esclusione
      if( IS_ESCLUSO($wk_idx_perno1) ) { EXITSUB() }

      //SET_#($wk_idx_lamiera)
      //$wk_lam_b0 = #base_0      $wk_lam_a0 = #alto_0

      if( VAR_VAL_STR($wk_idx_gruppo,"FF_PosPerni") == "VERT" )
      {
         //quoto in altezza
         $wk_stile   = 0

         SET_#($wk_idx_perno1)
         $P2 = #pnt_centro
         $P1 = $P2
         $P1.y = $wk_lam_b0.y
         $d = DISTANZA($P1,$P2)
         $testo = STR($d)
         GOSUB PosizionaQuotaSchienale

         $wk_stile   = 0
         $P1 = $P2
         SET_#($wk_idx_perno2)
         $P2 = #pnt_centro
         $d = DISTANZA($P1,$P2)
         $testo = STR($d)
         GOSUB PosizionaQuotaSchienale

         $wk_stile   = 0
         $P1 = $P2
         $P2 = $P1
         $P2.y = $wk_lam_a0.y
         $d = DISTANZA($P1,$P2)
         $testo = STR($d)
         GOSUB PosizionaQuotaSchienale

         //quoto in larghezza
         $dist = 15
         $ang_scr    = 0
         $ang_quoSCH = 0
         $wk_stile   = 0

         SET_#($wk_idx_perno2)
         $P1 = $wk_lam_b0  $P1.y = #pnt_centro.y
         $P2 = $wk_lam_b1  $P2.y = #pnt_centro.y

         if( $wk_verso == "SX" )
         {
            $P1 = $wk_lam_b1  $P1.y = #pnt_centro.y
            $P2 = $wk_lam_b0  $P2.y = #pnt_centro.y
         }

         $PX = INTERFERISCI(#pnt_centro, $wk_ang_fia, $P1,$P2)
         if( $PX.x != $ERR_INTER & $PX.y! = $ERR_INTER )
         {
            $P2 = $PX
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR($d+0.5))
            //scostamento
            $P1.y = $P1.y + 10  $P2.y = $P2.y + 10
            GOSUB PosizionaQuotaSchienale
            //restore scostamento
            $P1.y = $P1.y - 10   $P2.y = $P2.y - 10
         }

         $wk_stile   = 0
         $P1 = $P2
         $P2 = $wk_lam_b1  $P2.y = #pnt_centro.y
         if( $wk_verso == "SX" )
         {
            $P2 = $wk_lam_b0  $P2.y = #pnt_centro.y
         }

         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR($d+0.5))
         //scosto
         $P1.y = $P1.y + 10   $P2.y = $P2.y + 10
         GOSUB PosizionaQuotaSchienale
      }
      else
      {
         //quoto in altezza
         $wk_stile   = 0

         SET_#($wk_idx_perno2)
         $P2 = #pnt_centro
         $P1 = $P2
         $P1.y = $wk_lam_b0.y
         $d = DISTANZA($P1,$P2)
         $testo = STR($d)
         GOSUB PosizionaQuotaSchienale

         $wk_stile   = 0
         $P1 = $P2
         $P2 = $P1
         $P2.y = $wk_lam_a0.y
         $d = DISTANZA($P1,$P2)
         $testo = STR($d)
         GOSUB PosizionaQuotaSchienale

         //quoto in larghezza
         //1 quota sopra / -1 quota sotto
         $wk_posq = 1

         if( VAR_VAL($wk_idx_gruppo,"FF_Verso") > 0  ) { $wk_posq = -1 }

         $dist = 15*$wk_posq

         $ang_scr    = 0
         $ang_quoSCH = 0

         $wk_stile   = 0
         SET_#($wk_idx_perno1)
         $P1 = $wk_lam_b0  $P1.y = #pnt_centro.y
         $P2 = $wk_lam_b1  $P2.y = #pnt_centro.y

         if( VAR_VAL($wk_idx_gruppo,"FF_Verso") < 0  )
         {
            SET_#($wk_idx_perno2)

            if( $wk_verso == "SX" )
            {
               $P1 = $wk_lam_b1  $P1.y = #pnt_centro.y
               $P2 = $wk_lam_b0  $P2.y = #pnt_centro.y
            }
         }

         $dist = 15 *$wk_posq

         $PX = INTERFERISCI(#pnt_centro, $wk_ang_fia, $P1,$P2)
         if( $PX.x != $ERR_INTER & $PX.y! = $ERR_INTER )
         {
            $P2 = $PX
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR($d+0.5))

            //scosto
            $P1.y = $P1.y + (10*$wk_posq)      $P2.y = $P2.y + (10*$wk_posq)
            GOSUB PosizionaQuotaSchienale

            //restore scostamento
            $P1.y = $P1.y - (10*$wk_posq)      $P2.y = $P2.y - (10*$wk_posq)
         }

         $wk_stile   = 0
         $P1 = $P2
         SET_#($wk_idx_perno2)
         $P2 = $wk_lam_b1  $P2.y = #pnt_centro.y

         if( VAR_VAL($wk_idx_gruppo,"FF_Verso") < 0  )
         {
            SET_#($wk_idx_perno1)
            if( $wk_verso == "SX" ) { $P2 = $wk_lam_b0  $P2.y = #pnt_centro.y }
         }

         $PX = INTERFERISCI(#pnt_centro, $wk_ang_fia, $P1,$P2)
         if( $PX.x != $ERR_INTER & $PX.y! = $ERR_INTER )
         {
            $P2 = $PX
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR($d+0.5))

            //scostamento
            $P1.y = $P1.y + (10*$wk_posq)      $P2.y = $P2.y + (10*$wk_posq)
            GOSUB PosizionaQuotaSchienale
            //restore scostamento
            $P1.y = $P1.y - (10*$wk_posq)      $P2.y = $P2.y - (10*$wk_posq)
         }

         $wk_stile   = 0
         $P1 = $P2
         $P2 = $wk_lam_b1  $P2.y = #pnt_centro.y

         if( VAR_VAL($wk_idx_gruppo,"FF_Verso") < 0  )
         {
            if( $wk_verso == "SX" ) { $P2 = $wk_lam_b0  $P2.y = #pnt_centro.y }
         }

         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR($d+0.5))
         //scosamento
         $P1.y = $P1.y + (10*$wk_posq)      $P2.y = $P2.y + (10*$wk_posq)
         GOSUB PosizionaQuotaSchienale
      }
   }

   PROCEDURA StampaProd_FianchiFinitura_Cuc_Lamiera_Quota_Sub
   {
      if( IS_IDX($wk_idx_lamiera) != 1 )   { EXITSUB() }

      debug = 0

      $alias_scr     = "ScrittaBlu"
      $AliasQuota    = "QuotaBlu"
      $AliasQuotaLat = "QuotaLBlu"

      $wk_faccia     = "F"

      //$HChar   = $Yscr/4         $LChar   = $Xscr/4
      //$Alt_Chr = $Yscr/4         $Lar_Chr = $Xscr/4

      //$HChar   = $Yscr/6         $LChar   = $Xscr/6
      //$Alt_Chr = $Yscr/6         $Lar_Chr = $Xscr/6

      $HChar   = 15         $LChar   = 10
      $Alt_Chr = 15         $Lar_Chr = 10

      SET_#($wk_idx_lamiera)

//DEBUG      if( debug == 1 )
//DEBUG      {
//DEBUG         DISPLAY2(STRCAT("StampaProd_FianchiFinitura_Cuc_Lamiera_Quota_Sub"
//DEBUG                         , "\nidx=", STR($wk_idx_lamiera)
//DEBUG                         , "\nnome=", NOME($wk_idx_lamiera)
//DEBUG                         , "\nescluso=", STR(VAR_VAL($wk_idx_lamiera, "escluso"))
//DEBUG                         ))
//DEBUG      }

      $dist = 80
      $ang_scr    = 0
      $ang_quoSCH = 0
      $wk_stile   = 0

      //************************
      //quota larghezza sopra
      //************************
      $P1 = #alto_1
      $P2 = #alto_0
      if( $wk_verso=="DX" )
      {
         $P1 = #alto_3
         $P2 = #alto_2
      }
      $P1.y = $P1.y + 10
      $P2.y = $P2.y + 10
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))
      GOSUB PosizionaQuotaSchienale

      $wk_quota_h = 1
      if( $wk_tot_gruppo==2 & $wk_nr_gruppo==2 ) { $wk_quota_h = 0 }

      //************************
      //quota altezza a dx
      $ang_scr    = 0
      $ang_quoSCH = $wk_ang_quo
      $wk_stile   = 0
      //************************
      $wk_offq = 10

      if( $wk_quota_h==1 )
      {
         $P2 = #base_0
         $P1 = #alto_0
         if( $wk_verso=="DX" )
         {
            $P2 = #base_2
            $P1 = #alto_2
         }
         $P1.x =  $P1.x + COSENO($wk_ang_quo)*$wk_offq
         $P1.z =  $P1.z -   SENO($wk_ang_quo)*$wk_offq
         $P2.x =  $P2.x + COSENO($wk_ang_quo)*$wk_offq
         $P2.z =  $P2.z -   SENO($wk_ang_quo)*$wk_offq

         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR($d+0.5))
         GOSUB PosizionaQuotaSchienale
      }

      debug = 0
      GOSUB StampaProd_FianchiFinitura_Cuc_Lamiera_Quota_Sub2
   }

   PROCEDURA StampaProd_FianchiFinitura_Cuc_Lamiera_Quota_Sub2
   {
      if( IS_IDX($wk_idx_gruppo) != 1 )   { EXITSUB() }

      //Luca 11/01/2022 su lamiera senza magneti (altri gruppi per i magneti)
      if( VAR_VAL($wk_idx_gruppo,"FF_DisattivaSoloLav") == 1 ) { EXITSUB() }

      debug = 0

      $alias_scr     = "ScrittaRossa"
      $AliasQuota    = "QuotaRossa"
      $AliasQuotaLat = "QuotaLRossa"

      $wk_base_0 = #base_0      $wk_alto_0 = #alto_0
      $wk_base_1 = #base_1      $wk_alto_1 = #alto_1
      $wk_base_2 = #base_2      $wk_alto_2 = #alto_2
      $wk_base_3 = #base_3      $wk_alto_3 = #alto_3

      $wk_b0y = $wk_base_0.y
      $wk_lamy =  #Y

      //quoto in altezza
      SET_#($wk_idx_gruppo)

//---      DISPLAY2(STRCAT("StampaProd_FianchiFinitura_Cuc_Lamiera_Quota_Sub2"
//---                      , "\nidx=", STR($wk_idx_gruppo)
//---                      , "\nnome=", NOME($wk_idx_gruppo)
//---                      , "\nescluso=", STR(VAR_VAL($wk_idx_gruppo, "escluso"))
//---                      ))

      //------------------------------------
      //QUOTA ALTEZZE
      //------------------------------------
      $wk_offy_1 = #OffY_TraB - #RieY_LamWW
      $wk_offy_2 = 0
      $wk_offy_3 = 0

      if( #FF_NumeroTrafile>1 ) { $wk_offy_3 = #Yr - #OffY_TraA - #RieY_LamWW }
      if( #FF_NumeroTrafile>2 ) { $wk_offy_2 = #OffY_TraC - #RieY_LamWW}

      $wk_quota_y = 1
      $wk_quota_y[1] = $wk_offy_1

      if( $wk_offy_2>0 )
      {
         $wk_ne = $wk_quota_y + 1
         $wk_quota_y = $wk_ne
         $wk_quota_y[$wk_ne] = $wk_offy_2
      }

      if( $wk_offy_3>0 )
      {
         $wk_ne = $wk_quota_y + 1
         $wk_quota_y = $wk_ne
         $wk_quota_y[$wk_ne] = $wk_offy_3
      }

      //$dist = 80
      //if( $wk_tot_gruppo==2 )
      //{
      //   if( $wk_verso=="DX" ) { $dist = 20 }
      //}
      $dist = 60
      $wk_offq = 10
      if( $wk_tot_gruppo == 2 )
      {
         //$wk_offq = 10
         if( $wk_verso=="DX" ) { $dist = 10 }
      }

      $ang_scr    = 180
      $ang_quoSCH = $wk_ang_quo

      $wk_stile   = 1
      $P1 = $wk_base_1
      if( $wk_verso=="DX" ) { $P1 = $wk_base_0 }
      $P1.x =  $P1.x - COSENO($wk_ang_quo)*$wk_offq
      $P1.z =  $P1.z +   SENO($wk_ang_quo)*$wk_offq

      $P2 = $P1
      $P2.y = $P1.y + $wk_offy_1 - #Y_Tra/2
      $d = DISTANZA($P1,$P2)
      $testo = STR($d)
      GOSUB PosizionaQuotaSchienale

      $wk_stile   = 0
      $P1 = $P2
      $P2.y = $P1.y + #Y_Tra
      $d = DISTANZA($P1,$P2)
      $testo = STR($d)
      GOSUB PosizionaQuotaSchienale

      $wk_j = 2
      while ( $wk_j<=$wk_quota_y )
      {
         $P1 = $P2
         $wk_stile   = 0
         $P2 = $P1
         $P2.y = $wk_b0y + $wk_quota_y[$wk_j]  - #Y_Tra/2
         $d = DISTANZA($P1,$P2)
         $testo = STR($d)
         GOSUB PosizionaQuotaSchienale

         $wk_stile   = 0
         $P1 = $P2
         $P2.y = $P1.y + #Y_Tra
         $d = DISTANZA($P1,$P2)
         $testo = STR($d)
         GOSUB PosizionaQuotaSchienale


         $wk_j = $wk_j + 1
      }

      $P1 = $P2
      $wk_stile   = 1

      $P2 = $wk_base_1
      if( $wk_verso=="DX" ) { $P2 = $wk_base_0 }

      $P2.x = $P2.x - COSENO($wk_ang_quo)*$wk_offq
      $P2.z = $P2.z +   SENO($wk_ang_quo)*$wk_offq
      $P2.y = $wk_b0y + $wk_lamy
      $d = DISTANZA($P1,$P2)
      $testo = STR($d)
      GOSUB PosizionaQuotaSchienale

      //------------------------------------
      //QUOTA LARGHEZZA E DISTANZA DAL FRONTE
      //------------------------------------

      $wk_b0y = $wk_b0y - 10

      //$dist = -80
      $dist = -60
      $ang_scr    = 0
      if( $wk_nr_gruppo==2 ) { $ang_scr  = 180 }
      $ang_quoSCH = 0

      $wk_stile   = 1
      $P1 = $wk_base_2
      $P2 = #FF_Stp_Tra1_B2
      if( $wk_verso=="DX" )
      {
         $P1 = $wk_base_0
         $P2 = #FF_Stp_Tra1_B0
      }

      $P1.y = $wk_b0y
      $P2.y = $wk_b0y

      $wk_prima_quota = 1
      if( $wk_tot_gruppo==2 & $wk_verso=="DX" ) { $wk_prima_quota = 0 }


      if( $wk_prima_quota==1 )
      {
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR($d+0.5))
         GOSUB PosizionaQuotaSchienale
      }

      $wk_stile = 0
      $P1 = $P2
      if( $wk_verso=="DX" )
      {
         $P2.x = $P1.x + COSENO($wk_ang_quo)*(#Z_ForoWW)
         $P2.z = $P1.z -   SENO($wk_ang_quo)*(#Z_ForoWW)
      }
      else
      {
         $P2.x = $P1.x + COSENO($wk_ang_quo)*(#Z_ForoWW)
         $P2.z = $P1.z -   SENO($wk_ang_quo)*(#Z_ForoWW)
      }
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))
      GOSUB PosizionaQuotaSchienale


      $wk_stile   = 0
      $P1 = $P2
      if( $wk_verso=="DX" )
      {
         $P2 = #FF_Stp_Tra1_B1
         $P2.x = $P2.x - COSENO($wk_ang_quo)*(#Z_ForoWW)
         $P2.z = $P2.z +   SENO($wk_ang_quo)*(#Z_ForoWW)
      }
      else
      {
         $P2 = #FF_Stp_Tra1_B3
         $P2.x = $P2.x - COSENO($wk_ang_quo)*(#Z_ForoWW)
         $P2.z = $P2.z +   SENO($wk_ang_quo)*(#Z_ForoWW)
      }
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))
      GOSUB PosizionaQuotaSchienale

      $wk_stile   = 0
      $P1 = $P2
      if( $wk_verso=="DX" )   { $P2 = #FF_Stp_Tra1_B1 }
      else                    { $P2 = #FF_Stp_Tra1_B3 }
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))
      GOSUB PosizionaQuotaSchienale

      $wk_stile   = 2
      $P1 = $P2
      if( $wk_verso=="DX" ) { $P2 = $wk_base_1 }
      else                  { $P2 = $wk_base_3 }
      $P2.y = $P1.y

      $wk_ultima_quota = 1
      if( $wk_tot_gruppo==2 & $wk_verso=="SX" ) { $wk_ultima_quota = 0 }

      if( $wk_ultima_quota==1 )
      {
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR($d+0.5))
         GOSUB PosizionaQuotaSchienale
      }

      if( #Z_TraSup != #Z_TraInf )
      {
         $dist = 10
         $ang_scr    = 0
         if( $wk_nr_gruppo==2 ) { $ang_scr  = 180 }
         $ang_quoSCH = 0

         $wk_stile   = 0
         $P1 = $wk_base_2
         $P2 = #FF_Stp_Tra2_B2

         if( $wk_verso=="DX" )
         {
            $P2 = $wk_base_2
            $P1 = #FF_Stp_Tra2_B2
            //$P1 = $wk_base_0
            //$P2 = #FF_Stp_Tra2_B0
         }
         $P1.y = #FF_Stp_Tra2_B2.y + #Y_Tra
         $P2.y = #FF_Stp_Tra2_B2.y + #Y_Tra

         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR($d+0.5))
         GOSUB PosizionaQuotaSchienale
      }
      debug = 0
   }
   // RISCRIVO PROCEDURE STAMPE --> Allegati di riga

   //Luca 25/01/2022
   //revisione 1 delle stampe dei fianchi di finitura
   //gestisco come allegati di riga
   //inizialmente solo per quelli in WW (2 pagine x ogni fianco)
   PROCEDURA StampaProd_FianchiFinC_R1
   {
      if( $StampaProd_FianchiFinC_Rev < 1 ) { EXITSUB() }

      $wk_log = 0
      ScriviSuLog($wk_log,"StampaProd_FianchiFinC_R1","START")

      //recupero i fianchi da stampare
      WITH_ALIAS("$wk_fia_tmp","StpTrafileFiancoFin")
      if( $wk_fia_tmp==0 )
      {
         ScriviSuLog($wk_log,"StampaProd_FianchiFinC_R1","] END - NO FIANCHI 1")
         EXITSUB()
      }

      //per ora non serve, viene già lanciato dall'altra stampa
      //$Cuc_FFLavorazioniShow = 1
      //COMANDO2("RIGENERA")
      //COMANDO2("RIGENERA")

      //filtro solo i fianchi delle basi
      $wk_fia = 0
      $wk_i = 1
      while ( $wk_i<=$wk_fia_tmp )
      {
         $wk_idx_fia = $wk_fia_tmp[$wk_i]

         $wk_stampa_fianco = 1

         //no i fianchi colonna
         if( VAR_VAL_STR($wk_idx_fia,"FF_Tipologia") == "COLONNA" )                   { $wk_stampa_fianco = 0 }

         //controllo se selezionato su ordini sostituzione
         if( CheckSel_ORD_SOST($wk_idx_fia) == 0  )                                   { $wk_stampa_fianco = 0 }

         //per ora solo fianchi wildwood
         if( VAR_VAL_STR($wk_idx_fia,"FF_Materiale") != "WILDWOOD" )                  { $wk_stampa_fianco = 0 }

         if( VAR_VAL($wk_idx_fia,"T_ALLEGATI") - VAR_VAL($wk_idx_fia,"ALLEGATI") > 0) { $wk_stampa_fianco = 0 }

         //aggiorno
         if( $wk_stampa_fianco ) { AddItem2Array( -1,"wk_fia",$wk_idx_fia,"") }

         $wk_i = $wk_i + 1
      }

      if( $wk_fia == 0 )
      {
         ScriviSuLog($wk_log,"StampaProd_FianchiFinC_R1","] END - NO FIANCHI 2")
         EXITSUB()
      }

      COMANDO2("M4_SHOW Ambienti Hide")
      COMANDO2("SHOW None")
      COMANDO2("SHOW Abilita Off")

      $wk_i = 1
      while ( $wk_i <= $wk_fia )
      {
         $wk_idx_fia  = $wk_fia[$wk_i]
         $wk_idx_gest =  $wk_idx_fia

         //Luca 27/01/2022
         $wk_idx_riga      = $wk_idx_gest
         $SET_STAMPA       = "0008"

         GOSUB InizioStampaPDF
         GOSUB InfoCartiglioGen

         SET_#($wk_idx_fia)

         if( VAR_EXIST($wk_idx_gest,"IDX_GEST") ) { $POSTNOMESTAMPA = STRCAT("-LAMIERE_FIANCOWW_",STR(#IDX_GEST)) }
         else                                     { $POSTNOMESTAMPA = STRCAT("-LAMIERE_FIANCOWW_(",STR($wk_idx_fia),")") }

         $wk_suffisso_emf = "_LAMIERE_FIANCOWW"
         VAR_CREATE_NUM(-1,STRCAT("wk_pagina_",$wk_suffisso_emf),0,0,"")

         $VAR_AnteprimaDiStampa = 1
         if( $OnTerminate==1 ) { $VAR_AnteprimaDiStampa = 0 }

         GOSUB InfoCartiglio_FianchiFinitura_Cuc

         //imposto angolo e vista della stampa
         $wk_ang_fia = ANG_TOT_NOR($wk_idx_fia)
         $wk_ang_rot = -90
         $wk_verso   = "SX"

         if( VAR_VAL_STR($wk_idx_fia,"FF_PosizioneSD_Ref")=="DX" )
         {
            $wk_verso   = "DX"
            $wk_ang_rot = 90
         }

         $wk_view_roll = STRCAT( STR(-1*$wk_ang_fia) ," 0" )
         $wk_view_roll_lato = STRCAT( STR($wk_ang_rot) ," 0" )

         //FIANCHI FINITURA IN WILDWOOD
         GOSUB StampaProd_FianchiFinC_R1_WW

         GOSUB FineStampaPDF

         $wk_suffisso_PDF = ""

         GOSUB CancellaGlobaliStp

         $wk_i = $wk_i + 1
      }

      COMANDO2("M4_SHOW Ambienti Show")
      COMANDO2("SHOW Abilita On")
      COMANDO2("SHOW All")

      ScriviSuLog($wk_log,"StampaProd_FianchiFinC_R1","END")
   }

   //Luca 25/01/2022
   //Pagina1: quota lamiera (dimensione)
   //         quota posizione perni
   //Pagina2: quota posizione/dimensioni magneti
   PROCEDURA StampaProd_FianchiFinC_R1_WW
   {
      ScriviSuLog($wk_log,"StampaProd_FianchiFinC_R1",STRCAT("IDX=",STR($wk_idx_fia) , " R1_WW"))

      $wk_STP_DIS_Titolo = "STAMPA LAMIERA FIANCHI WILDWOOD"

      //trovo le informazioni comuni che serviranno entrambe le stampe

      //la lamiera è sempre e solo una
      $wk_idx_lamiera = -1
      $wk_idx_gruppo  = -1

      // devo prendermi tutti i gruppi lavorazioni
      COMPONENTI2("$wk_grp_lav", $wk_idx_fia, "FFGruppoLavorazioni")
      if( $wk_grp_lav == 0 )
      {
         ScriviSuLog($wk_log,"StampaProd_FianchiFinC_R1",STRCAT("IDX=",STR($wk_idx_fia) , " R1_WW - NO GRUPPI LAV"))
         EXITSUB()
      }

      //ordino per idx così da avere quello posizionato per primo
      r = ArraySortVarNum(-1,"wk_grp_lav","idx_att")
      $wk_verso = VAR_VAL_STR($wk_idx_fia, "FF_PosizioneSD_Ref")

      //la lamiera è sempre quella dell'elemento posizionato
      $wk_idx_lamiera = VAR_VAL($wk_grp_lav[1], "FF_idx_lamiera")

      //mi salvo i punti della lamieria da utilizzare poi per le varie quote successive
      SET_#($wk_idx_lamiera)
      $wk_lam_b0 = #base_0      $wk_lam_a0 = #alto_0
      $wk_lam_b1 = #base_1      $wk_lam_a1 = #alto_1
      $wk_lam_b2 = #base_2      $wk_lam_a2 = #alto_2
      $wk_lam_b3 = #base_3      $wk_lam_a3 = #alto_3

      $wk_ang_quo = $wk_ang_fia
      if( $wk_verso == "DX" )  { $wk_ang_quo = $wk_ang_fia - 90 }
      else                     { $wk_ang_quo = $wk_ang_fia + 90 }


      //PAGINA 1
      if( $DIS_TO_GEMO == 0 )  { GOSUB StampaProd_FianchiFinC_R1_WW_QuotaP1 }

      GOSUB NomeDisegno
      GOSUB StampaLayout

      if( $DIS_TO_GEMO == 0 ) { GOSUB CancellaScritteQuote }

      ResetVarStampa("flag_stampa")
      ResetVarStampa("flag_stampa_col")
      ResetVarStampa("flag_stampa_tratt")

      //PAGINA 2
      if( $DIS_TO_GEMO == 0 )  { GOSUB StampaProd_FianchiFinC_R1_WW_QuotaP2 }

      GOSUB NomeDisegno
      GOSUB StampaLayout

      if( $DIS_TO_GEMO == 0 ) { GOSUB CancellaScritteQuote }

      ResetVarStampa("flag_stampa")
      ResetVarStampa("flag_stampa_col")
      ResetVarStampa("flag_stampa_tratt")

      ScriviSuLog($wk_log,"StampaProd_FianchiFinC_R1",STRCAT("IDX=",STR($wk_idx_fia) , " R1_WW - FINE"))
   }

   //Pagina1: quota lamiera (dimensione)
   //         quota posizione perni
   PROCEDURA StampaProd_FianchiFinC_R1_WW_QuotaP1
   {
      ScriviSuLog($wk_log,"StampaProd_FianchiFinC_R1",STRCAT("IDX=",STR($wk_idx_fia) , " R1_WW_P1"))

      //PAGINA 1
      VAR_VALUE_SET($wk_idx_fia ,"flag_stampa_tratt",1)

      VAR_VALUE_SET($wk_idx_lamiera, "flag_stampa", 1)
      VAR_VALUE_SET($wk_idx_lamiera, "flag_stampa_col", 1)

      //QUOTO DIMENSIONI LAMIERA
      ScriviSuLog($wk_log,"StampaProd_FianchiFinC_R1",STRCAT("IDX=",STR($wk_idx_fia) , " R1_WW_P1 - LAMIERA"))
      GOSUB StampaProd_FianchiFinitura_Cuc_Lamiera_R3_QuotaLamiera

      //QUOTA PERNI
      ScriviSuLog($wk_log,"StampaProd_FianchiFinC_R1",STRCAT("IDX=",STR($wk_idx_fia) , " R1_WW_P1 - PERNI"))
      GOSUB StampaProd_FianchiFinC_R1_WW_QuotaPerni

      ScriviSuLog($wk_log,"StampaProd_FianchiFinC_R1",STRCAT("IDX=",STR($wk_idx_fia) , " R1_WW_P1 FINE"))
   }

   PROCEDURA StampaProd_FianchiFinC_R1_WW_QuotaPerni
   {
      COMPONENTI2("$wk_perni", $wk_idx_fia, "FFPerno")

      //array per le quote in altezza dei perni
      $wk_perni_qa = 0
      $wk_perni_ql = 0

      //per ogni perno calcolo la distanza da b0 della lamiera
      $wk_ii = 1
      while ( $wk_ii <= $wk_perni )
      {
         $wk_idx_perno = $wk_perni[$wk_ii]
         SET_#($wk_idx_perno)

         $wk_disty = #pnt_centro.y - $wk_lam_b0.y
         AddItem2Array(-1,"wk_perni_qa",$wk_disty,"")

         $wk_pc   = #pnt_centro
         $wk_pc.y = $wk_lam_b0.y
         $wk_px = INTERFERISCI($wk_pc, $wk_ang_fia , $wk_lam_b0,$wk_lam_b1)
         if($wk_px.x!=$ERR_INTER & $wk_px.y!=$ERR_INTER & $wk_px.z!=$ERR_INTER)
         {
            $wk_distx = DISTANZA($wk_px,$wk_lam_b2)
            if( $wk_verso=="DX" ) { $wk_distx = DISTANZA($wk_px,$wk_lam_b0)  }
            AddItem2Array(-1,"wk_perni_ql",$wk_distx,"")
         }

         VAR_VALUE_SET($wk_idx_perno, "flag_stampa", 1)

         $wk_ii = $wk_ii + 1
      }

      SORT_ARRAY(-1,"wk_perni_qa")
      SORT_ARRAY(-1,"wk_perni_ql")

      //quoto altezza a sx
      $alias_scr     = "ScrittaRossa"
      $AliasQuota    = "QuotaRossa"
      $AliasQuotaLat = "QuotaLRossa"

      $wk_faccia     = "F"
      $wk_dp = 9999
      $wk_nq = 0

      $wk_ii = 1
      while ( $wk_ii <= $wk_perni_qa )
      {
         if( $wk_perni_qa[$wk_ii] != $wk_dp )
         {
            $wk_dp = $wk_perni_qa[$wk_ii]
            $wk_nq = $wk_nq + 1

            $dist = 50*$wk_nq
            $ang_scr    = 0
            $ang_quoSCH = $wk_ang_quo
            $wk_stile   = 0

            $wk_offq = 10

            $P1 = $wk_lam_b2
            if( $wk_verso=="DX" ) { $P1 = $wk_lam_b0 }

            $P2 = $P1            $P2.y = $P2.y + $wk_perni_qa[$wk_ii]

            //$P1.x =  $P1.x + COSENO($wk_ang_quo)*$wk_offq
            //$P1.z =  $P1.z -   SENO($wk_ang_quo)*$wk_offq
            //$P2.x =  $P2.x + COSENO($wk_ang_quo)*$wk_offq
            //$P2.z =  $P2.z -   SENO($wk_ang_quo)*$wk_offq

            $d = DISTANZA($P1,$P2)
            //$testo = STR(FLOOR($d+0.5))
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuotaSchienale

            $wk_stile   = 0
            $P1 = $P2
            $P2 = $wk_lam_a2
            if( $wk_verso=="DX" ) { $P2 = $wk_lam_a0 }

            //$P1.x =  $P1.x + COSENO($wk_ang_quo)*$wk_offq
            //$P1.z =  $P1.z -   SENO($wk_ang_quo)*$wk_offq
            //$P2.x =  $P2.x + COSENO($wk_ang_quo)*$wk_offq
            //$P2.z =  $P2.z -   SENO($wk_ang_quo)*$wk_offq

            $d = DISTANZA($P1,$P2)
            //$testo = STR(FLOOR($d+0.5))
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuotaSchienale
         }

         $wk_ii = $wk_ii + 1
      }

      //quoto larghezza SOTTO
      //$alias_scr     = "ScrittaBlu"
      //$AliasQuota    = "QuotaBlu"
      //$AliasQuotaLat = "QuotaLBlu"

      $wk_faccia     = "F"
      $wk_dp = 9999
      $wk_nq = 0
      $ang_quoSCH = 0

      $wk_ii = 1
      while ( $wk_ii <= $wk_perni_ql )
      {
         if( $wk_perni_ql[$wk_ii] != $wk_dp )
         {
            $wk_dp = $wk_perni_ql[$wk_ii]
            $wk_nq = $wk_nq + 1

            $dist = -50*$wk_nq
            $ang_scr    = 0
            $ang_quoSCH = 0
            $wk_stile   = 0

            $wk_offq = 10

            $P1 = $wk_lam_b2
            $P2.x = $P1.x -   SENO($wk_ang_fia)*($wk_dp)
            $P2.y = $P1.y
            $P2.z = $P1.z - COSENO($wk_ang_fia)*($wk_dp)

            if( $wk_verso=="DX" )
            {
               $P1 = $wk_lam_b0
               $P2.x = $P1.x   + SENO($wk_ang_fia)*($wk_dp)
               $P2.y = $P1.y
               $P2.z = $P1.z   + COSENO($wk_ang_fia)*($wk_dp)
            }

            $d = DISTANZA($P1,$P2)
            //$testo = STR(FLOOR($d+0.5))
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuotaSchienale

            $wk_stile   = 0
            $P1 = $P2
            $P2 = $wk_lam_b3
            if( $wk_verso=="DX" ) { $P2 = $wk_lam_b1 }

            $d = DISTANZA($P1,$P2)
            //$testo = STR(FLOOR($d+0.5))
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuotaSchienale
         }

         $wk_ii = $wk_ii + 1
      }
   }

   //Pagina2: quota posizione/dimensioni magneti
   PROCEDURA StampaProd_FianchiFinC_R1_WW_QuotaP2
   {
      ScriviSuLog($wk_log,"StampaProd_FianchiFinC_R1",STRCAT("IDX=",STR($wk_idx_fia) , " R1_WW_P2"))

      //PAGINA 2
      VAR_VALUE_SET($wk_idx_fia ,"flag_stampa_tratt",1)

      VAR_VALUE_SET($wk_idx_lamiera, "flag_stampa", 1)
      VAR_VALUE_SET($wk_idx_lamiera, "flag_stampa_col", 1)

      //attivo grafica perni
      $wk_ii = 1
      while ( $wk_ii <= $wk_perni )
      {
         $wk_idx_perno = $wk_perni[$wk_ii]
         VAR_VALUE_SET($wk_idx_perno, "flag_stampa", 1)

         $wk_ii = $wk_ii + 1
      }

      WITH_VAR_LOCAL($wk_idx_fia,"$wk_mag","FFMagneteWW_Quota",$num_con_figli,1,"1")

      ArraySortVarNum(-1, "wk_mag", "base0y_abs")

      $wk_mag_qa = 0
      $wk_mag_ql = 0

      $wk_ii = 1
      while ( $wk_ii <= $wk_mag )
      {
         $wk_idx_mag = $wk_mag[$wk_ii]
         SET_#($wk_idx_mag)

         VAR_VALUE_SET($wk_idx_mag, "flag_stampa", 1)

         //Altezza
         $wk_disty_b0  = #base_0.y - $wk_lam_b0.y
         $wk_disty_str = STRCAT( STR($wk_disty_b0), ";", STR(#Y))

         AddItem2Array_IfNotExist( -1, "wk_mag_qa", 0, $wk_disty_str)

         //Larghezza
         $wk_pc = #base_1
         if( VAR_VAL_STR( PADRE( $wk_idx_mag, 1), "faccia") == "D" )    { $wk_pc = #base_0 }

         if( $wk_verso == "DX" )
         {
            $wk_pc = #base_0
            if( VAR_VAL_STR( PADRE( $wk_idx_mag, 1), "faccia") == "S" ) { $wk_pc = #base_1 }
         }

         $wk_pc.y = $wk_lam_b0.y

         $wk_px = INTERFERISCI($wk_pc, $wk_ang_fia, $wk_lam_b0, $wk_lam_b1)
         if( $wk_px.x != $ERR_INTER & $wk_px.y != $ERR_INTER & $wk_px.z != $ERR_INTER)
         {
            $wk_distx  = DISTANZA( $wk_px, $wk_lam_b2)
            if( $wk_verso == "DX" ) { $wk_distx = DISTANZA( $wk_px, $wk_lam_b0) }

            $wk_distx_str = STRCAT( STR($wk_distx), ";", STR(#Z))

            AddItem2Array_IfNotExist( -1, "wk_mag_ql", 0, $wk_distx_str)
         }

         $wk_ii = $wk_ii + 1
      }

      //quoto altezza a sx
      $alias_scr     = "ScrittaRossa"
      $AliasQuota    = "QuotaRossa"
      $AliasQuotaLat = "QuotaLRossa"

      $wk_faccia     = "F"
      $wk_dp = 9999
      $wk_nq = 0

      $wk_ii = 1
      while ( $wk_ii <= $wk_mag_qa )
      {
         STR_SPLIT( $wk_mag_qa[$wk_ii], ";", 1, "wk_mag_qa_array", -1)

         $wk_mag_qa_dist = ATOI($wk_mag_qa_array_##1)
         $wk_mag_qa_dim  = ATOI($wk_mag_qa_array_##2)

         if( $wk_mag_qa_dist != $wk_dp )
         {
            $wk_dp = $wk_mag_qa_dist
            $wk_nq = $wk_nq + 1

            $dist       = 50*$wk_nq
            $ang_scr    = 0
            $ang_quoSCH = $wk_ang_quo
            $wk_stile   = 0

            $wk_offq = 10

            $P1 = $wk_lam_b2
            if( $wk_verso=="DX" ) { $P1 = $wk_lam_b0 }
            $P2 = $P1            $P2.y = $P2.y + $wk_mag_qa_dist

            $d = DISTANZA($P1,$P2)
            if( $d < 20 ) { $wk_stile = 1 }
            $testo = STR(MRound( $d, 0.1))
            GOSUB PosizionaQuotaSchienale

            $wk_stile = 0
            $P1 = $P2
            $P2 = $P1    $P2.y = $P2.y + $wk_mag_qa_dim

            $d = DISTANZA($P1,$P2)
            $testo = STR(MRound( $d, 0.1))
            GOSUB PosizionaQuotaSchienale

            $wk_stile   = 0
            $P1 = $P2
            $P2 = $wk_lam_a2
            if( $wk_verso=="DX" ) { $P2 = $wk_lam_a0 }

            $d = DISTANZA($P1,$P2)
            if( $d < 20 ) { $wk_stile = 1 }
            $testo = STR(MRound( $d, 0.1))
            GOSUB PosizionaQuotaSchienale
         }

         $wk_ii = $wk_ii + 1
      }

      //quoto larghezza SOTTO
      //$alias_scr     = "ScrittaBlu"
      //$AliasQuota    = "QuotaBlu"
      //$AliasQuotaLat = "QuotaLBlu"

      $wk_faccia     = "F"
      $wk_dp = 9999
      $wk_nq = 0
      $ang_quoSCH = 0

      $wk_ii = 1
      while ( $wk_ii <= $wk_mag_ql )
      {
         STR_SPLIT( $wk_mag_ql[$wk_ii], ";", 1, "wk_mag_ql_array", -1)

         $wk_mag_ql_dist = ATOI($wk_mag_ql_array_##1)
         $wk_mag_ql_dim  = ATOI($wk_mag_ql_array_##2)

         if( $wk_mag_ql_dist != $wk_dp )
         {
            $wk_dp = $wk_mag_ql_dist
            $wk_nq = $wk_nq + 1

            $P1 = $wk_lam_b2
            $P2.x = $P1.x -   SENO($wk_ang_fia)*($wk_dp)
            $P2.y = $P1.y
            $P2.z = $P1.z - COSENO($wk_ang_fia)*($wk_dp)

            if( $wk_verso=="DX" )
            {
               $P1 = $wk_lam_b0
               $P2.x = $P1.x   + SENO($wk_ang_fia)*($wk_dp)
               $P2.y = $P1.y
               $P2.z = $P1.z   + COSENO($wk_ang_fia)*($wk_dp)
            }

            $d = DISTANZA($P1,$P2)
            $testo = STR(MRound( $d, 0.1))

            $dist       = -50*$wk_nq
            $ang_scr    = 0
            $ang_quoSCH = 0
            $wk_stile   = 0
            $wk_offq    = 10

            if( $d < 20 ) { $dist = $dist * 1.2  $wk_stile = 1  $wk_scosta = 0 }
            GOSUB PosizionaQuotaSchienale


            $wk_dimmag = $wk_mag_ql_dim
            $P1 = $P2
            $P2.x = $P1.x - SENO($wk_ang_fia)*($wk_dimmag)
            $P2.y = $P1.y
            $P2.z = $P1.z - COSENO($wk_ang_fia)*($wk_dimmag)

            if( $wk_verso=="DX" )
            {
               $P2.x = $P1.x   + SENO($wk_ang_fia)*($wk_dimmag)
               $P2.y = $P1.y
               $P2.z = $P1.z   + COSENO($wk_ang_fia)*($wk_dimmag)
            }

            $d = DISTANZA($P1,$P2)
            $testo = STR(MRound( $d, 0.1))

            $dist       = -50*$wk_nq
            $ang_scr    = 0
            $ang_quoSCH = 0
            $wk_stile   = 0
            $wk_offq    = 10

            GOSUB PosizionaQuotaSchienale

            $P1 = $P2
            $P2 = $wk_lam_b3
            if( $wk_verso=="DX" ) { $P2 = $wk_lam_b1 }

            $d = DISTANZA($P1,$P2)
            $testo = STR(MRound( $d, 0.1))

            $dist       = -50*$wk_nq
            $ang_scr    = 0
            $ang_quoSCH = 0
            $wk_stile   = 0
            $wk_offq    = 10

            if( $d < 20 ) { $dist = $dist * 1.2  $wk_stile = 1  $wk_scosta = 0 }
            GOSUB PosizionaQuotaSchienale
         }

         $wk_ii = $wk_ii + 1
      }

      ScriviSuLog($wk_log,"StampaProd_FianchiFinC_R1",STRCAT("IDX=",STR($wk_idx_fia) , " R1_WW_P2 FINE"))
   }

   //*****************************************************
   //} FIANCHI FINITURA CUCINA
   //*****************************************************

   // Se più di un elemento ww, riallego stampa fine ordine con set differente
   PROCEDURA StampaProd_Assieme_WW
   {
      Stampa_Set       = "0032"
      Stampa_Nome_Suff = "-FINE_ORDINE"

      // 0 - Colleziono elementi idonei
      $wk_itm_ww = 0

      // 0.1 - Strutture
      STRUTTURE("$wk_str")

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

      // 0.2 - Elementi gestionali per ogni struttura, analizzo finchè non ne trovo almeno 2
      //       Devo valutare la finitura sui livelli gestionali foglia,
      //       quindi se un elemento gestionale ha dei figli gestionali con la stessa categoria, lo scarto
      // NOTA: Attualmente non riesco a pensare ad un modo migliore per identificare gli elementi di finitura foglia
      wk_str_num = 1
      while( $wk_itm_ww < 2
           & wk_str_num <= $wk_str)
      {
         wk_str_att = $wk_str[wk_str_num]

         // 0.2.1 - Per ogni struttura trovo eventuali figli gestionali, escludo quelli non selezionati
         //         Se non ce ne sono, utilizzo la struttura stessa
         WITH_VAR_LOCAL( wk_str_att, "$wk_itm_gest", "ORD_COD", $alfa_con_figli, 0, "")
         if( $wk_itm_gest <= 0) { AddItem2Array( -1, "wk_itm_gest", wk_str_att, "") }

         wk_itm_gest_num = 1
         while( wk_itm_gest_num <= $wk_itm_gest)
         {
            wk_itm_gest_att = $wk_itm_gest[wk_itm_gest_num]

            if( CheckSel_ORD_SOST(wk_itm_gest_att) != 1)
            {
               DEL_ARRAY_ITEM( -1, "wk_itm_gest", wk_itm_gest_num)
               wk_itm_gest_num = wk_itm_gest_num - 1
            }

            wk_itm_gest_num = wk_itm_gest_num + 1
         }

         // 0.2.2 - Analizzo livelli gestionali trovati
         wk_itm_gest_num = 1
         while( wk_itm_gest_num <= $wk_itm_gest)
         {
            wk_itm_gest_att    = $wk_itm_gest[wk_itm_gest_num]
            wk_itm_gest_added  = 0

            LISTA_VARIABILI( wk_itm_gest_att, 0, "$wk_var_gest", "GEST_*")

            wk_var_gest_num = 1
            while( wk_itm_gest_added == 0
                 & wk_var_gest_num <= $wk_var_gest)
            {
               wk_itm_gest_foglia = 1
               wk_var_gest_att    = $wk_var_gest[wk_var_gest_num]
               wk_val_gest_att    = VAR_VAL_STR( wk_itm_gest_att, wk_var_gest_att)

               wk_ns_str_test     = STRCAT( wk_var_gest_att, ";", wk_val_gest_att)
               wk_ns_gest_att     = STRDADB( wk_itm_gest_att, "DAMMI_NONSIGNIF", wk_ns_str_test)

               if( wk_ns_gest_att == "WW000")
               {
                  // 0.2.2.1 - Verifico non ci siano altri figli con la stessa categoria
                  //           In altre parole, per la categoria corrente, devo essere il livello foglia
                  WITH_VAR_LOCAL( wk_itm_gest_att, "$wk_itm_gest_fgl", wk_var_gest_att, $alfa_con_figli, 0, "")

                  wk_itm_gest_fgl_num = 1
                  while( wk_itm_gest_foglia > 0
                       & wk_itm_gest_fgl_num <= $wk_itm_gest_fgl)
                  {
                     wk_itm_gest_fgl_att     = $wk_itm_gest_fgl[wk_itm_gest_fgl_num]
                     wk_itm_gest_fgl_val_att = VAR_VAL_STR( wk_itm_gest_fgl_att, wk_var_gest_att)

                     if( wk_itm_gest_fgl_att != wk_itm_gest_att
                       & CheckSel_ORD_SOST(wk_itm_gest_fgl_att) == 1
                       & REPLACE( wk_itm_gest_fgl_val_att, "__", "") != ""
                       & GetItemPos( -1, "wk_itm_gest", wk_itm_gest_fgl_att, "") > 0) { wk_itm_gest_foglia = 0 }

                     wk_itm_gest_fgl_num = wk_itm_gest_fgl_num + 1
                  }

                  if( wk_itm_gest_foglia > 0)
                  {
                     AddItem2Array( -1, "wk_itm_ww", wk_itm_gest_att, "")
                     wk_itm_gest_added = 1
                  }

                  //COMANDO2( STRCAT( "LOGMSG StampaProd_Assieme_WW ", STR(wk_itm_gest_num), "/", STR($wk_itm_gest), " - ", STR(wk_itm_gest_att), "_", NOME(wk_itm_gest_att), ":",
                  //                                                   " - wk_var_gest_att: ", wk_var_gest_att,
                  //                                                   " - wk_val_gest_att: ", wk_val_gest_att,
                  //                                                   " - wk_ns_gest_att: ", wk_ns_gest_att,
                  //                                                   " - wk_itm_gest_foglia: ", STR(wk_itm_gest_foglia),
                  //                                                   " - wk_itm_gest_added: ", STR(wk_itm_gest_added)))
               }

               wk_var_gest_num = wk_var_gest_num + 1
            }

            wk_itm_gest_num = wk_itm_gest_num + 1
         }

         wk_str_num = wk_str_num + 1
      }

      // 1 - Se ho trovato più elementi ww, riallego stampa fine ordine con set stampa differente
      if( $wk_itm_ww <= 1) { EXITSUB() }

      Stampa_File = STRCAT( $path_wmf, $path_archivio, $File, Stampa_Nome_Suff, ".pdf")

      wk_distogemo_str   = STRCAT( Stampa_File, ";", Stampa_Set)
      wk_distogemo_stato = STRDADB( -1, "DIS_TO_GEMO", wk_distogemo_str)
   }

   PROCEDURA StampaProd_WallPanel
   {
      debug = 0
      #ifdef TE
         debug = 1
      #endif

      if( debug==1 ) { COMANDO2(STRCAT("LOGMSG [ StampaProd_WallPanel INIZIO")) }

      WITH_ALIAS("$wk_wp","StpWallPanel")

      $wk_i = 1
      while( $wk_i <= $wk_wp )
      {
         $wk_wp_att = $wk_wp[$wk_i]
         $wk_wp_att_all = VAR_VAL( $wk_wp_att, "ALLEGATI")
         $wk_wp_att_tall = VAR_VAL( $wk_wp_att, "T_ALLEGATI")

         if( $wk_wp_att_tall - $wk_wp_att_all > 0
           | ( VAR_VAL( $wk_wp_att, "flag_stampa") <= 0
             & IS_VAR_FIXED( $wk_wp_att, "flag_stampa") == 1)
           )
         {
            DEL_ARRAY_ITEM( -1, "wk_wp", $wk_i)
            $wk_i = $wk_i - 1
         }

         $wk_i = $wk_i + 1
      }

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

      COMANDO2("M4_SHOW Ambienti Hide")
      COMANDO2("SHOW None")
      COMANDO2("SHOW Abilita Off")

      $wk_i = 1
      while ( $wk_i<=$wk_wp )
      {
         $wk_idx_wp = $wk_wp[$wk_i]
         SET_#($wk_idx_wp)

         GOSUB InizioStampaPDF
         GOSUB InfoCartiglioGen

         //Luca 27/01/2022
         $wk_idx_riga      = $wk_idx_wp
         $SET_STAMPA       = "0027"

         $wk_STP_DIS_Titolo = "STAMPA WALL PANEL"
         //Simone 11/07/2022
         if( NOME($wk_idx_wp) == "GlassMirror" ) { $SET_STAMPA = "0007"  $wk_STP_DIS_Titolo = "STAMPA GLASS MIRROR" }
         if( NOME($wk_idx_wp) == "368_Mirror" )  { $SET_STAMPA = "0003"  $wk_STP_DIS_Titolo = "STAMPA 36e8 MIRROR"  }

         $wk_STP_DIS_LBL_5 = "Operatore:"
         $wk_STP_DIS_5     = VAR_VAL_STR( -1, "CodOperatore")
         $wk_STP_DIS_LBL_6 = ""
         $wk_STP_DIS_6     = ""

         $wk_STP_TitoloInfo = "INFORMAZIONI"
         $wk_STP_DIS_TitoloDisegno = "VISTA RETRO"
         $wk_STP_DIS_TitoloDisegno2 = ""

         //Codice + descrizione
         $wk_STP_DIS_VAR1 = VAR_VAL_STR($wk_idx_wp,"DescEdit__")
         if( VAR_VAL( $wk_idx_wp, "ORD_RID") > 0 )
         {
            $wk_STP_DIS_VAR1 = STRCAT( $wk_STP_DIS_VAR1, " (SPECIALE RID ", STR(#Xr), " x ", STR(#Yr), " x ", STR(#Z), ")")
         }

         //finitura - vetro
         $wk_STP_DIS_VAR2 = GetDescCatVal($wk_idx_wp,"C042","CAT")
         $wk_STP_DIS_VAL2 = GetDescCatVal($wk_idx_wp,"C042","VAL")
         if( VAR_VAL($wk_idx_wp,"Fin_WP")==1 )
         {
            //finitura - metallo
            $wk_STP_DIS_VAR2 = GetDescCatVal($wk_idx_wp,"C028","CAT")
            $wk_STP_DIS_VAL2 = GetDescCatVal($wk_idx_wp,"C028","VAL")
         }

         if( NOME($wk_idx_wp) == "368_Mirror"
           & VAR_VAL($wk_idx_wp,"n_vtr") > 1 )
         {
            //fasce orizzontali
            if( VAR_EXIST($wk_idx_wp, "GEST_C190") )
            {
               $wk_STP_DIS_VAR2 = GetDescCatVal($wk_idx_wp,"C190","CAT")
               $wk_STP_DIS_VAL2 = GetDescCatVal($wk_idx_wp,"C190","VAL")

               $wk_STP_DIS_VAR3 = GetDescCatVal($wk_idx_wp,"C191","CAT")
               $wk_STP_DIS_VAL3 = GetDescCatVal($wk_idx_wp,"C191","VAL")
            }
            //fasce verticali
            if( VAR_EXIST($wk_idx_wp, "GEST_C193") )
            {
               $wk_STP_DIS_VAR2 = GetDescCatVal($wk_idx_wp,"C193","CAT")
               $wk_STP_DIS_VAL2 = GetDescCatVal($wk_idx_wp,"C193","VAL")

               $wk_STP_DIS_VAR3 = GetDescCatVal($wk_idx_wp,"C194","CAT")
               $wk_STP_DIS_VAL3 = GetDescCatVal($wk_idx_wp,"C194","VAL")
            }
            //fascia intermedia
            if( VAR_EXIST($wk_idx_wp, "GEST_C192") )
            {
               $wk_STP_DIS_VAR4 = GetDescCatVal($wk_idx_wp,"C192","CAT")
               $wk_STP_DIS_VAL4 = GetDescCatVal($wk_idx_wp,"C192","VAL")
            }
            if( $wk_STP_DIS_VAL4=="__" )
            {
               $wk_STP_DIS_VAR4 = ""
               $wk_STP_DIS_VAL4 = ""
            }
         }

         //Tipologia
         $wk_STP_DIS_VAR5 = GetDescCatVal($wk_idx_wp,"C037","CAT")
         $wk_STP_DIS_VAL5 = GetDescCatVal($wk_idx_wp,"C037","VAL")
         if( $wk_STP_DIS_VAL5=="__" )
         {
            $wk_STP_DIS_VAR5 = ""
            $wk_STP_DIS_VAL5 = ""
         }

         //Lavorazioni
         $wk_STP_DIS_VAR6 = GetDescCatVal($wk_idx_wp,"C008","CAT")
         $wk_STP_DIS_VAL6 = GetDescCatVal($wk_idx_wp,"C008","VAL")
         if( $wk_STP_DIS_VAL6=="__" )
         {
            $wk_STP_DIS_VAR6 = ""
            $wk_STP_DIS_VAL6 = ""
         }

         //Illuminazione
         if( VAR_EXIST( $wk_idx_wp, "GEST_C166") )
         {
            $wk_STP_DIS_VAR7 = GetDescCatVal($wk_idx_wp,"C166","CAT")
            $wk_STP_DIS_VAL7 = GetDescCatVal($wk_idx_wp,"C166","VAL")
         }
         if( $wk_STP_DIS_VAL7=="__" )
         {
            $wk_STP_DIS_VAR7 = ""
            $wk_STP_DIS_VAL7 = ""
         }

         //Speciale
         if( VAR_EXIST( $wk_idx_wp, "GEST_C160") )
         {
            $wk_STP_DIS_VAR8 = GetDescCatVal($wk_idx_wp,"C160","CAT")
            $wk_STP_DIS_VAL8 = GetDescCatVal($wk_idx_wp,"C160","VAL")
         }
         if( $wk_STP_DIS_VAL8=="__" )
         {
            $wk_STP_DIS_VAR8 = ""
            $wk_STP_DIS_VAL8 = ""
         }

         $VAR_AnteprimaDiStampa = 1
         if( $OnTerminate==1 ) { $VAR_AnteprimaDiStampa = 0 }

         $wk_suffisso_emf = "WALLPANEL"
         if( NOME($wk_idx_wp) == "GlassMirror" ) { $wk_suffisso_emf = "GLASSMIRROR" }
         if( NOME($wk_idx_wp) == "368_Mirror" )  { $wk_suffisso_emf = "36e8MIRROR"  }

         //Luca 04/11/2020 mantis 23741: Stampe tecniche: modifica nome
         if( VAR_EXIST($wk_idx_wp,"IDX_GEST") ) { $POSTNOMESTAMPA = STRCAT("-", $wk_suffisso_emf, "_",STR(#IDX_GEST)) }
         else                                   { $POSTNOMESTAMPA = STRCAT("-", $wk_suffisso_emf, "_(",STR($wk_idx_wp),")") }

         VAR_CREATE_NUM(-1,STRCAT("wk_pagina_",$wk_suffisso_emf),0,0,"")

         $wk_stampa_WP = "FRONTE"
         GOSUB StampaProd_WallPanel_Sub

         $wk_stampa_WP = "RETRO"
         GOSUB StampaProd_WallPanel_Sub

         GOSUB FineStampaPDF
         $wk_suffisso_PDF = ""

         GOSUB CancellaGlobaliStp

         $wk_i = $wk_i + 1
      }

      COMANDO2("M4_SHOW Ambienti Show")
      COMANDO2("SHOW Abilita On")
      COMANDO2("SHOW All")

      if( debug==1 ) { COMANDO2(STRCAT("LOGMSG ]  StampaProd_WallPanel")) }
   }

   PROCEDURA StampaProd_WallPanel_Sub
   {
      $wk_STP_DIS_TitoloDisegno = "VISTA FRONTE"
      if( $wk_stampa_WP == "RETRO" )
      {
         $wk_STP_DIS_TitoloDisegno = "VISTA RETRO PANNELLO"
      }

      //revisione 0 non fa la stampa fronte
      if( VAR_VAL($wk_idx_wp,"VAR_Revisione") == 0 )
      {
         if( $wk_stampa_WP == "FRONTE" )  { EXITSUB() }
      }

      //revisione 1 fa sempre la stampa fronte, stampa retro solo se presenti gli scassi
      if( VAR_VAL($wk_idx_wp,"VAR_Revisione") == 1 )
      {
         COMPONENTI2("$wk_cmp_scs", $wk_idx_wp, "Scasso_WallPanel")

         if( NOME($wk_idx_wp) == "GlassMirror"
           | NOME($wk_idx_wp) == "368_Mirror" )
         {
            COMPONENTI2("$wk_cmp_trasf", $wk_idx_wp, "LavTrasformatoreLED_368")

            $wk_j = 1
            while( $wk_j <= $wk_cmp_trasf )
            {
               AddItem2Array( -1, "wk_cmp_scs", $wk_cmp_trasf[$wk_j], "")
               $wk_j = $wk_j + 1
            }
         }

         if( $wk_cmp_scs == 0 & $wk_stampa_WP == "RETRO" )  { EXITSUB() }
      }

      $wk_FORM_view = "Front"
      if( $wk_stampa_WP == "RETRO" ) { $wk_FORM_view = "Back" }

      $adatta_dim_quote_idx_ref = $wk_idx_wp
      GOSUB adatta_dim_quote

      //linee e scritte
      $wk_SP_LINEA_MOBILI       = $TSTP_SP_LINEA_MOBILI
      $wk_SP_LINEA_MOBILI_TRATT = $TSTP_SP_LINEA_TRATTEGGIO
      $wk_SP_LINEA_SCRITTE      = 1
      $wk_SP_LINEA_QUOTE        = 1

      //dimensione form
      $wk_FORM_dW =  5
      $wk_FORM_dH =  45
      $wk_FORM_W  =  285
      $wk_FORM_H  =  154

      //form e layout
      $wk_nome_form = "Stampa_Top2_O.emf"
      $wk_nome_layout = "WallPanel"

      $wk_ang_wp = ANG_TOT2($wk_idx_wp)

      $wk_view_roll    = STRCAT( STR(-1*$wk_ang_wp) ," 0" )

      if( $DIS_TO_GEMO==0 )  { GOSUB StampaProd_WallPanel_Quota }

      GOSUB NomeDisegno
      GOSUB StampaLayout

      if( $DIS_TO_GEMO==0 ) { GOSUB CancellaScritteQuote }

      ResetVarStampa("flag_stampa")
      ResetVarStampa("flag_stampa_tratt")
   }

   PROCEDURA StampaProd_WallPanel_Quota
   {
      $alias_scr     = "STP_SCR_TOP"
      $AliasQuota    = "STP_QUO_TOP"
      $AliasQuotaLat = "STP_QUO_TOP"
      $wk_faccia = "F"

      $HChar   = $Yscr/6        $LChar   = $Xscr/6
      $Alt_Chr = $Yscr/2        $Lar_Chr = $Xscr/2

      $ang_scr = 0

      SET_#($wk_idx_wp)

      //Flag di stampa, disabilito trasformatore, se retro tratteggio pannello
      VAR_VALUE_SET($wk_idx_wp ,"flag_stampa",1)

      if( IsIdx( $wk_idx_wp, "idx_pan")
        & IsIdx( $wk_idx_wp, "idx_pannello") )
      {
         VAR_VALUE_SET( $wk_idx_wp, "flag_stampa", 0)

         if( $wk_stampa_WP == "FRONTE" )
         {
            //Rendo comunque visibile il pannello retro per riportare l'illuminazione
            VAR_VALUE_SET( #idx_pan, "flag_stampa", 1)
            VAR_VALUE_SET( #idx_pannello, "flag_stampa", 1)
         }

         if( $wk_stampa_WP == "RETRO" )
         {
            VAR_VALUE_SET( #idx_pan, "flag_stampa", 1)
            VAR_VALUE_SET( #idx_pannello, "flag_stampa_tratt", 1)

            COMPONENTI2("$wk_cmp_trasf", $wk_idx_wp, "LavTrasformatoreLED_368")
            $wk_j = 1
            while( $wk_j <= $wk_cmp_trasf )
            {
               VAR_VALUE_SET( $wk_cmp_trasf[$wk_j], "flag_stampa", 1)
               $wk_j = $wk_j + 1
            }
         }
      }

      $wk_b0 = #stp_base_0    $wk_a0 = #stp_alto_0
      $wk_b1 = #stp_base_1    $wk_a1 = #stp_alto_1
      $wk_b2 = #stp_base_2    $wk_a2 = #stp_alto_2
      $wk_b3 = #stp_base_3    $wk_a3 = #stp_alto_3

      if( VAR_VAL($wk_idx_wp,"VAR_Revisione") == 1
        &  $wk_stampa_WP == "RETRO"  )
      {
         SET_#(#idx_pan)

         $wk_b0 = #base_0     $wk_a0 = #alto_0
         $wk_b1 = #base_1     $wk_a1 = #alto_1
         $wk_b2 = #base_2     $wk_a2 = #alto_2
         $wk_b3 = #base_3     $wk_a3 = #alto_3
      }

      //LARGHEZZA TOTALE SOTTO
      $ang_quoSCH = 0
      $dist = -80

      $wk_stile = 0
      $P1 = $wk_b3
      $P2 = $wk_b0

      if( $wk_stampa_WP == "FRONTE" )
      {
         $P1 = $wk_b0
         $P2 = $wk_b3
      }
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))
      GOSUB PosizionaQuotaSchienale


      //ALTEZZA TOTALE SX
      $ang_quoSCH = ANG_TOT2($wk_idx_wp) + 180
      $dist = -80

      $wk_stile = 0
      $P1 = $wk_b0
      $P2 = $wk_a0

      if( $wk_stampa_WP == "FRONTE" )
      {
         $ang_quoSCH = ANG_TOT2($wk_idx_wp)
         $P1 = $wk_a0
         $P2 = $wk_b0
      }
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))
      GOSUB PosizionaQuotaSchienale

      //dim fasce vetro 368_mirror
      if( $wk_stampa_WP == "FRONTE" )
      {
         COMPONENTI2("$wk_vtr_tmp", $wk_idx_wp, "Vetro_Saponetta_Verniciato")

         $wk_num_f = 1
         while( $wk_num_f <= $wk_vtr_tmp )
         {
            $wk_idx_vtr = $wk_vtr_tmp[$wk_num_f]

            SET_#($wk_idx_vtr)

            $P2 = #pnt_centro
            $testo = STRCAT(STR(#X), " x ", STR(#Y))
            if( VAR_EXIST($wk_idx_vtr,"GEST_C042")) { $testo = STRCAT($testo, " - ", GetDescCatVal($wk_idx_vtr,"C042","VAL")) }
            $point = 5
            $wk_faccia = "F"
            $ang_scr = $wk_ang_wp
            if( VAR_VAL_STR($wk_idx_wp,"orie_vtr") == "V" ) { $wk_senso = 1 }
            GOSUB PosizionaScrittaCAD

            $wk_num_f = $wk_num_f + 1
         }
      }

      //quoto scassi
      if( $wk_stampa_WP == "FRONTE" )
      {
         WITH_VAR_LOCAL($wk_idx_wp,"$wk_scs","Stp_Quota_WP",$num_con_figli,1,"1")
      }
      else
      {
         WITH_VAR_LOCAL($wk_idx_wp,"$wk_scs","Stp_Quota_WP",$num_con_figli,1,"2")
      }

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

      $wk_ang_pan = $wk_ang_wp
      $wk_dist = 80

      $wk_j = 1
      while ( $wk_j <= $wk_scs )
      {
         $wk_idx_scs = $wk_scs[$wk_j]
         SET_#($wk_idx_scs)

         //LARGHEZZA
         $ang_quoSCH = 0
         $dist = $wk_j*$wk_dist

         if( IS_MATCH(NOME($wk_idx_scs),"Blocco*")  == 1 )
         {
            $wk_stile = 0
            $P1 = $wk_a0
            $wk_distanza = DistanzaFraPunti($wk_a0,#base_0,$wk_ang_pan)
            $P2 = $P1
            $P2.x = $P1.x + COSENO($wk_ang_pan)*$wk_distanza
            $P2.z = $P1.z -   SENO($wk_ang_pan)*$wk_distanza
            $d = DISTANZA($P1,$P2)
            if( $d <= 40 ) { $wk_stile = 1 }
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            if( $wk_stampa_WP == "RETRO" ) { $wk_Faccia = "R" }
            GOSUB PosizionaQuotaSchienale

            $wk_stile = 0
            $P1 = $P2
            $wk_distanza = #X
            $P2 = $P1
            $P2.x = $P1.x + COSENO($wk_ang_pan)*$wk_distanza
            $P2.z = $P1.z -   SENO($wk_ang_pan)*$wk_distanza
            $d = DISTANZA($P1,$P2)
            if( $d < 40 ) { $wk_stile = 1 }
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            $wk_linee_quota = 1
            if( $wk_stampa_WP == "RETRO" ) { $wk_Faccia = "R" }
            GOSUB PosizionaQuotaSchienale

            $wk_stile = 0
            $P1 = $P2
            $P2 = $wk_a3
            $d = DISTANZA($P1,$P2)
            if( $d <= 40 ) { $wk_stile = 1 }
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            $wk_linee_quota = 1
            if( $wk_stampa_WP == "RETRO" ) { $wk_Faccia = "R" }
            GOSUB PosizionaQuotaSchienale

            $ang_quoSCH = ANG_TOT_NOR($wk_idx_wp)

            $wk_stile = 0
            $P1 = $wk_a3
            $P2 = $P1
            $P2.y = #base_1.y + #Y
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            if( $d < 40 ) { $wk_stile = 2 }
            if( $wk_stampa_WP == "RETRO" ) { $wk_Faccia = "R" }
            //$wk_linee_quota = 2
            GOSUB PosizionaQuotaSchienale

            $wk_stile = 0
            $P1 = $P2
            $P2 = $P1
            $P2.y = #base_1.y
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            if( $d < 40 ) { $wk_stile = 2 }
            if( $wk_stampa_WP == "RETRO" ) { $wk_Faccia = "R" }
            GOSUB PosizionaQuotaSchienale

            $wk_stile = 0
            $P1 = $P2
            $P2 = $wk_b3
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            if( $d < 40 ) { $wk_stile = 2 }
            if( $wk_stampa_WP == "RETRO" ) { $wk_Faccia = "R" }
            GOSUB PosizionaQuotaSchienale
         }
         else
         {
            $wk_pc = #base_0
            $wk_pc.x = $wk_pc.x + COSENO($wk_ang_pan)*(#X/2)
            $wk_pc.y = $wk_pc.y + #X/2
            $wk_pc.z = $wk_pc.z - SENO($wk_ang_pan)*(#X/2)

            $wk_stile = 0
            $P1 = $wk_a0
            $wk_distanza = DistanzaFraPunti($wk_a0,$wk_pc,$wk_ang_pan)
            $P2 = $P1
            $P2.x = $P1.x + COSENO($wk_ang_pan)*$wk_distanza
            $P2.z = $P1.z -   SENO($wk_ang_pan)*$wk_distanza
            $d = DISTANZA($P1,$P2)
            if( $d <= 40 ) { $wk_stile = 1 }
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            if( $wk_stampa_WP == "RETRO" ) { $wk_Faccia = "R" }
            GOSUB PosizionaQuotaSchienale

            $wk_stile = 0
            $P1 = $P2
            $P2 = $wk_a3
            $d = DISTANZA($P1,$P2)
            if( $d <= 40 ) { $wk_stile = 1 }
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            $wk_linee_quota = 1
            if( $wk_stampa_WP == "RETRO" ) { $wk_Faccia = "R" }
            GOSUB PosizionaQuotaSchienale

            $ang_quoSCH = ANG_TOT_NOR($wk_idx_wp)

            $wk_stile = 0
            $P1 = $wk_a3
            $P2 = $P1
            $P2.y = $wk_pc.y
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            if( $d < 40 ) { $wk_stile = 2 }
            if( $wk_stampa_WP == "RETRO" ) { $wk_Faccia = "R" }
            //$wk_linee_quota = 2
            GOSUB PosizionaQuotaSchienale

            $wk_stile = 0
            $P1 = $P2
            $P2 = $wk_b3
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            if( $d < 40 ) { $wk_stile = 2 }
            if( $wk_stampa_WP == "RETRO" ) { $wk_Faccia = "R" }
            GOSUB PosizionaQuotaSchienale

            //aggiungo il raggio [CHE E' SEMPRE FISSO]
            $P2 = #base_2
            $P2.y = $P2.y - 3
            $testo = STRCAT("d. ",STR(#X))
            $point = 2
            $wk_faccia = "F"
            if( $wk_stampa_WP == "RETRO" ) { $wk_faccia = "R" }
            $ang_scr = $wk_ang_pan
            GOSUB PosizionaScrittaCAD
         }

         //Raggio scassi
         $wk_raggio_scs = VAR_VAL( $wk_idx_scs, "Raggio")
         if( $wk_raggio_scs > 0
           & VAR_EXIST( $wk_idx_scs, "pnt_scs_centro") )
         {
            $P2 = #pnt_scs_centro
            $P2.y = $P2.y - $Alt_Chr/2
            $testo = STRCAT( "R. ", STR($wk_raggio_scs))
            $wk_faccia = "F"
            if( $wk_stampa_WP == "RETRO" ) { $wk_faccia = "R" }
            $point = 5
            $ang_scr = $wk_ang_pan
            GOSUB PosizionaScrittaCAD
         }

         //Dimensione trasformatore
         SET_#(PADRE( $wk_idx_scs, 1))
         if( NOME(#idx_att) == "LavTrasformatoreLED_368" )
         {
            $P2 = #stp_pnt_centro
            //$P2.y = $P2.y - $Alt_Chr/2
            $P2.y = $P2.y + #Y
            $testo = STRCAT( "LAV. TRASF. - ", STR(#X), "x", STR(#Y))
            $wk_faccia = "F"
            if( $wk_stampa_WP == "RETRO" ) { $wk_faccia = "R" }
            $point = 5
            $ang_scr = $wk_ang_pan
            GOSUB PosizionaScrittaCAD
         }

         $wk_j = $wk_j + 1
      }

   }
   // ] Stampe Produzione ---------------------------


   //Luca 17/04/2020 - macro richiamabile da CNP
   PROCEDURA CNP_Stampe
   {
      $wk_CNP_Stampe_AI = 0
      GOSUB StampaColJpg
   }

   PROCEDURA CNP_StampeAI
   {
      $wk_CNP_Stampe_AI = 1
      GOSUB StampaColJpg
   }

   //Luca 17/04/2020 riportata dal 'vecchio'
   // Generazione "silente" della Stampa a Colori in JPG,
   // da chiamare direttamente in fine ordine
   // o in altre macro/procedure
   PROCEDURA StampaColJpg
   {
      GOSUB CERCO_STRUTTURE
      if( $STRUTTURE!=1 )  { EXITSUB() }

      // -----------------------------------------------------
      // 1) Definisco i paramtri per personalizzare la stampa
      // -----------------------------------------------------

      $wk_TSTP_Scala = 1
      $TSTP_STAMPA_IN_CORSO = ""
      GOSUB InfoCartiglioGen_TSTP
      $wk_TSTP_DIS_SCALA = ""

      // Titoli:
      $wk_TSTP_DIS_Titolo = ""
      $wk_TSTP_DIS_TitoloDisegno = ""

      //Luca 20/01/2021 riporto modifiche LAGO
      $wk_TSTP_TitoloInfo=""

      if( $wk_CNP_Stampe_AI == 0 )
      {
         GOSUB ScritteCadPcf

         STRUTTURE("wk_stp_strutt")
         wk_stp_strutt_n=1
         wk_stp_cmp_n=0
         while(wk_stp_strutt_n<=wk_stp_strutt)
         {
           wk_stp_strutt_idx=wk_stp_strutt[wk_stp_strutt_n]
           wk_stp_strutt_cmpcod=VAR_VAL_STR(wk_stp_strutt_idx,"ORD_COD")
           wk_stp_strutt_cmpdes=VAR_VAL_STR(wk_stp_strutt_idx,"ORD_DES")
           if(wk_stp_strutt_cmpcod!="" & VAR_VAL(wk_stp_strutt_idx,"pcfto")>0)
           {
             //Testata
             if($wk_TSTP_TitoloInfo=="") { $wk_TSTP_TitoloInfo = "Composizioni:" }
             wk_stp_cmp_n=wk_stp_cmp_n+1

             EVAL(STRCAT("$wk_TSTP_DIS_VAR",STR(wk_stp_cmp_n),"=",APICI(),STR(wk_stp_cmp_n),": ",wk_stp_strutt_cmpcod,APICI()))
             EVAL(STRCAT("$wk_TSTP_DIS_VAL",STR(wk_stp_cmp_n),"=",APICI(),wk_stp_strutt_cmpdes,APICI()))
           }

           wk_stp_strutt_n=wk_stp_strutt_n+1
         }
      }

      // layout
      $wk_stp_layout_PageSize = "A4"
      $wk_stp_layout_Form = SUBST_LABEL(STRCAT(VAR_VAL_STR(-1, "path_layout"), "TSTP_A4_O.emf"))
      $wk_stp_layout_Landscape = "Yes"

      // logo
      $wk_stp_image_File = STRCAT($path_layout,"LogoLAGO.bmp")
      $wk_stp_image_X =  6
      $wk_stp_image_Y =  6
      $wk_stp_image_W = 32
      $wk_stp_image_H = 10

      // il più grande possibile nello spazio
      $wk_stp_frame_dW =   12
      $wk_stp_frame_dH =   45
      $wk_stp_frame_W  =  272
      $wk_stp_frame_H  =  153

      //Luca 10/12/2020 per stampa AI
      if( $wk_CNP_Stampe_AI == 1 )
      {
         $wk_stp_layout_Form = SUBST_LABEL(STRCAT(VAR_VAL_STR(-1, "path_layout"), "TSTP_A4_O_VUOTO.emf"))

         $wk_stp_frame_dW =  1
         $wk_stp_frame_dH =  1
         $wk_stp_frame_W  =  295
         $wk_stp_frame_H  =  208
      }

      $wk_stp_frame_View  = "as_view"
      $wk_stp_frame_Render = "Yes"
      $wk_stp_frame_RenderQualityFactor = 2
      $wk_stp_frame_Perspective = "No"

      // -----------------------------------------------------
      // 2) Gestisco comandi show
      // -----------------------------------------------------
      // elimino gli oggetti non stampabili, Scassi, Scritte CaD, TCompl
      $wk_stp_cmd1 = STRCAT("Show Alias Delete ", APICI(), "NoPrint Scassi TCA_* TCD_* Dithering*", APICI())

      // FT 10/11/17 - come da richiesta di Brugnolaro, imposto la vista dimetrica come nel fine ordine.
      // $wk_stp_cmd2 = ""
      // $wk_stp_cmd3 = ""
      // $wk_stp_cmd4 = ""
      $wk_stp_cmd2 = "setviewhoops w0 front"
      $wk_stp_cmd3 = STRCAT("setviewhoops view orbit ", $viewhoops_DIMETRICA)

      //Luca 10/12/2020
      //elimino la stanza su procedura per AI
      $wk_stp_cmd_l1 = "M4_Show Ambienti Show"
      if( $wk_CNP_Stampe_AI == 1  ) { $wk_stp_cmd_l1 = "" }

      // -----------------------------------------------------
      // 3) Genero la stampa (emf)
      // -----------------------------------------------------

      // prendo i path di gestione della stampa
      path_jpg  = SUBST_LABEL(READ_INI("init", "path_jpg"))
      //Luca 11/12/2020 su richiesta di Dimitri gestisco ulteriore path per la generazione delle stampe per AI
      path_jpg2  = SUBST_LABEL(READ_INI("init", "path_jpg2"))
      path_wmf  = SUBST_LABEL(READ_INI("init", "path_wmf"))
      path_temp = GET_PATH("temp")

      // definisco il percorso di uscita.
      path_out = path_jpg
      if( path_jpg == "" | FILE_EXIST(path_jpg) !=1 ) { path_out = path_wmf  }

      if( $wk_CNP_Stampe_AI == 1  )
      {
         path_out = path_jpg2
         if( path_jpg2 == "" | FILE_EXIST(path_jpg2) !=1 ) { path_out = path_wmf }
      }

      if( path_wmf == "" | FILE_EXIST(path_wmf) !=1 ) { path_out = path_temp }

      // definisco il nome del file
      file_name = VAR_VAL_STR(-1, "File")
      if( file_name=="" )   { file_name = "empty" }

      file_name_jpg = STRCAT(file_name, ".jpg")
      file_name_emf = STRCAT(file_name, "_x_jpg.emf")

      // con apici altrimenti se il nome comprende spazi viene troncato
      file_jpg_out = STRCAT(path_out, file_name_jpg)
      file_emf_out = STRCAT(path_out, file_name_emf)

      // Imposto i parametri da settare nell'ini.
      // Utilizzo sempre il layout_M4, ma in realtà non servirebbero 2 files
      // diversi per gestire la dichiarazione dei layout...
      // Creo un nuovo layout "ComeVideoCol" (ripreso in parte da "ComeVideo")
      // da parametrizzare correttamente.
      layout_file = STRCAT($path_layout,"layout.txt")
      layout_name = "ComeVideoCol"

      // scrivo i parametri nell'ini
      WRITE_INI("stp_option", "layout_file", layout_file)
      WRITE_INI("stp_option", "layout_name", layout_name)

      WRITE_INI("SettaggiStampa", "forzaNome", "1")
      WRITE_INI("SettaggiStampa", "nomeWmf", STRCAT(APICI(), file_emf_out, APICI()))

      // stampo senza preview
      COMANDO2("M4_PRINT -NoPreview")

      // -----------------------------------------------------
      // 4) Genero la stampa JPG
      // -----------------------------------------------------
      // sfrutto CxImageDll di metron per ocnvertire in JPG
      cmd = STRCAT("run_dll_cmd CxImageDll ConvertFile ", APICI(), file_emf_out, ";", file_jpg_out, ";1;1", APICI())
      COMANDO2(cmd)
      // -----------------------------------------------------
      // 6) Pulisco elementi temporanei
      // -----------------------------------------------------
      GOSUB CancellaScritteQuote

      // cancello il file emf temporaneo (non serve se si utilizza CxImageDll !!!! )
      FILE_DEL(file_emf_out)

      // cancello le variabili globali di appoggio
      DEL_VAR(-1, "wk_stp_*")
   }

   //LZ 18/12/2020 - Posiziono scritte cad per tutti i preconfigurati
   PROCEDURA ScritteCadPcf
   {
      STRUTTURE("wk_strutt")
      wk_strutt_n=1
      wk_cmp_n=0
      while(wk_strutt_n<=wk_strutt)
      {
         wk_strutt_idx=wk_strutt[wk_strutt_n]
         wk_strutt_cmpcod=VAR_VAL_STR(wk_strutt_idx,"ORD_COD")
         wk_strutt_cmpdes=VAR_VAL_STR(wk_strutt_idx,"ORD_DES")
         if(wk_strutt_cmpcod!="" & VAR_VAL(wk_strutt_idx,"pcfto")>0)
         {
            wk_scr_offset=50
            SET_#(wk_strutt_idx)
            $ang_scr = ANG_TOT2(wk_strutt_idx)
            $P2.x = #base_0.x + COSENO($ang_scr)*#X/2 + SENO(ANG_TOT2($ang_scr))*wk_scr_offset/5
            $P2.y = #base_0.y + #Y + wk_scr_offset
            $P2.z = #base_0.z - SENO($ang_scr)*#X/2 + COSENO(ANG_TOT2($ang_scr))*wk_scr_offset/5

            $testo = STRCAT(wk_strutt_cmpcod," - ",wk_strutt_cmpdes)
            $Lar_Chr = wk_scr_offset
            $Alt_Chr = wk_scr_offset*2
            $point = 3
            $wk_faccia = "F"
            $alias_scr = "CAD_PCFTO"
            GOSUB PosizionaScrittaCAD
         }

         wk_strutt_n=wk_strutt_n+1
      }
   }

   //************************************************************************************************
   //{ Revisione stampe commerciali
   //************************************************************************************************
   PROCEDURA StampaAnalisiStanza
   {
      // Identifico i mobili che si trovano in centro stanza
      // assegnando loro la variabile ISO_CentroStanza=1
      // Vengono visualizzati sempre su tutte le viste
      GOSUB ISO_CentroStanza

      $Stp_Scala=""
      DEL_VAR(-1,"wk_str")

      STRUTTURE("buff")

      nome_array="wk_str1"  GOSUB filtra_pcf
      nome_array="wk_str"   GOSUB filtra_Tcompl

      // Contiene l'elenco degli angoli degli elementi della composizione
      $wk_ang = 0
      // Contiene l'elenco delle pareti occupate
      $wk_pareti = 0

      i=1
      while( i<=$wk_str )
      {
         $wk_idx_str = $wk_str[i]
         if( VAR_VAL($wk_idx_str,"ISO_CentroStanza")==0 )
         {
            idx_str = $wk_idx_str
            $wk_Check = 1
            // Popola gli array $wk_ang e $wk_pareti
            if( $wk_Check ) { GOSUB StpISO_AngEPareti }
         }
         i = i + 1
      }

      //Bubble sort
      //Riordino gli array
      if( $wk_pareti>1 )
      {
         i = 1
         j = 1
         while ( i<$wk_pareti )
         {
            j = i + 1
            while ( j<=$wk_pareti )
            {
               if ( $wk_pareti[i]>$wk_pareti[j] )
               {
                  temp = $wk_pareti[i]
                  $wk_pareti[i] = $wk_pareti[j]
                  $wk_pareti[j] = temp

                  temp = $wk_ang[i]
                  $wk_ang[i] = $wk_ang[j]
                  $wk_ang[j] = temp
               }
               j = j + 1
            }
            i = i + 1
         }
      }
   }

   PROCEDURA StpISO_AngEPareti
   {
      //Determina il numero di parete a cui appartiene l'elemento
      //e salva il dato nella variabile StpISO_parete della struttura

      $wk_ang_str = ANG_TOT2(idx_str)

      $wk_par=0
      if( $wk_ang_str<45   )                   { $wk_par=2 }
      if( $wk_ang_str>=45  & $wk_ang_str<135 ) { $wk_par=1 }
      if( $wk_ang_str>=135 & $wk_ang_str<225 ) { $wk_par=4 }
      if( $wk_ang_str>=225 )                   { $wk_par=3 }

      VAR_VALUE_SET($wk_idx_str,"StpISO_parete",$wk_par)

      trovato=0
      k=1
      while( k<=$wk_pareti & trovato==0 )
      {
         if( $wk_pareti[k]==$wk_par ) { trovato=1 }
         k=k+1
      }
      if( trovato==0 )
      {
         k=$wk_pareti+1
         $wk_pareti=k
         $wk_pareti[k]=$wk_par

         //Salvo l'angolo relativo alla parete
         k=$wk_ang+1
         $wk_ang=k
         $wk_ang[k]=$wk_ang_str
      }
   }

   PROCEDURA ISO_CentroStanza
   {
      //Distanza dal muro entro la quale si considera una struttura 'a muro'
      $wk_tolleranza = 500

      WITH_VAR("stru","ISO_CentroStanza",$num,0,"")
      while(stru>0)
      {
         DEL_VAR(stru[stru],"ISO_CentroStanza")
         stru = stru - 1
      }

      //Metto in array le due estremità di ciascuna parete
      $wk_pareti_p1 = 0
      $wk_pareti_p2 = 0

      //Scorro le pareti
      $wk_Query_Wall = 0
      r = QUERY_WALL(1,"listwall")
      if( $Query_Wall>0 ) { ArrayCopy(-1,"Query_Wall","wk_Query_Wall") }

      i = 1
      while ( i<=$wk_Query_Wall )
      {
         r = QUERY_WALL($wk_Query_Wall[i],"tracepoints")
         if( $Query_Wall>0 )
         {
            $muro_pt1 = $Query_Wall[1]
            $muro_pt2 = $Query_Wall[2]
            $wk_muro_ang = GetAng_P1P2($muro_pt1, $muro_pt2)

            $muro_pt1.x = $muro_pt1.x - 20000*COSENO($wk_muro_ang)
            $muro_pt1.y = 0
            $muro_pt1.z = $muro_pt1.z + 20000*SENO($wk_muro_ang)
            //e a dx
            $muro_pt2.x = $muro_pt2.x + 20000*COSENO($wk_muro_ang)
            $muro_pt2.y = 0
            $muro_pt2.z = $muro_pt2.z - 20000*SENO($wk_muro_ang)

            np = $wk_pareti_p1 + 1
            $wk_pareti_p1 = np
            $wk_pareti_p1[np] = $muro_pt1
            $wk_pareti_p2 = np
            $wk_pareti_p2[np] = $muro_pt2
         }

         i = i + 1
      }

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

      //Scorro le strutture per verificare la loro distanza dalle pareti
      STRUTTURE("buff")  nome_array="wk_stru"  GOSUB filtra_pcf

      ns = 1
      while(ns<=$wk_stru)
      {
         idx_str = $wk_stru[ns]
         $wk_Check=1
         if( $wk_Check )
         {
            //Verifico la distanza di ciascuna struttura con ciascuna  delle pareti
            ang_str = ANG_TOT2(idx_str) + 90
            SET_#(idx_str)
            //Definisco la struttura in centro stanza per default
            centro_stanza = 1
            np = 1
            while(np<=$wk_pareti_p1 & centro_stanza==1)
            {
               //Trovo il punto di interferenza tra la base 0 della struttra
               //proiettata a -90° e la parete
               P0 = #base_0
               P0.y = 0
               PX = INTERFERISCI(P0,ang_str,$wk_pareti_p1[np],$wk_pareti_p2[np])
               //Se la distanza della base 0 dalla sua proiezione sulla parete è inferiore
               //alla tolleranza allora considero la struttura 'a muro'
               if( DISTANZA(P0,PX)<=$wk_tolleranza) { centro_stanza = 0 }

               //Provo anche con lo stesso angolo della struttura
               //Per gestire casi come quelli dei fianchi ruotati a parete
               if( centro_stanza )
               {
                  PX = INTERFERISCI(P0,ang_str-90,$wk_pareti_p1[np],$wk_pareti_p2[np])
                  if(DISTANZA(P0,PX)<=$wk_tolleranza) { centro_stanza = 0 }
               }
               np = np + 1
            }

            //Luca 20/04/2022 considero come centro stanza per evitare che influisca nel calcolo degli angoli
            if( NOME(idx_str) == "RigaOrdine_Posizionata" )  { centro_stanza = 1 }

            if(centro_stanza) { #ISO_CentroStanza = 1 }
         }
         ns = ns + 1
      }
   }

   PROCEDURA filtra_pcf
   {
      DEL_VAR(-1,STRCAT(nome_array,"_##*"))
      VAR_CREATE_NUM(-1,nome_array,0,0,"")
      nb = 1
      while(nb<=buff)
      {
         idx_buff = buff[nb]
         if(VAR_VAL(idx_buff,"pcfto")==1)
         {
            //In caso di preconfigurato scorro i composti sottostanti
            WITH_VAR_LOCAL(idx_buff,"cmp","pcf_str",1,0,"")
            nc = 1
            while(nc<=cmp)
            {
               bb = VAR_VAL(-1,nome_array) + 1
               VAR_VALUE_SET(-1,nome_array,bb)
               VAR_CREATE_NUM(-1,STRCAT(nome_array,"_##",STR(bb)),cmp[nc],0,"")
               nc = nc + 1
            }
         }
         else
         {
            //if(HAS_ALIAS(idx_buff,"LavorazioneSpeciale")==0)
            //{
               bb = VAR_VAL(-1,nome_array) + 1
               VAR_VALUE_SET(-1,nome_array,bb)
               VAR_CREATE_NUM(-1,STRCAT(nome_array,"_##",STR(bb)),buff[nb],0,"")
            //}
         }
         nb = nb + 1
      }
   }

   PROCEDURA filtra_Tcompl
   {
      DEL_VAR(-1,STRCAT(nome_array,"_##*"))
      VAR_CREATE_NUM(-1,nome_array,0,0,"")
      nb = 1
      while(nb<=$wk_str1)
      {
         idx_buff = $wk_str1[nb]
         if(HAS_ALIAS(idx_buff,"TCA_ComplArr")!=1
          & HAS_ALIAS(idx_buff,"TCA_Pcf")!=1
          & HAS_ALIAS(idx_buff,"TCD_ComplDecor")!=1  )
         {
            bb = VAR_VAL(-1,nome_array) + 1
            VAR_VALUE_SET(-1,nome_array,bb)
            VAR_CREATE_NUM(-1,STRCAT(nome_array,"_##",STR(bb)),$wk_str1[nb],0,"")
         }

         nb = nb + 1
      }
   }

   //Scelgo le viste per la stampa prospetti
   PROCEDURA ScegliVisteStampaProspetti
   {
      if( $wk_pareti<=0 ) { EXITSUB() }

      $wk_viste=0
      $wk_ISO_Parete1 = 0
      $wk_ISO_Parete2 = 0
      $wk_delta_ang = 45

      //Se è presente una sola parete, la vista sarà una vista frontale di quella parete.
      if( $wk_pareti==1 )
      {
         $wk_viste=1
         $wk_viste[1]= -1*$wk_ang[1]

         $wk_ISO_Parete1 = 1
         $wk_ISO_Parete2 = 1
         $wk_ISO_Parete1[1] = $wk_pareti[1]
         $wk_ISO_Parete2[1] = -1
         EXITSUB()
      }
      //Se sono presenti più di due pareti, le viste sono due e fisse: 45° e -135°
      if( $wk_pareti>2 )
      {
         $wk_viste=2
         $wk_viste[1]= $wk_delta_ang
         $wk_viste[2]= -180 + $wk_delta_ang

         $wk_ISO_Parete1 = 2
         $wk_ISO_Parete2 = 2
         $wk_ISO_Parete1[1] = 2
         $wk_ISO_Parete2[1] = 3
         $wk_ISO_Parete1[2] = 1
         $wk_ISO_Parete2[2] = 4
         EXITSUB()
      }

      //Se le pareti sono due e non consecutive stampo due viste frontali
      if( $wk_pareti==2 )
      {
         $wk_ok = 0
         if( $wk_pareti[1]==1 & $wk_pareti[2]==3 ) { $wk_ok = 1 }
         if( $wk_pareti[1]==2 & $wk_pareti[2]==4 ) { $wk_ok = 1 }
         if( $wk_ok )
         {
            $wk_viste=2
            $wk_viste[1]= -1*$wk_ang[1]
            $wk_viste[2]= -1*$wk_ang[2]
            $wk_ISO_Parete1 = 2
            $wk_ISO_Parete2 = 2
            $wk_ISO_Parete1[1] = $wk_pareti[1]
            $wk_ISO_Parete2[1] = -1
            $wk_ISO_Parete1[2] = $wk_pareti[2]
            $wk_ISO_Parete2[2] = -1
            EXITSUB()
         }
      }

      //Luca 28/06/2021
      if( VAR_VAL(-1,"wk_OnStampaComm_V2_LIVING") == 1 ) { EXITSUB() }

      //Se le pareti sono due e consecutive stampo la vista di angolo a metà delle due pareti
      $wk_viste=1
      $wk_viste[1]= -1*$wk_ang[2] - $wk_delta_ang
      if( $wk_pareti[1]==1 & $wk_pareti[2]==4 )
      {
         $wk_viste[1]= -1*$wk_ang[1] - $wk_delta_ang
      }
      $wk_ISO_Parete1 = 1
      $wk_ISO_Parete2 = 1
      $wk_ISO_Parete1[1] = $wk_pareti[1]
      $wk_ISO_Parete2[1] = $wk_pareti[2]
   }

   //Luca 12/04/2022
   //1. CASO in cui tutti gli elementi presenti hanno lo stesso angolo: calcolo l’iso in base all’angolo delle strutture
   //2. CASO in cui ci sono strutture con due angoli diversi:
   //         2a. se le strutture sono due due pareti consecutive: viene impostata la vista in modo da rendere visibili entrambe le strutture
   //         2b. se le strutture hanno angolo diverso ma su pareti non consecutive: vedi punti 3.
   //3. CASO in cuci ci sono strutture con più di 2 angoli diversi e punto 2b: viene mantenuta ISO fissa come ora.
   PROCEDURA ScegliVisteStampaProspetti2
   {
      if( $wk_pareti<=0 ) { EXITSUB() }

      if( $wk_pareti==1 )
      {
         $wk_viste=1
         $wk_viste[1]= $wk_ang[1]
      }

      if( $wk_pareti == 2 )
      {
         $wk_pareti_consecutive = 0

         //controllo se le pareti sono consecutive
         r = QUERY_WALL(0,"listwallext”")
         if( $Query_Wall > 0 )
         {
            SORT_ARRAY(-1,"Query_Wall")

            SORT_ARRAY(-1,"wk_pareti")

            if( $wk_pareti[2] == $wk_pareti[1] + 1 )        { $wk_pareti_consecutive = 1 }

            if( $wk_pareti[1] == $Query_Wall[1]
              & $wk_pareti[2] == $Query_Wall[$Query_Wall] ) { $wk_pareti_consecutive = 2 }
         }

         $wk_viste = 0

         if( $wk_pareti_consecutive == 2 )
         {
            $wk_viste=1
            $wk_viste[1] = $wk_ang[2]
         }

         if( $wk_pareti_consecutive == 1 )
         {
            $wk_viste=1
            $wk_viste[1] = $wk_ang[2]
         }
      }

      if( $wk_pareti > 2 )
      {
         $wk_viste = 1
         $wk_viste[1] = $wk_ang[2]
      }
   }

   //Luca 13/05/2020
   PROCEDURA ImpostaVistaStampaISO
   {
      if( VAR_VAL(-1,"wk_ripristina_vista") == 1 )
      {
         VIEW_CAMERA(1)
         COMANDO2("Show All")
         EXITSUB()
      }

      $wk_ripristina_vista = 0

      ScriviSuLog( 0 , "ImpostaVistaStampaISO" , "START" )

      GOSUB StampaAnalisiStanza

      if( $wk_pareti<=0 ) { EXITSUB() }

      ScriviSuLog( 0 , "ImpostaVistaStampaISO" , STRCAT("$wk_pareti=",STR($wk_pareti)) )
      i = 1
      while ( i<=$wk_pareti )
      {
         ScriviSuLog( 0 , "ImpostaVistaStampaISO" , STRCAT("$wk_pareti[",STR(i),"]=",STR($wk_pareti[i])) )
         i = i + 1
      }

      //GOSUB ScegliVisteStampaProspetti
      GOSUB ScegliVisteStampaProspetti2

      ScriviSuLog( 0 , "ImpostaVistaStampaISO" , STRCAT("$wk_viste=",STR($wk_viste)) )
      i = 1
      while ( i <= $wk_viste )
      {
         ScriviSuLog( 0 , "ImpostaVistaStampaISO" , STRCAT("$wk_viste[",STR(i),"]=",STR($wk_viste[i])) )
         i = i + 1
      }

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

      //SALVO LA VISTA DELLA CAMERA
      VIEW_CAMERA(0)
      $wk_ripristina_vista = 1

      $wk_ISO_ang_Z = $wk_viste[1]
      $wk_ISO_ang_Y = 15

      //Luca 10/06/2021
      if( VAR_VAL(-1,"wk_OnStampaComm_V2_LIVING") == 1 )
      {
         COMANDO2(STRCAT("setviewhoops aaa front"))

         COMANDO2(STRCAT("Setviewhoops W0 orbit ",STR(-1*$wk_viste[1]), " " , STR(0) ))
         $wk_ISO_ang_Z = -45
         COMANDO2(STRCAT("Setviewhoops W0 orbit ",STR($wk_ISO_ang_Z) , " " , STR($wk_ISO_ang_Y) ))
      }
      else
      {
         COMANDO2(STRCAT("setviewhoops aaa front"))
         COMANDO2(STRCAT("Setviewhoops W0 orbit ",STR($wk_ISO_ang_Z) , " " , STR($wk_ISO_ang_Y) ))
      }

      COMANDO2("ZOOMHOOPS")
      COMANDO2("ZOOMHOOPS 0.9")

      ScriviSuLog( 0 , "ImpostaVistaStampaISO" , "END" )
   }

   PROCEDURA StampaComm_AZI
   {

   }

   //per retro- compatibilità macro di test
   PROCEDURA StampaComm_TSTP_NEW
   {
      GOSUB StampaComm_RIV
   }

   PROCEDURA StampaComm_RIV
   {
      $wk_log = 0
      LogProcedura( "Start", "StampaComm_RIV", $wk_log)

      GOSUB SetStampaInterattiva

      COMANDO2("RIGENERA")

      COMANDO2("PROCEDURA M4_Scassi ")

      COMANDO2("PROJECTHSF Show None")

      //LZ 27/10/2021
      $SET_STAMPA = "COMM"

      //1 - Copertina con vista iso a colori "fuori stanza" vista d'insieme di tutti gli elementi
      //2 - Assonometrie a colori con frontali chiusi, una per muro + fronte e retro isola, nessuna legenda
      //3 - Assonometrie a colori con frontali aperti, una per muro + fronte e retro isola, nessuna legenda
      //4 - Assonometrie a colori senza frontali, una per muro + fronte e retro isola, nessuna legenda
      //5 - Vista in pianta da sopra, in bianco e nero, con riportata la dimensione dei vari elementi
      //6 - Vista in pianta da sotto, in bianco e nero, affinché ci sia un'indicazione di massima del posizionamento
      //    dei sostegni in vetro e dei led, senza quote dato che al momento i sostegni non sono perfettamente posizionati.
      //7 - Vista frontale, in bianco e nero, con dimensione e altezza degli elementi.
      //    Ogni elemento avrà un riferimento per la finitura e uno che riporta il collo per un veloce confronto con la conferma d'ordine.

      GOSUB InizioStampaPDF
      GOSUB InizializzaVar_TSTP

      $TSTP_ProcInfoCartiglio = "InfoCartiglioGen_TSTP"

      //Luca 26/09/2019 per ora tengo comune
      $TSTP_Pianta_PostQuota    = "Stampa_PostQuota"
      $TSTP_Prospetti_PostQuota = "Stampa_Prospetti_PostQuota"
      $TSTP_ISO_PostQuota       = "Stampa_PostQuota"

      // imposto i default per le stampe
      $VAR_AnteprimaDiStampa = 1
      $TSTP_StampaPreventivo = 0

      #ifndef TEC;AZI
         $VAR_AnteprimaDiStampa = 0
         $TSTP_StampaPreventivo = 1
      #endif

      // stampe vista utente in b/n e a colori
      $TSTP_StampaUtente_BN  = 0
      $TSTP_StampaUtente_COL = 1

      // stampe assonometrie isometriche in bianco nero (frontali chiusi/aperti/senza)
      $TSTP_StampaAssonometrie_BN_FC = 0
      $TSTP_StampaAssonometrie_BN_FA = 0
      $TSTP_StampaAssonometrie_BN_SF = 0

      // stampe assonometrie isometriche a colori (frontali chiusi/aperti/senza)
      $TSTP_StampaAssonometrie_COL_FC = 0
      $TSTP_StampaAssonometrie_COL_FA = 0
      $TSTP_StampaAssonometrie_COL_SF = 0

      // stampa in pianta in b/n e a colori
      $TSTP_StampaPianta_BN  = 1
      $TSTP_StampaPianta_COL = 0

      //stampa prospetti in b/n con/senza frontali
      $TSTP_StampaProspetti_BN_CF = 1
      $TSTP_StampaProspetti_BN_SF = 0

      //stampa prospetti a colori con/senza frontali
      $TSTP_StampaProspetti_COL_CF = 0
      $TSTP_StampaProspetti_COL_SF = 0

      if( $TSTP_StampaPreventivo == 1 ) { GOSUB StampaPreventivo }

      // 1 - STAMPA VISTA ISO
      GOSUB ImpostaVistaStampaISO
      LanciaStampa( "TSTP_StampaUtente" )
      GOSUB ImpostaVistaStampaISO

      // 2 - ASSONOMETRIA FRONTALI CHIUSI
      $TSTP_TolleranzaMuroZ = 700
      $TSTP_StampaAssonometrie_COL_FC = 1
      LanciaStampa( "TSTP_StampaISO" )

      WITH_ALIAS("$wk_check_frontali",$TSTP_AliasFrontali)

      // 3 - ASSONOMETRIA FRONTALI APERTI (Se presenti elementi da aprire)
      if( $wk_check_frontali > 0 )
      {
         $TSTP_StampaAssonometrie_COL_FC = 0
         $TSTP_StampaAssonometrie_COL_FA = 1
         LanciaStampa( "TSTP_StampaISO" )
      }

      // 4 - ASSONOMETRIA SENZA FRONTALI (Se presenti Frontali)
      if( $wk_check_frontali > 0 )
      {
         $TSTP_StampaAssonometrie_COL_FA = 0
         $TSTP_StampaAssonometrie_COL_SF = 1
         LanciaStampa( "TSTP_StampaISO" )
      }

      // 5 - VISTA PIANTA
      LanciaStampa( "TSTP_StampaPianta" )

      //// 6 - VISTA SOTTO
      //QUERY_WALL(0,"listceil")
      //if( $Query_Wall>0 )
      //{
      //   $wk_id_ceil = $Query_Wall[1]
      //   $TSTP_Pianta_cmd = STRCAT("setviewhoops aaa allinea wall ",STR($wk_id_ceil))
      //   $TSTP_Pianta_PostQuota = "StampaPianta_Bottom"
      //   LanciaStampa( "TSTP_StampaPianta" )
      //   $TSTP_Pianta_PostQuota = ""
      //   $TSTP_Pianta_cmd = ""
      //}

      // 7 - VISTA PROSPETTI
      $TSTP_Prospetti_ModPall = 4
      $TSTP_Prospetti_Form  = "TSTP_A4_O_PROSPETTI.emf"
      LanciaStampa( "TSTP_StampaProspetti" )

      $POSTNOMESTAMPA = "-FINE_ORDINE"

      #ifndef TEC;AZI
         $POSTNOMESTAMPA = ""
      #endif

      GOSUB FineStampaPDF

      COMANDO2("PROJECTHSF Show All Default")

      //Cancello il file generato dalla stampa per la scala
      FILE_DEL(STRCAT($path_wmf, $File, ".emf"))

      // cancello eventuali file del preventivo e ripristino il flag
      // per il ripo di preventivo interattivo. Attenzione dò per scontato
      // che il tempo sia stato sufficiente per generare il pdf
      FILE_DEL(SUBST_LABEL(STRCAT($path_temp, $File, "prev.ps")))
      $TIPO_PREV = 1

      GOSUB ResetStampaInterattiva

      $SET_STAMPA = ""

      LogProcedura( "End", "StampaComm_RIV", $wk_log)
   }

   PROCEDURA Stampa_Prospetti_PostQuota
   {
      if( VAR_VAL(-1,"wk_OnStampa_2Viste") == 1 )
      {
         if( $wk_OnStampa_2Viste_BN == 1 )
         {
            //COMANDO2(STRCAT("LOGMSG StampaComm_V2_2Viste Stampa_Prospetti_PostQuota RIGHE"))

            GOSUB Stampa_Prospetti_PostQuota_ProgRiga
         }
         if( $wk_OnStampa_2Viste_COL == 1 )
         {
            //COMANDO2(STRCAT("LOGMSG StampaComm_V2_2Viste Stampa_Prospetti_PostQuota FINITURA"))
            GOSUB Stampa_Prospetti_Bollinatura_Finitura
         }
      }
      else
      {
         GOSUB Stampa_Prospetti_Bollinatura_Finitura
      }

      //GOSUB Stampa_Prospetti_PostQuota_NumRifDis

      GOSUB Stampa_PostQuota
   }

   PROCEDURA InfoCartiglio_StampaProspetti
   {
      $wk_TSTP_DIS_VAR1  = ""  $wk_TSTP_DIS_VAL1  = ""
      $wk_TSTP_DIS_VAR2  = ""  $wk_TSTP_DIS_VAL2  = ""
      $wk_TSTP_DIS_VAR3  = ""  $wk_TSTP_DIS_VAL3  = ""
      $wk_TSTP_DIS_VAR4  = ""  $wk_TSTP_DIS_VAL4  = ""
      $wk_TSTP_DIS_VAR5  = ""  $wk_TSTP_DIS_VAL5  = ""
      $wk_TSTP_DIS_VAR6  = ""  $wk_TSTP_DIS_VAL6  = ""
      $wk_TSTP_DIS_VAR7  = ""  $wk_TSTP_DIS_VAL7  = ""
      $wk_TSTP_DIS_VAR8  = ""  $wk_TSTP_DIS_VAL8  = ""
      $wk_TSTP_DIS_VAR9  = ""  $wk_TSTP_DIS_VAL9  = ""
      $wk_TSTP_DIS_VAR10 = ""  $wk_TSTP_DIS_VAL10 = ""
      $wk_TSTP_DIS_VAR11 = ""  $wk_TSTP_DIS_VAL11 = ""
      $wk_TSTP_DIS_VAR12 = ""  $wk_TSTP_DIS_VAL12 = ""
      $wk_TSTP_DIS_VAR13 = ""  $wk_TSTP_DIS_VAL13 = ""
      $wk_TSTP_DIS_VAR14 = ""  $wk_TSTP_DIS_VAL14 = ""
      $wk_TSTP_DIS_VAR15 = ""  $wk_TSTP_DIS_VAL15 = ""
      $wk_TSTP_DIS_VAR16 = ""  $wk_TSTP_DIS_VAL16 = ""

      $wk_TSTP_DIS_NOTA  = ""
      $wk_TSTP_DIS_NOTA1 = ""
      $wk_TSTP_DIS_NOTA2 = ""

      $wk_TSTP_TitoloInfo = "INFORMAZIONI"

      //TODO -- NOTE DA GESTIRE

      //Luca 13/05/2020 generati da Stampa_Prospetti_Bollinatura
      if( VAR_EXIST(-1,"wk_leg_var")==1 )
      {
         $wk_i = 1
         while ( $wk_i<=$wk_leg_var )
         {
            VAR_VALUESTR_SET(-1,STRCAT("wk_TSTP_DIS_VAR",STR($wk_i)),NumToAlfa($wk_i))
            VAR_VALUESTR_SET(-1,STRCAT("wk_TSTP_DIS_VAL",STR($wk_i)),$wk_leg_val_dsc[$wk_i])
            $wk_i = $wk_i + 1
         }
      }
   }

   PROCEDURA StampaPianta_Bottom
   {
      //cancello tutto
      STRUTTURE("$wk_strutt")
      while ( $wk_strutt>0 )
      {
         $wk_idx_strutt = ARRAY("$wk_strutt",$wk_strutt)
         $wk_nome_strutt = NOME($wk_idx_strutt)
         if ( STRCMP($wk_nome_strutt,"SCRITTA_CAD")==0
            | STRCMP($wk_nome_strutt,"MP_QUOTA_CAD")==0
            | STRCMP($wk_nome_strutt,"QUOTA_CAD")==0
            | IS_MATCH($wk_nome_strutt,"Linea*CAD")
            | STRCMP($wk_nome_strutt,"Triangolo")==0
            | STRCMP($wk_nome_strutt,"Bollino_Stampa")==0
            | IS_MATCH($wk_nome_strutt,"LineaGriglia*") )
            { COMANDO2(STRCAT("DELETE3 ",STR($wk_idx_strutt), "//StampaPianta_Bottom")) }
         $wk_strutt = $wk_strutt - 1
      }
   }

   PROCEDURA Stampa_Prospetti_Bollinatura_Finitura
   {
      debug = 0
   #ifdef TE
      debug = 1
   #endif

      GOSUB Reset_Var_TSTP_Prospetti_VarPall

      $TSTP_RiduzioneQuote = 2

      if( VAR_VAL(-1,"wk_OnStampa_2Viste") == 1 )
      {
         $TSTP_RiduzioneQuote  = 1.5
      }

      //gestione pallinatura frontali e legenda
      // - cerco tutti gli elementi con varibile STP_Bollina = 1
      // - se presente, utilizzo STP_Bollina_Cat per identificare la categoria di finitura
      //   altrimenti verifico se ha una delle finiture presenti in $wk_leg_cat (definito sotto, la prima categoria che trova)
      // - se presente, utilizzo STP_Bollina_Pnt come punto di inserimeno del bollino
      //   altrimento lo creo: in basso a dx per i frontali

      //1° individuo tutti gli elementi da pallinare
      //WITH_ALIAS("$wk_ele2pal","Frontale")
      WITH_VAR("$wk_ele2pal","STP_Bollina",$num_con_figli,1,"1")
      //Luca 26/05/2022
      $wk_P0 = [0,0,0]
      SORT_POINT($wk_P0,"$wk_ele2pal","base_0")

      //LZ 19/10/2021
      if( $wk_ele2pal==0 ) { EXITSUB() }

      if( VAR_VAL( -1, "wk_OnStampa_2VisteAcc") == 1 )
      {
         r = ArrayCopy(-1 , "wk_ele2pal" , "wk_all_ele2pal")

         DEL_VAR(-1,"wk_ele2pal")
         $wk_ele2pal = 0

         //filtro l'array
         $wk_i = 1
         while ( $wk_i <= $wk_all_ele2pal )
         {
            if( INSERIMENTO2($wk_all_ele2pal[$wk_i]) == $ins2_attrezzato
              | INSERIMENTO2($wk_all_ele2pal[$wk_i]) == $ins2_vestito
              | INSERIMENTO2($wk_all_ele2pal[$wk_i]) == $ins2_riempito  )
            {
               if( VAR_VAL($wk_all_ele2pal[$wk_i],"STP_2V_NoStpAccessori") != 1 ) { AddItem2Array(-1,"wk_ele2pal", $wk_all_ele2pal[$wk_i] ,"") }
            }

            $wk_i = $wk_i + 1
         }
      }
      else
      {
         //Luca 10/01/2022 cancello eventuali accessori
         $wk_ii = 1
         while ( $wk_ii <= $wk_ele2pal )
         {
            //TODO: capire meglio che Rip* da fastidio e trovare un modo migliore per filtrarlo, di Rip* ce ne sono un sacco, tipo il Ripiano_30MM
            //if( IS_MATCH( NOME($wk_ele2pal[$wk_ii]) , "Rip*") )
            //{
            //   DelFromArray(-1,"wk_ele2pal",0,$wk_ele2pal[$wk_ii],"")
            //   $wk_ii = $wk_ii - 1
            //}

            $wk_ii = $wk_ii + 1
         }
      }

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

      //$TSTP_RiduzioneQuote = 2
      //$TSTP_RiduzioneQuote = 1.75

      $wk_leg_var     = 0
      $wk_leg_val     = 0
      $wk_leg_val_dsc = 0

      $wk_leg_cat = 8
      $wk_leg_cat[1] = "GEST_C001"
      $wk_leg_cat[2] = "GEST_C042"
      $wk_leg_cat[3] = "GEST_C028"
      $wk_leg_cat[4] = "GEST_C048"
      $wk_leg_cat[5] = "GEST_C014"
      $wk_leg_cat[6] = "GEST_C103"
      $wk_leg_cat[7] = "GEST_C082"
      $wk_leg_cat[8] = "GEST_C044"


      //2° scorro l'array
      //  - identifico la categoria 'finitura'
      //  - verifico se presente nell'array legenda
      //  - creo la variabile utilizzata per la bollinatura
      //  - creo la variabile punto utilizzata per la bollinatura
      $wk_i = 1
      while ( $wk_i<=$wk_ele2pal )
      {
         $wk_idx_test = $wk_ele2pal[$wk_i]

         if( debug==1 ) { COMANDO2(STRCAT("LOGMSG STP_BOLLINA -- IDX ",STR($wk_idx_test), "-",NOME($wk_idx_test))) }

         SET_#($wk_idx_test)

         //Categorie
         $wk_cat = ""
         if( VAR_EXIST( $wk_idx_test, "STP_Bollina_Cat") )
         {
            $wk_cat = #STP_Bollina_Cat

            if( debug==1 ) { COMANDO2(STRCAT("LOGMSG STP_BOLLINA -- IDX ",STR($wk_idx_test), "-",NOME($wk_idx_test) , " ESITE STP_Bollina_Cat")) }
         }
         else
         {
            LISTA_VARIABILI( $wk_idx_test, 0, "$wk_lista_var", "GEST_*")

            if( debug==1 ) { COMANDO2(STRCAT("LOGMSG STP_BOLLINA -- IDX ",STR($wk_idx_test), "-",NOME($wk_idx_test) , "  $wk_lista_var=",STR($wk_lista_var))) }

            $wk_j = 1
            while ( $wk_j <= $wk_lista_var )
            {
               $wk_var_test = $wk_lista_var[$wk_j]
               $wk_var_match = ""

               if( debug==1 ) { COMANDO2(STRCAT("LOGMSG STP_BOLLINA -- IDX ",STR($wk_idx_test), "-",NOME($wk_idx_test) , "  $wk_lista_var[",STR($wk_j),"]=",$wk_var_test)) }

               $wk_h = 1
               while ( $wk_h <= $wk_leg_cat)
               {
                  if( $wk_leg_cat[$wk_h] == $wk_var_test )
                  {
                     $wk_var_match = $wk_leg_cat[$wk_h]
                     //la prima che trovo e poi esco
                     $wk_h = $wk_leg_cat
                  }

                  $wk_h = $wk_h + 1
               }

               if( $wk_var_match != "" )
               {
                  if( $wk_cat == "" ) { $wk_cat = $wk_var_match }
                  else                { $wk_cat = STRCAT( $wk_cat, ";", $wk_var_match) }

                  //NOTE: Commentare per uscire al primo trovato, per il momento testo sbloccato
                  $wk_j = $wk_lista_var
               }

               $wk_j = $wk_j + 1
            }
         }

         //Valori di categorie
         $wk_cat_val = ""
         lstDedup($wk_cat)
         STR_SPLIT( $wk_cat, ";", 1, "wk_cat_arr", -1)
         $wk_kk = 1
         while( $wk_kk <= $wk_cat_arr )
         {
            $wk_cat_att = $wk_cat_arr[$wk_kk]
            $wk_cat_att = STRCAT( "GEST_", REPLACE( $wk_cat_att, "GEST_", ""))

            $wk_cat_val_att = ""
            $wk_cat_val_desc_att = ""

            if( debug==1 ) { COMANDO2(STRCAT("LOGMSG STP_BOLLINA -- IDX ",STR($wk_idx_test), "-", NOME($wk_idx_test), " $wk_cat_att=",$wk_cat_att)) }

            //una volta trovata la finitura da bollinare, verifico se già presente all'array di bollinatura
            $wk_cat_val_att = VAR_VAL_STR( $wk_idx_test, $wk_cat_att)
            if( $wk_cat_val_att == "" )
            {
               if( VAR_EXIST( $wk_idx_test, "FIN_idx_gest") == 1 )
               {
                  $wk_idx_gest = VAR_VAL( $wk_idx_test, "FIN_idx_gest")
                  $wk_cat_val_att = VAR_VAL_STR( $wk_idx_gest, $wk_cat_att)
               }
            }

            if( $wk_cat_val_att != ""
              & $wk_cat_val_att != "__" )
            {
               if( $wk_cat_val == "" ) { $wk_cat_val = $wk_cat_val_att }
               else                    { $wk_cat_val = STRCAT( $wk_cat_val, ";", $wk_cat_val_att) }
            }

            $wk_kk = $wk_kk + 1
         }

         $wk_pos_arr = 0

         if( debug==1 ) { COMANDO2(STRCAT("LOGMSG STP_BOLLINA -- IDX ",STR($wk_idx_test), "-",NOME($wk_idx_test) , " - wk_cat=",$wk_cat , " - wk_cat_var=", $wk_cat_val)) }

         if( $wk_cat_val != "" )
         {
            $wk_nuova_finitura = 1

            //if( debug==1 ) { COMANDO2(STRCAT("LOGMSG STP_BOLLINA -- IDX ",STR($wk_idx_test), "-",NOME($wk_idx_test) , " - VERIFICO SE GIA' PRESENTE" )) }

            $wk_j = 1
            while ( $wk_j <= $wk_leg_var & $wk_nuova_finitura==1 )
            {
               //if( debug==1 ) { COMANDO2(STRCAT("LOGMSG STP_BOLLINA -- IDX ",STR($wk_idx_test), "-",NOME($wk_idx_test) , " - $wk_leg_var[",STR($wk_j),"]=",$wk_leg_var[$wk_j] ,"-",$wk_leg_val[$wk_j] )) }

               if( $wk_cat==$wk_leg_var[$wk_j] )
               {
                  if( $wk_cat_val==$wk_leg_val[$wk_j] ) { $wk_nuova_finitura = 0  $wk_pos_arr = $wk_j }
               }

               $wk_j = $wk_j + 1
            }

            if( debug == 1 )
            {
               if( $wk_nuova_finitura==1 )
               {
                  COMANDO2(STRCAT("LOGMSG STP_BOLLINA -- IDX ",STR($wk_idx_test), "-",NOME($wk_idx_test) , " - AGGIUNGO FINITURA" ))
               }
               else
               {
                  COMANDO2(STRCAT("LOGMSG STP_BOLLINA -- IDX ",STR($wk_idx_test), "-",NOME($wk_idx_test) , " - FINITURA GIA' PRESENTE" ))
               }
            }

            //if( debug==1 ) { COMANDO2(STRCAT("LOGMSG STP_BOLLINA -- IDX ",STR($wk_idx_test), "-",NOME($wk_idx_test) , " - $wk_nuova_finitura=",STR($wk_nuova_finitura)," - $wk_pos_arr=",STR($wk_pos_arr) )) }

            if( $wk_nuova_finitura==1 )
            {
               $wk_leg_var = $wk_leg_var + 1
               $wk_leg_val = $wk_leg_val + 1
               $wk_leg_val_dsc = $wk_leg_val_dsc + 1

               $wk_desc = ""

               $wk_j = 1
               while( $wk_j <= $wk_cat_arr )
               {
                  $wk_cat_var_att = $wk_cat_arr[$wk_j]
                  $wk_cat_val_desc_att = GetDescCatVal( $wk_idx_test, $wk_cat_var_att, "VAL")

                  if( $wk_cat_val_desc_att == "" )
                  {
                     if( VAR_EXIST( $wk_idx_test, "FIN_idx_gest") )
                     {
                        $wk_cat_val_desc_att = GetDescCatVal( VAR_VAL($wk_idx_test,"FIN_idx_gest"), $wk_cat_var_att, "VAL")
                     }
                  }

                  if( $wk_desc == "" ) { $wk_desc = $wk_cat_val_desc_att }
                  else                 { $wk_desc = STRCAT( $wk_desc, ", ", $wk_cat_val_desc_att) }

                  $wk_j = $wk_j + 1
               }

               VAR_CREATE_STR( -1, STRCAT("wk_leg_var_##",STR($wk_leg_var)), $wk_cat, 0, "")
               VAR_CREATE_STR( -1, STRCAT("wk_leg_val_##",STR($wk_leg_val)), $wk_cat_val, 0, "")
               VAR_CREATE_STR( -1, STRCAT("wk_leg_val_dsc_##",STR($wk_leg_val)), $wk_desc, 0, "")

               if( debug==1 ) { COMANDO2(STRCAT("LOGMSG STP_BOLLINA -- IDX ",STR($wk_idx_test), "-",NOME($wk_idx_test) , " - AGGIUNGO FIN --> ID =",STR($wk_leg_var) )) }
               if( debug==1 ) { COMANDO2(STRCAT("LOGMSG STP_BOLLINA -- IDX ",STR($wk_idx_test), "-",NOME($wk_idx_test) , " - AGGIUNGO FIN --> ID =",STR($wk_leg_var), "     CAT = ",$wk_cat)) }
               if( debug==1 ) { COMANDO2(STRCAT("LOGMSG STP_BOLLINA -- IDX ",STR($wk_idx_test), "-",NOME($wk_idx_test) , " - AGGIUNGO FIN --> ID =",STR($wk_leg_var), " VAL.CAT = ",$wk_cat_val)) }
               if( debug==1 ) { COMANDO2(STRCAT("LOGMSG STP_BOLLINA -- IDX ",STR($wk_idx_test), "-",NOME($wk_idx_test) , " - AGGIUNGO FIN --> ID =",STR($wk_leg_var), " DSC.CAT = ",$wk_desc)) }

               $wk_pos_arr = $wk_leg_var
            }
         }

         //creo la variabile e il punto sull'elemento
         $wk_str_var = ""
         if( $wk_pos_arr!=0 ) {  $wk_str_var = NumToAlfa($wk_pos_arr) }
         //$wk_str_var = STRCAT(STR($wk_idx_test),"-",$wk_str_var)

         $wk_str_pnt = [-1,-1,-1]
         if( VAR_EXIST($wk_idx_test,"STP_Bollina_Pnt") ) { $wk_str_pnt = #STP_Bollina_Pnt }
         else
         {
            $wk_str_pnt = #base_2

            $wk_str_pnt.x = $wk_str_pnt.x - COSENO(ANG_TOT2($wk_idx_test))*100 + SENO(ANG_TOT2($wk_idx_test))*10
            $wk_str_pnt.y = $wk_str_pnt.y + 30
            $wk_str_pnt.z = $wk_str_pnt.z + SENO(ANG_TOT2($wk_idx_test))*100 + COSENO(ANG_TOT2($wk_idx_test))*10
         }

         //if( VAR_VAL_STR($wk_idx_test,"ORD_COD") != "" )
         //{
         //   #TSTP_Prospetti_VarPall = $wk_str_var
         //   #TSTP_Prospetti_PntPall = $wk_str_pnt
         //}
         #TSTP_Prospetti_VarPall = $wk_str_var
         #TSTP_Prospetti_PntPall = $wk_str_pnt

         $wk_i = $wk_i + 1
      }

      $wk_i = 1
      while ( $wk_i<=$wk_leg_var )
      {
         //VAR_VALUESTR_SET(-1,STRCAT("wk_TSTP_DIS_VAR",STR($wk_i)),NumToAlfa($wk_i))
         //VAR_VALUESTR_SET(-1,STRCAT("wk_TSTP_DIS_VAL",STR($wk_i)),$wk_leg_val_dsc[$wk_i])
         if( debug==1 ) { COMANDO2(STRCAT("LOGMSG STP_BOLLINA  ",NumToAlfa($wk_i) , " - ",$wk_leg_var[$wk_i] , " - " ,$wk_leg_val[$wk_i])) }

         $wk_i = $wk_i + 1
      }

      $TSTP_Prospetti_VarPall = "TSTP_Prospetti_VarPall"
      $TSTP_Prospetti_PntPall = "TSTP_Prospetti_PntPall"
      $TSTP_Prospetti_TipPall = 1
      $TSTP_Prospetti_PosPall = 0

      $TSTP_Prospetti_ModPall = 4
   }

   //Luca 17/01/2022
   //gestisco pallino del progressivo riga
   //la stessa procedura è utilizzata per la matricola nel caso di stampa per montaggio 30MM
   PROCEDURA Stampa_Prospetti_PostQuota_ProgRiga
   {
      GOSUB Reset_Var_TSTP_Prospetti_VarPall

      $TSTP_RiduzioneQuote  = 2
      if( VAR_VAL(-1,"wk_OnStampa_2Viste") == 1 )
      {
         $TSTP_RiduzioneQuote  = 1.5
      }

      WITH_VAR("$wk_num","IDX_GEST",0,0,"")

      if( $wk_OnStampa_2VisteAcc == 1 )
      {
         WITH_VAR("$wk_num","IDX_GEST",$num_con_figli,0,"")
      }

      $wk_i = 1
      while ( $wk_i<=$wk_num )
      {
         SET_#($wk_num[$wk_i])

         $wk_ok_bollina = 1

         if( $wk_OnStampa_2VisteAcc == 1 )
         {
            $wk_ok_bollina = 0

            if( INSERIMENTO2($wk_num[$wk_i]) == $ins2_attrezzato
              | INSERIMENTO2($wk_num[$wk_i]) == $ins2_vestito
              | INSERIMENTO2($wk_num[$wk_i]) == $ins2_riempito  )
            {
               if( VAR_VAL($wk_num[$wk_i],"STP_2V_NoStpAccessori") != 1 ) { $wk_ok_bollina = 1 }
            }
         }

         //Luca 17/01/2022
         if( VAR_VAL(-1,"wk_OnStampa_2Viste_30MM") == 1 )
         {
            if( HAS_ALIAS($wk_num[$wk_i],"Fia30MM") == 1
              | HAS_ALIAS($wk_num[$wk_i],"Rip30MM") == 1 ) { $wk_ok_bollina = 1 }
         }

         if( $wk_ok_bollina )
         {
            $wk_ang = ANG_TOT2($wk_num[$wk_i])

            //$wk_str_pnt = #alto_1
            //$wk_str_pnt.x = #base_1.x + COSENO($wk_ang)*(80) +   SENO($wk_ang)*(20)
            //$wk_str_pnt.y = #alto_1.y - 80
            //$wk_str_pnt.z = #base_1.z -   SENO($wk_ang)*(80) + COSENO($wk_ang)*(20)

            $wk_str_pnt = #alto_1
            $wk_str_pnt.x = #base_1.x + COSENO($wk_ang)*(#X/2) +   SENO($wk_ang)*(50)
            $wk_str_pnt.y = #base_1.y + #Y/2
            $wk_str_pnt.z = #base_1.z - SENO($wk_ang)*(#X/2) + COSENO($wk_ang)*(50)

            if( VAR_EXIST($wk_num[$wk_i],"STP_Bollina_Pnt") ) { $wk_str_pnt = #STP_Bollina_Pnt }

            //$wk_str_pnt.x = #base_1.x + COSENO($wk_ang)*(#X/2) +   SENO($wk_ang)*(30)
            //$wk_str_pnt.y = #base_1.y + #Y/2
            //$wk_str_pnt.z = #base_1.z -   SENO($wk_ang)*(#X/2) + COSENO($wk_ang)*(30)

            #TSTP_Prospetti_VarPall = STR(VAR_VAL($wk_num[$wk_i],"ORD_GRUPPOORDBDM"))

            //Luca 17/01/2022
            if( VAR_VAL(-1,"wk_OnStampa_2Viste_30MM") == 1)
            {
               #TSTP_Prospetti_VarPall = STR(VAR_VAL($wk_num[$wk_i],"IDX_GEST"))
            }
            //STR(#IDX_GEST)
            #TSTP_Prospetti_PntPall = $wk_str_pnt
         }

         $wk_i = $wk_i + 1
      }

      $TSTP_Prospetti_VarPall = "TSTP_Prospetti_VarPall"
      $TSTP_Prospetti_PntPall = "TSTP_Prospetti_PntPall"
      $TSTP_Prospetti_TipPall = 1
      $TSTP_Prospetti_PosPall = 1
      $TSTP_Prospetti_ColPall = [130,250,250]
      $TSTP_Prospetti_ModPall = 4
   }

   PROCEDURA Reset_Var_TSTP_Prospetti_VarPall
   {
      WITH_VAR("$wk_reset","TSTP_Prospetti_VarPall",$alfa,0,"")

      //COMANDO2(STRCAT("LOGMSG StampaComm_V2_2Viste Reset_Var_TSTP_Prospetti_VarPall $wk_reset=",STR($wk_reset)))

      $wk_i = 1
      while ( $wk_i <= $wk_reset )
      {
         DEL_VAR($wk_reset[$wk_i],"TSTP_Prospetti_VarPall")
         DEL_VAR($wk_reset[$wk_i],"TSTP_Prospetti_PntPall")

         $wk_i = $wk_i + 1
      }
   }
   //************************************************************************************************
   //}
   //************************************************************************************************

   //[ STAMPE XGLASS
   PROCEDURA StampaXGLASS
   {
      //PER STAMPE XGLASS SI INTEDONO LE STAMPE XGLASS DEL 368
      //SONO COSI' COMPOSTE:
      // 1 - PAGINA 1 CON VISTA A COLORI ISO
      // 2 - PER OGNI GRUPPO VENGONO FATTE 2 (o 4) STAMPE
      // 2.1 - VISTA FRONTE B/N
      //       - VISIBILI SOLO ELEMENTI XGLASS DEL GRUPPO
      //       - INDICAZIONE LETTERA XGLASS
      //       - INDICAZIONE FINITURA
      //       - LEGGENDA a DX con MISURA REALE FRONTALE CON RELATIVA LETTERA
      //       - MINI-ISO CON TUTTI GLI ELEMENTI VISIBILI + LETTERA XGLASS + INDICAZIONE FINITURA
      // 2.2 - VISTA FRONTE A COLORI
      //       - VISIBILI SOLO ELEMENTI XGLASS DEL GRUPPO
      //       - QUOTE SOPRA E DX DI TUTTI GLI ELEMENTI XG DEL GRUPP

      //TODO
      // ANGOLO
      // BIFACCIALI
      // PCF

      $SXG_debug = 0
      #ifdef TE
         $SXG_debug = VAR_VAL(-1,"ATTIVA_LOG_DBG")
      #endif
      $SXG_debug_msg  = "START"     LogProcedura2("SXG_Stampa")

      VAR_SET_MODE(-1,"SXG_debug_msg",$MODE_NOSAVE)
      VAR_SET_MODE(-1,"SXG_debug",$MODE_NOSAVE)

      // VERIFICO CHE CI SIA ALMENO UN GRUPPO XGLASS
      //SE NON E' STATA APERTA L'INTERFACCIA DEI GRUPPI, NON ESISTE LA VARIABILE GLOBALE
      //if( VAR_VAL(-1,"GROUPS__") == 0 )
      WITH_VAR("$wk_groups","GROUP__",$alfa,0,"")
      //Luca 22/07/2021 se non esistono gruppo, li genero
      if( $wk_groups == 0 ) { GOSUB AssegnaAutoGruppiXGlass }

      WITH_VAR("$wk_groups","GROUP__",$alfa,0,"")
      if( $wk_groups == 0 )
      {
         $SXG_debug_msg  = "NON CI SONO GRUPPI ASSEGNATI"     LogProcedura2("SXG_Stampa")
         EXITSUB()
      }

      // VERIFICO CHE CI SIA ALMENO UNA LETTARA XGLASS ASSEGNATA E CHE FACCIA PARTE DI UN ELEMENTO DA STAMPARE (ALIAS StampaXG)
      WITH_ALIAS("$wk_str","StampaXG")
      if( $wk_str == 0 )
      {
         $SXG_debug_msg  = "NON CI SONO STRUTTURE CON Alias StampaXG"     LogProcedura2("SXG_Stampa")
         EXITSUB()
      }

      $wk_continua = 0
      //ASSEGNO LE VARIABILI XGLASS
      GOSUB Assegna_VarTecnica_XGLASS

      $wk_i = 1
      while ( $wk_i <= $wk_str & $wk_continua == 0 )
      {
         WITH_VAR_LOCAL($wk_str[$wk_i],"$wk_figli_xg","XGLASS",$alfa_con_figli,0,"")
         $wk_j = 1
         while ( $wk_j <= $wk_figli_xg )
         {
            if( VAR_VAL_STR($wk_figli_xg[$wk_j],"XGLASS")!="" ) { $wk_continua = 1 }
            $wk_j = $wk_j + 1
         }

         $wk_i = $wk_i + 1
      }

      if( $wk_continua == 0  )
      {
         $SXG_debug_msg  = "NON CI SONO VARIABILE XGLASS VALORIZZATE"     LogProcedura2("SXG_Stampa")
         EXITSUB()
      }

      GOSUB InizioStampaPDF

      GOSUB InfoCartiglioGen

      $VAR_AnteprimaDiStampa = 1
      if( $OnTerminate==1 )
      {
         $VAR_AnteprimaDiStampa = 0
         if( $CNP==0 ) { $VAR_AnteprimaDiStampa = 1 }
      }


      COMANDO2("SHOW Abilita OFF")

      $SET_STAMPA="0031"

      //IMPOSTO NOME FILE E INIZIALIZZO CONTATORE PAGINE
      $POSTNOMESTAMPA = "-XGLASS"
      $wk_suffisso_emf = "XGLASS"
      VAR_CREATE_NUM(-1,STRCAT("wk_pagina_",$wk_suffisso_emf),0,0,"")

      //RESTORE VISIBILITA'
      COMANDO2("M4_Message actVisibilityRestoreAll")

      GOSUB adatta_dim_quote

      GOSUB StampaXGLASS_ISO

      //CREO I SINGOLI GRUPPI
      GOSUB StampaXGLASS_CreaGruppi

      //CICLO I GRUPPI
      $wk_xg_ii = 1
      while ( $wk_xg_ii <= $wk_GRUPPI )
      {
         //PER OGNI GRUPPO DEVO VERIFICARE SE:
         //1. E' PRESENTE ALMENO UN ELEMENTO XGLASS DA STAMPARE
         //2. E' UNA COMPOSIZIONE AD ANGOLO
         //3. SONO PRESENTI DEI BIFACCIALI

         //mi creo il sotto-array del gruppo che contiene solo gli elementi con VARIABILE XGLASS valorizzata
         ArrayCopy(-1 , STRCAT("wk_GRUPPI_",STR($wk_xg_ii)) , "wk_current_group")

         $wk_items_xglass = 0
         $wk_items_xglass_ang2 = 0
         $wk_items_xglass_bif  = 0

         $wk_ang_rif = 0
         $wk_j = 1
         while ( $wk_j <= $wk_current_group )
         {
            if( HAS_ALIAS($wk_current_group[$wk_j],"Bifacciale") == 0 )
            {
               $wk_ang_rif = ANG_TOT_NOR($wk_current_group[$wk_j])
               $wk_j = $wk_current_group
            }

            $wk_j = $wk_j + 1
         }

         $SXG_debug_msg  = STRCAT("GRUPPO ",STR($wk_i), " ang_rif = ", STR($wk_ang_rif) )
         LogProcedura2("SXG_Stampa")

         $wk_j = 1
         while ( $wk_j <= $wk_current_group )
         {
            WITH_VAR_LOCAL($wk_current_group[$wk_j],"$wk_figli_xg","XGLASS",$alfa_con_figli,0,"")
            $wk_h = 1
            while ( $wk_h <= $wk_figli_xg )
            {
               if( VAR_VAL_STR($wk_figli_xg[$wk_h],"XGLASS") != "" )
               {
                  //$wk_ne = $wk_items_xglass +1
                  //$wk_items_xglass         = $wk_ne
                  //$wk_items_xglass[$wk_ne] = $wk_figli_xg[$wk_h]

                  //$wk_ang_cur = ANG_TOT_NOR($wk_current_group[$wk_j])
                  $wk_ang_cur = ANG_TOT_NOR($wk_figli_xg[$wk_h])


                  $SXG_debug_msg  = STRCAT("IDX ",STR($wk_current_group[$wk_j]), " $wk_ang_cur = ", STR($wk_ang_cur) )
                  //verifico l'angolo

                  if( ABS($wk_ang_cur-$wk_ang_rif) < 0.1 )
                  {
                     $SXG_debug_msg = STRCAT($SXG_debug_msg ," --> ARRAY A")
                     AddItem2Array(-1,"wk_items_xglass",$wk_figli_xg[$wk_h] ,"")
                  }

                  //bifacciale
                  if( ABS($wk_ang_cur-$wk_ang_rif) > 179.9
                    & ABS($wk_ang_cur-$wk_ang_rif) < 180.1 )
                  {
                     $SXG_debug_msg = STRCAT($SXG_debug_msg ," --> ARRAY BIF")
                     AddItem2Array(-1,"wk_items_xglass_bif",$wk_figli_xg[$wk_h] ,"")
                  }

                  //angolo 2
                  if( ABS($wk_ang_cur-$wk_ang_rif) > 89.9
                    & ABS($wk_ang_cur-$wk_ang_rif) < 90.1 )
                  {
                     $SXG_debug_msg = STRCAT($SXG_debug_msg ," --> ARRAY ANG2")
                     AddItem2Array(-1,"wk_items_xglass_ang2",$wk_figli_xg[$wk_h] ,"")
                  }

                  if( ABS($wk_ang_cur-$wk_ang_rif) > 269.9
                    & ABS($wk_ang_cur-$wk_ang_rif) < 270.1 )
                  {
                     $SXG_debug_msg = STRCAT($SXG_debug_msg ," --> ARRAY ANG2")
                     AddItem2Array(-1,"wk_items_xglass_ang2",$wk_figli_xg[$wk_h] ,"")
                  }

                  LogProcedura2("SXG_Stampa")

               }
               $wk_h = $wk_h + 1
            }

            //Luca 21/07/2022
            WITH_VAR_LOCAL($wk_current_group[$wk_j],"$wk_ruota_fianco","STP_XG_RUOTA_FIANCO",$num_con_figli,0,"0")
            $wk_h = 1
            while ( $wk_h <= $wk_ruota_fianco )
            {
               $wk_idx_test = $wk_ruota_fianco[$wk_h]
               DEL_VAR_MODIFICATE($wk_idx_test,"STP_XG_RUOTA_FIANCO")
               VAR_VALUE_SET($wk_idx_test,"STP_XG_RUOTA_FIANCO",1)
               RIGENERA_IDX($wk_idx_test)

               $wk_h = $wk_h + 1
            }

            $wk_j = $wk_j + 1
         }

         if( $wk_items_xglass > 0 )
         {
            $wk_gruppo_ang = 0
            $wk_gruppo_bif = 0
            $wk_stampa_bif = 0

            $wk_stampa_XGLASS = "LETTERE"
            GOSUB StampaXGLASS_Sub

            $wk_stampa_XGLASS = "QUOTE"
            GOSUB StampaXGLASS_Sub

            if( $wk_items_xglass_bif > 0 )
            {
               ArrayCopy( -1, "wk_items_xglass_bif", "wk_items_xglass")

               $wk_stampa_bif = 1

               $wk_stampa_XGLASS = "LETTERE"
               GOSUB StampaXGLASS_Sub

               $wk_stampa_XGLASS = "QUOTE"
               GOSUB StampaXGLASS_Sub
            }
         }

         //restore dei fianchi ruotati
         $wk_j = 1
         while ( $wk_j <= $wk_current_group )
         {
            WITH_VAR_LOCAL($wk_current_group[$wk_j],"$wk_ruota_fianco","STP_XG_RUOTA_FIANCO",$num_con_figli,0,"0")
            $wk_h = 1
            while ( $wk_h <= $wk_ruota_fianco )
            {
               $wk_idx_test = $wk_ruota_fianco[$wk_h]
               VAR_VALUE_SET($wk_idx_test,"STP_XG_RUOTA_FIANCO",0)
               RIGENERA_IDX($wk_idx_test)

               $wk_h = $wk_h + 1
            }

            $wk_j = $wk_j + 1
         }

         $wk_xg_ii = $wk_xg_ii + 1
      }

      COMANDO2("M4_SHOW Ambienti Show")
      COMANDO2("SHOW Abilita On")
      COMANDO2("SHOW All")

      $SXG_debug_msg  = "CHIUDO PDF"     LogProcedura2("SXG_Stampa")
      GOSUB FineStampaPDF
      $wk_suffisso_PDF = ""

      //Luca 16/12/2019
      FILE_DEL(STRCAT($wk_prefisso_file,$File, "*XGLASS*.emf"))

      $SXG_debug_msg  = "FINE"     LogProcedura2("SXG_Stampa")
      GOSUB CancellaGlobaliStp
   }

   PROCEDURA InizializzaVar_StampaXGLASS
   {
      $wk_FORM_dW =  5
      $wk_FORM_W  =  285
      $wk_FORM_dH =  48
      $wk_FORM_H  =  155

      //x mini iso
      $wk_FORM2_dW =  217
      $wk_FORM2_dH =  143
      $wk_FORM2_W  =  73
      $wk_FORM2_H  =  60

      $wk_stp_cmd_1 = ""
      $wk_stp_cmd_2 = ""


      $wk_SP_LINEA_MOBILI       = $TSTP_SP_LINEA_MOBILI
      $wk_SP_LINEA_MOBILI_TRATT = $TSTP_SP_LINEA_TRATTEGGIO
      $wk_SP_LINEA_SCRITTE      = $TSTP_SP_LINEA_QUOTE
      $wk_SP_LINEA_QUOTE        = $TSTP_SP_LINEA_SCRITTE

      $wk_STP_LegendaTitolo = "DIMENSIONI"

      $wk_STP_DIS_Titolo = "STAMPA XGLASS"

      $wk_STP_DIS_LBL_5 = "Operatore:"
      $wk_STP_DIS_5     = VAR_VAL_STR( -1, "CodOperatore")

      $wk_STP_DIS_LBL_4 = ""
      $wk_STP_DIS_4     = ""

      $wk_STP_DIS_LBL_6 = MSG(228)
      $wk_STP_DIS_6     = VAR_VAL_STR(-1,"Gestionale_Ordine_Riferimento")

      $wk_view_roll      = "0"
      $wk_view_iso_roll  = "0 0"

      $wk_STP_TitoloInfo = ""
      $wk_STP_DIS_VAR1 = ""  $wk_STP_DIS_VAL1 = ""
      $wk_STP_DIS_VAR2 = ""  $wk_STP_DIS_VAL2 = ""
      $wk_STP_DIS_VAR3 = ""  $wk_STP_DIS_VAL3 = ""
      $wk_STP_DIS_VAR4 = ""  $wk_STP_DIS_VAL4 = ""
      $wk_STP_DIS_VAR5 = ""  $wk_STP_DIS_VAL5 = ""
      $wk_STP_DIS_VAR6 = ""  $wk_STP_DIS_VAL6 = ""
      $wk_STP_DIS_VAR7 = ""  $wk_STP_DIS_VAL7 = ""
      $wk_STP_DIS_VAR8 = ""  $wk_STP_DIS_VAL8 = ""

      //RESET DI TUTTE LE VARIABILI
      $wk_STP_LEG_VAR1  = ""         $wk_STP_LEG_VAL1  = ""
      $wk_STP_LEG_VAR2  = ""         $wk_STP_LEG_VAL2  = ""
      $wk_STP_LEG_VAR3  = ""         $wk_STP_LEG_VAL3  = ""
      $wk_STP_LEG_VAR4  = ""         $wk_STP_LEG_VAL4  = ""
      $wk_STP_LEG_VAR5  = ""         $wk_STP_LEG_VAL5  = ""
      $wk_STP_LEG_VAR6  = ""         $wk_STP_LEG_VAL6  = ""
      $wk_STP_LEG_VAR7  = ""         $wk_STP_LEG_VAL7  = ""
      $wk_STP_LEG_VAR8  = ""         $wk_STP_LEG_VAL8  = ""
      $wk_STP_LEG_VAR9  = ""         $wk_STP_LEG_VAL9  = ""
      $wk_STP_LEG_VAR10 = ""         $wk_STP_LEG_VAL10  = ""
      $wk_STP_LEG_VAR11 = ""         $wk_STP_LEG_VAL11  = ""
      $wk_STP_LEG_VAR12 = ""         $wk_STP_LEG_VAL12  = ""

      //DETTAGLIO
      $wk_STP_DT_1 = ""
      $wk_STP_DT_2 = ""

      $wk_STP_DL_1 = ""    $wk_STP_DV_1 = ""
      $wk_STP_DL_2 = ""    $wk_STP_DV_2 = ""
      $wk_STP_DL_3 = ""    $wk_STP_DV_3 = ""
      $wk_STP_DL_4 = ""    $wk_STP_DV_4 = ""
      $wk_STP_DL_5 = ""    $wk_STP_DV_5 = ""
      $wk_STP_DL_6 = ""    $wk_STP_DV_6 = ""

      $wk_STP_ELD_1  = ""  $wk_STP_ELD_C1 = ""
      $wk_STP_ELD_2  = ""  $wk_STP_ELD_C2 = ""

      $wk_STP_DIS_TitoloDisegno  = ""
      $wk_STP_DIS_TitoloDisegno2 = ""

      $wk_nome_form = "Stampa_Top2_O.emf"
      $wk_nome_layout = "Stampa_XGLASS_COL"
      $wk_stp_cmd_1 = "M4_SHOW Ambienti Show"

      if( $wk_stampa_XGLASS == "LETTERE" )
      {
         $wk_stp_cmd_1 = ""

         $wk_nome_layout = "Stampa_XGLASS_BN"
         $wk_nome_form = "Stampa_Top_O.emf"
         $wk_FORM_W  =  212
      }

      if( $wk_stampa_XGLASS == "QUOTE" )
      {
         $wk_stp_cmd_1 = ""
      }

      if( $wk_stampa_XGLASS == "QUOTE"
        | $wk_stampa_XGLASS == "LETTERE" )
      {
         $wk_STP_DIS_TitoloDisegno = VAR_VAL_STR( GetTopLevel( $wk_items_xglass[1]), "GRUPPI_##1")
         //Luca 27/01/2022
         //verifico se figlio di pcf
         if( VAR_VAL(PADRE($wk_items_xglass[1],-1),"pcfto") == 1 )
         {
            $wk_idx_pcf = PADRE($wk_items_xglass[1],-1)
            $wk_STP_DIS_TitoloDisegno = VAR_VAL_STR($wk_idx_pcf,"GRUPPI_##1")
            $wk_STP_DIS_VAR1 = STRCAT(VAR_VAL_STR($wk_idx_pcf,"ORD_COD")," - ",VAR_VAL_STR($wk_idx_pcf,"ORD_DES"))
         }
         if( $wk_stampa_bif == 1 )
         {
            $wk_STP_DIS_TitoloDisegno = STRCAT($wk_STP_DIS_TitoloDisegno , " -- BIFACCIALI")
         }
      }

      //NOTA RIFERIMENTO IN CASO DI PCF

      //NOTA ORDINE SOSTITUZIONE
      //$STP_XG_Nota3 = STRCAT("Ordine sostitutivo/completamento con riferimento : ", $TST_nOrdineRif)
   }

   PROCEDURA StampaXGLASS_ISO
   {
      $SXG_debug_msg  = "INIZIO StampaXGLASS_ISO"     LogProcedura2("SXG_Stampa")

      $wk_stampa_XGLASS = "ISO"
      GOSUB InizializzaVar_StampaXGLASS

      $wk_stp_cmd_1 = "M4_SHOW Ambienti Show"

      WITH_ALIAS("$wk_str","StampaXG")
      $wk_i = 1
      while ( $wk_i <= $wk_str )
      {
         VAR_VALUE_SET($wk_str[$wk_i],"flag_stampa",1)
         $wk_i = $wk_i + 1
      }

      $wk_ang_str1 = ANG_TOT_NOR($wk_str[1])

      $wk_view_roll = STRCAT( STR(-1*$wk_ang_str1) ," 0" )
      $wk_view_iso_roll = " -25 25"

      GOSUB NomeDisegno
      GOSUB StampaLayout

      $wk_i = 1
      while ( $wk_i <= $wk_str )
      {
         VAR_VALUE_SET($wk_str[$wk_i],"flag_stampa",0)
         $wk_i = $wk_i + 1
      }
   }

   PROCEDURA StampaXGLASS_CreaGruppi
   {
      WITH_ALIAS("$wk_str","StampaXG")

      // TRASFORMO LA STRINGA GROUP__ IN ARRAY
      $wk_i = 1
      while ( $wk_i <= $wk_str )
      {
         $wk_str_group = VAR_VAL_STR($wk_str[$wk_i],"GROUP__")

         //Luca 05/09/2022
         //il gruppo è impostato nel top level, l'alias StampaXG non necessariamente
         //MANTIS 30616: Stampa XGLASS di elementi attrezzati
         if( VAR_EXIST($wk_str[$wk_i],"GROUP__") == 0 )
         {
            $wk_str_group = VAR_VAL_STR(GetTopLevel($wk_str[$wk_i]),"GROUP__")
         }


         STR_SPLIT($wk_str_group ,";",1,"GRUPPI",$wk_str[$wk_i])

         $wk_i = $wk_i + 1
      }

      //SE NON E' STATA APERTA L'INTERFACCIA DEI GRUPPI, NON ESISTONO LE VARIABILI GLOBALI DEI GRUPPI,
      //QUINDI DEVO CREARMI L'ARRAY CORRETTO
      $wk_GRUPPI = 0

      $wk_i = 1
      while ( $wk_i <= $wk_str )
      {
         $wk_idx_str = $wk_str[$wk_i]
         $wk_num_gruppi = VAR_VAL($wk_idx_str,"GRUPPI")

         $wk_j = 1
         while ( $wk_j <= $wk_num_gruppi )
         {
            $wk_gruppo_n = VAR_VAL_STR($wk_idx_str,STRCAT("GRUPPI_##",STR($wk_j)))

            $wk_aggiungi = 1

            //verifico se il gruppo è già stato inserito sull'array globale
            $wk_h = 1
            while ( $wk_h <= $wk_GRUPPI & $wk_aggiungi == 1 )
            {
               if( $wk_gruppo_n == $wk_GRUPPI[$wk_h] ) { $wk_aggiungi = 0 }
               $wk_h = $wk_h + 1
            }

            //AGGIUNGO SU ARRAY GLOBALE
            if( $wk_aggiungi == 1 )
            {
               $wk_ne = $wk_GRUPPI + 1
               $wk_GRUPPI = $wk_ne
               $wk_GRUPPI[$wk_ne] = $wk_gruppo_n
            }

            $wk_j = $wk_j + 1
         }

         $wk_i = $wk_i + 1
      }

      SORT_ARRAY(-1,"wk_GRUPPI")

      //COMANDO2(STRCAT("LOGMSG $wk_GRUPPI =",STR($wk_GRUPPI) ))

      //CREO UN ARRAY PER OGNI SINGOLO GRUPPO
      $wk_i = 1
      while ( $wk_i <= $wk_GRUPPI )
      {
         $wk_string_gp = $wk_GRUPPI[$wk_i]
         WITH_VAR("$wk_str_grp","GROUP__",$alfa,1,STRCAT("*",$wk_string_gp,"*"))

         COMANDO2(STRCAT("LOGMSG GRUPPO [",STR($wk_i),"]  $wk_string_gp=",$wk_string_gp, " TROVATI ",STR($wk_str_grp)))

         ArrayCopy(-1 , "wk_str_grp" , STRCAT("wk_GRUPPI_",STR($wk_i)))

         $wk_i = $wk_i + 1
      }

      //TODO
      //PER OGNI PCF CREO UN GRUPPO NUOVO ( 1 STAMPA PER OGNI PCF)
   }

   PROCEDURA StampaXGLASS_Sub
   {
      GOSUB InizializzaVar_StampaXGLASS

      // ----------------------------------------------
      // aggiungo il box ingombro (per allineamento dei frame)
      // ----------------------------------------------
      BuildBoxXGlass(-1, "wk_current_group")

      $wk_STP_DT_IMG  = ""
      $wk_STP_DT_IMG2 = ""
      $wk_STP_DT_1 = ""
      $wk_STP_DT_2 = ""

      if( $wk_stampa_XGLASS == "LETTERE" ) { GOSUB StampaXGLASS_SubLettere }
      if( $wk_stampa_XGLASS == "QUOTE" )   { GOSUB StampaXGLASS_SubQuota }

      if( $wk_stampa_XGLASS == "LETTERE" )
      {
         //AGGIUNGO TUTTI GLI ELEMENTI DEL GRUPPO SULLA STAMPA MINI ISO
         $wk_view_mini_iso_roll = " -25 25"
         $wk_j = 1
         while ( $wk_j <= $wk_current_group )
         {
            VAR_VALUE_SET($wk_current_group[$wk_j],"flag_stampa_mini_iso",1)
            VAR_VALUE_SET($wk_current_group[$wk_j],"flag_stampa_zoom",1)
            $wk_j = $wk_j + 1
         }
      }

      //aggiungo alla stampa il box di ingombro per allineare la vista
      $wk_idx_box = -1
      WITH_ALIAS("$wk_box","StpGruppoXG")
      if( $wk_box>0 ) { $wk_idx_box = $wk_box[1] }
      if( IS_IDX($wk_idx_box) ) { VAR_VALUE_SET($wk_idx_box,"flag_stampa_zoom",1) }


      $wk_ang_str1 = ANG_TOT_NOR($wk_items_xglass[1])
      //if( $wk_stampa_bif==1 ) { $wk_ang_str1 = $wk_ang_str1 + 180 }

      $wk_view_roll = STRCAT( STR(-1*$wk_ang_str1) ," 0" )

      GOSUB NomeDisegno
      GOSUB StampaLayout

      //reset della variabili utilizzate in stampa
      WITH_VAR("$wk_reset","flag_stampa",$num_con_figli,1,"1")
      $wk_j = 1
      while ( $wk_j <= $wk_reset )
      {
         $wk_idx_item = $wk_reset[$wk_j]
         VAR_VALUE_SET($wk_idx_item,"flag_stampa",0)
         $wk_j = $wk_j + 1
      }

      $wk_j = 1
      while ( $wk_j <= $wk_current_group )
      {
         VAR_VALUE_SET($wk_current_group[$wk_j],"flag_stampa_mini_iso",0)
         VAR_VALUE_SET($wk_current_group[$wk_j],"flag_stampa_zoom",0)

         $wk_j = $wk_j + 1
      }
      if( IS_IDX($wk_idx_box) ) { VAR_VALUE_SET($wk_idx_box,"flag_stampa_zoom",0) }


      GOSUB EliminaBoxGruppiXGlass

      //cancello scritte
      if( $DIS_TO_GEMO==0 ) { GOSUB CancellaScritteQuote }
   }

   PROCEDURA StampaXGLASS_SubLettere
   {
      if( $DIS_TO_GEMO == 1 ) { EXITSUB() }

      $SXG_debug_msg  = STRCAT("StampaXGLASS_SubLettere --> GRUPPO ",STR($wk_i)," BIFACCIALE = ",STR($wk_stampa_bif) )
      LogProcedura2("SXG_Stampa")

      //creo l'array degli elementi da stampare
      //parto dagli elementi di $wk_items_xglass (foglia gestionale) e verifico se ci sono figli con la variabile STP_XG_STAMPA
      //se non c'è neanche un figlio grafico con la variabile stampa l'elemento gestionale
      //devo poi escludere quello non di sostituzione in ordine di sostituzione
      $wk_items_stampa = 0

      $wk_j = 1
      while ( $wk_j <= $wk_items_xglass )
      {
         $wk_idx_item = $wk_items_xglass[$wk_j]
         $wk_idx_2add = $wk_idx_item

         WITH_VAR_LOCAL($wk_idx_item,"$wk_figliconvar","STP_XG_STAMPA",$num_con_figli,1,"1")

         //dovrei trovare solo un elemento
         if( $wk_figliconvar > 0  )
         {
            $wk_idx_2add = $wk_figliconvar[1]

            if( VAR_VAL_STR($wk_idx_item,"XGLASS") != "" )
            {
               //PASSO SOTTO LA VARIABILE DI XGLASS
               VAR_VALUESTR_SET($wk_figliconvar[1],"XGLASS",VAR_VAL_STR($wk_idx_item,"XGLASS") )
            }
         }

         //Luca 15/04/2021 eccezione ante groove,key
         if( $wk_figliconvar == 2 )
         {
            if( UN_PADRE2($wk_figliconvar[1],"FrontaleGroove_Arm20")
              | UN_PADRE2($wk_figliconvar[1],"FrontaleKey_Arm20")  )
            {
               $wk_idx_2add = $wk_figliconvar[1]
               if( NOME($wk_idx_2add) == "ManigliaFLAPP" )  { $wk_idx_2add = $wk_figliconvar[2] }
               VAR_VALUESTR_SET($wk_idx_2add,"XGLASS",VAR_VAL_STR($wk_idx_item,"XGLASS") )
            }
         }

         //Luca 07/04/2021
         if( VAR_VAL($wk_idx_2add,"STP_XG_NOSTAMPA") == 0 )
         {
            if( ValExistInArray($wk_idx_2add,-1,"wk_items_stampa") == 0 )
            {
               AddItem2Array(-1,"wk_items_stampa",$wk_idx_2add,"")
            }
         }

         $SXG_debug_msg  = STRCAT("StampaXGLASS_SubQuota --> GRUPPO ",STR($wk_i)," $wk_idx_item = ",STR($wk_idx_item) , " $wk_figliconvar=",STR($wk_figliconvar) , " $wk_idx_2add=",STR($wk_idx_2add))
         LogProcedura2("SXG_Stampa")


         $wk_j = $wk_j +1
      }


      //CICLO TUTTI GLI ELEMENTI, AGGIUNGO FLAG DI STAMPA, LETTERA XGLASS E AGGIUGNO ALLA LEGGENDA
      $alias_scr     = "STP_SCR_XG"
      $AliasQuota    = "STP_QUO_XG"
      $AliasQuotaLat = "STP_QUO_XG"
      $HChar = 25
      $LChar = 15

      $ang_scr = 0

      $HChar   = $Yscr/2         $LChar   = $Xscr/2
      $Alt_Chr = $Yscr/2         $Lar_Chr = $Xscr/2

      if( VAR_VAL(-1,"wk_stampa_XGLASS_Arm") == 1 )
      {
         $HChar   = $Yscr         $LChar   = $Xscr
         $Alt_Chr = $Yscr         $Lar_Chr = $Xscr
      }

      $wk_j = 1
      while ( $wk_j <= $wk_items_stampa )
      {
         $wk_idx_item = $wk_items_stampa[$wk_j]

          $SXG_debug_msg  = STRCAT("StampaXGLASS_SubStampa --> GRUPPO ",STR($wk_i)," $wk_idx_item = ",STR($wk_idx_item) , " " ,NOME($wk_idx_item) )
         LogProcedura2("SXG_Stampa")

         VAR_VALUE_SET($wk_idx_item,"flag_stampa",1)

         SET_#($wk_idx_item)
         $ang_scr = ANG_TOT_NOR($wk_idx_item)

         $P2 = #base_1
         $P2.x = $P2.x + COSENO($ang_scr)*(#X/2) +   SENO($ang_scr)*2
         $P2.y = $P2.y + #Y/2
         $P2.z = $P2.z -   SENO($ang_scr)*(#X/2) + COSENO($ang_scr)*2
         $point = 4

         //Luca 07/04/2021
         if( VAR_EXIST($wk_idx_item,"STP_XG_Point") )  { $point = #STP_XG_Point }
         if( VAR_EXIST($wk_idx_item,"STP_XG_PSCR") )   { $P2 = #STP_XG_PSCR }
         if( VAR_EXIST($wk_idx_item,"STP_XG_ANGSCR") ) { $ang_scr = #STP_XG_ANGSCR }

         $testo = VAR_VAL_STR($wk_idx_item,"XGLASS")

         $wk_faccia = "F"

         if( VAR_VAL(-1,"wk_stampa_XGLASS_Arm_VistaTOP") == 1 )
         {
            $wk_faccia = "A"
            $point = 5

            $P2.x = $P2.x +   SENO($ang_scr)*$Alt_Chr
            $P2.y = $P2.y
            $P2.z = $P2.z + COSENO($ang_scr)*$Alt_Chr
         }

         GOSUB PosizionaScrittaCAD

         //Luca 19/04/2021
         //indico l'anta angolo
         if( VAR_VAL(-1,"wk_stampa_XGLASS_Arm") == 1 )
         {
            if( $wk_stampa_ang == 1 )
            {
               if( HAS_ALIAS(GetTopLevel($wk_idx_item),"Angolo") == 1)
               {
                  $P2.y = $P2.y + 200
                  $testo = "** "
                  $wk_faccia = "F"
                  $point = 4
                  GOSUB PosizionaScrittaCAD

                  $wk_STP_DIS_SCALA = "** FRONTALI ARMADIO ANGOLO"
               }
            }
         }


         //LEGENDA
         // XGLASS
         $wk_str_legenda = $testo
         $wk_str_legenda = VAR_VAL_STR($wk_idx_item,"XGLASS")

         // DIMENSIONI
         if( VAR_EXIST($wk_idx_item,"STP_XG_ValX") ) { $wk_str_legenda = STRCAT($wk_str_legenda,"  " , STR(#STP_XG_ValX)) }  //X
         else                                        { $wk_str_legenda = STRCAT($wk_str_legenda,"  " , STR(#X)) }
         if( VAR_EXIST($wk_idx_item,"STP_XG_ValY") ) { $wk_str_legenda = STRCAT($wk_str_legenda," x " , STR(#STP_XG_ValY)) } //Y
         else                                        { $wk_str_legenda = STRCAT($wk_str_legenda," x " , STR(#Y)) }
         if( VAR_EXIST($wk_idx_item,"STP_XG_ValZ") ) { $wk_str_legenda = STRCAT($wk_str_legenda," x " , STR(#STP_XG_ValZ)) } //Z
         else                                        { $wk_str_legenda = STRCAT($wk_str_legenda," x " , STR(#Z)) }

         // FINITURA
         /// IDX GESTIONALE
         $wk_idx_gest = GetPrimoGest( $wk_idx_item, 0)
         if( VAR_EXIST( $wk_idx_item, "STP_XG_FIN_IDX") ) { $wk_idx_gest = VAR_VAL( $wk_idx_item, "STP_XG_FIN_IDX") }

         /// VARIABILE FINITURA
         $wk_str_var = ""
         if( IS_XGLASS($wk_idx_gest) > 0 ) { $wk_str_var = $IS_XGLASS_VAR }
         if( VAR_EXIST( $wk_idx_item, "STP_XG_FIN_VAR") ) { $wk_str_var = VAR_VAL_STR( $wk_idx_item, "STP_XG_FIN_VAR") }

         $wk_str_fin = GetDescCatVal( $wk_idx_gest, $wk_str_var, "VAL")

         $wk_str_legenda = STRCAT( $wk_str_legenda , "     " , $wk_str_fin )

         // SETTO LEGENDA
         VAR_VALUESTR_SET( -1, STRCAT( "wk_STP_LEG_VAR", STR($wk_j)), $wk_str_legenda)

         $wk_j = $wk_j + 1
      }
   }

   PROCEDURA StampaXGLASS_SubQuota
   {
      if( $DIS_TO_GEMO == 1 ) { EXITSUB() }

      $SXG_debug_msg  = STRCAT("StampaXGLASS_SubQuota --> GRUPPO ",STR($wk_i)," BIFACCIALE = ",STR($wk_stampa_bif) )
      LogProcedura2("SXG_Stampa")

      //creo l'array degli elementi da quotare ( e stampare )
      //parto dagli elementi di $wk_items_xglass (foglia gestionale) e verifico se ci sono figli con la variabile STP_XG_QUOTA
      //se non c'è neanche un figlio grafico con la variabile stampa l'elemento gestionale
      //devo poi escludere quello non di sostituzione in ordine di sostituzione
      $wk_items_quota = 0

      $wk_j = 1
      while ( $wk_j <= $wk_items_xglass )
      {
         $wk_idx_item = $wk_items_xglass[$wk_j]
         $wk_idx_2add = $wk_idx_item

         WITH_VAR_LOCAL($wk_idx_item,"$wk_figliconvar","STP_XG_QUOTA",$num_con_figli,1,"1")

         //dovrei trovare solo un elemento
         if( $wk_figliconvar > 0  ) { $wk_idx_2add = $wk_figliconvar[1] }

         $SXG_debug_msg  = STRCAT("StampaXGLASS_SubQuota --> GRUPPO ",STR($wk_i)," $wk_idx_item = ",STR($wk_idx_item) , " $wk_figliconvar=",STR($wk_figliconvar) , " $wk_idx_2add=",STR($wk_idx_2add))
         LogProcedura2("SXG_Stampa")

         //Luca 07/04/2021
         if( VAR_VAL($wk_idx_2add,"STP_XG_NOQUOTA") == 0 )
         {
            AddItem2Array(-1,"wk_items_quota",$wk_idx_2add,"")
         }

         //Luca 15/04/2021 eccezione ante groove,key
         if( $wk_figliconvar == 2 )
         {
            if( UN_PADRE2($wk_figliconvar[1],"FrontaleGroove_Arm20")
              | UN_PADRE2($wk_figliconvar[1],"FrontaleKey_Arm20")  )
            {
               $wk_idx_2add = $wk_figliconvar[2]
               AddItem2Array(-1,"wk_items_quota",$wk_idx_2add,"")
            }
         }

         $wk_j = $wk_j +1
      }

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

      //CREO I DUE ARRAY DI QUOTE
      //per le quote in laghezza prendo come punto di riferimento base_0.x del primo elemento - 5000
      //
      //per le quote in altezza calcolo sempre da 0
      $wk_quota_l = 0
      $wk_quota_h = 0

      $wk_quota_P1 = [-1,-1,-1]
      $wk_quota_P2 = [-1,-1,-1]

      $wk_idx_ref = $wk_items_quota[1]
      //Luca 13/04/2021
      if( NOME($wk_idx_ref) == "VetroFianco_Arm20" ) { $wk_idx_ref = PADRE($wk_items_quota[1],1) }

      SET_#($wk_idx_ref)

      $wk_quota_P1 = #base_0
      $wk_quota_P1.x = $wk_quota_P1.x - COSENO(ANG_TOT2($wk_idx_ref))*5000
      $wk_quota_P1.y = 0
      $wk_quota_P1.z = $wk_quota_P1.z +   SENO(ANG_TOT2($wk_idx_ref))*5000
      $wk_quota_P2 = #base_3
      $wk_quota_P2.x = $wk_quota_P2.x + COSENO(ANG_TOT2($wk_idx_ref))*50000
      $wk_quota_P2.y = 0
      $wk_quota_P2.z = $wk_quota_P2.z -   SENO(ANG_TOT2($wk_idx_ref))*50000

      $wk_ang =  ANG_2_PUNTI($wk_quota_P1,$wk_quota_P2)

      //mentre scorro gli elementi devo trovare l'elemento più a sx e più in basso,
      //per partire poi correttamente a stendere le quote
      $wk_quotal_prec = 999999
      $wk_quotah_prec = 999999

      $wk_quotal_idx = -1
      $wk_quotah_idx = -1

      $wk_j = 1
      while ( $wk_j <= $wk_items_quota )
      {
         $wk_idx_item = $wk_items_quota[$wk_j]
         VAR_VALUE_SET($wk_idx_item,"flag_stampa",1)

         $SXG_debug_msg  = STRCAT("StampaXGLASS_SubQuota --> GRUPPO ",STR($wk_i)," $wk_idx_item = ",STR($wk_idx_item) , " " ,NOME($wk_idx_item) )
         LogProcedura2("SXG_Stampa")

         SET_#($wk_idx_item)

         //per ogni elemento calcolo
         //  - in larghezza:
         //       - distanza da base_0 (se definita uso STP_XG_B0) e base_3 (STP_XG_B3)
         //       - prevedo altri 2 possibili punti di quota  STP_XG_P1 e STP_XG_P2 (se esistono)
         //  - in altezza:
         //       - distanza da base_0 (se definita uso STP_XG_B0) e alto_0 (STP_XG_A0)
         //       - prevedo altri 2 possibili punti di quota  STP_XG_P1 e STP_XG_P2 (se esistono)

         //Larghezzza
         $wk_point = #base_0
         if( VAR_EXIST($wk_idx_item,"STP_XG_B0") )  { $wk_point = #STP_XG_B0 }
         $wk_dist = DistanzaFraPunti($wk_quota_P1,$wk_point,$wk_ang)
         AddItem2Array(-1,"wk_quota_l",$wk_dist,"")
         if( $wk_dist < $wk_quotal_prec )
         {
            $wk_quotal_prec = $wk_dist
            $wk_quotal_idx  = $wk_idx_item
         }

         $wk_point = #base_3
         if( VAR_EXIST($wk_idx_item,"STP_XG_B3") )  { $wk_point = #STP_XG_B3 }
         $wk_dist = DistanzaFraPunti($wk_quota_P1,$wk_point,$wk_ang)
         AddItem2Array(-1,"wk_quota_l",$wk_dist,"")

         if( VAR_EXIST($wk_idx_item,"STP_XG_P1") )
         {
            $wk_point = #STP_XG_P1
            $wk_dist = DistanzaFraPunti($wk_quota_P1,$wk_point,$wk_ang)
            AddItem2Array(-1,"wk_quota_l",$wk_dist,"")
         }
         if( VAR_EXIST($wk_idx_item,"STP_XG_P2") )
         {
            $wk_point = #STP_XG_P2
            $wk_dist = DistanzaFraPunti($wk_quota_P1,$wk_point,$wk_ang)
            AddItem2Array(-1,"wk_quota_l",$wk_dist,"")
         }

         //Altezza
         $wk_point = #base_0
         if( VAR_EXIST($wk_idx_item,"STP_XG_B0") )  { $wk_point = #STP_XG_B0 }
         $wk_dist = $wk_point.y - $wk_quota_P1.y
         AddItem2Array(-1,"wk_quota_h",$wk_dist,"")
         if( $wk_dist < $wk_quotah_prec )
         {
            $wk_quotah_prec = $wk_dist
            $wk_quotah_idx  = $wk_idx_item
         }

         $wk_point = #alto_0
         if( VAR_EXIST($wk_idx_item,"STP_XG_A0") )  { $wk_point = #STP_XG_A0 }
         $wk_dist = $wk_point.y - $wk_quota_P1.y
         AddItem2Array(-1,"wk_quota_h",$wk_dist,"")

         if( VAR_EXIST($wk_idx_item,"STP_XG_P1") )
         {
            $wk_point = #STP_XG_P1
            $wk_dist = $wk_point.y - $wk_quota_P1.y
            AddItem2Array(-1,"wk_quota_h",$wk_dist,"")
         }
         if( VAR_EXIST($wk_idx_item,"STP_XG_P2") )
         {
            $wk_point = #STP_XG_P2
            $wk_dist = $wk_point.y - $wk_quota_P1.y
            AddItem2Array(-1,"wk_quota_h",$wk_dist,"")
         }


         $wk_j = $wk_j + 1
      }

      //ORDINO I DUE ARRAY
      SORT_ARRAY(-1,"wk_quota_l")
      SORT_ARRAY(-1,"wk_quota_h")

      //QUALOSA NON E' ANDATO A BUON FINE
      if( $wk_quota_l == 0 | $wk_quota_h == 0 )  { EXITSUB() }

      //ciclo gli array e aggiorno le misure (sottraendo il primo valore, il primo deve sempre essere 0)
      $wk_quota_l1 = $wk_quota_l[1]
      $wk_j = 1
      while ( $wk_j <= $wk_quota_l )
      {
         $wk_quota_l[$wk_j] = $wk_quota_l[$wk_j] - $wk_quota_l1
         $wk_j = $wk_j + 1
      }
      $wk_quota_h1 = $wk_quota_h[1]
      $wk_j = 1
      while ( $wk_j <= $wk_quota_h )
      {
         $wk_quota_h[$wk_j] = $wk_quota_h[$wk_j] - $wk_quota_h1
         $wk_j = $wk_j + 1
      }

      $alias_scr     = "STP_SCR_XG"
      $AliasQuota    = "STP_QUO_XG"
      $AliasQuotaLat = "XXX"
      $wk_AliasLineeTratt = "STP_LINE_TRAT"

      $HChar = 25
      $LChar = 15

      $ang_scr = 0
      $ang_quoSCH = 0
      $dist = 120
      $wk_stile = 0
      $frecce = 1

      $HChar   = $Yscr/4         $LChar   = $Xscr/4
      $Alt_Chr = $Yscr/4         $Lar_Chr = $Xscr/4

      if( VAR_VAL(-1,"wk_stampa_XGLASS_Arm") == 1 )
      {
         $HChar   = $Yscr         $LChar   = $Xscr
         $Alt_Chr = $Yscr         $Lar_Chr = $Xscr
      }
      if( VAR_VAL(-1,"wk_stampa_XGLASS_Arm") == 1 )
      {
         $HChar   = $Yscr/2         $LChar   = $Xscr/2
         $Alt_Chr = $Yscr/2         $Lar_Chr = $Xscr/2
      }


      //AGGIUNGO QUOTE LARGHEZZA

      SET_#($wk_quotal_idx)
      if( NOME($wk_quotal_idx) == "VetroFianco_Arm20" ) { $wk_quotal_idx = PADRE($wk_quotal_idx,1) }

      $wk_PSTART = #base_0
      if( VAR_EXIST($wk_quotal_idx,"STP_XG_B0") )  { $wk_PSTART = #STP_XG_B0 }
      $P1 = $wk_PSTART

      SET_#($wk_quotah_idx)
      $P1.y = #base_0.y + $wk_quota_h[$wk_quota_h]

      $wk_dist_progressivo = 0
      $wk_dist_prec = 99999
      $wk_dist_succ = 99999

      $wk_j = 2
      while ( $wk_j <= $wk_quota_l )
      {
         $wk_dist = $wk_quota_l[$wk_j] - $wk_dist_progressivo

         if( $wk_j == $wk_quota_l  )
         {
            $wk_dist_succ = 999999
         }
         else
         {
            $wk_dist_succ = $wk_quota_l[$wk_j+1] - $wk_dist_progressivo - $wk_dist
            if( $wk_dist_succ == 0 )  { $wk_dist_succ = 999999 }
         }

         if( $wk_dist > 0 )
         {
            $wk_stile = 1
            $P2 = $P1
            $P2.x = $P2.x + COSENO($wk_ang)*$wk_dist
            $P2.z = $P2.z -  SENO($wk_ang)*$wk_dist

            $d = DISTANZA($P1,$P2)
            $testo = ""
            $wk_linee_quota = 1
            $frecce = 0
            if( VAR_VAL(-1,"wk_stampa_XGLASS_Arm_VistaTOP") == 1 )
            {
               //$AliasQuotaLat = "STP_QUO_XG"
               GOSUB PosizionaQuota
            }
            else
            {
               GOSUB PosizionaQuotaSchienale
            }


            //metto la scritta sopra
            $wk_P2_save = $P2

            $P2.x = $P1.x + COSENO($wk_ang)*($d/2)
            $P2.y = $P2.y + $dist + 10
            $P2.z = $P1.z -   SENO($wk_ang)*($d/2)
            $point = 3
            if( $d < 30 )                                         { $P2.y = $P2.y + 30 }
            if( $d < 30 & $wk_dist_prec < 30 & $wk_dist_succ<30 ) { $P2.y = $P2.y + 30 }
            if( $d < 30 & $wk_dist_prec > 30 & $wk_dist_succ<30 ) { $point = 6 }
            if( $d < 30 & $wk_dist_prec < 30 & $wk_dist_succ>30 ) { $point = 0 }

            $wk_faccia = "F"
            //Luca 15/04/2021
            if( VAR_VAL(-1,"wk_stampa_XGLASS_Arm_VistaTOP") == 1 )
            {
               $wk_offz_scr = $dist + 10
               if( $d < 30 )  { $wk_offz_scr = $wk_offz_scr + 30 }

               $P2.x = $P1.x + COSENO($wk_ang)*($d/2) -   SENO($wk_ang)*($wk_offz_scr)
               $P2.y = $P2.y + $dist + 10

               $P2.z = $P1.z -   SENO($wk_ang)*($d/2) - COSENO($wk_ang)*($wk_offz_scr)


               $wk_faccia = "A"
            }
            $wk_dist_prec = $d

            //$testo = STR($d)
            $testo = STR(FLOOR($d*100+0.5)/100)
            $ang_scr = $wk_ang
            GOSUB PosizionaScrittaCAD

            $P2 = $wk_P2_save

            $P1 = $P2
         }
         $wk_dist_progressivo = $wk_dist_progressivo + $wk_dist

         $wk_j = $wk_j + 1
      }

      if( VAR_VAL(-1,"wk_stampa_XGLASS_Arm_VistaTOP") == 1 ) { EXITSUB() }


      $wk_PEND = $P2

      $wk_PSTART.x = $wk_PSTART.x - COSENO($wk_ang)*200
      $wk_PSTART.y = $wk_quota_h1
      $wk_PSTART.z = $wk_PSTART.z +   SENO($wk_ang)*200

      $wk_PEND.x  = $wk_PEND.x  + COSENO($wk_ang)*200
      $wk_PEND.y  = $wk_quota_h1
      $wk_PEND.z  = $wk_PEND.z  -   SENO($wk_ang)*200

      //DBG $wk_j = 1
      //DBG while ( $wk_j <= $wk_quota_h )
      //DBG {
      //DBG    COMANDO2(STRCAT("LOGMSG ATTUALE: ",STR(ATTUALE()), " | DEBUG ---- $wk_quota_h[",STR($wk_j),"]=",STR($wk_quota_h[$wk_j])))
      //DBG    $wk_j = $wk_j + 1
      //DBG }

      $wk_j = 2
      while ( $wk_j <= $wk_quota_h )
      {
         if( $wk_quota_h[$wk_j] == $wk_quota_h[$wk_j-1] )
         {
            DEL_ARRAY_ITEM(-1,"wk_quota_h",$wk_j)
            $wk_j = $wk_j - 1
         }
         $wk_j = $wk_j + 1
      }

      //DBG $wk_j = 1
      //DBG while ( $wk_j <= $wk_quota_h )
      //DBG {
      //DBG    COMANDO2(STRCAT("LOGMSG ATTUALE: ",STR(ATTUALE()), " | DEBUG ---- $wk_quota_h[",STR($wk_j),"]=",STR($wk_quota_h[$wk_j])))
      //DBG    $wk_j = $wk_j + 1
      //DBG }


      $wk_j = 1
      while ( $wk_j <= $wk_quota_h )
      {
         $wk_alt_prec = -1
         $wk_alt_suc  = -1
         if( $wk_j > 1 )           { $wk_alt_prec = $wk_quota_h[$wk_j - 1] }
         if( $wk_j < $wk_quota_h ) { $wk_alt_suc = $wk_quota_h[$wk_j + 1] }

         $wk_dist_prec = $wk_quota_h[$wk_j] -  $wk_alt_prec
         if( $wk_alt_prec < 0 )  { $wk_dist_prec = 9999 }

         if( $wk_j == $wk_quota_h  ) { $wk_dist_succ = 999999 }
         else                        { $wk_dist_succ = $wk_quota_h[$wk_j+1] - $wk_quota_h[$wk_j] }

         if( $wk_quota_h[$wk_j] != $wk_alt_prec )
         {
            $alias_linea = $wk_AliasLineeTratt
            $wk_PSTART.y = $wk_quota_h1 + $wk_quota_h[$wk_j]
            $wk_PEND.y   = $wk_quota_h1 + $wk_quota_h[$wk_j]

            $P2 = $wk_PSTART
            $d = DISTANZA($wk_PSTART,$wk_PEND)
            $ang_scr = $wk_ang
            GOSUB TSTP_PosizionaLineaCAD

            $P2 = $wk_PEND

            $testo = STR(FLOOR($wk_quota_h[$wk_j]*100+0.5)/100)
            $testo = STRCAT("  ", $testo)
            $point = 1

            $wk_limite = 15
            if( VAR_VAL(-1,"wk_stampa_XGLASS_CassArm") == 1 ) { $wk_limite = 23 }
            if( VAR_VAL(-1,"wk_stampa_XGLASS_Arm") == 1 )     { $wk_limite = 30 }

            if( ABS( $wk_alt_prec - $wk_quota_h[$wk_j] ) < $wk_limite  ) { $point = 0 }

            if( $wk_alt_suc > 0 )
            {
               if( ABS( $wk_alt_suc - $wk_quota_h[$wk_j] ) < $wk_limite
                 & ABS( $wk_alt_suc - $wk_quota_h[$wk_j] ) != 0 )        { $point = 2 }
            }

            if( $wk_dist_prec < 50 & $wk_dist_succ < 50 )
            {
               $P2.x = $P2.x + COSENO($wk_ang) * 100
               $P2.z = $P2.z +   SENO($wk_ang) * 100
               $point = 1
            }

            $wk_faccia = "F"
            $ang_scr = $wk_ang
            GOSUB PosizionaScrittaCAD
         }

         $wk_j = $wk_j + 1
      }
   }
   //] STAMPE XGLASS

   //{ STAMPA TECNICA SCRIVANIE AIR
   PROCEDURA StampaProd_Scrivania_AIR
   {
      log = 0
      ScriviSuLog( log , "StampaProd_Scrivania_AIR", "START" )

      WITH_ALIAS( "$wk_scriv", "StpScrivaniaAIR")

      $wk_scriv_num = 1
      while( $wk_scriv_num <= $wk_scriv)
      {
         $wk_scriv_att = $wk_scriv[$wk_scriv_num]
         $wk_scriv_att_all = VAR_VAL( $wk_scriv_att, "ALLEGATI")
         $wk_scriv_att_tall = VAR_VAL( $wk_scriv_att, "T_ALLEGATI")
         $wk_scriv_mat = VAR_VAL_STR( $wk_scriv_att, "VAR_MaterialeStr")

         //Escludo rivestite
         if( $wk_scriv_mat == "VETRO"
           | $wk_scriv_att_tall - $wk_scriv_att_all > 0)
         {
            DEL_ARRAY_ITEM( -1, "wk_scriv", $wk_scriv_num)
            $wk_scriv_num = $wk_scriv_num - 1
         }

         $wk_scriv_num = $wk_scriv_num + 1
      }

      if( $wk_scriv == 0 )
      {
         ScriviSuLog( log , "StampaProd_Scrivania_AIR" , "-- NON CI SONO SCRIVANIE DA STAMPARE" )
         ScriviSuLog( log , "StampaProd_Scrivania_AIR" , "END" )
         EXITSUB()
      }

      //per ogni scrivania:
      // pagina 1 : VISTA TOP CON QUOTE LARGHEZZA E PROFONDITA (SOPRA / SINISTRA) + CASSETTO/PIANO VETRO se presenti (SOTTO / DESTRA)
      // pagina 2 : VISTA TOP QUOTA POSIZIONE STAFFE (SOPRA / SINISTRA) + QUOTA POS VETRI (SOTTO / DESTRA)

      //Luca 23/02/2022
      $wk_AbilitaVistaDaSotto = 1

      COMANDO2("M4_SHOW Ambienti Hide")
      COMANDO2("SHOW None")
      COMANDO2("SHOW Abilita Off")

      $wk_i = 1
      while ( $wk_i <= $wk_scriv )
      {
         $wk_idx_scr = $wk_scriv[$wk_i]
         //Simone 08/04/2022
         $wk_idx_ass = $wk_idx_scr
         if( VAR_EXIST($wk_idx_scr,"idx_assieme") ) { $wk_idx_ass = VAR_VAL($wk_idx_scr,"idx_assieme") }

         GOSUB InizioStampaPDF
         GOSUB InfoCartiglioGen

         $wk_STP_DIS_Titolo = "STAMPA SCRIVANIA AIR"
         if( VAR_VAL($wk_idx_scr,"VAR_Consolle_AIR"))  { $wk_STP_DIS_Titolo = "STAMPA CONSOLLE AIR" }

         $wk_STP_DIS_LBL_5 = "Operatore:"
         $wk_STP_DIS_5     = VAR_VAL_STR( -1, "CodOperatore")

         //sposto riferimento
         $wk_STP_DIS_LBL_4 = ""
         $wk_STP_DIS_4     = ""
         $wk_STP_DIS_LBL_6 = MSG(228)
         $wk_STP_DIS_6     = VAR_VAL_STR(-1,"Gestionale_Ordine_Riferimento")

         $wk_STP_TitoloInfo = "INFORMAZIONI"
         $wk_STP_DIS_VAR1 = VAR_VAL_STR($wk_idx_scr,"DescEdit__")

         //finitura
         $wk_STP_DIS_VAR2 = GetDescCatVal($wk_idx_scr,"C028","CAT")
         $wk_STP_DIS_VAL2 = GetDescCatVal($wk_idx_scr,"C028","VAL")

         $wk_STP_DIS_VAR3 = GetDescCatVal($wk_idx_scr,"C044","CAT")
         $wk_STP_DIS_VAL3 = GetDescCatVal($wk_idx_scr,"C044","VAL")

         $wk_STP_DIS_VAR4 = GetDescCatVal($wk_idx_scr,"C014","CAT")
         $wk_STP_DIS_VAL4 = GetDescCatVal($wk_idx_scr,"C014","VAL")

         $wk_STP_DIS_TitoloDisegno = STRCAT("PIANO SPESSORE ",STR(VAR_VAL($wk_idx_ass,"VAR_SpePiano")),"mm")
         if( VAR_VAL($wk_idx_scr,"VAR_ConCassetto"))
         {
            $wk_STP_DIS_TitoloDisegno = STRCAT($wk_STP_DIS_TitoloDisegno," - CASSETTO ",VAR_VAL_STR($wk_idx_scr,"VAR_PosCassettoStr"))
         }
         $wk_STP_DIS_TitoloDisegno2 = "VISTA SUPERIORE"

         $VAR_AnteprimaDiStampa = 1
         if( $OnTerminate==1 ) { $VAR_AnteprimaDiStampa = 0 }

         SET_#($wk_idx_scr)
         if( VAR_EXIST($wk_idx_scr,"IDX_GEST") ) { $POSTNOMESTAMPA = STRCAT("-SCRAIR_",STR(#IDX_GEST)) }
         else                                    { $POSTNOMESTAMPA = STRCAT("-SCRAIR_(",STR($wk_idx_scr),")") }

         //Luca 27/01/2022
         $wk_idx_riga      = $wk_idx_scr
         $SET_STAMPA       = "0014"

         //Luca 14/10/2021
         if( VAR_VAL_STR($wk_idx_scr,"VAR_LatoAggStr") == "LATO-CORTO" )
         {
            $wk_idx_scr = VAR_VAL($wk_idx_scr,"idx_assieme")
         }

         $wk_suffisso_emf = "_SCRAIR"
         VAR_CREATE_NUM(-1,STRCAT("wk_pagina_",$wk_suffisso_emf),0,0,"")

         GOSUB adatta_dim_quote
         $Yscr = $Yscr/2         $Xscr = $Xscr/2
         $Yscr = $Yscr/2         $Xscr = $Xscr/2

         $wk_stampa_SCR = "DIM"
         GOSUB StampaProd_Scrivania_AIR_Sub

         //Simone 10/05/2022
         $wk_stampa_SCR = "STAFFE"
         GOSUB StampaProd_Scrivania_AIR_Sub
         if( VAR_VAL_STR($wk_idx_scr,"VAR_LatoAggStr") == "LATO-LUNGO" )
         {
            $wk_stampa_SCR = "STAFFA_MURO"
            GOSUB StampaProd_Scrivania_AIR_Sub
         }

         GOSUB FineStampaPDF
         $wk_suffisso_PDF = ""

         GOSUB CancellaGlobaliStp

         $wk_i = $wk_i + 1
      }

      COMANDO2("M4_SHOW Ambienti Show")
      COMANDO2("SHOW Abilita On")
      COMANDO2("SHOW All")

      ScriviSuLog( log , "StampaProd_Scrivania_AIR" , "END" )
   }

   PROCEDURA StampaProd_Scrivania_AIR_Sub
   {
      //MicheleC 23/11/2021 nel caso di scrivaniaFS bisogna creare la stampa solamente del piano
      if( $wk_stampa_SCR == "STAFFE" )
      {
         if( NOME($wk_scriv[$wk_i]) == "ScrivaniaFS_AIR" )                   { EXITSUB() }
         if( NOME($wk_scriv[$wk_i]) == "ScrivaniaMuro_AIR" )
         {
            if( VAR_VAL_STR($wk_scriv[$wk_i],"VAR_TipoGambaStr") != "VETRO" ) { EXITSUB() }
         }
      }

      //Simone 05/08/2022
      if( $wk_stampa_SCR == "STAFFA_MURO" )
      {
         //if( NOME($wk_scriv[$wk_i]) == "ScrivaniaMuro_AIR" )
         //{
         if( VAR_VAL_STR($wk_scriv[$wk_i],"VAR_MaterialeStr") != "WILDWOOD" ) { EXITSUB() }
         //}
      }

      $wk_SP_LINEA_MOBILI       = $TSTP_SP_LINEA_MOBILI
      $wk_SP_LINEA_MOBILI_TRATT = $TSTP_SP_LINEA_TRATTEGGIO
      $wk_SP_LINEA_SCRITTE      = 1
      $wk_SP_LINEA_QUOTE        = 1

      $wk_STP_DIS_TitoloDisegno2 = "VISTA SUPERIORE"

      //$wk_FORM_dW =  5
      //$wk_FORM_dH =  52
      //$wk_FORM_W  =  285
      //$wk_FORM_H  =  152

      $wk_FORM_dW =  5
      $wk_FORM_dH =  52
      $wk_FORM_W  =  212
      $wk_FORM_H  =  152

      //non possono non esistere
      $wk_FORM2_dW = $wk_FORM_dW
      $wk_FORM2_W  = $wk_FORM_W
      $wk_FORM2_dH = 1500
      $wk_FORM2_H  = 50

      $wk_STP_DT_IMG  = ""
      $wk_STP_DT_IMG2 = ""

      $wk_nome_form = "Stampa_Top_O.emf"
      $wk_nome_layout = "VISTA_TOP_WIREFRAME"

      $wk_ang_top = ANG_TOT2($wk_idx_scr)
      $wk_view_roll = STRCAT( STR(-1*$wk_ang_top) ," 0" )
      $wk_view_ang = STR(-1*$wk_ang_top)
      //$wk_view_orbit = STRCAT( STR(-1*$wk_ang_top) ," 0" )
      $wk_view_orbit = "0 0"
      if( $wk_AbilitaVistaDaSotto == 1 )
      {
         if( $wk_stampa_SCR == "STAFFE"
           | $wk_stampa_SCR == "STAFFA_MURO" )
         {
            $wk_view_orbit = "180 0"
            $wk_STP_DIS_TitoloDisegno2 = "VISTA INFERIORE"
         }
      }

      //Luca 13/10/2021
      $wk_lato_corto = 0

      //if( VAR_VAL_STR($wk_idx_scr,"VAR_LatoAggStr") == "LATO-CORTO" ) { $wk_lato_corto = 1 }

      if( $wk_lato_corto ) { $wk_view_ang = STR(-1*$wk_ang_top - 90) }

      if( $DIS_TO_GEMO==0 )
      {
         if( $wk_stampa_SCR == "DIM" )          { GOSUB StampaProd_Scrivania_AIR_QuotaDim }

         //Simone 10/05/2022 - Quoto la staffa a muro
         $wk_idx_men = $wk_idx_scr
         if( $wk_stampa_SCR == "STAFFA_MURO" )  { GOSUB StampaProd_MensoleBagno_AIR_QuotaStaffe }
         if( $wk_stampa_SCR == "STAFFE" )       { GOSUB StampaProd_Scrivania_AIR_QuotaStaffe }
      }

      GOSUB NomeDisegno
      GOSUB StampaLayout

      ResetVarStampa("flag_stampa")

      if( $DIS_TO_GEMO==0 ) { GOSUB CancellaScritteQuote }
   }

   PROCEDURA StampaProd_Scrivania_AIR_QuotaDim
   {
      $alias_scr     = "STP_SCR_TOP"
      $AliasQuota    = "STP_QUO_TOP"
      $AliasQuotaLat = "STP_QUO_TOP"
      $wk_faccia = "A"

      //$HChar   = $Yscr/4         $LChar   = $Xscr/4
      //$Alt_Chr = $Yscr/4         $Lar_Chr = $Xscr/4
      $HChar   = $Yscr         $LChar   = $Xscr
      $Alt_Chr = $Yscr         $Lar_Chr = $Xscr

      $ang_scr = 0
      $wk_scosta_lquota = 20

      SET_#($wk_idx_scr)
      VAR_VALUE_SET(#idx_piano ,"flag_stampa",1)
      if( IsIdx( $wk_idx_scr, "idx_inserto"))
      {
         VAR_VALUE_SET( #idx_inserto, "flag_stampa", 1)
      }

      $dist = 100
      $P1 = #alto_0
      $P2 = #alto_3
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      $dist = 100
      $P1 = #alto_1
      $P2 = #alto_0

      //if( $wk_lato_corto )
      //{
      //   $dist = -100
      //   $P1 = #alto_0
      //   $P2 = #alto_1
      //}

      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      $wk_B0 = #base_0
      $wk_B1 = #base_1
      $wk_B2 = #base_2
      $wk_B3 = #base_3

      if( VAR_VAL($wk_idx_scr,"VAR_ConCassetto") == 1 )
      {
         $wk_ang_scriv = ANG_TOT_NOR($wk_idx_scr)
         $wk_idx_cass = #idx_cassetto
         SET_#($wk_idx_cass)

         $dist = -100
         $P1 = $wk_B1
         $P2 = INTERFERISCI(#base_1,$wk_ang_scriv+90,$wk_B1,$wk_B2)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $dist = -100
         $P1 = $P2
         $P2 = INTERFERISCI(#base_2,$wk_ang_scriv+90,$wk_B1,$wk_B2)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $dist = -100
         $P1 = $P2
         $P2 = $wk_B2
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         //Profondità
         $dist = -100
         $P1 = $wk_B2
         $P2 = INTERFERISCI(#base_3,$wk_ang_scriv,$wk_B2,$wk_B3)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $dist = -100
         $P1 = $P2
         $P2 = $wk_B3
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
      }

      if( VAR_VAL($wk_idx_scr,"ConInserto") == 1 )
      {
         $wk_ang_scriv = ANG_TOT_NOR($wk_idx_scr)
         $wk_idx_inserto = #idx_inserto
         SET_#($wk_idx_inserto)

         $dist = -100
         $P1 = $wk_B1
         $P2 = INTERFERISCI(#base_1,$wk_ang_scriv+90,$wk_B1,$wk_B2)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $dist = -100
         $P1 = $P2
         $P2 = INTERFERISCI(#base_2,$wk_ang_scriv+90,$wk_B1,$wk_B2)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $dist = -100
         $P1 = $P2
         $P2 = $wk_B2
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         //Profondità
         $dist = -100
         $P1 = $wk_B2
         $P2 = INTERFERISCI(#base_2,$wk_ang_scriv,$wk_B2,$wk_B3)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $dist = -100
         $P1 = $P2
         $P2 = INTERFERISCI(#base_3,$wk_ang_scriv,$wk_B2,$wk_B3)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $dist = -100
         $P1 = $P2
         $P2 = $wk_B3
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
      }

      //Luca 14/10/2021
      //aggiungo quote passacavi
      COMPONENTI2("$wk_PCV", PADRE( $wk_idx_scr, -1), "Passacavi_368")

      $wk_dist_quota = -80

      $wk_j = 1
      while ( $wk_j <= $wk_PCV )
      {
         $wk_idx_pcv = $wk_PCV[$wk_j]
         SET_#($wk_idx_pcv)

         $dist = $wk_dist_quota * $wk_j

         //larghezza sotto
         $P1 = $wk_B1
         $P2 = INTERFERISCI(#pnt_scs_centro,$wk_ang_top+90,$wk_B1,$wk_B2)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $wk_B2
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $dist = ABS($wk_dist_quota) * $wk_j

         //profondità dx
         $P1 = $wk_B3
         $P2 = INTERFERISCI(#pnt_scs_centro,$wk_ang_top,$wk_B3,$wk_B2)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $wk_B2
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         //gestisco al max 2 dettagli
         $wk_dett_par1 = VAR_VAL_STR($wk_idx_pcv,"cmp_name")
         $wk_dett_par2 = "PassacaviRet"
         $wk_dett_par3 = ""
         //dettaglio per lavorazione su legno
         if( VAR_VAL($wk_idx_scr,"ConInserto") == 0 ) { $wk_dett_par3 = "LAV" }
         if( $wk_dett_par1 == "D21006" )  { $wk_dett_par2 = "PassacaviVetro" }
         if( $wk_dett_par1 == "TER050" )  { $wk_dett_par2 = "PassacaviOvale" }
         if( $wk_dett_par1 == "TER052" )  { $wk_dett_par2 = "PassacaviTondo" }

         $wk_nome_file = STRCAT($path_layout,"Dettagli\",$wk_dett_par1,"_",$wk_dett_par2,$wk_dett_par3,".bmp")
         if( FILE_EXIST($wk_nome_file) )
         {
            if( $wk_STP_DT_IMG  == "" ) { $wk_STP_DT_IMG  = $wk_nome_file }
            else
            {
               if( $wk_STP_DT_IMG2 == "" ) { $wk_STP_DT_IMG2 = $wk_nome_file }
            }
         }

         $wk_j = $wk_j + 1

         if( $wk_STP_DT_IMG != "" )
         {
            $wk_nome_form = "Stampa_Top_O.emf"
            $wk_FORM_W  =  212
         }
      }

      COMPONENTI2("$wk_SCS", PADRE( $wk_idx_scr, -1), "Scasso_EldomTop")

      $wk_dist_quota = -80

      $wk_j = 1
      while ( $wk_j <= $wk_SCS )
      {
         $wk_idx_scs = $wk_SCS[$wk_j]
         SET_#($wk_idx_scs)

         $dist = $wk_dist_quota * $wk_j

         //larghezza sotto
         $P1 = $wk_B1
         $P2 = INTERFERISCI(#base_0,$wk_ang_top+90,$wk_B1,$wk_B2)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = INTERFERISCI(#base_3,$wk_ang_top+90,$wk_B1,$wk_B2)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $wk_B2
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $dist = ABS($wk_dist_quota) * $wk_j

         //profondità dx
         $P1 = $wk_B3
         $P2 = INTERFERISCI(#base_0,$wk_ang_top,$wk_B3,$wk_B2)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = INTERFERISCI(#base_1,$wk_ang_top,$wk_B3,$wk_B2)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $wk_B2
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $wk_nota_stampa = VAR_VAL_STR( $wk_idx_scs, "NOTA_STAMPA")
         if( $wk_nota_stampa != "" )
         {
            $P2 = #base_3
            $testo = $wk_nota_stampa
            $point = 3
            $wk_faccia = "A"
            GOSUB PosizionaScrittaCAD
         }

         $wk_j = $wk_j + 1
      }
   }

   PROCEDURA StampaProd_Scrivania_AIR_QuotaStaffe
   {
      $alias_scr     = "STP_SCR_TOP"
      $AliasQuota    = "STP_QUO_TOP"
      $AliasQuotaLat = "STP_QUO_TOP"
      $wk_faccia = "A"

      //$HChar   = $Yscr/5         $LChar   = $Xscr/5
      //$Alt_Chr = $Yscr/5         $Lar_Chr = $Xscr/5
      $HChar   = $Yscr         $LChar   = $Xscr
      $Alt_Chr = $Yscr         $Lar_Chr = $Xscr

      $ang_scr = 0
      $wk_scosta_lquota = 20

      $wk_STP_DT_IMG = ""
      $wk_STP_DT_IMG2 = ""

      SET_#($wk_idx_scr)
      VAR_VALUE_SET(#idx_piano ,"flag_stampa",1)
      VAR_VALUE_SET(#idx_gamba_sx ,"flag_stampa",1)
      VAR_VALUE_SET(#idx_gamba_dx ,"flag_stampa",1)
      VAR_VALUE_SET(#idx_staffa_mens,"flag_stampa",1)

      $wk_B0 = #base_0
      $wk_B1 = #base_1
      $wk_B2 = #base_2
      $wk_B3 = #base_3

      //{ QUOTO I VETRI SOTTO E A DX
      $wk_ang_scriv = ANG_TOT_NOR($wk_idx_scr)
      $wk_gamba_sx = #idx_gamba_sx
      $wk_gamba_dx = #idx_gamba_dx

      $wk_gamba_sx_attiva = 0
      $wk_gamba_dx_attiva = 0

      if( IS_IDX($wk_gamba_sx) & IS_ESCLUSO($wk_gamba_sx) == 0 ) { $wk_gamba_sx_attiva = 1 }
      if( IS_IDX($wk_gamba_dx) & IS_ESCLUSO($wk_gamba_dx) == 0 ) { $wk_gamba_dx_attiva = 1 }

      //DISPLAY2(STRCAT("BP \n\n $wk_gamba_sx_attiva=" , STR($wk_gamba_sx_attiva), " \n\n$wk_gamba_dx_attiva=",STR($wk_gamba_sx_attiva) ))

      if( $wk_gamba_sx_attiva == 0
        & $wk_gamba_dx_attiva == 0 ) { EXITSUB() }

      if( $wk_AbilitaVistaDaSotto == 1 ) { $wk_view_sotto = 1 }

      $dist = -100
      $P1 = $wk_B1

      if( $wk_gamba_sx_attiva == 1 )
      {
         SET_#($wk_gamba_sx)

         $P2 = INTERFERISCI(#base_1,$wk_ang_scriv+90,$wk_B1,$wk_B2)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $dist = -100
         $wk_stile = 2
         $P1 = $P2
         $P2 = INTERFERISCI(#base_2,$wk_ang_scriv+90,$wk_B1,$wk_B2)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
         $P1 = $P2

         // solo se la staffa è incassata
         if( #VAR_SpePiano > 50 )
         {
            $wk_file_dett = STRCAT( $path_layout, "Dettagli\LavStaffaScrivania_", STR(#Staffa_Z), ".bmp")
            if( $wk_STP_DT_IMG == "" ) { $wk_STP_DT_IMG = $wk_file_dett  }
            else                       { $wk_STP_DT_IMG2 = $wk_file_dett }
         }
      }

      if( $wk_gamba_dx_attiva == 1 )
      {
         SET_#($wk_gamba_dx)

         $dist = -100
         $P2 = INTERFERISCI(#base_1,$wk_ang_scriv+90,$wk_B1,$wk_B2)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $dist = -100
         $wk_stile = 2
         $P1 = $P2
         $P2 = INTERFERISCI(#base_2,$wk_ang_scriv+90,$wk_B1,$wk_B2)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         // solo se la staffa è incassata
         if( #VAR_SpePiano > 50 )
         {
            $wk_file_dett = STRCAT( $path_layout, "Dettagli\LavStaffaScrivania_", STR(#Staffa_Z), ".bmp")
            if( $wk_STP_DT_IMG == "" ) { $wk_STP_DT_IMG = $wk_file_dett  }
            else                       { $wk_STP_DT_IMG2 = $wk_file_dett }
         }
      }

      $dist = -100
      $P1 = $P2
      $P2 = $wk_B2
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      //Profondità
      $dist = -100
      $P1 = $wk_B2
      $P2 = INTERFERISCI(#base_2,$wk_ang_scriv,$wk_B2,$wk_B3)
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      $dist = -100
      $P1 = $P2
      $P2 = INTERFERISCI(#base_3,$wk_ang_scriv,$wk_B2,$wk_B3)
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STRCAT("VETRO L. ", STR(FLOOR(($d+0.05)*10)/10))
      GOSUB PosizionaQuota

      $dist = -100
      $P1 = $P2
      $P2 = $wk_B3
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      //} QUOTO I VETRI SOTTO E A DX

      //{ QUOTO STAFFE SOPRA E A SX

      $dist = 100
      $P1 = $wk_B0
      if( $wk_gamba_sx_attiva == 1 )
      {
         SET_#($wk_gamba_sx)

         $P2 = INTERFERISCI(#stp_staffa_b0,$wk_ang_scriv+90,$wk_B0,$wk_B3)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $dist = 100
         $P1 = $P2
         $P2 = INTERFERISCI(#stp_staffa_b3,$wk_ang_scriv+90,$wk_B3,$wk_B0)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
         $P1 = $P2
      }

      if( $wk_gamba_dx_attiva == 1 )
      {
         SET_#($wk_gamba_dx)

         $dist = 100
         $P2 = INTERFERISCI(#stp_staffa_b0,$wk_ang_scriv+90,$wk_B0,$wk_B3)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $dist = 100
         $P1 = $P2
         $P2 = INTERFERISCI(#stp_staffa_b3,$wk_ang_scriv+90,$wk_B0,$wk_B3)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
      }

      $dist = 100
      $P1 = $P2
      $P2 = $wk_B3
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      //Profondità
      $dist = 100
      $P1 = $wk_B1
      $P2 = INTERFERISCI(#stp_staffa_b1,$wk_ang_scriv,$wk_B1,$wk_B0)
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      $dist = 100
      $P1 = $P2
      $P2 = INTERFERISCI(#stp_staffa_b0,$wk_ang_scriv,$wk_B1,$wk_B0)
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STRCAT("STAFFA L. ", STR(FLOOR(($d+0.05)*10)/10))
      GOSUB PosizionaQuota

      $dist = 100
      $P1 = $P2
      $P2 = $wk_B0
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota
      //} QUOTO STAFFE SOPRA E A SX

      $wk_view_sotto = 0

      if( STRCAT( $wk_STP_DT_IMG, $wk_STP_DT_IMG2) != "" )
      {
         $wk_nome_form = "Stampa_Top_O.emf"
         $wk_FORM_W  = 212
      }
   }
   //} STAMPA TECNICA SCRIVANIE AIR

   //{ STAMPA TECNICA TAVOLI AIR
   PROCEDURA StampaProd_Tavolo_AIR
   {
      log = 0
      ScriviSuLog( log , "StampaProd_Tavolo_AIR" , "START" )

      WITH_ALIAS("$wk_tav","StpTavoliAIR")

      $wk_tav_num = 1
      while( $wk_tav_num <= $wk_tav)
      {
        $wk_tav_att = $wk_tav[$wk_tav_num]
        $wk_tav_att_all = VAR_VAL( $wk_tav_att, "ALLEGATI")
        $wk_tav_att_tall = VAR_VAL( $wk_tav_att, "T_ALLEGATI")

        if( $wk_tav_att_tall - $wk_tav_att_all > 0)
        {
            DEL_ARRAY_ITEM( -1, "wk_tav", $wk_tav_num)
            $wk_tav_num = $wk_tav_num - 1
        }

        $wk_tav_num = $wk_tav_num + 1
      }

      if( $wk_tav == 0 )
      {
         ScriviSuLog( log , "StampaProd_Tavolo_AIR" , "-- NON CI SONO TAVOLI DA STAMPARE" )
         ScriviSuLog( log , "StampaProd_Tavolo_AIR" , "END" )
         EXITSUB()
      }

      //per ogni scrivania:
      // pagina 1 : VISTA TOP CON QUOTE LARGHEZZA E PROFONDITA (SOPRA / SINISTRA) + CASSETTO/PIANO VETRO se presenti (SOTTO / DESTRA)
      // pagina 2 : VISTA TOP QUOTA POSIZIONE STAFFE (SOPRA / SINISTRA) + QUOTA POS VETRI (SOTTO / DESTRA)

      COMANDO2("M4_SHOW Ambienti Hide")
      COMANDO2("SHOW None")
      COMANDO2("SHOW Abilita Off")

      $wk_i = 1
      while ( $wk_i <= $wk_tav )
      {
         $wk_idx_tav = $wk_tav[$wk_i]

         GOSUB InizioStampaPDF
         GOSUB InfoCartiglioGen

         $wk_STP_DIS_Titolo = "STAMPA TAVOLI AIR"

         $wk_STP_DIS_TitoloDisegno  =  ""
         $wk_STP_DIS_TitoloDisegno2 =  ""

         $wk_STP_DIS_LBL_5 = "Operatore:"
         $wk_STP_DIS_5     = VAR_VAL_STR( -1, "CodOperatore")

         //sposto riferimento
         $wk_STP_DIS_LBL_4 = ""
         $wk_STP_DIS_4     = ""
         $wk_STP_DIS_LBL_6 = MSG(228)
         $wk_STP_DIS_6     = VAR_VAL_STR(-1,"Gestionale_Ordine_Riferimento")

         $wk_STP_TitoloInfo = "INFORMAZIONI"
         $wk_STP_DIS_VAR1 = VAR_VAL_STR($wk_idx_tav,"DescEdit__")

         //tipo teste
         wk_cat_var = "C038"
         wk_cat_val = VAR_VAL_STR( $wk_idx_tav, GetVarGest(wk_cat_var))
         if( wk_cat_val != ""
           & wk_cat_val != "__" )
         {
            $wk_STP_DIS_VAR2 = GetDescCatVal( $wk_idx_tav, wk_cat_var, "CAT")
            $wk_STP_DIS_VAL2 = GetDescCatVal( $wk_idx_tav, wk_cat_var, "VAL")
         }

         //finitura
         $wk_STP_DIS_VAR3 = GetDescCatVal($wk_idx_tav,"C044","CAT")
         $wk_STP_DIS_VAL3 = GetDescCatVal($wk_idx_tav,"C044","VAL")

         //finitura prolunghe
         if( VAR_VAL_STR($wk_idx_tav,"VAR_mat_tav") == "WILDWOOD"
           & VAR_VAL_STR($wk_idx_tav,"VAR_tipo_tav") == "EXTENDABLE" )
         {
            $wk_STP_DIS_VAR4 = GetDescCatVal($wk_idx_tav,"C100","CAT")
            $wk_STP_DIS_VAL4 = GetDescCatVal($wk_idx_tav,"C100","VAL")
         }

         //Spessore
         $wk_STP_DIS_VAR5 = STRCAT("SPESSORE PIANO ",STR(VAR_VAL($wk_idx_tav,"Spe_Piano")), "mm")

         $VAR_AnteprimaDiStampa = 1
         if( $OnTerminate==1 ) { $VAR_AnteprimaDiStampa = 0 }

         SET_#($wk_idx_tav)
         if( VAR_EXIST($wk_idx_tav,"IDX_GEST") ) { $POSTNOMESTAMPA = STRCAT("-TAVAIR_",STR(#IDX_GEST)) }
         else                                    { $POSTNOMESTAMPA = STRCAT("-TAVAIR_(",STR($wk_idx_tav),")") }

         $wk_suffisso_emf = "_TAVAIR"
         VAR_CREATE_NUM(-1,STRCAT("wk_pagina_",$wk_suffisso_emf),0,0,"")

         //Luca 27/01/2022
         $wk_idx_riga      = $wk_idx_tav
         $SET_STAMPA       = "0017"

         GOSUB adatta_dim_quote
         $Yscr = $Yscr/2         $Xscr = $Xscr/2
         $Yscr = $Yscr/2         $Xscr = $Xscr/2

         $wk_stampa_TAVOLO = "QUOTA_DIM"
         GOSUB StampaProd_Tavolo_AIR_Sub

         $wk_stampa_TAVOLO = "QUOTA_STAFFE"
         GOSUB StampaProd_Tavolo_AIR_Sub

         $wk_stampa_TAVOLO = "QUOTA_VETRI"
         GOSUB StampaProd_Tavolo_AIR_Sub

         //se ci sono dei passacavi aggiungo una pagina dedicata
         COMPONENTI2("$wk_PCV",$wk_idx_tav,"Passacavi_368")
         if( $wk_PCV > 0 )
         {
            $wk_stampa_TAVOLO = "QUOTA_PCV"
            GOSUB StampaProd_Tavolo_AIR_Sub
         }

         GOSUB FineStampaPDF
         $wk_suffisso_PDF = ""

         GOSUB CancellaGlobaliStp

         $wk_i = $wk_i + 1
      }

      COMANDO2("M4_SHOW Ambienti Show")
      COMANDO2("SHOW Abilita On")
      COMANDO2("SHOW All")

      ScriviSuLog( log , "StampaProd_Tavolo_AIR" , "END" )
   }

   PROCEDURA StampaProd_Tavolo_AIR_Sub
   {
      //Luca 07/12/2021 tavolini sono senza staffe
      if( $wk_stampa_TAVOLO == "QUOTA_STAFFE" )
      {
         if( VAR_VAL_STR($wk_idx_tav,"VAR_tipo_tav") == "COFFEE" )
         {
            EXITSUB()
         }
      }

      $wk_SP_LINEA_MOBILI       = $TSTP_SP_LINEA_MOBILI
      $wk_SP_LINEA_MOBILI_TRATT = $TSTP_SP_LINEA_TRATTEGGIO
      $wk_SP_LINEA_SCRITTE      = 1
      $wk_SP_LINEA_QUOTE        = 1

      $wk_FORM_dW =  5
      $wk_FORM_dH =  52
      $wk_FORM_W  =  285
      $wk_FORM_H  =  152

      $wk_STP_DT_IMG  = ""
      $wk_STP_DT_IMG2 = ""

      $wk_nome_form = "Stampa_Top2_O.emf"
      $wk_nome_layout = "VISTA_TOP_WIREFRAME"

      //Luca 01/10/2021
      $wk_STP_DIS_TitoloDisegno   = "VISTA DA SOPRA"

      $wk_ang_top = ANG_TOT2($wk_idx_tav)
      $wk_view_roll = STRCAT( STR(-1*$wk_ang_top) ," 0" )
      $wk_view_ang = STR(-1*$wk_ang_top)
      //$wk_view_orbit = STRCAT( STR(-1*$wk_ang_top) ," 0" )

      $wk_view_orbit = "0 0"
      //if( $wk_stampa_MEN == "STAFFE" )
      //{
      //   $wk_view_orbit = "180 0"
      //}

      if( $DIS_TO_GEMO==0 )
      {
         if( $wk_stampa_TAVOLO == "QUOTA_DIM" )    { GOSUB StampaProd_Tavolo_AIR_QuotaDim }

         //if( $wk_stampa_TAVOLO == "QUOTA_STAFFE" ) { GOSUB StampaProd_Tavolo_AIR_QuotaStaffe }
         //if( $wk_stampa_TAVOLO == "QUOTA_VETRI" )  { GOSUB StampaProd_Tavolo_AIR_QuotaVetri }

         if( $wk_stampa_TAVOLO == "QUOTA_STAFFE"
           | $wk_stampa_TAVOLO == "QUOTA_VETRI" )  { GOSUB StampaProd_Tavolo_AIR_Quota }

         if( $wk_stampa_TAVOLO == "QUOTA_PCV" )    { GOSUB StampaProd_Tavolo_AIR_QuotaPCV }
      }

      GOSUB NomeDisegno
      GOSUB StampaLayout

      ResetVarStampa("flag_stampa")

      if( $DIS_TO_GEMO==0 ) { GOSUB CancellaScritteQuote }
   }

   PROCEDURA StampaProd_Tavolo_AIR_QuotaDim
   {
      $wk_nome_form  = "Stampa_Top2_O.emf"

      $alias_scr     = "STP_SCR_TOP"
      $AliasQuota    = "STP_QUO_TOP"
      $AliasQuotaLat = "STP_QUO_TOP"
      $wk_faccia = "A"

      //$HChar   = $Yscr/5         $LChar   = $Xscr/5
      //$Alt_Chr = $Yscr/5         $Lar_Chr = $Xscr/5
      $HChar   = $Yscr         $LChar   = $Xscr
      $Alt_Chr = $Yscr         $Lar_Chr = $Xscr

      $ang_scr = 0
      $wk_scosta_lquota = 20

      $dist = 100

      SET_#($wk_idx_tav)
      VAR_VALUE_SET($wk_idx_tav ,"flag_stampa",1)

      $dist = 100
      $P1 = #alto_0
      $P2 = #alto_3
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      $dist = 100
      $P1 = #alto_1
      $P2 = #alto_0
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      //wildwood con prolunghe
      if( VAR_VAL_STR($wk_idx_tav,"VAR_mat_tav") == "WILDWOOD"
        & VAR_VAL_STR($wk_idx_tav,"VAR_tipo_tav") == "EXTENDABLE" )
      {
         $dist = -100
         $P1 = #alto_1
         $P2 = $P1
         $P2.x = $P1.x + COSENO($wk_ang_top)*(#Prolunga_X)
         $P2.z = $P1.z -   SENO($wk_ang_top)*(#Prolunga_X)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2.x = $P1.x + COSENO($wk_ang_top)*(#X)
         $P2.z = $P1.z -   SENO($wk_ang_top)*(#X)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = #alto_2
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
      }
   }

   //PROCEDURA StampaProd_Tavolo_AIR_QuotaStaffe
   PROCEDURA StampaProd_Tavolo_AIR_Quota
   {
      $wk_STP_DIS_TitoloDisegno2  =  "QUOTE STAFFE"
      if( $wk_stampa_TAVOLO == "QUOTA_VETRI" ) { $wk_STP_DIS_TitoloDisegno2  =  "QUOTE VETRI" }

      $alias_scr     = "STP_SCR_TOP"
      $AliasQuota    = "STP_QUO_TOP"
      $AliasQuotaLat = "STP_QUO_TOP"
      $wk_faccia = "A"

      //$HChar   = $Yscr/5         $LChar   = $Xscr/5
      //$Alt_Chr = $Yscr/5         $Lar_Chr = $Xscr/5
      $HChar   = $Yscr         $LChar   = $Xscr
      $Alt_Chr = $Yscr         $Lar_Chr = $Xscr

      $ang_scr = 0
      $wk_scosta_lquota = 20
      $dist = 100

      SET_#($wk_idx_tav)
      VAR_VALUE_SET($wk_idx_tav ,"flag_stampa",1)

      $wk_tav_B0 = #stp_base_0       $wk_tav_B0.y = 0
      $wk_tav_B1 = #stp_base_1       $wk_tav_B1.y = 0
      $wk_tav_B2 = #stp_base_2       $wk_tav_B2.y = 0
      $wk_tav_B3 = #stp_base_3       $wk_tav_B3.y = 0

      $wk_items_quota = "SupportoVetro_Staffa"
      if( $wk_stampa_TAVOLO == "QUOTA_VETRI" )  { $wk_items_quota = "SupportoVetro_Sost" }

      COMPONENTI2("$wk_staffe", $wk_idx_tav, $wk_items_quota)

      //LZ 22/04/2022
      if( $wk_staffe == 0 ) { EXITSUB() }

      //Luca 22/09/2021 nel tavolo snack quoto solo le due retro
      if( VAR_VAL_STR( $wk_idx_tav,"VAR_tipo_tav") == "SNACK" )
      {
         GOSUB StampaProd_TavoloSNACK_AIR_Quota
         EXITSUB()
      }

      //ordino le staffe da sx a dx
      $wk_j = 1
      while ( $wk_j <= $wk_staffe )
      {
         SET_#($wk_staffe[$wk_j])

         $wk_dist = DistanzaFraPunti($wk_tav_B0,#stp_p0,$wk_ang_top)

         #STP_Distanza_B0 = $wk_dist

         $wk_j = $wk_j + 1
      }

      r = ArraySortVarNum(-1,"wk_staffe","STP_Distanza_B0")

      if( $wk_stampa_TAVOLO == "QUOTA_STAFFE" )
      {
         //quote in larghezza (sopra)
         $P1 = $wk_tav_B0

         $dist = 100

         $wk_j = 1
         while ( $wk_j <= $wk_staffe )
         {
            SET_#($wk_staffe[$wk_j])

            $P2 = INTERFERISCI(#stp_p0,$wk_ang_top+90,$wk_tav_B0,$wk_tav_B3)

            $P2.y = $P1.y
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuota

            $P1 = $P2

            $P2 = INTERFERISCI(#stp_p3,$wk_ang_top+90,$wk_tav_B0,$wk_tav_B3)
            $P2.y = $P1.y
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuota

            $P1 = $P2

            $wk_j = $wk_j + 1
         }

         $P2 = $wk_tav_B3
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         //quote in profondità (destra)
         //l'ultima staffa a dx è sempre parallela alla profondità
         if( VAR_VAL_STR($wk_staffe[$wk_staffe],"OrieSupporto") == "V" )
         {
            SET_#($wk_staffe[$wk_staffe])

            $P1 = $wk_tav_B3

            $dist = 100
            $P2 = INTERFERISCI(#stp_p3,$wk_ang_top,$wk_tav_B3,$wk_tav_B2)
            $P2.y = $P1.y
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuota

            $P1 = $P2
            $P2 = INTERFERISCI(#stp_p2,$wk_ang_top,$wk_tav_B3,$wk_tav_B2)
            $P2.y = $P1.y
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuota

            $P1 = $P2
            $P2 = $wk_tav_B2
            $P2.y = $P1.y
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuota
         }

         //verifico l'altra staffa da quotare in profondità (quella parallela alla larghezza)
         $wk_idx_staffa_quota = -1
         if( $wk_staffe == 3 ) { $wk_idx_staffa_quota = $wk_staffe[2] }
         if( $wk_staffe == 2 )
         {
            if( VAR_VAL_STR($wk_staffe[1],"OrieSupporto") == "O" ) { $wk_idx_staffa_quota = $wk_staffe[1] }
         }

         if( IS_IDX( $wk_idx_staffa_quota ) )
         {
            SET_#($wk_idx_staffa_quota)

            $P1 = INTERFERISCI(#stp_p3,$wk_ang_top+90,$wk_tav_B0,$wk_tav_B3)

            $dist = 100
            $P2 = #stp_p3
            $P2.y = $P1.y
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuota

            $P1 = $P2
            $P2 = #stp_p2
            $P2.y = $P1.y
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuota

            $P1 = $P2
            $P2 = INTERFERISCI(#stp_p2,$wk_ang_top+90,$wk_tav_B1,$wk_tav_B2)
            $P2.y = $P1.y
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuota
         }

         if( VAR_VAL($wk_idx_tav, "Spe_Piano") >= 80 ) { GOSUB StampaProd_TavoloSNACK_AIR_Dettagli }
      }

      if( $wk_stampa_TAVOLO == "QUOTA_VETRI" )
      {
         $dist = 100

         //quote in larghezza (sopra)
         $P1 = $wk_tav_B0

         $wk_almeno_uno = 0

         //primo giro staffe parallele alla profondità "V"
         $wk_j = 1
         while ( $wk_j <= $wk_staffe )
         {
            SET_#($wk_staffe[$wk_j])

            if( VAR_VAL_STR($wk_staffe[$wk_j],"OrieSupporto") == "V" )
            {
               $wk_almeno_uno = 1

               $P2 = INTERFERISCI(#stp_pc,$wk_ang_top+90,$wk_tav_B0,$wk_tav_B3)

               $P2.y = $P1.y
               $d = DISTANZA($P1,$P2)
               $testo = STR(FLOOR(($d+0.05)*10)/10)
               GOSUB PosizionaQuota

               $P1 = $P2
            }

            $wk_j = $wk_j + 1
         }

         if( $wk_almeno_uno )
         {
            $P2 = $wk_tav_B3
            $P2.y = $P1.y
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuota
         }

         //secondo giro staffe parallele alla larghezza "O"
         $dist = 200

         $P1 = $wk_tav_B0

         $wk_almeno_uno = 0

         $wk_j = 1
         while ( $wk_j <= $wk_staffe )
         {
            SET_#($wk_staffe[$wk_j])

            if( VAR_VAL_STR($wk_staffe[$wk_j],"OrieSupporto") == "O" )
            {
               $wk_almeno_uno = 1

               $P2 = INTERFERISCI(#stp_p0,$wk_ang_top+90,$wk_tav_B0,$wk_tav_B3)

               $P2.y = $P1.y
               $d = DISTANZA($P1,$P2)
               $testo = STR(FLOOR(($d+0.05)*10)/10)
               GOSUB PosizionaQuota

               $P1 = $P2

               $P2 = INTERFERISCI(#stp_p3,$wk_ang_top+90,$wk_tav_B0,$wk_tav_B3)
               $P2.y = $P1.y
               $d = DISTANZA($P1,$P2)
               $testo = STR(FLOOR(($d+0.05)*10)/10)
               GOSUB PosizionaQuota

               $P1 = $P2
            }

            $wk_j = $wk_j + 1
         }

         if( $wk_almeno_uno )
         {
            $P2 = $wk_tav_B3
            $P2.y = $P1.y
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuota
         }

         //quote in profondità (destra)
         //l'ultima staffa a dx è sempre parallela alla profondità
         if( VAR_VAL_STR($wk_staffe[$wk_staffe],"OrieSupporto") == "V" )
         {
            SET_#($wk_staffe[$wk_staffe])

            $P1 = $wk_tav_B3

            $dist = 100
            $P2 = INTERFERISCI(#stp_p3,$wk_ang_top,$wk_tav_B3,$wk_tav_B2)
            $P2.y = $P1.y
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuota

            $P1 = $P2
            $P2 = INTERFERISCI(#stp_p2,$wk_ang_top,$wk_tav_B3,$wk_tav_B2)
            $P2.y = $P1.y
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuota

            $P1 = $P2
            $P2 = $wk_tav_B2
            $P2.y = $P1.y
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuota
         }

         //verifico l'altra staffa da quotare in profondità (quella parallela alla larghezza)
         $wk_idx_staffa_quota = -1
         if( $wk_staffe == 3 ) { $wk_idx_staffa_quota = $wk_staffe[2] }
         if( $wk_staffe == 2 )
         {
            if( VAR_VAL_STR($wk_staffe[1],"OrieSupporto") == "O" ) { $wk_idx_staffa_quota = $wk_staffe[1] }
         }

         //quoto eventuale vetro orizzontale [CENTRO]
         if( IS_IDX( $wk_idx_staffa_quota ) )
         {
            SET_#($wk_idx_staffa_quota)

            $P1 = INTERFERISCI(#stp_p3,$wk_ang_top+90,$wk_tav_B0,$wk_tav_B3)

            $dist = 100
            $P2 = #stp_p3
            $P2.x = $P2.x +   SENO($wk_ang_top)*(#Z/2)
            $P2.z = $P2.z + COSENO($wk_ang_top)*(#Z/2)
            $P2.y = $P1.y
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuota

            $P1 = $P2
            $P2 = INTERFERISCI(#stp_p2,$wk_ang_top+90,$wk_tav_B1,$wk_tav_B2)
            $P2.y = $P1.y
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuota
         }
      }
   }

   PROCEDURA StampaProd_TavoloSNACK_AIR_Dettagli
   {
      //presenza o meno di dettagli
      $wk_arr_dett = 0
      $wk_j = 1
      while ( $wk_j <= $wk_staffe )
      {
         SET_#($wk_staffe[$wk_j])

         WITH_VAR_LOCAL($wk_staffe[$wk_j],"$wk_dett","Stp_AddDettaglioLav",$num_con_figli,1,"1")
         if( $wk_dett > 0 ) { AddItem2Array(-1,"wk_arr_dett",#X,"") }
         $wk_j = $wk_j + 1
      }

      if( $wk_arr_dett > 0 )
      {
         $wk_FORM_W  =  212

         $wk_j = 1
         while ( $wk_j <= $wk_arr_dett & $wk_j<=2 )
         {
            $wk_nome_file = STRCAT($path_layout,"Dettagli\LavStaffaTavolo_",STR($wk_arr_dett[$wk_j]),".bmp")
            if( FILE_EXIST($wk_nome_file) )
            {
               if( $wk_j == 1 )  { $wk_STP_DT_IMG  = $wk_nome_file }
               if( $wk_j == 2 )  { $wk_STP_DT_IMG2 = $wk_nome_file }
            }
            $wk_j = $wk_j + 1
         }
      }
   }

   PROCEDURA StampaProd_TavoloSNACK_AIR_Quota
   {
      //ordino le staffe da sx a dx
      $wk_j = 1
      while ( $wk_j <= $wk_staffe )
      {
         SET_#($wk_staffe[$wk_j])

         if( VAR_VAL_STR($wk_staffe[$wk_j] , "PosStaffa") == "RS" ) { #STP_Distanza_B0 = 0 }
         if( VAR_VAL_STR($wk_staffe[$wk_j] , "PosStaffa") == "RD" ) { #STP_Distanza_B0 = 1 }
         if( VAR_VAL_STR($wk_staffe[$wk_j] , "PosStaffa") == "FS" ) { #STP_Distanza_B0 = 2 }
         if( VAR_VAL_STR($wk_staffe[$wk_j] , "PosStaffa") == "FD" ) { #STP_Distanza_B0 = 3 }

         $wk_j = $wk_j + 1
      }

      r = ArraySortVarNum(-1,"wk_staffe","STP_Distanza_B0")


      if( $wk_stampa_TAVOLO == "QUOTA_STAFFE" )
      {
         //quote in larghezza (sopra)
         $P1 = $wk_tav_B0

         $dist = 100
         $wk_dist_prec = 9999

         $wk_j = 1
         while ( $wk_j <= $wk_staffe )
         {
            if( VAR_VAL_STR($wk_staffe[$wk_j] , "PosStaffa") == "RD"
              | VAR_VAL_STR($wk_staffe[$wk_j] , "PosStaffa") == "RS"  )
            {
               SET_#($wk_staffe[$wk_j])

               $P2 = INTERFERISCI(#stp_p0,$wk_ang_top+90,$wk_tav_B0,$wk_tav_B3)

               $P2.y = $P1.y
               $d = DISTANZA($P1,$P2)
               $testo = STR(FLOOR(($d+0.05)*10)/10)

               if( $d < 50 & $wk_dist_prec < 50 ) { $wk_scosta = 50    $wk_dist_prec = 9999 }
               else                               { $wk_dist_prec = $d }

               GOSUB PosizionaQuota

               $P1 = $P2

               $P2 = INTERFERISCI(#stp_p3,$wk_ang_top+90,$wk_tav_B0,$wk_tav_B3)
               $P2.y = $P1.y
               $d = DISTANZA($P1,$P2)
               $testo = STR(FLOOR(($d+0.05)*10)/10)

               if( $d < 50 & $wk_dist_prec < 50 ) { $wk_scosta = 50    $wk_dist_prec = 9999 }
               else                               { $wk_dist_prec = $d }

               GOSUB PosizionaQuota

               $P1 = $P2
            }

            $wk_j = $wk_j + 1
         }

         $P2 = $wk_tav_B3
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         if( $d < 50 & $wk_dist_prec < 50 ) { $wk_scosta = 50 }
         GOSUB PosizionaQuota

         //quote in larghezza (sotto)
         $P1 = $wk_tav_B1

         $wk_dist_prec = 9999
         $dist = -100

         $wk_j = 1
         while ( $wk_j <= $wk_staffe )
         {
            if( VAR_VAL_STR($wk_staffe[$wk_j] , "PosStaffa") == "FD"
              | VAR_VAL_STR($wk_staffe[$wk_j] , "PosStaffa") == "FS"  )
            {
               SET_#($wk_staffe[$wk_j])

               $P2 = INTERFERISCI(#stp_p0,$wk_ang_top+90,$wk_tav_B1,$wk_tav_B2)

               $P2.y = $P1.y
               $d = DISTANZA($P1,$P2)
               $testo = STR(FLOOR(($d+0.05)*10)/10)

               if( $d < 50 & $wk_dist_prec < 50 ) { $wk_scosta = 50    $wk_dist_prec = 9999 }
               else                               { $wk_dist_prec = $d }

               GOSUB PosizionaQuota

               $P1 = $P2

               $P2 = INTERFERISCI(#stp_p3,$wk_ang_top+90,$wk_tav_B1,$wk_tav_B2)
               $P2.y = $P1.y
               $d = DISTANZA($P1,$P2)
               $testo = STR(FLOOR(($d+0.05)*10)/10)

               if( $d < 50 & $wk_dist_prec < 50 ) { $wk_scosta = 50    $wk_dist_prec = 9999 }
               else                               { $wk_dist_prec = $d }

               GOSUB PosizionaQuota

               $P1 = $P2
            }

            $wk_j = $wk_j + 1
         }

         $P2 = $wk_tav_B2
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         if( $d < 50 & $wk_dist_prec < 50 ) { $wk_scosta = 50 }
         GOSUB PosizionaQuota

         //PROFONDITA'

         $P1 = $wk_tav_B1
         $dist = 100
         $wk_dist_prec = 9999

         $wk_j = $wk_staffe
         while ( $wk_j > 0 )
         {
            if( VAR_VAL_STR($wk_staffe[$wk_j] , "PosStaffa") == "RS"
              | VAR_VAL_STR($wk_staffe[$wk_j] , "PosStaffa") == "FS"  )
            {
               SET_#($wk_staffe[$wk_j])

               $P2 = INTERFERISCI(#stp_p1,$wk_ang_top,$wk_tav_B0,$wk_tav_B1)

               $P2.y = $P1.y
               $d = DISTANZA($P1,$P2)
               $testo = STR(FLOOR(($d+0.05)*10)/10)

               if( $d < 50 & $wk_dist_prec < 50 ) { $wk_scosta = 50    $wk_dist_prec = 9999 }
               else                               { $wk_dist_prec = $d }

               GOSUB PosizionaQuota

               $P1 = $P2

               $P2 = INTERFERISCI(#stp_p0,$wk_ang_top,$wk_tav_B0,$wk_tav_B1)
               $P2.y = $P1.y
               $d = DISTANZA($P1,$P2)
               $testo = STR(FLOOR(($d+0.05)*10)/10)

               if( $d < 50 & $wk_dist_prec < 50 ) { $wk_scosta = 50    $wk_dist_prec = 9999 }
               else                               { $wk_dist_prec = $d }

               GOSUB PosizionaQuota

               $P1 = $P2
            }

            $wk_j = $wk_j - 1
         }

         $P2 = $wk_tav_B0
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         if( $d < 50 & $wk_dist_prec < 50 ) { $wk_scosta = 50 }
         GOSUB PosizionaQuota

         GOSUB StampaProd_TavoloSNACK_AIR_Dettagli
      }

      if( $wk_stampa_TAVOLO == "QUOTA_VETRI" )
      {
         //quote in larghezza (sopra)
         $P1 = $wk_tav_B0

         $dist = 100
         $wk_dist_prec = 9999

         $wk_j = 1
         while ( $wk_j <= $wk_staffe )
         {
            SET_#($wk_staffe[$wk_j])

            if( VAR_VAL_STR($wk_staffe[$wk_j] , "PosStaffa") == "RS" )
            {
               $P2 = INTERFERISCI(#stp_pc,$wk_ang_top+90,$wk_tav_B0,$wk_tav_B3)

               $P2.y = $P1.y
               $d = DISTANZA($P1,$P2)
               $testo = STR(FLOOR(($d+0.05)*10)/10)

               if( $d < 50 & $wk_dist_prec < 50 ) { $wk_scosta = 50    $wk_dist_prec = 9999 }
               else                               { $wk_dist_prec = $d }

               GOSUB PosizionaQuota

               $P1 = $P2
            }

            if( VAR_VAL_STR($wk_staffe[$wk_j] , "PosStaffa") == "RD" )
            {
               SET_#($wk_staffe[$wk_j])

               $P2 = INTERFERISCI(#stp_p0,$wk_ang_top+90,$wk_tav_B0,$wk_tav_B3)

               $P2.y = $P1.y
               $d = DISTANZA($P1,$P2)
               $testo = STR(FLOOR(($d+0.05)*10)/10)

               if( $d < 50 & $wk_dist_prec < 50 ) { $wk_scosta = 50    $wk_dist_prec = 9999 }
               else                               { $wk_dist_prec = $d }

               GOSUB PosizionaQuota

               $P1 = $P2

               $P2 = INTERFERISCI(#stp_p3,$wk_ang_top+90,$wk_tav_B0,$wk_tav_B3)
               $P2.y = $P1.y
               $d = DISTANZA($P1,$P2)
               $testo = STR(FLOOR(($d+0.05)*10)/10)

               if( $d < 50 & $wk_dist_prec < 50 ) { $wk_scosta = 50    $wk_dist_prec = 9999 }
               else                               { $wk_dist_prec = $d }

               GOSUB PosizionaQuota

               $P1 = $P2
            }

            $wk_j = $wk_j + 1
         }

         $P2 = $wk_tav_B3
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         if( $d < 50 & $wk_dist_prec < 50 ) { $wk_scosta = 50 }
         GOSUB PosizionaQuota

         //PROFONDITA'
         $P1 = $wk_tav_B1
         $dist = 100
         $wk_dist_prec = 9999

         $wk_j = $wk_staffe
         while ( $wk_j > 0 )
         {
            SET_#($wk_staffe[$wk_j])

            if( VAR_VAL_STR($wk_staffe[$wk_j] , "PosStaffa") == "FS" )
            {
               $P2 = INTERFERISCI(#stp_pc,$wk_ang_top,$wk_tav_B0,$wk_tav_B1)

               $P2.y = $P1.y
               $d = DISTANZA($P1,$P2)
               $testo = STR(FLOOR(($d+0.05)*10)/10)

               if( $d < 50 & $wk_dist_prec < 50 ) { $wk_scosta = 50    $wk_dist_prec = 9999 }
               else                               { $wk_dist_prec = $d }

               GOSUB PosizionaQuota

               $P1 = $P2
            }

            if( VAR_VAL_STR($wk_staffe[$wk_j] , "PosStaffa") == "RS"  )
            {
               $P2 = INTERFERISCI(#stp_p1,$wk_ang_top,$wk_tav_B0,$wk_tav_B1)

               $P2.y = $P1.y
               $d = DISTANZA($P1,$P2)
               $testo = STR(FLOOR(($d+0.05)*10)/10)

               if( $d < 50 & $wk_dist_prec < 50 ) { $wk_scosta = 50    $wk_dist_prec = 9999 }
               else                               { $wk_dist_prec = $d }

               GOSUB PosizionaQuota

               $P1 = $P2

               $P2 = INTERFERISCI(#stp_p0,$wk_ang_top,$wk_tav_B0,$wk_tav_B1)
               $P2.y = $P1.y
               $d = DISTANZA($P1,$P2)
               $testo = STR(FLOOR(($d+0.05)*10)/10)

               if( $d < 50 & $wk_dist_prec < 50 ) { $wk_scosta = 50    $wk_dist_prec = 9999 }
               else                               { $wk_dist_prec = $d }

               GOSUB PosizionaQuota

               $P1 = $P2
            }

            $wk_j = $wk_j - 1
         }

         $P2 = $wk_tav_B0
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         if( $d < 50 & $wk_dist_prec < 50 ) { $wk_scosta = 50 }
         GOSUB PosizionaQuota
      }
   }

   PROCEDURA StampaProd_Tavolo_AIR_QuotaPCV
   {
      COMPONENTI2("$wk_PCV",$wk_idx_tav,"Passacavi_368")
      if( $wk_PCV == 0 )  { EXITSUB() }

      $wk_STP_DIS_TitoloDisegno  =  "QUOTE PASSACAVI"
      $wk_STP_DIS_TitoloDisegno2 = ""

      $wk_FORM_W  =  212

      $alias_scr     = "STP_SCR_TOP"
      $AliasQuota    = "STP_QUO_TOP"
      $AliasQuotaLat = "STP_QUO_TOP"
      $wk_faccia = "A"

      //$HChar   = $Yscr/5         $LChar   = $Xscr/5
      //$Alt_Chr = $Yscr/5         $Lar_Chr = $Xscr/5
      $HChar   = $Yscr         $LChar   = $Xscr
      $Alt_Chr = $Yscr         $Lar_Chr = $Xscr

      $ang_scr = 0
      $wk_scosta_lquota = 20
      $dist = 100

      SET_#($wk_idx_tav)
      VAR_VALUE_SET($wk_idx_tav, "flag_stampa", 1)

      if( VAR_VAL_STR($wk_idx_tav, "ModTavoloStr") == "CORRER" )
      {
         VAR_VALUE_SET($wk_idx_tav, "flag_stampa", 0)

         $wk_idx_pia = -1
         COMPONENTI2("$wk_pia", $wk_idx_tav, "PianoTavolo_Generico")
         $wk_idx_pia = $wk_pia[1]

         SET_#($wk_idx_pia)
         COMPONENTI2("$wk_bl", $wk_idx_pia, "BloccoSmussatoY")
         VAR_VALUE_SET($wk_bl[1], "flag_stampa", 1)
      }

      $wk_tav_B0 = #stp_base_0       $wk_tav_B0.y = 0
      $wk_tav_B1 = #stp_base_1       $wk_tav_B1.y = 0
      $wk_tav_B2 = #stp_base_2       $wk_tav_B2.y = 0
      $wk_tav_B3 = #stp_base_3       $wk_tav_B3.y = 0

      $wk_STP_DT_IMG  = ""
      $wk_STP_DT_IMG2 = ""

      $wk_dist_quota = 100

      $wk_j = 1
      while ( $wk_j <= $wk_PCV )
      {
         $wk_idx_pcv = $wk_PCV[$wk_j]
         SET_#($wk_idx_pcv)

         $dist = $wk_dist_quota * $wk_j

         //larghezza sopra
         $P1 = $wk_tav_B0
         $P2 = INTERFERISCI(#pnt_scs_centro,$wk_ang_top+90,$wk_tav_B0,$wk_tav_B3)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $wk_tav_B3
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         //profondità dx
         $P1 = $wk_tav_B3
         $P2 = INTERFERISCI(#pnt_scs_centro,$wk_ang_top,$wk_tav_B3,$wk_tav_B2)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $wk_tav_B2
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         //gestisco al max 2 dettagli
         $wk_dett_par1 = VAR_VAL_STR($wk_idx_pcv,"cmp_name")
         $wk_dett_par2 = "PassacaviRet"
         $wk_dett_par3 = ""
         if( $wk_dett_par1 == "D21006" )                              { $wk_dett_par2 = "PassacaviVetro" }
         if( $wk_dett_par1 == "TER050" )                              { $wk_dett_par2 = "PassacaviOvale" }
         if( $wk_dett_par1 == "TER052" )                              { $wk_dett_par2 = "PassacaviTondo" }
         if( VAR_VAL_STR($wk_idx_tav, "VAR_mat_tav")  == "LAMINATO"
           | VAR_VAL_STR($wk_idx_tav, "VAR_mat_tav")  == "WILDWOOD"
           | VAR_VAL_STR($wk_idx_tav, "TipoPianoStr") == "FINEWOOD" ) { $wk_dett_par3 = "LAV" }

         $wk_nome_file = STRCAT($path_layout,"Dettagli\",$wk_dett_par1,"_",$wk_dett_par2,$wk_dett_par3,".bmp")
         if( FILE_EXIST($wk_nome_file) )
         {
            if( $wk_STP_DT_IMG  == "" ) { $wk_STP_DT_IMG  = $wk_nome_file }
            else
            {
               if( $wk_STP_DT_IMG2 == "" ) { $wk_STP_DT_IMG2 = $wk_nome_file }
            }
         }

         $wk_j = $wk_j + 1
      }
   }
   //} STAMPA TECNICA TAVOLI AIR

   // { STAMPA TAVOLO GENERICO
   PROCEDURA StampaProd_Tavolo_Generico
   {
      log = 0
      ScriviSuLog( log , "StampaProd_Tavolo_Gen" , "START" )

      WITH_ALIAS("$wk_tav","StpTavoli")

      $wk_tav_num = 1
      while( $wk_tav_num <= $wk_tav)
      {
        $wk_tav_att = $wk_tav[$wk_tav_num]
        $wk_tav_att_all = VAR_VAL( $wk_tav_att, "ALLEGATI")
        $wk_tav_att_tall = VAR_VAL( $wk_tav_att, "T_ALLEGATI")

        if( $wk_tav_att_tall - $wk_tav_att_all > 0)
        {
            DEL_ARRAY_ITEM( -1, "wk_tav", $wk_tav_num)
            $wk_tav_num = $wk_tav_num - 1
        }

        $wk_tav_num = $wk_tav_num + 1
      }

      if( $wk_tav == 0 )
      {
         ScriviSuLog( log , "StampaProd_Tavolo_Gen" , "-- NON CI SONO TAVOLI DA STAMPARE" )
         ScriviSuLog( log , "StampaProd_Tavolo_Gen" , "END" )
         EXITSUB()
      }

      COMANDO2("M4_SHOW Ambienti Hide")
      COMANDO2("SHOW None")
      COMANDO2("SHOW Abilita Off")

      $wk_i = 1
      while ( $wk_i <= $wk_tav )
      {
         $wk_idx_tav  = $wk_tav[$wk_i]
         $wk_tipo_tav = VAR_VAL_STR($wk_idx_tav,"ModTavoloStr")

         GOSUB InizioStampaPDF
         GOSUB InfoCartiglioGen

         $wk_STP_DIS_Titolo = STRCAT("STAMPA TAVOLO ", $wk_tipo_tav)

         $wk_STP_DIS_TitoloDisegno  =  ""
         $wk_STP_DIS_TitoloDisegno2 =  ""

         $wk_STP_DIS_LBL_5 = "Operatore:"
         $wk_STP_DIS_5     = VAR_VAL_STR( -1, "CodOperatore")

         $wk_STP_DIS_LBL_4 = ""
         $wk_STP_DIS_4     = ""
         $wk_STP_DIS_LBL_6 = MSG(228)
         $wk_STP_DIS_6     = VAR_VAL_STR(-1,"Gestionale_Ordine_Riferimento")

         $wk_STP_TitoloInfo = "INFORMAZIONI"
         $wk_STP_DIS_VAR1 = VAR_VAL_STR($wk_idx_tav,"DescEdit__")

         //finitura
         $wk_STP_DIS_VAR2 = GetDescCatVal($wk_idx_tav,"C044","CAT")
         $wk_STP_DIS_VAL2 = GetDescCatVal($wk_idx_tav,"C044","VAL")

         $wk_STP_DIS_VAR3 = GetDescCatVal($wk_idx_tav,"C023","CAT")
         $wk_STP_DIS_VAL3 = GetDescCatVal($wk_idx_tav,"C023","VAL")

         $wk_STP_DIS_VAR4 = GetDescCatVal($wk_idx_tav,"C028","CAT")
         $wk_STP_DIS_VAL4 = GetDescCatVal($wk_idx_tav,"C028","VAL")

         //Spessore
         $wk_STP_DIS_VAR5 = STRCAT("SPESSORE PIANO ",STR(VAR_VAL($wk_idx_tav,"Piano_Spe")), "mm")

         $VAR_AnteprimaDiStampa = 1
         if( $OnTerminate==1 ) { $VAR_AnteprimaDiStampa = 0 }

         SET_#($wk_idx_tav)
         if( VAR_EXIST($wk_idx_tav,"IDX_GEST") ) { $POSTNOMESTAMPA = STRCAT("-TAVGEN_",STR(#IDX_GEST)) }
         else                                    { $POSTNOMESTAMPA = STRCAT("-TAVGEN_(",STR($wk_idx_tav),")") }

         $wk_suffisso_emf = "_TAVGEN"
         VAR_CREATE_NUM(-1,STRCAT("wk_pagina_",$wk_suffisso_emf),0,0,"")

         $wk_idx_riga      = $wk_idx_tav
         $SET_STAMPA       = "GEN"

         GOSUB adatta_dim_quote
         $Yscr = $Yscr/2         $Xscr = $Xscr/2
         $Yscr = $Yscr/2         $Xscr = $Xscr/2

         $wk_stampa_TAVOLO = "QUOTA_DIM"
         GOSUB StampaProd_Tavolo_Gen_Sub

         if( VAR_VAL_STR( $wk_idx_tav, "TipoPianoStr" ) != "FINEWOOD" )
         {
            $wk_stampa_TAVOLO = "QUOTA_PIANO"
            GOSUB StampaProd_Tavolo_Gen_Sub

            $wk_stampa_TAVOLO = "QUOTA_TELAIO"
            GOSUB StampaProd_Tavolo_Gen_Sub
         }

         //se ci sono dei passacavi aggiungo una pagina dedicata
         COMPONENTI2("$wk_PCV",$wk_idx_tav,"Passacavi_368")
         if( $wk_PCV > 0 )
         {
            $wk_stampa_TAVOLO = "QUOTA_PCV"
            GOSUB StampaProd_Tavolo_Gen_Sub
         }

         GOSUB FineStampaPDF
         $wk_suffisso_PDF = ""

         GOSUB CancellaGlobaliStp

         $wk_i = $wk_i + 1
      }

      COMANDO2("M4_SHOW Ambienti Show")
      COMANDO2("SHOW Abilita On")
      COMANDO2("SHOW All")

      ScriviSuLog( log , "StampaProd_Tavolo_Gen" , "END" )
   }

   PROCEDURA StampaProd_Tavolo_Gen_Sub
   {
      //attualmente solo per il tavolo Correr
      if( $wk_tipo_tav != "CORRER" ) { continue }

      $wk_SP_LINEA_MOBILI       = $TSTP_SP_LINEA_MOBILI
      $wk_SP_LINEA_MOBILI_TRATT = $TSTP_SP_LINEA_TRATTEGGIO
      $wk_SP_LINEA_SCRITTE      = 1
      $wk_SP_LINEA_QUOTE        = 1

      $wk_FORM_dW =  5
      $wk_FORM_dH =  52
      $wk_FORM_W  =  285
      $wk_FORM_H  =  152

      $wk_STP_DT_IMG  = ""
      $wk_STP_DT_IMG2 = ""

      $wk_nome_form = "Stampa_Top2_O.emf"
      $wk_nome_layout = "VISTA_TOP_WIREFRAME"

      $wk_STP_DIS_TitoloDisegno   = "VISTA DA SOPRA"

      $wk_ang_top = ANG_TOT2($wk_idx_tav)
      $wk_view_roll = STRCAT( STR(-1*$wk_ang_top) ," 0" )
      $wk_view_ang = STR(-1*$wk_ang_top)

      $wk_view_orbit = "0 0"

      if( $DIS_TO_GEMO==0 )
      {
         if( $wk_stampa_TAVOLO == "QUOTA_DIM" )    { GOSUB StampaProd_Tavolo_Gen_QuotaDim }

         if( $wk_stampa_TAVOLO == "QUOTA_PIANO"
           | $wk_stampa_TAVOLO == "QUOTA_TELAIO" ) { GOSUB StampaProd_Tavolo_Gen_Quota }

         if( $wk_stampa_TAVOLO == "QUOTA_PCV" )    { GOSUB StampaProd_Tavolo_AIR_QuotaPCV }
      }

      GOSUB NomeDisegno
      GOSUB StampaLayout

      ResetVarStampa("flag_stampa")

      if( $DIS_TO_GEMO==0 ) { GOSUB CancellaScritteQuote }
   }

   PROCEDURA StampaProd_Tavolo_Gen_QuotaDim
   {
      $wk_nome_form  = "Stampa_Top2_O.emf"

      $alias_scr     = "STP_SCR_TOP"
      $AliasQuota    = "STP_QUO_TOP"
      $AliasQuotaLat = "STP_QUO_TOP"
      $wk_faccia = "A"

      $HChar   = $Yscr         $LChar   = $Xscr
      $Alt_Chr = $Yscr         $Lar_Chr = $Xscr

      $ang_scr = 0
      $wk_scosta_lquota = 20
      $dist = 100

      SET_#($wk_idx_tav)
      VAR_VALUE_SET($wk_idx_tav ,"flag_stampa",1)

      $dist = 100
      $P1 = #alto_0
      $P2 = #alto_3
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      $dist = 100
      $P1 = #alto_1
      $P2 = #alto_0
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota
   }

   PROCEDURA StampaProd_Tavolo_Gen_Quota
   {
      $wk_STP_DIS_TitoloDisegno2 = "QUOTE PIANO"
      if( $wk_stampa_TAVOLO == "QUOTA_TELAIO" ) { $wk_STP_DIS_TitoloDisegno2 = "QUOTE TELAIO" }

      $alias_scr     = "STP_SCR_TOP"
      $AliasQuota    = "STP_QUO_TOP"
      $AliasQuotaLat = "STP_QUO_TOP"
      $wk_faccia = "A"

      $HChar   = $Yscr         $LChar   = $Xscr
      $Alt_Chr = $Yscr         $Lar_Chr = $Xscr

      $ang_scr = 0
      $wk_scosta_lquota = 20
      $dist = 100

      $wk_items_quota = "PianoTavolo_Generico"
      if( $wk_stampa_TAVOLO == "QUOTA_TELAIO" )  { $wk_items_quota = "Telaio_TavCorrer" }

      $wk_idx_itm_stp = -1
      COMPONENTI2("$wk_itm", $wk_idx_tav, $wk_items_quota)

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

      $wk_idx_itm_stp = $wk_itm[1]
      SET_#($wk_idx_itm_stp)
      VAR_VALUE_SET($wk_idx_itm_stp,"flag_stampa",1)

      $dist = 100
      $P1 = #alto_0
      $P2 = #alto_3
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      $dist = 100
      $P1 = #alto_1
      $P2 = #alto_0
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota
   }
   // } STAMPA TAVOLO GENERICO

   PROCEDURA reset_valori_legenda_stampa
   {
      //reset valori
      $wk_STP_LegendaTitolo = ""

      $wk_vv = 1
      while ( $wk_vv <= 30 )
      {
         VAR_VALUESTR_SET(-1,STRCAT("wk_STP_LEG_VAR",STR($wk_vv)),"")
         VAR_VALUESTR_SET(-1,STRCAT("wk_STP_LEG_VAL",STR($wk_vv)),"")
         VAR_VALUESTR_SET(-1,STRCAT("wk_STP_LEG_FIN",STR($wk_vv)),"")

         $wk_vv = $wk_vv + 1
      }

      $wk_STP_ELD_1  = ""  $wk_STP_ELD_C1 = ""
      $wk_STP_ELD_2  = ""  $wk_STP_ELD_C2 = ""

      $wk_STP_DT_1 = ""
      $wk_STP_DT_2 = ""

      $wk_STP_DL_1 = ""    $wk_STP_DV_1 = ""
      $wk_STP_DL_2 = ""    $wk_STP_DV_2 = ""
      $wk_STP_DL_3 = ""    $wk_STP_DV_3 = ""
      $wk_STP_DL_4 = ""    $wk_STP_DV_4 = ""
      $wk_STP_DL_5 = ""    $wk_STP_DV_5 = ""
      $wk_STP_DL_6 = ""    $wk_STP_DV_6 = ""
   }

   //{ STAMPA TECNICA MENSOLE BAGNO
   PROCEDURA StampaProd_MensoleBagno_AIR
   {
      log = 0
      ScriviSuLog( log , "StampaProd_MensoleBagno_AIR" , "START" )

      WITH_ALIAS("$wk_mens_tmp","StpMensolaBagno")
      if( $wk_mens_tmp == 0 )
      {
         ScriviSuLog( log , "StampaProd_MensoleBagno_AIR" , "-- NON CI SONO ELEMENTI DA STAMPARE" )
         ScriviSuLog( log , "StampaProd_MensoleBagno_AIR" , "END" )
         EXITSUB()
      }

      //non faccio stampa della mensola rivestita quando è un componente libreria AIR
      $wk_mens = 0
      $wk_mens_tmp_num = 1
      while ( $wk_mens_tmp_num <= $wk_mens_tmp )
      {
         if( VAR_VAL($wk_mens_tmp[$wk_mens_tmp_num],"VAR_Lib_Air") == 0 ) { AddItem2Array( -1, "wk_mens", $wk_mens_tmp[$wk_mens_tmp_num],"") }

         $wk_mens_tmp_num = $wk_mens_tmp_num + 1
      }

      //non faccio stampa se ho già un allegato manuale
      $wk_mens_num = 1
      while( $wk_mens_num <= $wk_mens)
      {
        $wk_mens_att = $wk_mens[$wk_mens_num]
        $wk_mens_att_all = VAR_VAL( $wk_mens_att, "ALLEGATI")
        $wk_mens_att_tall = VAR_VAL( $wk_mens_att, "T_ALLEGATI")

        if( $wk_mens_att_tall - $wk_mens_att_all > 0)
        {
            DEL_ARRAY_ITEM( -1, "wk_mens", $wk_mens_num)
            $wk_mens_num = $wk_mens_num - 1
        }

        $wk_mens_num = $wk_mens_num + 1
      }

      COMANDO2("M4_SHOW Ambienti Hide")
      COMANDO2("SHOW None")
      COMANDO2("SHOW Abilita Off")

      //$wk_OnStampa_MensoleBagno = 1
      //COMANDO2("RIGENERA")

      //per ogni MENSOLA:
      // pagina 1 : VISTA TOP CON QUOTE LARGHEZZA E PROFONDITA (SOPRA / SINISTRA) + QUOTA VASCHE ( SOTTO / DESTRA )  + QUOTO FORO
      // pagina 2 : VISTA TOP QUOTA STAFFE
      // pagina 3 : VISTA TOP QUOTA MASSELLI

      $SET_STAMPA = "0009"

      $wk_mens_n = 1
      while ( $wk_mens_n <= $wk_mens )
      {
         $wk_idx_men = $wk_mens[$wk_mens_n]

         GOSUB InizioStampaPDF
         GOSUB InfoCartiglioGen

         GOSUB reset_valori_legenda_stampa

         $wk_STP_DIS_Titolo = "STAMPA MENSOLA BAGNO"
         $wk_tipo_stampa    = "MENBGN"

         //Simone 27/07/2022
         $Stp_Quota_Stf = 1
         if( NOME($wk_idx_men) == "Mensola_Rivestita" )
         {
            $SET_STAMPA        = "0010"
            $wk_STP_DIS_Titolo = "STAMPA MENSOLA RIVESTITA"
            $wk_tipo_stampa    = "MENRIVTAM"

            //mensola rivestita sp. 50 con triadi
            if( VAR_VAL($wk_idx_men, "VAR_Staffe_tipo") == 0 ) { $Stp_Quota_Stf = 0 }
         }

         $wk_STP_DIS_LBL_5 = "Operatore:"
         $wk_STP_DIS_5     = VAR_VAL_STR( -1, "CodOperatore")

         //sposto riferimento
         $wk_STP_DIS_LBL_4 = ""
         $wk_STP_DIS_4     = ""
         $wk_STP_DIS_LBL_6 = MSG(228)
         $wk_STP_DIS_6     = VAR_VAL_STR(-1,"Gestionale_Ordine_Riferimento")

         $wk_STP_TitoloInfo = "INFORMAZIONI"
         $wk_STP_DIS_VAR1 = VAR_VAL_STR($wk_idx_men,"DescEdit__")

         //finitura
         $wk_STP_DIS_VAR2 = GetDescCatVal($wk_idx_men,"C028","CAT")
         $wk_STP_DIS_VAL2 = GetDescCatVal($wk_idx_men,"C028","VAL")

         //Luca 26/05/2022
         if( VAR_VAL($wk_idx_men,"LED_Sopra") == 1 ) { $wk_STP_LEG_VAR1 = "LED SUPERIORE" }
         if( VAR_VAL($wk_idx_men,"LED_Sotto") == 1 ) { $wk_STP_LEG_VAR2 = "LED INFERIORE" }

         //$wk_STP_DIS_TitoloDisegno = STRCAT("PIANO SPESSORE ",STR(VAR_VAL($wk_idx_scr,"VAR_SpePiano")),"mm")

         $VAR_AnteprimaDiStampa = 1
         if( $OnTerminate==1 ) { $VAR_AnteprimaDiStampa = 0 }

         SET_#($wk_idx_men)
         if( VAR_EXIST( $wk_idx_men,"IDX_GEST") ){ $POSTNOMESTAMPA = STRCAT("-", $wk_tipo_stampa, "_", STR(#IDX_GEST)) }
         else                                    { $POSTNOMESTAMPA = STRCAT( "-", $wk_tipo_stampa, "_", STR($wk_idx_men),")") }

         $wk_suffisso_emf = STRCAT("_",$wk_tipo_stampa)
         VAR_CREATE_NUM(-1,STRCAT("wk_pagina_",$wk_suffisso_emf),0,0,"")

         //Luca 27/01/2022
         $wk_idx_riga      = $wk_idx_men

         GOSUB adatta_dim_quote
         $Yscr = $Yscr/2         $Xscr = $Xscr/2
         $Yscr = $Yscr/2         $Xscr = $Xscr/2

         $wk_AbilitaVistaDaSotto = 0
         $wk_stampa_MEN = "TOP"
         GOSUB StampaProd_MensoleBagno_AIR_Sub

         if( $Stp_Quota_Stf == 1 )
         {
            $wk_AbilitaVistaDaSotto = 1
            $wk_stampa_MEN = "STAFFE"
            GOSUB StampaProd_MensoleBagno_AIR_Sub
         }
         //$wk_stampa_MEN = "MASSELLI"
         //GOSUB StampaProd_MensoleBagno_AIR_Sub

         GOSUB FineStampaPDF
         $wk_suffisso_PDF = ""

         GOSUB CancellaGlobaliStp

         $wk_mens_n = $wk_mens_n + 1
      }

      DEL_VAR( -1, "wk_OnStampa_MensoleBagno")
      //COMANDO2("RIGENERA")

      COMANDO2("M4_SHOW Ambienti Show")
      COMANDO2("SHOW Abilita On")
      COMANDO2("SHOW All")

      ScriviSuLog( log , "StampaProd_MensoleBagno_AIR" , "END" )
   }

   PROCEDURA StampaProd_MensoleBagno_AIR_Sub
   {
      $wk_SP_LINEA_MOBILI       = $TSTP_SP_LINEA_MOBILI
      $wk_SP_LINEA_MOBILI_TRATT = $TSTP_SP_LINEA_TRATTEGGIO
      $wk_SP_LINEA_SCRITTE      = 1
      $wk_SP_LINEA_QUOTE        = 1

      $wk_FORM_dW =  5
      $wk_FORM_dH =  52
      //$wk_FORM_W  =  285
      $wk_FORM_W  =  212
      $wk_FORM_H  =  152

      //non possono non esistere
      $wk_FORM2_dW = $wk_FORM_dW
      $wk_FORM2_W  = $wk_FORM_W
      $wk_FORM2_dH = 1500
      $wk_FORM2_H  = 50

      $wk_STP_DT_IMG  = ""
      $wk_STP_DT_IMG2 = ""

      //Luca 07/02/2022
      $wk_STP_DT_IMG_X = 217
      $wk_STP_DT_IMG_Y = 144
      $wk_STP_DT_IMG_W = 70
      $wk_STP_DT_IMG_H = 57.5

      $wk_STP_DT_IMG2_X = $wk_STP_DT_IMG_X
      $wk_STP_DT_IMG2_Y = $wk_STP_DT_IMG_Y - $wk_STP_DT_IMG_H
      $wk_STP_DT_IMG2_W = $wk_STP_DT_IMG_W
      $wk_STP_DT_IMG2_H = $wk_STP_DT_IMG_H

      $wk_nome_form = "Stampa_Top2_O.emf"
      //$wk_nome_layout = "VISTA_TOP_WIREFRAME"

      $wk_nome_form = "Stampa_Top_O.emf"

      $wk_STP_DIS_TitoloDisegno  = ""
      $wk_STP_DIS_TitoloDisegno2 = ""

      $wk_ang_top = ANG_TOT2($wk_idx_men)
      $wk_view_roll = STRCAT( STR(-1*$wk_ang_top) ," 0" )
      $wk_view_ang = STR(-1*$wk_ang_top)

      //$wk_view_orbit = STRCAT( STR(-1*$wk_ang_top) ," 0" )

      //Luca 23/02/2022
      $wk_view_orbit = "0 0"
      if( $wk_AbilitaVistaDaSotto == 1 )
      {
         if( $wk_stampa_MEN == "STAFFE" ) { $wk_view_orbit = "180 0" }
      }

      //punti mensola
      SET_#($wk_idx_men)
      $wk_B0 = #base_0
      $wk_B1 = #base_1
      $wk_B2 = #base_2
      $wk_B3 = #base_3

      if( VAR_EXIST($wk_idx_men,"stp_base_0") )
      {
         $wk_B0 = #stp_base_0
         $wk_B1 = #stp_base_1
         $wk_B2 = #stp_base_2
         $wk_B3 = #stp_base_3
      }

      $wk_nome_layout = "Top_Pianta"

      if( $DIS_TO_GEMO == 0 )
      {
         if( $wk_stampa_MEN == "TOP" )      { GOSUB StampaProd_MensoleBagno_AIR_QuotaGen }
         if( $wk_stampa_MEN == "STAFFE" )   { GOSUB StampaProd_MensoleBagno_AIR_QuotaStaffe }
         //if( $wk_stampa_MEN == "MASSELLI" ) { GOSUB StampaProd_MensoleBagno_AIR_QuotaMasselli }
      }

      GOSUB NomeDisegno
      GOSUB StampaLayout

      ResetVarStampa("flag_stampa")
      ResetVarStampa("flag_stampa_tratt")

      if( $DIS_TO_GEMO==0 ) { GOSUB CancellaScritteQuote }
   }

   PROCEDURA StampaProd_MensoleBagno_AIR_QuotaGen
   {
      if( $wk_STP_DIS_TitoloDisegno == "" )  { $wk_STP_DIS_TitoloDisegno  = "VISTA SUPERIORE" }
      else                                   { $wk_STP_DIS_TitoloDisegno2 = "VISTA SUPERIORE" }

      $wk_nome_layout = "Top_Pianta"

      //Luca 02/12/2021
      if( NOME($wk_idx_men) == "MensolaDepth_Air" )
      {
         $wk_STP_DT_IMG = STRCAT($path_layout,"Dettagli\DEPTH_Staffa_dtg2.bmp")
      }

      $alias_scr     = "STP_SCR_TOP"
      $AliasQuota    = "STP_QUO_TOP"
      $AliasQuotaLat = "STP_QUO_TOP"
      $wk_faccia = "A"

      $HChar   = $Yscr         $LChar   = $Xscr
      $Alt_Chr = $Yscr         $Lar_Chr = $Xscr

      $ang_scr = 0
      $wk_scosta_lquota = 20

      SET_#($wk_idx_men)
      VAR_VALUE_SET($wk_idx_men, "flag_stampa", 1)

      //Luca 28/07/2022
      if( NOME($wk_idx_men) == "Mensola_Rivestita" )
      {
         COMPONENTI2("$wk_vt",$wk_idx_men,"Mensola_Riv_Riv_Vtr")
         if( $wk_vt > 0 ) { VAR_VALUE_SET($wk_vt[1] ,"flag_stampa",-1)  }

         //Simone 20/10/2022
         COMPONENTI2("$wk_pcv",$wk_idx_men,"Passacavi_368")
         if( $wk_pcv > 0 )
         {
            $wk_pcv_n = 1
            while( $wk_pcv_n <= $wk_pcv )
            {
               $wk_idx_pcv = $wk_pcv[$wk_pcv_n]
               VAR_VALUE_SET( $wk_idx_pcv, "flag_stampa", -1)

               $wk_pcv_n = $wk_pcv_n + 1
            }
         }
      }

      //Larghezza
      $dist = 100
      $P1 = $wk_B0
      $P2 = $wk_B3
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      //Profondità
      $dist = 100
      $P1 = $wk_B1
      $P2 = $wk_B0
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      //Luca 15/10/2021
      WITH_VAR_LOCAL( $wk_idx_men, "$wk_foro", "Stp_Quota_Foro", $num_con_figli, 1, "1")

      if( $wk_foro == 0 )  { EXITSUB() }
      SORT_POINT($wk_B0,"$wk_foro","base_0")

      //1° ciclo: dim vasche larghezza
      $P1 = $wk_B1
      $dist = -100
      $wk_j = 1
      while ( $wk_j <= $wk_foro )
      {
         $wk_idx_foro = $wk_foro[$wk_j]
         SET_#($wk_idx_foro)

         $wk_quota_centro = 0
         if( VAR_VAL_STR($wk_idx_foro,"TipoLavaboStr") == "INBILICO"
           | VAR_VAL_STR($wk_idx_foro,"TipoLavaboStr") == "ELYSSA"  ) { $wk_quota_centro = 1 }

         //Luca 06/12/2021
         if( NOME($wk_idx_foro) == "LavaboKERA" )
         {
            $wk_quota_centro = 1

            // AGGIUNGO il dettaglio (vedi stampa top cucine)
            $wk_KERA_X = VAR_VAL($wk_idx_foro,"X")
            $wk_KERA_Z = VAR_VAL($wk_idx_foro,"Z")
            $wk_KERA_finTOP = "V"
            $wk_var_val  = VAR_VAL_STR($wk_idx_men,"GEST_C028")
            $wk_str_test = STRCAT("GEST_C028;",$wk_var_val)
            $wk_no_sig = STRDADB($wk_idx_men,"DAMMI_NONSIGNIF",$wk_str_test)

            if( $wk_no_sig=="WW000" )  { $wk_KERA_finTOP = "W" }
            if( $wk_no_sig=="FX000"
              | $wk_no_sig=="LA000"  ) { $wk_KERA_finTOP = "L" }

            $wk_STP_DT_IMG = STRCAT($path_layout,"Dettagli\LavaboKERA_",STR($wk_KERA_X),"X",STR($wk_KERA_Z),"_",$wk_KERA_finTOP,".bmp")
         }

         //Luca 09/12/2021
         if( NOME($wk_idx_foro) == "Passacavi_368" )
         {
            $wk_quota_centro = 1
            $wk_dett1 = VAR_VAL_STR($wk_idx_foro,"ORD_COD")
            $wk_dett1_str = "PassacaviRet"
            $wk_dett_par2 = ""
            //dettaglio per lavorazione su legno
            if( NOME($wk_idx_men) == "Mensola_Air"
              | NOME($wk_idx_men) == "Mensola_Rivestita" )
            {
               $wk_dett_par2 = "LAV"
               if( VAR_VAL_STR($wk_idx_foro,"TipoPassacaviStr") == "D21006-VETRO" ) { $wk_dett_par2 = "LAV1" }
            }
            if( $wk_dett1=="D21006" )  { $wk_dett1_str = "PassacaviVetro" }
            if( $wk_dett1=="TER050" )  { $wk_dett1_str = "PassacaviOvale" }
            if( $wk_dett1=="TER052"
              | $wk_dett1=="D21005" )  { $wk_dett1_str = "PassacaviTondo" }

            if( $wk_STP_DT_IMG == "" ) { $wk_STP_DT_IMG = STRCAT($path_layout,"Dettagli\",$wk_dett1,"_",$wk_dett1_str,$wk_dett_par2,".bmp") }
            else
            {
               if( $wk_STP_DT_IMG2 == "" ) { $wk_STP_DT_IMG2 = STRCAT($path_layout,"Dettagli\",$wk_dett1,"_",$wk_dett1_str,$wk_dett_par2,".bmp") }
            }
         }

         //Luca 09/12/2021
         if( NOME($wk_idx_foro) == "Scasso_EldomTop"
           & VAR_VAL($wk_idx_foro,"FormaScasso") == 1 ) { $wk_quota_centro = 1 }

         if( $wk_quota_centro == 1 )
         {
            $wk_pnt_scs_centro = #pnt_scs_centro
            if( VAR_VAL_STR( $wk_idx_foro, "TipoPassacaviStr") == "D21006-VETRO" ) { $wk_pnt_scs_centro = #pnt_scs_centro2 }

            $P2 = INTERFERISCI( $wk_pnt_scs_centro, $wk_ang_top+90, $wk_B1, $wk_B2)
            $P2.y = $P1.y
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuota
            $P1 = $P2
         }
         else
         {
            $P2 = INTERFERISCI(#stp_base_1,$wk_ang_top+90,$wk_B1,$wk_B2)
            $P2.y = $P1.y
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuota
            $P1 = $P2

            $P2 = INTERFERISCI(#stp_base_2,$wk_ang_top+90,$wk_B1,$wk_B2)
            $P2.y = $P1.y
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuota
            $P1 = $P2
         }

         $wk_j = $wk_j + 1
      }

      $P2 = $wk_B2
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      //2° ciclo:
      $P1 = $wk_B3
      $dist = 100
      $wk_j = 1
      while ( $wk_j <= $wk_foro )
      {
         $wk_idx_foro = $wk_foro[$wk_j]
         SET_#($wk_idx_foro)

         $wk_quota_centro = 0
         if( VAR_VAL_STR($wk_idx_foro,"TipoLavaboStr") =="INBILICO" ) { $wk_quota_centro = 1 }
         //Luca 06/12/2021
         if( NOME($wk_idx_foro) == "LavaboKERA" )                     { $wk_quota_centro = 1 }
         //Luca 09/12/2021
         if( NOME($wk_idx_foro) == "Passacavi_368" )                  { $wk_quota_centro = 1 }

         //Luca 09/12/2021
         //quoto sotto
         if( NOME($wk_idx_foro) == "Scasso_EldomTop"
           & VAR_VAL($wk_idx_foro,"FormaScasso") == 1 ) { $wk_quota_centro = 99 }

         if( $wk_quota_centro == 1 )
         {
            $wk_pnt_scs_centro = #pnt_scs_centro
            if( VAR_VAL_STR( $wk_idx_foro, "TipoPassacaviStr") == "D21006-VETRO" ) { $wk_pnt_scs_centro = #pnt_scs_centro2 }

            $P2 = INTERFERISCI( $wk_pnt_scs_centro, $wk_ang_top, $wk_B3, $wk_B2)
            $P2.y = $P1.y
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuota
            $P1 = $P2
         }

         if( $wk_quota_centro == 0 )
         {
            $P2 = INTERFERISCI(#stp_base_3,$wk_ang_top,$wk_B3,$wk_B2)
            $P2.y = $P1.y
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuota
            $P1 = $P2

            $P2 = INTERFERISCI(#stp_base_2,$wk_ang_top,$wk_B3,$wk_B2)
            $P2.y = $P1.y
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuota
            $P1 = $P2
         }
         $wk_j = $wk_j + 1
      }

      $P2 = $wk_B2
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      //3° ciclo: pos fori rubinetto
      $wk_almeno_uno = 0

      $wk_j = 1
      while ( $wk_j <= $wk_foro )
      {
         $wk_idx_foro = $wk_foro[$wk_j]
         SET_#($wk_idx_foro)

         if( VAR_VAL($wk_idx_foro,"VAR_Rubinetto") == 1)
         {
            $wk_rubinetto_idx = #idx_rubinetto
            SET_#($wk_rubinetto_idx)

            $wk_rubinetto_diam     = #VAR_Diam
            $wk_rubinetto_diam_inf = VAR_VAL( #idx_att, "VAR_DiamInf")
            $wk_almeno_uno = 1

            //Visualizzo scassi tratteggiati
            WITH_VAR_LOCAL( #idx_att, "$wk_scs_stop", "StpVediScasso_Cil", $num_con_figli, 1, "1")

            $wk_k = 1
            while( $wk_k <= $wk_scs_stop )
            {
               $wk_scs_stop_att = $wk_scs_stop[$wk_k]

               VAR_VALUE_SET( $wk_scs_stop_att, "flag_stampa_tratt", 1)

               $wk_k = $wk_k + 1
            }

            //Quoto scassi
            WITH_VAR_LOCAL( #idx_att, "$wk_fori_rubinetto", "StpQuotaScasso_Cil", $num_con_figli, 1, "1")

            if( $wk_fori_rubinetto > 0 )
            {
               //Orizzontali
               $wk_fori_oriz_pnt_int     = 0
               $wk_fori_oriz_dist        = 0

               //Colleziono dati
               $wk_ii = 1
               while( $wk_ii <= $wk_fori_rubinetto )
               {
                  $wk_foro_attuale = $wk_fori_rubinetto[$wk_ii]
                  SET_#($wk_foro_attuale)

                  //Orizzontali
                  $wk_foro_pnt_int = INTERFERISCI( #pnt_scs_centro, $wk_ang_top+90, $wk_B0, $wk_B3)
                  $wk_foro_pnt_int.y = $wk_B0.y
                  $wk_foro_dist = DISTANZA( $wk_B0, $wk_foro_pnt_int)

                  $wk_add = 1
                  $wk_kk = 1
                  while( $wk_add == 1
                       & $wk_kk <= $wk_fori_oriz_dist )
                  {
                     if( $wk_fori_oriz_dist[$wk_kk] == $wk_foro_dist ) { $wk_add = 0 }

                     $wk_kk = $wk_kk + 1
                  }

                  if( $wk_add == 1 )
                  {
                     $wk_fori_oriz_pnt_int = $wk_fori_oriz_pnt_int + 1
                     VAR_CREATE_XYZ( -1, GetArrayVar( "wk_fori_oriz_pnt_int", $wk_fori_oriz_pnt_int), $wk_foro_pnt_int.x, $wk_foro_pnt_int.y, $wk_foro_pnt_int.z, $MODE_NONE, "")

                     $wk_fori_oriz_dist = $wk_fori_oriz_dist + 1
                     VAR_CREATE_NUM( -1, GetArrayVar( "wk_fori_oriz_dist", $wk_fori_oriz_dist), $wk_foro_dist, $MODE_NONE, "")
                  }

                  $wk_ii = $wk_ii + 1
               }

               //Ordino dati
               //Orizzontali
               $wk_fori_oriz_pnt_int_sorted = $wk_fori_oriz_dist
               $wk_fori_oriz_dist_sorted    = $wk_fori_oriz_dist
               ArrayCopy( -1, "wk_fori_oriz_dist", "wk_fori_oriz_dist_sorted")
               SORT_ARRAY(-1, "wk_fori_oriz_dist_sorted")

               $wk_ii = 1
               while( $wk_ii <= $wk_fori_oriz_dist_sorted )
               {
                  $wk_foro_dist_sorted = $wk_fori_oriz_dist_sorted[$wk_ii]

                  $wk_kk = 1
                  while( $wk_kk <= $wk_fori_oriz_dist )
                  {
                     $wk_foro_dist = $wk_fori_oriz_dist[$wk_kk]
                     $wk_foro_pnt  = $wk_fori_oriz_pnt_int[$wk_kk]

                     if( $wk_foro_dist == $wk_foro_dist_sorted )
                     {
                        VAR_CREATE_XYZ( -1, GetArrayVar( "wk_fori_oriz_pnt_int_sorted", $wk_ii), $wk_foro_pnt.x, $wk_foro_pnt.y, $wk_foro_pnt.z, $MODE_NONE, "")
                        $wk_kk = $wk_fori_oriz_dist
                     }

                     $wk_kk = $wk_kk + 1
                  }

                  $wk_ii = $wk_ii + 1
               }

               //Quoto
               //Verticali
               //Quoto distanza da filo retro
               $dist = -30

               $wk_ii = 1
               while( $wk_ii <= $wk_fori_rubinetto )
               {
                  $wk_foro_attuale = $wk_fori_rubinetto[$wk_ii]
                  SET_#($wk_foro_attuale)

                  $dist = -30
                  $P1 = #pnt_scs_centro
                  $P2 = INTERFERISCI(#pnt_scs_centro,$wk_ang_top+90,$wk_B0,$wk_B3)
                  $P2.y = $P1.y

                  $d = DISTANZA($P1,$P2)
                  $testo = STR(FLOOR(($d+0.05)*10)/10)
                  GOSUB PosizionaQuota

                  $wk_ii = $wk_ii + 1
               }

               //Orizzontali
               $dist = 45

               $P1 = $wk_B0
               $wk_ii = 1
               while( $wk_ii <= $wk_fori_oriz_pnt_int_sorted )
               {
                  $wk_foro_pnt = $wk_fori_oriz_pnt_int_sorted[$wk_ii]

                  $P2 = $wk_foro_pnt
                  $P2.y = $P1.y

                  $d = DISTANZA( $P1, $P2)
                  $testo = STR(MRound( $d, 0.1))
                  GOSUB PosizionaQuota

                  $P1 = $P2

                  $wk_ii = $wk_ii + 1
               }

               //Diametro
               $P1_old = $P1
               $P2_old = $P2

               $wk_PC = #pnt_scs_centro
               $wk_qd_dim = $wk_rubinetto_diam
               $wk_ang_quota_dc = $wk_ang_top
               GOSUB PosizionaQuota_DiametroCilindro

               if( $wk_rubinetto_diam_inf != $wk_rubinetto_diam )
               {
                  $P2.x = $P2.x +   SENO($wk_ang_top)*($Alt_Chr*1.5)
                  $P2.z = $P2.z + COSENO($wk_ang_top)*($Alt_Chr*1.5)

                  $testo = STRCAT("SOTTO d. ",STR($wk_rubinetto_diam_inf))
                  $wk_faccia = "A"
                  $ang_scr = $wk_ang_quota_dc
                  GOSUB PosizionaScrittaCAD
               }

               $P1 = $P1_old
               $P2 = $P2_old
            }

            SET_#($wk_rubinetto_idx)
         }
         else
         {
            //Luca 09/11/2021
            //027342: Nota foro rubinetto su stampa Depth
            if( NOME($wk_idx_men) == "MensolaDepth_Air" )
            {
               $P2 = #stp_base_0
               $P2.x = #stp_base_0.x + COSENO($wk_ang_top)*(#X/2) +   SENO($wk_ang_top)*(#Z/2 - 10)
               $P2.z = #stp_base_0.z -   SENO($wk_ang_top)*(#X/2) + COSENO($wk_ang_top)*(#Z/2 - 10)
               $testo = "NO FORO"
               $point = 3
               $wk_faccia = "A"
               $ang_scr = $wk_ang_top
               GOSUB PosizionaScrittaCAD

               $testo = "RUBINETTO"
               $P2 = #stp_base_0
               $P2.x = #stp_base_0.x + COSENO($wk_ang_top)*(#X/2) +   SENO($wk_ang_top)*(#Z/2 + 10)
               $P2.z = #stp_base_0.z -   SENO($wk_ang_top)*(#X/2) + COSENO($wk_ang_top)*(#Z/2 + 10)
               $point = 5
               $wk_faccia = "A"
               $ang_scr = $wk_ang_top
               GOSUB PosizionaScrittaCAD
            }
         }

         //Luca 09/12/2021
         if( NOME($wk_idx_foro) == "Scasso_EldomTop" )
         {
            if(VAR_VAL($wk_idx_foro,"FormaScasso") == 1 )
            {
               $wk_almeno_uno = 1

               $P2 = INTERFERISCI(#pnt_scs_centro,$wk_ang_top+90,$wk_B0,$wk_B3)
               $P2.y = $P1.y
               $d = DISTANZA($P1,$P2)
               $testo = STR(FLOOR(($d+0.05)*10)/10)
               GOSUB PosizionaQuota
               $P1 = $P2
               $wk_P1_save = $P1

               $wk_PC = #pnt_scs_centro
               $wk_qd_dim = #Diametro
               $wk_ang_quota_dc = $wk_ang_top
               GOSUB PosizionaQuota_DiametroCilindro

               if( VAR_VAL($wk_idx_foro,"DiametroST") != VAR_VAL($wk_idx_foro,"Diametro") )
               {
                  $P2.x = $P2.x +   SENO($wk_ang_top)*($Alt_Chr*1.5)
                  $P2.z = $P2.z + COSENO($wk_ang_top)*($Alt_Chr*1.5)

                  $testo = STRCAT("SOTTO d. ",STR(#DiametroST))
                  $wk_faccia = "A"
                  $ang_scr = $wk_ang_quota_dc
                  GOSUB PosizionaScrittaCAD
               }

               //quoto distanza da filo retro
               $dist = -30 - VAR_VAL($wk_idx_foro,"Diametro")/2
               $P1 = #pnt_scs_centro
               $P2 = INTERFERISCI(#pnt_scs_centro,$wk_ang_top+90,$wk_B0,$wk_B3)
               $P2.y = $P1.y

               $d = DISTANZA($P1,$P2)
               $testo = STR(FLOOR(($d+0.05)*10)/10)
               GOSUB PosizionaQuota

               $dist = 50
               $P1 = $wk_P1_save
            }
            else
            {
               if( VAR_VAL($wk_idx_foro,"Raggio") > 0 )
               {
                  $P1 = #stp_base_2
                  $wk_dir = 1
                  $wk_qr_len  = 50
                  $wk_qr_off_cq = 5
                  $testo = STRCAT("R. ",STR(#Raggio))
                  $wk_ang_qr = $wk_ang_top
                  GOSUB PosaQuotaRaggio
               }
            }
         }
         $wk_j = $wk_j + 1
      }

      if( $wk_almeno_uno )
      {
         $P2 = $wk_B3
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
      }
   }

   PROCEDURA StampaProd_MensoleBagno_AIR_QuotaStaffe
   {
      if( $wk_STP_DIS_TitoloDisegno == "" )  { $wk_STP_DIS_TitoloDisegno  = "VISTA SUPERIORE - QUOTA STAFFE" }
      else                                   { $wk_STP_DIS_TitoloDisegno2 = "VISTA SUPERIORE - QUOTA STAFFE" }

      //Luca 23/02/2022
      if( $wk_AbilitaVistaDaSotto == 1 )
      {
         $wk_STP_DIS_TitoloDisegno  = REPLACE($wk_STP_DIS_TitoloDisegno,"SUPERIORE","INFERIORE")
         $wk_STP_DIS_TitoloDisegno2 = REPLACE($wk_STP_DIS_TitoloDisegno2,"SUPERIORE","INFERIORE")

         ////Simone 21/03/22 - Escludo il lavabo dalla vista inferiore
         //COMPONENTI2("$wk_lav",$wk_idx_men,"LavaboKERA")
         //cc = 1
         //while ( cc <= $wk_lav )
         //{
         //   VAR_VALUE_SET($wk_lav[cc] ,"flag_stampa",-1)
         //   cc = cc + 1
         //}
      }

      $wk_nome_layout = "VISTA_TOP_WIREFRAME"

      COMPONENTI2( "$wk_cmp", $wk_idx_men, "*")
      $wk_j = 1
      while( $wk_j <= $wk_cmp )
      {
         $wk_cmp_att = $wk_cmp[$wk_j]
         $wk_cmp_att_ins = INSERIMENTO2($wk_cmp_att)

         if( $wk_cmp_att_ins != $ins2_componente
           & $wk_cmp_att_ins != $ins2_attrezzato2
           & $wk_cmp_att_ins != $ins2_vestito2   )  { VAR_VALUE_SET( $wk_cmp_att, "flag_stampa", -1) }

         $wk_j = $wk_j + 1
      }

      if( NOME($wk_idx_men) == "Mensola_Rivestita" )
      {
         COMPONENTI2("$wk_vt",$wk_idx_men,"Mensola_Riv_Riv_Vtr")
         if( $wk_vt > 0 ) { VAR_VALUE_SET($wk_vt[1] ,"flag_stampa",-1) }
         //Simone 21/10/2022
         COMPONENTI2("$wk_pcv",$wk_idx_men,"Passacavi_368")
         if( $wk_pcv > 0 )
         {
            $wk_pcv_n = 1
            while( $wk_pcv_n <= $wk_pcv )
            {
               $wk_idx_pcv = $wk_pcv[$wk_pcv_n]
               VAR_VALUE_SET($wk_idx_pcv,"flag_stampa",-1)

               $wk_pcv_n = $wk_pcv_n + 1
            }
         }
      }

      //LZ 30/12/2021: dettagli staffe
      ////Luca 02/12/2021
      //if( NOME($wk_idx_men) == "MensolaDepth_Air" )
      //{
      //   $wk_STP_DT_IMG = STRCAT($path_layout,"Dettagli\DEPTH_Staffa_dtg1.bmp")
      //}

      //Simone 03/11/2022
      if( NOME($wk_idx_men) == "MensolaDepth_Air" )
      {
         COMPONENTI2("$wk_itm",$wk_idx_men,"LavaboGenerico")
         $wk_itm_n = 1
         while( $wk_itm_n <= $wk_itm )
         {
            $wk_idx_itm = $wk_itm[$wk_itm_n]
            VAR_VALUE_SET( $wk_idx_itm, "flag_stampa", -1)

            $wk_itm_n = $wk_itm_n + 1
         }
      }

      $wk_STP_DT_IMG  = ""
      $wk_STP_DT_IMG2 = ""

      $wk_dt_array_tmp = 0

      //Staffa depth
      COMPONENTI2("$wk_staffe_depth", $wk_idx_men, "Staffa_MensolaDepth_Air")
      if( $wk_staffe_depth > 0 )
      {
         $wk_dt_array_tmp = $wk_dt_array_tmp + 1
         VAR_VALUESTR_SET( -1, STRCAT("wk_dt_array_tmp_##", STR($wk_dt_array_tmp)), "Dettagli\DEPTH_Staffa_dtg1.bmp" )
      }

      //Staffe ad U per mensole
      COMPONENTI2("$wk_staffe_mensola", $wk_idx_men, "Staffa_Mensola_Air")
      $wk_i1 = 1
      while( $wk_i1 <= $wk_staffe_mensola )
      {
         $wk_staffe_mensola_att = $wk_staffe_mensola[$wk_i1]

         $wk_dt_array_tmp = $wk_dt_array_tmp + 1
         VAR_VALUESTR_SET( -1, STRCAT("wk_dt_array_tmp_##", STR($wk_dt_array_tmp)), STRCAT("Dettagli\MENSOLE_Staffa_", STR( VAR_VAL( $wk_staffe_mensola_att, "X")), ".bmp"))

         $wk_i1 = $wk_i1 + 1
      }

      //Popolo array dettagli
      $wk_dt_array = 0
      $wk_i1 = 1
      while( $wk_i1 <= $wk_dt_array_tmp )
      {
         $wk_dt_array_tmp_att = $wk_dt_array_tmp[$wk_i1]

         $wk_test = 1
         $wk_i2 = 1
         while( $wk_test == 1 & $wk_i2 <= $wk_dt_array )
         {
            $wk_dt_array_att = $wk_dt_array[$wk_i2]
            if( $wk_dt_array_tmp_att == $wk_dt_array_att ) { $wk_test = 0 }

            $wk_i2 = $wk_i2 + 1
         }

         if( $wk_test )
         {
            $wk_dt_file = STRCAT($path_layout, $wk_dt_array_tmp_att)

            if( FILE_EXIST($wk_dt_file) )
            {
               $wk_dt_array = $wk_dt_array + 1
               VAR_VALUESTR_SET( -1, STRCAT("wk_dt_array_##", STR($wk_dt_array)), $wk_dt_file )
            }
         }

         $wk_i1 = $wk_i1 + 1
      }

      if( $wk_dt_array > 0 ) { $wk_STP_DT_IMG  = $wk_dt_array[1] }
      if( $wk_dt_array > 1 ) { $wk_STP_DT_IMG  = $wk_dt_array[2] }

   #ifdef TEC;AZI
      if( $wk_dt_array > 2 )
      {
         DISPLAY2("ATTENZIONE: dovrei includere ", STR($wk_dt_array), " dettagli, ma la stampe ne predispone al massimo 2.")
      }
   #endif

      $alias_scr     = "STP_SCR_TOP"
      $AliasQuota    = "STP_QUO_TOP"
      $AliasQuotaLat = "STP_QUO_TOP"
      $wk_faccia = "B"

      if( $wk_AbilitaVistaDaSotto == 1 ) { $wk_view_sotto = 1 }

      $HChar   = $Yscr/2         $LChar   = $Xscr/2
      $Alt_Chr = $Yscr/2         $Lar_Chr = $Xscr/2

      $ang_scr = 0
      $wk_scosta_lquota = 20

      SET_#($wk_idx_men)
      VAR_VALUE_SET($wk_idx_men ,"flag_stampa",1)

      //Luca 06/12/2021 QUOTO LE STAFFE
      if( NOME($wk_idx_men) == "Mensola_Air" )
      {
         COMPONENTI2("$wk_st",$wk_idx_men,"Staffa_Mensola_Air")

         if( $wk_st > 0 )
         {
            $P1 = $wk_B0

            $dist = 50
            $wk_j = 1
            while ( $wk_j <= $wk_st )
            {
               $wk_idx_st = $wk_st[$wk_j]

               SET_#($wk_idx_st)
               $wk_point = #base_0
               $wk_point.y = $wk_B0.y

               $P2 = INTERFERISCI($wk_point,$wk_ang_top+90,$wk_B0,$wk_B3)
               $P2.y = $P1.y
               $d = DISTANZA($P1,$P2)
               $testo = STR(FLOOR(($d+0.05)*10)/10)
               GOSUB PosizionaQuota
               $P1 = $P2

               $wk_point = #base_3
               $wk_point.y = $wk_B0.y

               $P2 = INTERFERISCI($wk_point,$wk_ang_top+90,$wk_B0,$wk_B3)
               $P2.y = $P1.y
               $d = DISTANZA($P1,$P2)
               $testo = STR(FLOOR(($d+0.05)*10)/10)
               GOSUB PosizionaQuota
               $P1 = $P2

               $wk_j = $wk_j + 1
            }

            $P2 = $wk_B3
            $P2.y = $P1.y
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuota
         }
      }

      //QUOTO I FORI DELLE STAFFE
      WITH_VAR_LOCAL($wk_idx_men,"$wk_foro","Stp_Quota_Foro_St",$num_con_figli,1,"1")
      SORT_POINT($wk_B0,"$wk_foro","base_0")
      if( $wk_foro == 0 )  { EXITSUB() }

      $P1 = $wk_B0
      $dist = 100
      $wk_j = 1
      while ( $wk_j <= $wk_foro )
      {
         $wk_idx_foro = $wk_foro[$wk_j]
         SET_#($wk_idx_foro)
         $wk_point = #pnt_centro
         $wk_point.y = $wk_B0.y

         $P2 = INTERFERISCI($wk_point,$wk_ang_top+90,$wk_B0,$wk_B3)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
         $P1 = $P2

         $wk_j = $wk_j + 1
      }

      $P2 = $wk_B3
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      //Luca 26/05/2022 stampo anche il trasformatore
      COMPONENTI2("$wk_lav",$wk_idx_men,"LavTrasformatore_Mensola_Air")
      if( $wk_lav > 0 )
      {
         $P1 = $wk_B0
         $dist = 150
         $wk_idx_st = $wk_lav[1]
         SET_#($wk_idx_st)
         $wk_point = #base_0
         $wk_point.y = $wk_B0.y

         $P2 = INTERFERISCI($wk_point,$wk_ang_top+90,$wk_B0,$wk_B3)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
         $P1 = $P2

         $wk_point = #base_3
         $wk_point.y = $wk_B0.y

         $P2 = INTERFERISCI($wk_point,$wk_ang_top+90,$wk_B0,$wk_B3)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $wk_B3
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $wk_B2
         $dist = -50

         $wk_point = #base_1
         $wk_point.y = $wk_B0.y

         $P2 = INTERFERISCI($wk_point,$wk_ang_top,$wk_B3,$wk_B2)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota

         $P1 = $P2
         $P2 = $wk_B3
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
      }

      //profondità
      WITH_VAR_LOCAL($wk_idx_men,"$wk_foro","Stp_Quota_Foro_St",$num_con_figli,0,"0")

      //identifico solo i due fori da quotare
      if( NOME($wk_idx_men) == "Mensola_Air" )
      {
         WITH_VAR_LOCAL($wk_idx_men,"$wk_foro","Stp_Quota_Foro_St2",$num_con_figli,1,"1")
      }

      SORT_POINT($wk_B1,"$wk_foro","base_0")
      if( $wk_foro == 0 )  { EXITSUB() }

      //DISPLAY2(STRCAT("BP ---> $wk_foro = " , STR($wk_foro), " - " ))
      //$wk_j = 1
      //while ( $wk_j <= $wk_foro )
      //{
      //   DISPLAY2(STRCAT("BP ---> $wk_foro[",STR($wk_j),"] = " , STR($wk_foro[$wk_j]), " - " ))
      //   $wk_j = $wk_j + 1
      //}

      //quoto solo la prima a sx
      $P1 = $wk_B1
      $dist = 100
      $wk_j = 1
      while ( $wk_j <= 2 )
      {
         $wk_idx_foro = $wk_foro[$wk_j]
         SET_#($wk_idx_foro)

         $wk_point = #pnt_centro
         $wk_point.y = $wk_B0.y

         $P2 = INTERFERISCI($wk_point,$wk_ang_top,$wk_B0,$wk_B1)
         $P2.y = $P1.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuota
         $P1 = $P2

         $wk_P1_save = $P1

         $Lar_Chr = $Xscr/2
         $Alt_Chr = $Yscr/2
         $wk_PC = #pnt_centro
         $wk_qd_dim = #X
         $wk_qd_prof = 20
         //Simone 22/03/2022
         if( NOME(PADRE($wk_idx_foro,1))=="Staffa_MensolaDepth_Air" ) { $wk_qd_prof = 18 }
         $wk_qd_posizione = 1
         $wk_ang_quota_dc = $wk_ang_top
         GOSUB PosizionaQuota_DiametroCilindro

         //$dist = 50
         $P1 = $wk_P1_save

         $wk_j = $wk_j + 1
      }

      $P2 = $wk_B0
      $P2.y = $P1.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)
      GOSUB PosizionaQuota

      $wk_view_sotto = 0
   }

   PROCEDURA StampaProd_MensoleBagno_AIR_QuotaMasselli
   {
      if( $wk_STP_DIS_TitoloDisegno == "" )  { $wk_STP_DIS_TitoloDisegno  = "VISTA SUPERIORE - QUOTA MASSELLI" }
      else                                   { $wk_STP_DIS_TitoloDisegno2 = "VISTA SUPERIORE - QUOTA MASSELLI" }

      $alias_scr     = "STP_SCR_TOP"
      $AliasQuota    = "STP_QUO_TOP"
      $AliasQuotaLat = "STP_QUO_TOP"
      $wk_faccia = "A"

      $HChar   = $Yscr         $LChar   = $Xscr
      $Alt_Chr = $Yscr         $Lar_Chr = $Xscr

      $ang_scr = 0
      $wk_scosta_lquota = 20

      SET_#($wk_idx_men)
      VAR_VALUE_SET($wk_idx_men ,"flag_stampa",1)
   }
   //} STAMPA TECNICA MENSOLE BAGNO

   //{ STAMPA TECNICA SCHIENALI CUCINA
   PROCEDURA StampaProd_SchienaliCucina
   {
      WITH_ALIAS("$wk_sch","StpSchienaleCuc")

      //Filtro
      $wk_sch_num = 1
      while( $wk_sch_num <= $wk_sch)
      {
        $wk_sch_att = $wk_sch[$wk_sch_num]
        $wk_sch_tipo = VAR_VAL( $wk_sch_att, "VAR_TipoSch")

        $wk_sch_att_all = VAR_VAL( $wk_sch_att, "ALLEGATI")
        $wk_sch_att_tall = VAR_VAL( $wk_sch_att, "T_ALLEGATI")

        if( $wk_sch_tipo >= 100
          | $wk_sch_att_tall - $wk_sch_att_all > 0)
        {
            DEL_ARRAY_ITEM( -1, "wk_sch", $wk_sch_num)
            $wk_sch_num = $wk_sch_num - 1
        }

        $wk_sch_num = $wk_sch_num + 1
      }

      if( $DIS_TO_GEMO == 0)
      {
         COMANDO2("M4_SHOW Ambienti Hide")
         COMANDO2("SHOW None")
         COMANDO2("SHOW Abilita Off")
      }

      $wk_sch_num = 1
      while ( $wk_sch_num <= $wk_sch)
      {
         $wk_idx_sch = $wk_sch[$wk_sch_num]
         $wk_idx_gest = $wk_idx_sch

         GOSUB InizioStampaPDF
         GOSUB InfoCartiglioGen

         $wk_STP_DIS_Titolo = "STAMPA SCHIENALI CUCINA"
         if( NOME($wk_idx_sch) == "Elemento_Generico" )
         {
           $wk_STP_DIS_Titolo = "STAMPA VETRO GENERICO"
           if( VAR_VAL($wk_idx_sch, "VAR_Tipo") == 1 ) { $wk_STP_DIS_Titolo = "STAMPA PANNELLO LEGNO GENERICO" }
           if( VAR_VAL($wk_idx_sch, "VAR_Tipo") == 2 ) { $wk_STP_DIS_Titolo = "STAMPA PANNELLO WW GENERICO" }
         }

         $wk_STP_DIS_TitoloDisegno  =  ""
         $wk_STP_DIS_TitoloDisegno2 =  ""

         $wk_STP_DIS_LBL_5 = "Operatore:"
         $wk_STP_DIS_5     = VAR_VAL_STR( -1, "CodOperatore")

         //sposto riferimento
         $wk_STP_DIS_LBL_4 = ""
         $wk_STP_DIS_4     = ""
         $wk_STP_DIS_LBL_6 = MSG(228)
         $wk_STP_DIS_6     = VAR_VAL_STR(-1,"Gestionale_Ordine_Riferimento")

         $wk_STP_TitoloInfo = "INFORMAZIONI"
         $wk_STP_DIS_VAR1 = VAR_VAL_STR( $wk_idx_gest, "DescEdit__")

         $wk_STP_DIS_VAR2 = GetDescCatVal($wk_idx_sch,VAR_VAL_STR($wk_idx_sch,"FIN_var"),"CAT")
         $wk_STP_DIS_VAL2 = GetDescCatVal($wk_idx_sch,VAR_VAL_STR($wk_idx_sch,"FIN_var"),"VAL")

         $VAR_AnteprimaDiStampa = 1
         if( $OnTerminate == 1) { $VAR_AnteprimaDiStampa = 0 }

         SET_#($wk_idx_gest)

         $wk_suffisso_emf = "SCHCUC"
         if( NOME($wk_idx_gest) == "Elemento_Generico" )
         {
            $wk_suffisso_emf = "ELEGEN"
         }
         VAR_CREATE_NUM(-1,STRCAT("wk_pagina_",$wk_suffisso_emf),0,0,"")

         if( VAR_EXIST($wk_idx_gest,"IDX_GEST") ) { $POSTNOMESTAMPA = STRCAT("-", $wk_suffisso_emf, "_", STR(#IDX_GEST)) }
         else                                     { $POSTNOMESTAMPA = STRCAT("-", $wk_suffisso_emf, "_(", STR($wk_idx_gest),")") }

         SET_#($wk_idx_gest)

         $wk_idx_riga      = $wk_idx_gest
         $SET_STAMPA       = "0013"
         if( NOME($wk_idx_gest) == "Elemento_Generico" ) { $SET_STAMPA = "PROD" }

         GOSUB NomeDisegnoRiga

         if( $DIS_TO_GEMO == 0)
         {
            $wk_scritta_dim = max( min( #Xt, #Y)/10, 40)

            $Xscr = $wk_scritta_dim $Yscr = $wk_scritta_dim * 1.6
            $Xscr = $wk_scritta_dim $Yscr = $wk_scritta_dim * 1.6

            GOSUB StampaProd_SchienaliCucina_Sub
         }

         GOSUB FineStampaPDF
         $wk_suffisso_PDF = ""

         GOSUB CancellaGlobaliStp

         $wk_sch_num = $wk_sch_num + 1
      }

      if( $DIS_TO_GEMO == 0)
      {
         COMANDO2("M4_SHOW Ambienti Show")
         COMANDO2("SHOW Abilita On")
         COMANDO2("SHOW All")
      }
   }

   PROCEDURA StampaProd_SchienaliCucina_Sub
   {
      $wk_SP_LINEA_MOBILI       = $TSTP_SP_LINEA_MOBILI
      $wk_SP_LINEA_MOBILI       = 40
      $wk_SP_LINEA_MOBILI_TRATT = $TSTP_SP_LINEA_TRATTEGGIO
      $wk_SP_LINEA_SCRITTE      = 1
      $wk_SP_LINEA_QUOTE        = 1

      $wk_FORM_dW =  5
      $wk_FORM_dH =  52
      $wk_FORM_W  =  285
      $wk_FORM_H  =  152

      $wk_STP_DT_IMG  = ""
      $wk_STP_DT_IMG2 = ""

      $wk_nome_form   = "Stampa_Top2_O.emf"
      $wk_nome_layout = "Bifacciali_Materia"

      $wk_ang_top = ANG_TOT2($wk_idx_gest)

      $wk_view_roll  = STRCAT( STR(-1*$wk_ang_top) ," 0" )
      $wk_view_ang   = STR(-1*$wk_ang_top)
      $wk_view_orbit = STRCAT( STR(-1*$wk_ang_top) ," 0" )

      GOSUB StampaProd_SchienaliCucina_Quota

      GOSUB NomeDisegno
      GOSUB StampaLayout

      ResetVarStampa("flag_stampa")

      GOSUB CancellaScritteQuote
   }

   PROCEDURA StampaProd_SchienaliCucina_Quota
   {
      $alias_scr     = "STP_SCR_TOP"
      $AliasQuota    = "STP_QUO_TOP"
      $AliasQuotaLat = "STP_QUO_TOP"
      //$AliasQuotaLat = "NoPrintQuotaLat"
      $wk_faccia = "A"

      $ang_scr = 0
      $wk_scosta_lquota = 20

      $dist = 100

      SET_#($wk_idx_gest)

      $wk_ang_pan = ANG_TOT_NOR($wk_idx_gest)
      VAR_VALUE_SET($wk_idx_gest ,"flag_stampa",1)

      $wk_b0 = #base_0
      $wk_a0 = #alto_0
      $wk_b3 = #base_3
      $wk_a3 = #alto_3

      $wk_nr_qsx = 0
      $wk_nr_qdx = 0

      $wk_nr_qsu = 0
      $wk_nr_qin = 0

      COMPONENTI2("$wk_scs",$wk_idx_gest,"Scasso_SchienaleTop")

      $wk_j = 1
      while ( $wk_j <= $wk_scs)
      {
         $HChar   = $Yscr/2         $LChar   = $Xscr/2
         $Alt_Chr = $Yscr/2         $Lar_Chr = $Xscr/2

         $wk_idx_scs = $wk_scs[$wk_j]

         SET_#($wk_idx_scs)

         $wk_distanza = DistanzaFraPunti($wk_b0,#base_0,$wk_ang_pan)

         $wk_posa_suin = "SOTTO"
         //se oltre la metà in altezza quoto a sx
         if( #base_0.y > $wk_b0.y + ($wk_a0.y - $wk_b0.y)/2 ) { $wk_posa_suin = "SOPRA" }

         $wk_posa_sxdx = "SX"
         //se oltre la metà in larghezza quoto a dx
         if( $wk_distanza > DISTANZA($wk_b0,$wk_b3)/2 ) { $wk_posa_sxdx = "DX" }

         if( $wk_posa_suin == "SOPRA" )  { $wk_nr_qsu = $wk_nr_qsu + 1 }
         if( $wk_posa_suin == "SOTTO" )  { $wk_nr_qin = $wk_nr_qin + 1 }

         $ang_quoSCH = 0
         $dist = 80 * $wk_nr_qsu
         $P1 = $wk_a0
         if( $wk_posa_suin == "SOTTO" )
         {
            $dist = -80 * $wk_nr_qin
            $P1 = $wk_b0
         }
         $wk_distanza = DistanzaFraPunti($wk_a0,#base_0,$wk_ang_pan)
         $P2 = $P1
         $P2.x = $P1.x + COSENO($wk_ang_pan)*$wk_distanza
         $P2.z = $P1.z -   SENO($wk_ang_pan)*$wk_distanza
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR($d+0.5))
         $wk_stile = 0
         GOSUB PosizionaQuotaSchienale

         $P1 = $P2
         $wk_distanza = #X
         $P2 = $P1
         $P2.x = $P1.x + COSENO($wk_ang_pan)*$wk_distanza
         $P2.z = $P1.z -   SENO($wk_ang_pan)*$wk_distanza
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR($d+0.5))
         $wk_stile = 0
         GOSUB PosizionaQuotaSchienale

         $P1 = $P2
         $wk_distanza = #X
         $P2 = $wk_a3
         if( $wk_posa_suin == "SOTTO" ) { $P2 = $wk_b3 }
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR($d+0.5))
         $wk_stile = 0
         GOSUB PosizionaQuotaSchienale

         //QUOTE IN ALTEZZA
         if( $wk_posa_sxdx == "SX" )  { $wk_nr_qsx = $wk_nr_qsx + 1 }
         if( $wk_posa_sxdx == "DX" )  { $wk_nr_qdx = $wk_nr_qdx + 1 }

         //ALTEZZA TOTALE SX
         $ang_quoSCH = ANG_TOT_NOR($wk_idx_gest)
         $wk_stile = 0
         $dist = 80 * $wk_nr_qsx
         $P1 = $wk_b0

         if( $wk_posa_sxdx == "DX" )
         {
            $dist = -80 * $wk_nr_qdx
            $P1 = $wk_b3
         }

         $P2 = $P1
         $P2.y = #base_0.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR($d+0.5))
         GOSUB PosizionaQuotaSchienale

         $wk_stile = 0
         $P1 = $P2
         $P2 = $P1
         $P2.y = #base_0.y + #Y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR($d+0.5))
         GOSUB PosizionaQuotaSchienale

         $wk_stile = 0
         $P1 = $P2
         $P2 = $wk_a0
         if( $wk_posa_sxdx == "DX" ) { $P2 = $wk_a3 }

         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR($d+0.5))
         GOSUB PosizionaQuotaSchienale

         //RAGGIO
         $wk_raggio_scs = VAR_VAL( $wk_idx_scs, "Raggio")
         if( #FormaScassoStr == "RET" & $wk_raggio_scs != 0 )
         {
            $HChar   = $Yscr/4         $LChar   = $Xscr/4
            $Alt_Chr = $Yscr/4         $Lar_Chr = $Xscr/4

            $testo = STRCAT( "R. ", STR($wk_raggio_scs))
            $wk_faccia = "F"
            $point = 4
            $P2 = #pnt_scs_centro
            GOSUB PosizionaScrittaCAD
         }

         $wk_j = $wk_j + 1
      }

      //DISPLAY2(STRCAT("CONTEGGIO QUOTE\n SX=" , STR($wk_nr_qsx), "\nDX=",STR($wk_nr_qdx), "\nSOTTO=" , STR($wk_nr_qin), "\nSOPRA=",STR($wk_nr_qsu)  ))

      //in base al nr di quote inserite decido dove mettere quelle totali
      $HChar   = $Yscr/2         $LChar   = $Xscr/2
      $Alt_Chr = $Yscr/2         $Lar_Chr = $Xscr/2

      $wk_posa_lar_tot = "SOPRA"

      if( $wk_nr_qsu >= $wk_nr_qin )    { $wk_posa_lar_tot = "SOTTO"  }
      if( $wk_posa_lar_tot == "SOPRA" ) { $wk_nr_qsu = $wk_nr_qsu + 1 }
      if( $wk_posa_lar_tot == "SOTTO" ) { $wk_nr_qin = $wk_nr_qin + 1 }

      $wk_posa_alt_tot = "DX"
      if( $wk_nr_qdx >= $wk_nr_qsx )    { $wk_posa_alt_tot = "SX" }
      if( $wk_posa_alt_tot == "SX" )    { $wk_nr_qsx = $wk_nr_qsx + 1 }
      if( $wk_posa_alt_tot == "DX" )    { $wk_nr_qdx = $wk_nr_qdx + 1 }

      //LARGHEZZA TOTALE SOTTO
      $ang_quoSCH = 0

      if( $wk_posa_lar_tot == "SOTTO" )
      {
         $dist = -80*$wk_nr_qin
         $wk_stile = 0
         $P1 = $wk_b0
         $P2 = $wk_b3
      }
      else
      {
         $dist = 80*$wk_nr_qsu
         $wk_stile = 0
         $P1 = $wk_a0
         $P2 = $wk_a3
      }
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))
      GOSUB PosizionaQuotaSchienale

      //ALTEZZA TOTALE SX
      $ang_quoSCH = ANG_TOT_NOR($wk_idx_gest)
      if( $wk_posa_alt_tot == "SX" )
      {
         $dist = 80*$wk_nr_qsx
         $wk_stile = 0
         $P1 = $wk_b0
         $P2 = $wk_a0
      }
      else
      {
         $dist = 80*$wk_nr_qdx
         $wk_stile = 0
         $P1 = $wk_a3
         $P2 = $wk_b3
      }

      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))
      GOSUB PosizionaQuotaSchienale

      if( VAR_VAL($wk_idx_gest, "VAR_Tipo") == 1
        | VAR_VAL($wk_idx_gest, "VAR_Tipo") == 2 ) { EXITSUB() }

      SET_#($wk_idx_gest)

      BOX_MODE(0)
      NEAR_GLOBALE2( "wk_top", #idx_cnear_dw, 1, "Top_2P0")

      $wk_letter2add = "F"
      if( wk_top > 0 ) { $wk_letter2add = "A" }

      $wk_ang_scr = $wk_ang_pan

      //ALTO
      $P2 = #pnt_stp_letter_up
      $testo = "F"
      $point = 3
      $wk_faccia = "F"
      $ang_scr = $wk_ang_scr
      GOSUB PosizionaScrittaCAD

      //BASSO
      $P2 = #pnt_stp_letter_dw
      $testo = $wk_letter2add
      $point = 5
      $wk_faccia = "F"
      $ang_scr = $wk_ang_scr
      GOSUB PosizionaScrittaCAD

      //SX
      $P2 = #pnt_stp_letter_sx
      $testo = "F"
      $point = 7
      $wk_faccia = "F"
      $ang_scr = $wk_ang_scr
      GOSUB PosizionaScrittaCAD

      //DX
      $P2 = #pnt_stp_letter_dx
      $testo = "F"
      $point = 1
      $wk_faccia = "F"
      $ang_scr = $wk_ang_scr
      GOSUB PosizionaScrittaCAD

      $ang_scr = 0
   }
   //} STAMPA TECNICA SCHIENALI CUCINA

   //{ STAMPA TECNICA ANTE CUCINA STRIPES
   PROCEDURA StampaProd_Cuc_FrontaleStripes
   {
      log = 0
      ScriviSuLog( log , "StampaProd_Cuc_FrontaleStripes" , "START" )

      WITH_ALIAS("$wk_str_tmp","StpFrontaleStripes")
      if( $wk_str_tmp == 0 )
      {
         ScriviSuLog( log , "StampaProd_Cuc_FrontaleStripes" , "] END - NO FRONTALI STRIPES" )
         EXITSUB()
      }

      //stampo solo frontali con più vetri
      $wk_str = 0

      $wk_i = 0
      while ( inc($wk_i) <= $wk_str_tmp )
      {
         $wk_str_tmp_att = $wk_str_tmp[$wk_i]
         $wk_str_tmp_pdr = GetPrimoGest( $wk_str_tmp[$wk_i], 1)

         // Cucine 2.0
         COMPONENTI2( "$wk_vtr", $wk_str_tmp_pdr, "Fascia_Frontale_Stripes")

         if( $wk_vtr > 1 )
         { $wk_str[inc($wk_str)] = $wk_str_tmp_att               continue }

         if( VAR_VAL( $wk_str_tmp_att, "Cucina_Versione") < 2) { continue }

         // Cucine 2.5
         COMPONENTI2( "$wk_vtr", $wk_str_tmp_att, NOME($wk_str_tmp_att))
         if( $wk_vtr > 1 )      { $wk_str[inc($wk_str)] = $wk_str_tmp_pdr }
      }

      if( $wk_str == 0 )
      {
         ScriviSuLog( log , "StampaProd_Cuc_FrontaleStripes" , "] END - NO FRONTALI STRIPES CON PIU VETRI" )
         EXITSUB()
      }

      if( log == 0 )
      {
         COMANDO2("M4_SHOW Ambienti Hide")
         COMANDO2("SHOW None")
         COMANDO2("SHOW Abilita Off")
      }

      $wk_i = 0
      while ( inc($wk_i) <= $wk_str )
      {
         $wk_idx_str  = $wk_str[$wk_i]
         $wk_idx_topl = GetTopLevel($wk_idx_str)
         $wk_idx_gest = GetPrimoGest( $wk_idx_str, 0)
         $wk_idx_gpdr = GetPrimoGest( $wk_idx_gest, 1)

         SET_#($wk_idx_str)

         COMPONENTI2( "$wk_vtr", $wk_idx_gpdr, "Fascia_Frontale_Stripes")
         if( $wk_vtr <= 0)
         {
            WITH_VAR_LOCAL( $wk_idx_str, "$wk_idx_fin0", "fasciaNum", $num_con_figli , 1, "0")
            if( $wk_idx_fin0 <= 0) { continue }

            COMPONENTI2( "$wk_vtr", $wk_idx_fin0[1], NOME($wk_idx_fin0[1]))
         }

         SORT_POINT( #base_0, "$wk_vtr", "base_0")

         GOSUB InizioStampaPDF
         GOSUB InfoCartiglioGen

         $wk_STP_DIS_Titolo = "STAMPA FRONTALI STRIPES"

         $wk_STP_DIS_TitoloDisegno  =  ""
         $wk_STP_DIS_TitoloDisegno2 =  ""

         $wk_STP_DIS_LBL_5 = "Operatore:"
         $wk_STP_DIS_5     = VAR_VAL_STR( -1, "CodOperatore")

         //sposto riferimento
         $wk_STP_DIS_LBL_4 = ""
         $wk_STP_DIS_4     = ""
         $wk_STP_DIS_LBL_6 = MSG(228)
         $wk_STP_DIS_6     = VAR_VAL_STR( -1, "Gestionale_Ordine_Riferimento")

         $wk_STP_TitoloInfo = "INFORMAZIONI"
         $wk_STP_DIS_VAR1 = STRCAT( VAR_VAL_STR($wk_idx_gpdr, "ORD_COD"), " - ", VAR_VAL_STR($wk_idx_gpdr, "ORD_DES"))

         if( VAR_EXIST( $wk_idx_gpdr, "GEST_C004") )
         {
            $wk_STP_DIS_VAR3 = GetDescCatVal($wk_idx_gpdr,"C004","CAT")
            $wk_STP_DIS_VAL3 = GetDescCatVal($wk_idx_gpdr,"C004","VAL")
         }

         if( VAR_EXIST( $wk_idx_gpdr, "GEST_C007") )
         {
            $wk_STP_DIS_VAR4 = GetDescCatVal($wk_idx_gpdr,"C007","CAT")
            $wk_STP_DIS_VAL4 = GetDescCatVal($wk_idx_gpdr,"C007","VAL")
         }

         $VAR_AnteprimaDiStampa = 1
         if( $OnTerminate==1 ) { $VAR_AnteprimaDiStampa = 0 }

         if( VAR_EXIST( $wk_idx_gest, "IDX_GEST") ) { $POSTNOMESTAMPA = STRCAT( "-STRIPES_",  STR(#IDX_GEST)) }
         else                                       { $POSTNOMESTAMPA = STRCAT( "-STRIPES_(", STR($wk_idx_gest),")") }

         $wk_suffisso_emf = "_STRIPES"
         VAR_CREATE_NUM(-1, STRCAT( "wk_pagina_", $wk_suffisso_emf), 0, 0, "")

         //Luca 27/01/2022
         $wk_idx_riga      = $wk_idx_str
         $SET_STAMPA       = "0016"

         GOSUB adatta_dim_quote
         $Yscr = $Yscr/2         $Xscr = $Xscr/2
         $Yscr = $Yscr/2         $Xscr = $Xscr/2

         GOSUB StampaProd_Cuc_FrontaleStripes_Sub

         GOSUB FineStampaPDF
         $wk_suffisso_PDF = ""

         if( log == 0 )
         {
            GOSUB CancellaGlobaliStp
         }
      }

      COMANDO2("M4_SHOW Ambienti Show")
      COMANDO2("SHOW Abilita On")
      COMANDO2("SHOW All")

      ScriviSuLog( log, "StampaProd_Cuc_FrontaleStripes", "END")
   }

   PROCEDURA StampaProd_Cuc_FrontaleStripes_Sub
   {
      $wk_SP_LINEA_MOBILI       = $TSTP_SP_LINEA_MOBILI
      $wk_SP_LINEA_MOBILI       = 40
      $wk_SP_LINEA_MOBILI_TRATT = $TSTP_SP_LINEA_TRATTEGGIO
      $wk_SP_LINEA_SCRITTE      = 1
      $wk_SP_LINEA_QUOTE        = 1

      $wk_FORM_dW =  5
      $wk_FORM_dH =  52
      $wk_FORM_W  =  285
      $wk_FORM_H  =  152

      $wk_STP_DT_IMG  = ""
      $wk_STP_DT_IMG2 = ""

      $wk_nome_form = "Stampa_Top2_O.emf"
      $wk_nome_layout = "Bifacciali_Materia"

      $wk_ang_str = ANG_TOT2($wk_idx_str)

      $wk_view_roll = STRCAT( STR(-1*$wk_ang_str) ," 0" )
      $wk_view_ang = STR(-1*$wk_ang_str)
      $wk_view_orbit = STRCAT( STR(-1*$wk_ang_str) ," 0" )

      //VAR_VALUE_SET( $wk_idx_str, "flag_stampa_tratt", 1)
      VAR_VALUE_SET( $wk_idx_topl, "flag_stampa_tratt_fine", 1)

      if( $DIS_TO_GEMO == 0 ) { GOSUB StampaProd_Cuc_FrontaleStripes_Quota }

      GOSUB NomeDisegno
      GOSUB StampaLayout

      ResetVarStampa("flag_stampa")
      ResetVarStampa("flag_stampa_tratt")
      ResetVarStampa("flag_stampa_tratt_fine")

      if( log == 0
        & $DIS_TO_GEMO == 0 ) { GOSUB CancellaScritteQuote }
   }

   PROCEDURA StampaProd_Cuc_FrontaleStripes_Quota
   {
      $alias_scr     = "STP_SCR_FRO"
      $AliasQuota    = "STP_QUO_FRO"
      $AliasQuotaLat = "STP_QUO_FRO"
      //$AliasQuotaLat = "NoPrintQuotaLat"
      $wk_faccia = "A"

      $HChar   = $Yscr/2         $LChar   = $Xscr/2
      $Alt_Chr = $Yscr/2         $Lar_Chr = $Xscr/2

      $wk_ang_fro = ANG_TOT_NOR($wk_idx_str)

      SET_#($wk_idx_str)
      $wk_bs = #base_0
      $wk_as = #alto_0
      $wk_bd = #base_3
      $wk_ad = #alto_3

      $wk_verso = VAR_VAL( $wk_idx_str, "Verso")

      //LARGHEZZA TOTALE SOPRA
      $dist = 80
      $wk_scosta_lquota = 20
      $ang_scr = $wk_ang_fro
      $ang_quoSCH = 0
      $wk_stile = 0
      $P1 = $wk_as
      $P2 = $wk_ad

      $d = DISTANZA($P1,$P2)
      $testo = STR(MRound( $d, 0.1))
      GOSUB PosizionaQuotaSchienale

      //ALTEZZA TOTALE
      $dist = -80
      $wk_scosta = 20
      $wk_scosta_lquota = 20
      $ang_scr = $wk_ang_fro
      $ang_quoSCH = $wk_ang_fro
      $wk_stile = 0
      $P1 = $wk_bd
      $P2 = $wk_ad
      if( $wk_verso < 0 )
      {
         $dist = 2*$wk_verso*$dist
         $P1 = $wk_bs
         $P2 = $wk_as
      }
      if( $wk_verso > 0 )
      {
         $dist = 2*$wk_verso*$dist
      }

      $d = DISTANZA($P1,$P2)
      $testo = STR(MRound( $d, 0.1))
      GOSUB PosizionaQuotaSchienale

      //ALTEZZA SINGOLI VETRI, DISTANZA DA ELEMENTO PRECEDENTE e SCRITTA FINITURA
      $P1 = $wk_bs
      if( $wk_verso > 0 ) { $P1 = $wk_bd }

      $wk_j = 1
      while ( $wk_j <= $wk_vtr )
      {
         $wk_idx_vtr = $wk_vtr[$wk_j]
         $wk_idx_gvtr = GetPrimoGest( $wk_idx_vtr, 0)

         VAR_VALUE_SET( $wk_idx_vtr, "flag_stampa", 1)

         if( IsIdx( $wk_idx_vtr, "idx_vetro")) { $wk_idx_vtr = VAR_VAL( $wk_idx_vtr, "idx_vetro") }

         SET_#($wk_idx_vtr)

         //QUOTE DA ELEMENTO PRECEDENTE
         $dist = 80
         if( $wk_verso > 0 ) { $dist = -$dist }
         $wk_scosta = 20
         $wk_scosta_lquota = 20
         $ang_scr = $wk_ang_fro
         $ang_quoSCH = $wk_ang_fro
         $wk_stile = 0

         $P2 = $P1
         $P2.y = #base_0.y

         $d = DISTANZA($P1,$P2)
         $testo = STR(MRound( $d, 0.1))

         if( $d <= 10
           & $d > 0.1 )
         {
            $dist = $dist * 1.2
            $wk_nolinee = 1
            GOSUB PosizionaQuotaSchienale
         }

         //QUOTA ALTEZZA SINGOLA FASCIA
         $dist = 80
         if( $wk_verso > 0 ) { $dist = -$dist }
         $wk_scosta = 20
         $wk_scosta_lquota = 20
         $ang_scr = $wk_ang_fro
         $ang_quoSCH = $wk_ang_fro
         $wk_stile = 0

         $P1 = $P2
         $P2.y = #alto_0.y

         $d = DISTANZA($P1,$P2)
         $testo = STR(MRound( $d, 0.1))

         if( $d <= 10 ) { $dist = $dist * 1.2  $wk_nolinee = 1 }
         GOSUB PosizionaQuotaSchienale

         $P1 = $P2

         //SCRITTA FINITURA
         SET_#($wk_idx_gvtr)

         wl_lar_chr = $Lar_Chr
         wl_alt_chr = $Alt_Chr
         $Lar_Chr = $Xscr
         $Alt_Chr = $Yscr

         $P2 = #base_0
         $P2.x = $P2.x + (#X/2)*COSENO($wk_ang_fro) - #Z*COSENO($wk_ang_fro)
         $P2.y = $P2.y + 1.5*$Alt_Chr
         $P2.z = $P2.z - (#X/2)*SENO($wk_ang_fro)   + #Z*SENO($wk_ang_fro)

         $wk_faccia = "F"
         $point = 5
         $ang_scr = $wk_ang_fro
         wk_fin_var = GetVarGest(#FIN_var)
         wk_fin_val = VAR_VAL_STR( $wk_idx_gvtr, wk_fin_var)
         $testo = STRCAT( wk_fin_val, " - ", GetDescCatVal( $wk_idx_gvtr, wk_fin_var, "VAL"))
         GOSUB PosizionaScrittaCAD

         $Lar_Chr = wl_lar_chr
         $Alt_Chr = wl_alt_chr
         $P2 = $P1

         $wk_j = $wk_j + 1
      }

      //STAMPA QUOTA SUPERIORE SE NON A FILO ALTO CON L'ANTA
      $dist = 80
      if( $wk_verso > 0 ) { $dist = -$dist }
      $wk_scosta = 20
      $wk_scosta_lquota = 20
      $ang_scr = $wk_ang_fro
      $ang_quoSCH = $wk_ang_fro
      $wk_stile = 0

      $P1 = $P2
      $P2 = $wk_as
      if( $wk_verso > 0 ) { $P1 = $wk_ad }
      $d = DISTANZA($P1,$P2)
      $testo = STR(MRound( $d, 0.1))

      if( $d <= 10
        & $d > 0.1 )
      {
         $dist = $dist * 1.2
         $wk_nolinee = 1
         GOSUB PosizionaQuotaSchienale
      }
   }
   //} STAMPA TECNICA ANTE CUCINA STRIPES

   //{ STAMPA TECNICA PANNELLI RETRO
   PROCEDURA StampaProd_PannelliRetro_368
   {
      log = 0
      ScriviSuLog( log , "StampaProd_PannelloRetro" , "START" )

      WITH_ALIAS("$wk_pan_tmp","StpPannelliRetro")

      //PanRetroGLASS_368
      //PannelloRetro_WallPanel_368
      //PannelloRetro_MensolaL_368

      //verifico se sono presenti trasformatori
      $wk_pan = 0

      $wk_i = 1
      while ( $wk_i <= $wk_pan_tmp )
      {
         $wk_pan_tmp_att = $wk_pan_tmp[$wk_i]
         if( IsIdx($wk_pan_tmp_att,"idx_LavTrasf" )
           //Simone 11/07/2022 - Esco qui perchè gestito su stampa unica
           & IS_MATCH(NOME(PADRE($wk_pan_tmp_att,1)), "*Mirror")==0 )
         {
            $wk_idx_lav = VAR_VAL($wk_pan_tmp_att,"idx_LavTrasf")
            if( IS_ESCLUSO($wk_idx_lav) == 0 )
            {
               AddItem2Array(-1,"wk_pan",$wk_pan_tmp_att,"")
            }
         }
         $wk_i = $wk_i + 1
      }

      if( $wk_pan == 0 )
      {
         ScriviSuLog( log , "StampaProd_PannelliRetro_368" , "-- NON SONO PRESENTI PANNELLI" )
         ScriviSuLog( log , "StampaProd_PannelliRetro_368" , "END" )
         EXITSUB()
      }

      COMANDO2("M4_SHOW Ambienti Hide")
      COMANDO2("SHOW None")
      COMANDO2("SHOW Abilita Off")

      $wk_i = 1
      while ( $wk_i <= $wk_pan )
      {
         $wk_idx_pan = $wk_pan[$wk_i]
         $wk_idx_pad = PADRE($wk_idx_pan,1)

         $wk_idx_gest = $wk_idx_pan

         //trovo il primo livello gestionale
         cont = 1
         while( VAR_VAL_STR($wk_idx_gest,"ORD_COD") == "" & cont < 10 )
         {
            $wk_idx_gest = PADRE($wk_idx_gest,1)
            cont = cont + 1
         }

         GOSUB InizioStampaPDF
         GOSUB InfoCartiglioGen

         $wk_STP_DIS_Titolo = "STAMPA PANNELLI RETRO 36e8"

         $wk_STP_DIS_TitoloDisegno  =  ""
         $wk_STP_DIS_TitoloDisegno2 =  ""

         $wk_STP_DIS_LBL_5 = "Operatore:"
         $wk_STP_DIS_5     = VAR_VAL_STR( -1, "CodOperatore")

         //sposto riferimento
         $wk_STP_DIS_LBL_4 = ""
         $wk_STP_DIS_4     = ""
         $wk_STP_DIS_LBL_6 = MSG(228)
         $wk_STP_DIS_6     = VAR_VAL_STR(-1,"Gestionale_Ordine_Riferimento")

         $wk_STP_TitoloInfo = "INFORMAZIONI"
         $wk_STP_DIS_VAR1 = VAR_VAL_STR($wk_idx_gest,"DescEdit__")

         $VAR_AnteprimaDiStampa = 1
         if( $OnTerminate==1 ) { $VAR_AnteprimaDiStampa = 0 }

         SET_#($wk_idx_gest)

         if( VAR_EXIST($wk_idx_gest,"LED_Sopra") )
         {
            if( #LED_Sopra == 1
              & #LED_Sotto == 1 ) { $wk_STP_DIS_TitoloDisegno = "LED SOPRA E SOTTO" }

            if( #LED_Sopra == 0
              & #LED_Sotto == 1 ) { $wk_STP_DIS_TitoloDisegno = "LED SOTTO" }

            if( #LED_Sopra == 1
              & #LED_Sotto == 0 ) { $wk_STP_DIS_TitoloDisegno = "LED SOPRA" }
         }

         if( VAR_EXIST($wk_idx_gest,"LED_Dx") )
         {
            if( #LED_Dx == 1
              & #LED_Sx == 1 ) { $wk_STP_DIS_TitoloDisegno = "LED DX E SX" }

            if( #LED_Dx == 0
              & #LED_Sx == 1 ) { $wk_STP_DIS_TitoloDisegno = "LED SX" }

            if( #LED_Dx == 1
              & #LED_Sx == 0 ) { $wk_STP_DIS_TitoloDisegno = "LED DX" }
         }

         if( VAR_EXIST($wk_idx_pan,"idx_LED_sopra") )
         {
            if( IS_IDX(#idx_LED_sopra) == 1
              & IS_IDX(#idx_LED_sotto) == 1 ) { $wk_STP_DIS_TitoloDisegno = "LED SOPRA E SOTTO" }

            if( IS_IDX(#idx_LED_sopra) == 0
              & IS_IDX(#idx_LED_sotto) == 1 ) { $wk_STP_DIS_TitoloDisegno = "LED SOTTO" }

            if( IS_IDX(#idx_LED_sopra) == 1
              & IS_IDX(#idx_LED_sotto) == 0 ) { $wk_STP_DIS_TitoloDisegno = "LED SOPRA" }
         }

         //Simone 29/10/21 - Descrizione tipo attaccaglia in stampa pannello retro
         if(VAR_EXIST($wk_idx_gest, "idx_modulo"))
         {
            $wk_idx_mod = VAR_VAL($wk_idx_gest,"idx_modulo")
            if(IS_IDX($wk_idx_mod))
            {
               COMPONENTI2("$wk_att",$wk_idx_mod,"Attaccaglia_368")
               COMPONENTI2("$wk_mas",$wk_idx_mod,"Massello_Antiribaltamento")
               if($wk_att > 0)  { $wk_STP_DIS_TitoloDisegno2 = VAR_VAL_STR($wk_att[1],"DescEdit__") }
               if($wk_mas > 0)  { $wk_STP_DIS_TitoloDisegno2 = VAR_VAL_STR($wk_mas[1],"DescEdit__") }
            }
         }

         if( VAR_EXIST($wk_idx_gest,"IDX_GEST") ) { $POSTNOMESTAMPA = STRCAT("-PANRTR_",STR(#IDX_GEST)) }
         else                                     { $POSTNOMESTAMPA = STRCAT("-PANRTR_(",STR($wk_idx_pan),")") }

         SET_#($wk_idx_pan)

         $wk_suffisso_emf = "_PANRTR"
         VAR_CREATE_NUM(-1,STRCAT("wk_pagina_",$wk_suffisso_emf),0,0,"")

         //$wk_idx_riga      = $wk_idx_pan
         $wk_idx_riga      = $wk_idx_gest
         $SET_STAMPA       = "0011"

         GOSUB adatta_dim_quote
         $Yscr = $Yscr/2         $Xscr = $Xscr/2
         $Yscr = $Yscr/2         $Xscr = $Xscr/2

         GOSUB StampaProd_PannelliRetro_368_Sub

         GOSUB FineStampaPDF
         $wk_suffisso_PDF = ""

         GOSUB CancellaGlobaliStp

         $wk_i = $wk_i + 1
      }

      COMANDO2("M4_SHOW Ambienti Show")
      COMANDO2("SHOW Abilita On")
      COMANDO2("SHOW All")

      ScriviSuLog( log , "StampaProd_PannelliRetro_368" , "END" )
   }

   PROCEDURA StampaProd_PannelliRetro_368_Sub
   {
      $wk_SP_LINEA_MOBILI       = $TSTP_SP_LINEA_MOBILI
      $wk_SP_LINEA_MOBILI       = 40
      $wk_SP_LINEA_MOBILI_TRATT = $TSTP_SP_LINEA_TRATTEGGIO
      $wk_SP_LINEA_SCRITTE      = 1
      $wk_SP_LINEA_QUOTE        = 1

      $wk_FORM_dW =  5
      $wk_FORM_dH =  52
      $wk_FORM_W  =  285
      $wk_FORM_H  =  152

      $wk_STP_DT_IMG  = ""
      $wk_STP_DT_IMG2 = ""

      $wk_nome_form = "Stampa_Top2_O.emf"
      $wk_nome_layout = "Bifacciali_Materia"

      $wk_ang_top = ANG_TOT2($wk_idx_pan)

      $wk_view_roll = STRCAT( STR(-1*$wk_ang_top) ," 0" )
      $wk_view_ang = STR(-1*$wk_ang_top)
      $wk_view_orbit = STRCAT( STR(-1*$wk_ang_top) ," 0" )

      if( $DIS_TO_GEMO==0 )
      {
         GOSUB StampaProd_PannelliRetro_368_Quota
      }

      GOSUB NomeDisegno
      GOSUB StampaLayout

      ResetVarStampa("flag_stampa")

      if( $DIS_TO_GEMO==0 ) { GOSUB CancellaScritteQuote }
   }

   PROCEDURA StampaProd_PannelliRetro_368_Quota
   {
      $alias_scr     = "STP_SCR_TOP"
      $AliasQuota    = "STP_QUO_TOP"
      $AliasQuotaLat = "STP_QUO_TOP"
      //$AliasQuotaLat = "NoPrintQuotaLat"
      $wk_faccia = "A"

      //$HChar   = $Yscr/5         $LChar   = $Xscr/5
      //$Alt_Chr = $Yscr/5         $Lar_Chr = $Xscr/5
      $HChar   = $Yscr/2         $LChar   = $Xscr/2
      $Alt_Chr = $Yscr/2         $Lar_Chr = $Xscr/2

      $ang_scr = 0
      $wk_scosta_lquota = 20

      $dist = 100

      SET_#($wk_idx_pan)

      $wk_ang_pan = ANG_TOT_NOR($wk_idx_pan)
      VAR_VALUE_SET($wk_idx_pan ,"flag_stampa",1)

      $wk_b0 = #base_0
      $wk_a0 = #alto_0
      $wk_b3 = #base_3
      $wk_a3 = #alto_3

      //LARGHEZZA TOTALE SOTTO
      $ang_quoSCH = 0
      $dist = -80
      //se attivo le lineete a fine quota riduco la distanza
      //$dist = -30

      $wk_stile = 0
      $P1 = #base_0
      $P2 = #base_3
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))

      //$wk_linee_quota = 1
      GOSUB PosizionaQuotaSchienale

      //ALTEZZA TOTALE SX
      $ang_quoSCH = ANG_TOT_NOR($wk_idx_pan)

      $dist = 80
      //se attivo le lineete a fine quota riduco la distanza
      //$dist = 80

      $wk_stile = 0
      $P1 = #base_0
      $P2 = #alto_0
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))

      //$wk_linee_quota = 2
      GOSUB PosizionaQuotaSchienale

      if( IsIdx($wk_idx_pan,"idx_LavTrasf") == 0 ) { EXITSUB() }

      VAR_VALUE_SET(#idx_LavTrasf ,"flag_stampa",1)

      SET_#(#idx_LavTrasf)
      $P2 = #stp_pnt_centro
      $testo = STRCAT(STR(#X),"x",STR(#Y))
      $point = 4
      $wk_faccia = "F"
      $ang_scr = $ang_quoSCH
      GOSUB PosizionaScrittaCAD

      //QUOTO LA LAVORAZIONE SOPRA E A DX

      $ang_quoSCH = 0
      $dist = 80
      //se attivo le lineete a fine quota riduco la distanza
      //$dist = 30

      $wk_stile = 0
      $P1 = $wk_a0
      $wk_distanza = DistanzaFraPunti($wk_a0,#base_0,$wk_ang_pan)
      $P2 = $P1
      $P2.x = $P1.x + COSENO($wk_ang_pan)*$wk_distanza
      $P2.z = $P1.z -   SENO($wk_ang_pan)*$wk_distanza
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))
      //$wk_linee_quota = 1
      GOSUB PosizionaQuotaSchienale

      $wk_stile = 0
      $P1 = $P2
      $wk_distanza = #X
      $P2 = $P1
      $P2.x = $P1.x + COSENO($wk_ang_pan)*$wk_distanza
      $P2.z = $P1.z -   SENO($wk_ang_pan)*$wk_distanza
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))
      $wk_linee_quota = 1
      GOSUB PosizionaQuotaSchienale

      $wk_stile = 0
      $P1 = $P2
      $wk_distanza = #X
      $P2 = $wk_a3
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))
      $wk_linee_quota = 1
      GOSUB PosizionaQuotaSchienale


      //altezza
      $ang_quoSCH = ANG_TOT_NOR($wk_idx_pan)

      $dist = 80
      //se attivo le lineete a fine quota riduco la distanza
      //$dist = 30

      $wk_stile = 0
      $P1 = $wk_a3
      $P2 = $P1
      $P2.y = #alto_0.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))
      //$wk_linee_quota = 2
      GOSUB PosizionaQuotaSchienale

      $wk_stile = 0
      $P1 = $P2
      $P2 = $P1
      $P2.y = #base_0.y
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))
      //$wk_linee_quota = 2
      GOSUB PosizionaQuotaSchienale

      $wk_stile = 0
      $P1 = $P2
      $P2 = $wk_b3
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))
      //$wk_linee_quota = 2
      GOSUB PosizionaQuotaSchienale
   }
   //} STAMPA TECNICA PANNELLI RETRO

   PROCEDURA PosizionaQuotaSchienaleSubY
   {
      // devo passare solo  $P2.y
      //
      // punto di partenza al punto precedente
      $P1 = $wk_p2_prec

      // allineato in larghezza/profondita
      $P2.x = $wk_p2_prec.x
      $P2.z = $wk_p2_prec.z

      $d = DISTANZA($P1, $P2)

      // salvo l'ultimo valore in altezza
      $wk_p2_prec = $P2

      if( $d > 0 )
      {
         $testo = STR($d)
         GOSUB PosizionaQuotaSchienale

         // DISPLAY("PosizionaQuotaSchienaleSubY\nAggiunta quota in Y: ",$d)
      }
   }

   PROCEDURA PosizionaQuotaSchienaleSubZ
   {
      // devo passare solo $P2.x e $P2.z

      // punto di partenza al punto precedente
      $P1 = $wk_p2_prec

      // allineato in altezza
      $P2.y = $wk_p2_prec.y

      $d = DISTANZA($P1, $P2)

//      DISPLAY2(STRCAT("PosizionaQuotaSchienaleSubZ"
//                    , "\nAggiunta quota in Z: ", STR($d)
//                    , "\n$wk_stile = ", STR($wk_stile)
//                    , "\n$wk_ang_quo = ", STR($wk_ang_quo)
//                    , "\n$wk_ang_quoSCH = ", STR($wk_ang_quoSCH)
//                    , "\n$ang_scr = ", STR($ang_scr)
//                    , "\n$wk_desc_quota = ", VAR_VAL_STR(-1, "wk_desc_quota")
//                    ))

      // salvo l'ultimo valore
      $wk_p2_prec = $P2

      // [ parametri fissi
      $wk_stile = 0
      if( $wk_verso == "DX" )   { $wk_Faccia = "F" }
      else                      { $wk_Faccia = "R" }
      // ] parametri fissi


      if( $d > 0 )
      {
//         $testo = STR(FLOOR($d + 0.5))
         $testo = STR(FLOOR($d))
         GOSUB PosizionaQuotaSchienale
      }
   }

   PROCEDURA StampaComm_V2
   {
      $wk_log_print = 0
   #ifdef TEC
      $wk_log_print = 1
      if( $Vedi_Speciali > 0 ) { GOSUB VediSpeciali }
   #endif
      ScriviSuLog( $wk_log_print , "StampaComm_V2" , "START" )
      $SET_STAMPA = "COMM"

      GOSUB OrdinaRighe

      //Se nell'ordine dovessere essere presente anche solo un elemento cucina
      //(base o colonna), si attiverà la stampa attualmente utilizzata per i rivenditori.
      STRUTTURE("$wk_strutt_tmp")

      //Luca 03/08/2022
      //filtro $wk_strutt_tmp
      $wk_strutt = 0
      $wk_i = 1
      while ( $wk_i <= $wk_strutt_tmp )
      {
         if( NOME($wk_strutt_tmp[$wk_i]) != "RigaOrdine_Posizionata"
           & HAS_ALIAS($wk_strutt_tmp[$wk_i], "TSTP_NoPrint") == 0
           & INSERIMENTO2($wk_strutt_tmp[$wk_i]) != $ins2_accessorio
           )
         {
            $wk_ne = $wk_strutt + 1
            $wk_strutt = $wk_ne
            $wk_strutt[$wk_ne] = $wk_strutt_tmp[$wk_i]
         }

         $wk_i = $wk_i + 1
      }

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

      #ifdef AGE;RIV
         if( EasyStore() ) { $DATI_XPREV = 0 }
      #endif

      $wk_cucina = 0
      $wk_strutt_num = 0
      while( inc($wk_strutt_num) <= $wk_strutt)
      {
         $wk_strutt_nome = NOME($wk_strutt[$wk_strutt_num])

         if( IS_MATCH( $wk_strutt_nome, "ScoccaT*")
           | IS_MATCH( $wk_strutt_nome, "ScoccaS*")
           | IS_MATCH( $wk_strutt_nome, "ModuloPensile_368")
           | IS_MATCH( $wk_strutt_nome, "ModuloPensileCappa_368")
           | IS_MATCH( $wk_strutt_nome, "ModuloPensileScPiatti_368"))
         {
            $wk_cucina = 1
            break
         }
      }

      if( $wk_cucina == 1)
      {
         ScriviSuLog( $wk_log_print , "StampaComm_V2" , "StampaComm_RIV"  )
         GOSUB StampaComm_RIV
      }
      else
      {
         if( $OnTerminate <= 0
           & VAR_VAL( -1, "wk_OnControlli_Globali") <= 0
           & VAR_VAL( -1, "wk_OnControlli_FineOrdine") <= 0)
         {
            COMANDO2("RUN_DLL_CMD Metron2Gemo RighePerCam //StampaComm_V2")
         }

         ScriviSuLog( $wk_log_print , "StampaComm_V2" , "StampaComm_V2_LIVING" )
         GOSUB StampaComm_V2_LIVING

      #ifndef AGE;RIV
         //Luca 17/01/2022
         //aggiungo una stampa per il montaggio del 30MM
         GOSUB StampaComm_V2_30MM
      #endif
      }
   }

   PROCEDURA StampaComm_V2_LIVING
   {
      ScriviSuLog( $wk_log_print , "StampaComm_V2_LIVING" , "START" )

      $wk_OnStampaComm_V2_LIVING = 1

      $POSTNOMESTAMPA = "-FINE_ORDINE"
      $SET_STAMPA     = "COMM"
      $wk_suffisso_emf = $POSTNOMESTAMPA

      //indico solo il nome file da mandare a Gemo
      if( $OnTerminate & $DIS_TO_GEMO == 1 )
      {
         ScriviSuLog( $wk_log_print , "StampaComm_V2_LIVING" , "OnTerminate & DIS_TO_GEMO" )

         GOSUB InizioStampaPDF

         ScriviSuLog( $wk_log_print , "StampaComm_V2_LIVING" , "OK InizioStampaPDF" )

         GOSUB NomeDisegno

         ScriviSuLog( $wk_log_print , "StampaComm_V2_LIVING" , STRCAT("OK NomeDisegno $file=",$file) )

         $GENERA_PDF_IN_CORSO = 1
         GOSUB Add_ArrPrnPs

         ScriviSuLog( $wk_log_print , "StampaComm_V2_LIVING" , STRCAT("OK Add_ArrPrnPs $ArrPrnPs=",STR($ArrPrnPs)) )

         GOSUB FineStampaPDF

         ScriviSuLog( $wk_log_print , "StampaComm_V2_LIVING" , "OK FineStampaPDF" )
         EXITSUB()
      }

      COMANDO2("RIGENERA")

      COMANDO2("PROJECTHSF Show None")

      COMANDO2("SHOW ABILITA OFF")

      GOSUB SetStampaInterattiva

      //PAGINA 1
      // - cartiglio completo con logo, numero ordine, cliente, riferimento, operatore Lago
      // - vista isometrica di assieme
      // - ante un minimo aperte (10/20%) in modo da far intuire il verso di apertura

      GOSUB InizioStampaPDF
      GOSUB InizializzaVar_TSTP

      $TSTP_ProcInfoCartiglio = "InfoCartiglioGen_TSTP"

      // imposto i default per le stampe
      $VAR_AnteprimaDiStampa = 1
      $TSTP_StampaPreventivo = 0

      #ifndef TEC;AZI
         $VAR_AnteprimaDiStampa = 0
         $TSTP_StampaPreventivo = 1
      #endif

      if( $TSTP_StampaPreventivo == 1 ) { GOSUB StampaPreventivo }

      // 1 - STAMPA VISTA ISO
      // stampe vista utente in b/n e a colori
      $TSTP_StampaUtente_BN  = 0
      $TSTP_StampaUtente_COL = 1

      GOSUB ImpostaVistaStampaISO
      $TSTP_Utente_PrePrint = "StampaUtenteV2_ApriFrontali"
      LanciaStampa( "TSTP_StampaUtente" )
      GOSUB ImpostaVistaStampaISO

      // 2 - STAMPA PROSPETTI 2 VISTE
      $wk_OnStampa_2Viste    = 1
      $wk_OnStampa_2VisteAcc = 0

      COMANDO2("RIGENERA")

      GOSUB StampaComm_V2_2Viste
      $wk_OnStampa_2Viste    = 0

      // 3 - STAMPA PROSPETTI 2 VISTE: accessori
      $wk_OnStampa_2Viste    = 0
      $wk_OnStampa_2VisteAcc = 1
      GOSUB StampaComm_V2_2Viste
      $wk_OnStampa_2VisteAcc = 0

      $POSTNOMESTAMPA = "-FINE_ORDINE"

      #ifndef TEC;AZI
         $POSTNOMESTAMPA = ""
      #endif

      GOSUB FineStampaPDF

      COMANDO2("PROJECTHSF Show All Default")
      COMANDO2("SHOW ABILITA ON")
      COMANDO2("RIGENERA")

      //Cancello il file generato dalla stampa per la scala
      FILE_DEL(STRCAT($path_wmf, $File, ".emf"))

      // cancello eventuali file del preventivo e ripristino il flag
      // per il ripo di preventivo interattivo. Attenzione dò per scontato
      // che il tempo sia stato sufficiente per generare il pdf
      FILE_DEL(SUBST_LABEL(STRCAT($path_temp, $File, "prev.ps")))
      $TIPO_PREV = 1

      GOSUB ResetStampaInterattiva

      $wk_OnStampaComm_V2_LIVING = 0

      ScriviSuLog( 0 , "StampaComm_V2_LIVING" , "END" )
   }

   PROCEDURA StampaUtenteV2_ApriFrontali
   {
      ScriviSuLog( 0 , "StampaComm_V2_LIVING" , "StampaUtenteV2_ApriFrontali" )

      $wk_TSTP_ISO_ModeFrontali = 2
      $TSTP_ValAperturaFrontali = 20

      GOSUB TSTP_VarStampaISO
   }

   PROCEDURA StampaComm_V2_2Viste
   {
      ScriviSuLog( 0 , "StampaComm_V2_2Viste" , "INIZIO" )

      $wk_OnStampa_2Viste = 1

      //VERIFICO VALORE INI, non devo cancellare i file
      $wk_delmetefile = READ_INI("stp_option","DeleteMetafile")
      if( $wk_delmetefile != "0" ) { WRITE_INI("stp_option","DeleteMetafile","0") }

      //Con la variabile $TSTP_ProcStampaLayout personalizzo la procedura di stampa
      //In modo da non stampare niente e salvare l'emf
      $TSTP_ProcStampaLayout = "StampaLayoutImg"

      //aggiungo bollinatura
      $TSTP_Prospetti_PostQuota = "Stampa_Prospetti_PostQuota"
      $TSTP_Prospetti_PostAnalisi = ""
      if( $wk_OnStampa_2VisteAcc == 1 )
      {
         $TSTP_Prospetti_PostAnalisi = "Stampa_Prospetti_PostAnalisi_Acc"
      }

      $wk_TSTP_Prospetti_SubQuotaAltezze_SOLO_ESTREMI = 1

      //Dimensioni del form senza cartiglio
      $TSTP_FORM_dW =   0
      $TSTP_FORM_dH =   0
      $TSTP_FORM_W  = 140
      $TSTP_FORM_H  = 162
      $TSTP_FORM_LOGO_PATH = ""
      $TSTP_FORM_LOGO = ""

      //GENERO LE STAMPE IN BIANCO E NERO CON BOLLINATURA DEL IDX_GEST
      $wk_OnStampa_2Viste_BN  = 1
      $wk_OnStampa_2Viste_COL = 0

      $TSTP_StampaProspetti_BN_CF = 1
      $TSTP_StampaProspetti_BN_SF = 0
      $TSTP_StampaProspetti_COL_CF = 0
      $TSTP_StampaProspetti_COL_SF = 0

      if( $wk_OnStampa_2VisteAcc == 1 )
      {
         $TSTP_StampaProspetti_BN_CF = 0
         $TSTP_StampaProspetti_BN_SF = 1
      }

      $TSTP_Prospetti_QuotaPareti = 0
      $TSTP_Prospetti_QuotaGruppi = 1

      $TSTP_Prospetti_Form = "2VISTE_V_VUOTO.emf"
      $TSTP_Prospetti_PathLayout = SUBST_LABEL("%path_bdm%\Layout\")

      ScriviSuLog( 0 , "StampaComm_V2_2Viste" , STRCAT("$TSTP_Prospetti_PathLayout BN =", $TSTP_Prospetti_PathLayout) )


      //COMANDO2(STRCAT("LOGMSG StampaComm_V2_2Viste BN $wk_OnStampa_2Viste=",STR($wk_OnStampa_2Viste)))
      //COMANDO2(STRCAT("LOGMSG StampaComm_V2_2Viste BN $wk_OnStampa_2Viste_BN=",STR($wk_OnStampa_2Viste_BN)))
      //COMANDO2(STRCAT("LOGMSG StampaComm_V2_2Viste BN $wk_OnStampa_2Viste_COL=",STR($wk_OnStampa_2Viste_COL)))

      $wk_ArrBmp = 0
      GOSUB TSTP_StampaProspetti

      ScriviSuLog( 0 , "StampaComm_V2_2Viste" , STRCAT("POST TSTP_StampaProspetti BN $wk_ArrBmp=",STR($wk_ArrBmp)) )

      //reset
      $TSTP_RiduzioneQuote = 1

      $wk_Img_PRO_BN_CF = 0
      i=1
      while( i<=$wk_ArrBmp )
      {
         k = $wk_Img_PRO_BN_CF + 1
         $wk_Img_PRO_BN_CF = k
         $wk_Img_PRO_BN_CF[k] = $wk_ArrBmp[i]

         ScriviSuLog( 0 , "StampaComm_V2_2Viste" , STRCAT("$wk_Img_PRO_BN_CF[",STR(i),"]=",$wk_Img_PRO_BN_CF[k]))

         i = i + 1
      }

      //GENERO LE STAMPE IN BIANCO E NERO CON BOLLINATURA DEL IDX_GEST
      $wk_TSTP_Prospetti_SubQuotaAltezze_SOLO_ESTREMI = 1

      $TSTP_Prospetti_PostQuota = "Stampa_Prospetti_PostQuota"

      $wk_OnStampa_2Viste_BN  = 0
      $wk_OnStampa_2Viste_COL = 1

      $TSTP_StampaProspetti_BN_CF = 0
      $TSTP_StampaProspetti_BN_SF = 0
      $TSTP_StampaProspetti_COL_CF = 1
      $TSTP_StampaProspetti_COL_SF = 0

      if( $wk_OnStampa_2VisteAcc == 1 )
      {
         $TSTP_StampaProspetti_COL_CF = 0
         $TSTP_StampaProspetti_COL_SF = 1
      }

      $TSTP_Prospetti_QuotaPareti  = 0
      $TSTP_Prospetti_Form = "2VISTE_V_VUOTO.emf"
      $TSTP_Prospetti_PathLayout = SUBST_LABEL("%path_bdm%\Layout\")

      ScriviSuLog( 0 , "StampaComm_V2_2Viste" , STRCAT("$TSTP_Prospetti_PathLayout COL =", $TSTP_Prospetti_PathLayout) )


      //COMANDO2(STRCAT("LOGMSG StampaComm_V2_2Viste BN $wk_OnStampa_2Viste=",STR($wk_OnStampa_2Viste)))
      //COMANDO2(STRCAT("LOGMSG StampaComm_V2_2Viste BN $wk_OnStampa_2Viste_BN=",STR($wk_OnStampa_2Viste_BN)))
      //COMANDO2(STRCAT("LOGMSG StampaComm_V2_2Viste BN $wk_OnStampa_2Viste_COL=",STR($wk_OnStampa_2Viste_COL)))

      $wk_ArrBmp = 0
      GOSUB TSTP_StampaProspetti

      ScriviSuLog( 0 , "StampaComm_V2_2Viste" , STRCAT("POST TSTP_StampaProspetti COL $wk_ArrBmp=",STR($wk_ArrBmp)) )


      $wk_Img_PRO_COL_CF = 0
      i=1
      while( i<=$wk_ArrBmp )
      {
         k = $wk_Img_PRO_COL_CF + 1
         $wk_Img_PRO_COL_CF = k
         $wk_Img_PRO_COL_CF[k] = $wk_ArrBmp[i]

         ScriviSuLog( 0 , "StampaComm_V2_2Viste" , STRCAT("$wk_Img_PRO_COL_CF[",STR(i),"]=",$wk_Img_PRO_COL_CF[k]))

         i = i + 1
      }

      $wk_OnStampa_2Viste_BN  = 0
      $wk_OnStampa_2Viste_COL = 0

      //genero stampa con entrambe le viste
      GOSUB InizializzaVar_TSTP

      $TSTP_STAMPA_IN_CORSO = "2VISTE"
      $wk_TSTP_Scala = 0

      GOSUB InfoCartiglioGen_TSTP
      $wk_TSTP_DIS_SCALA = ""

      $wk_pagina_Stampa2V   = 0
      $wk_pagina_Stampa2V_A = 0
      $wk_npagine = $wk_Img_PRO_BN_CF

      ScriviSuLog( 0 , "StampaComm_V2_2Viste" , STRCAT("2 VISTE --> $wk_npagine=" ,STR($wk_npagine)))

      $wk_i = 1
      $wk_prg = 1
      while ( $wk_i <= $wk_npagine )
      {
         //$wk_Img1 = $wk_Img_PRO_CF[$wk_prg]
         //$wk_Img2 = $wk_Img_PRO_CF[$wk_prg+1]
         //$wk_prg = $wk_prg + 2
         $wk_Img1 = $wk_Img_PRO_BN_CF[$wk_i]
         $wk_Img2 = REPLACE($wk_Img1,"Prospetti_BN","Prospetti_COL")

         ScriviSuLog( 0 , "StampaComm_V2_2Viste" , STRCAT("$wk_Img1=",$wk_Img1))
         ScriviSuLog( 0 , "StampaComm_V2_2Viste" , STRCAT("$wk_Img2=",$wk_Img2))

         if( FILE_EXIST($wk_Img2) == 0 ) { $wk_Img2 = "" }

         $wk_nome_layout = "Stampa2V"
         $wk_Form = "TSTP_A4_O_V2.emf"
         $wk_suffisso_emf = "Stampa2V"
         if( $wk_OnStampa_2VisteAcc == 1 ) { $wk_suffisso_emf = "Stampa2V_A" }

         GOSUB NomeDisegno
         GOSUB StampaLayout

         $wk_i = $wk_i + 1
      }

      $wk_OnStampa_2Viste = 0

      WRITE_INI("stp_option","DeleteMetafile",$wk_delmetefile)

      //cancello gli emf generati
      $wk_i = 1
      while ( $wk_i <= $wk_npagine )
      {
         $wk_Img1 = $wk_Img_PRO_BN_CF[$wk_i]
         $wk_Img2 = REPLACE($wk_Img1,"Prospetti_BN","Prospetti_COL")

         if( FILE_EXIST($wk_Img1) == 1 ) { FILE_DEL($wk_Img1) }
         if( FILE_EXIST($wk_Img2) == 1 ) { FILE_DEL($wk_Img2) }

         $wk_i = $wk_i + 1
      }

      $TSTP_ProcStampaLayout = ""
   }

   PROCEDURA StampaLayoutImg
   {
      $wk_path_layout_TSTP = $path_bdm
      if( RIGHT($path_bdm,1)!="\" ) { $wk_path_layout_TSTP = STRCAT($path_bdm,"\") }
      $wk_path_layout_TSTP = STRCAT($wk_path_layout_TSTP,"TLib\TSTP\")

      //Backup file layout.txt
      $wk_BCK_FileLayout = READ_INI("stp_option","layout_file")
      WRITE_INI("stp_option", "layout_file",STRCAT($wk_path_layout_TSTP,"layout.txt"))
      WRITE_INI("stp_option", "layout_name",$wk_NomeLayout)

      if( VAR_VAL(-1,"wk_StampaPerScala") )
      {
         $wk_TSTP_Scala = 0
         $stp_scala1=0

         //Davide 26/07/16: la stampa per il calcolo della scala li metto in Temp
         //come già avviene in TSTP_StampaLayout (TSTP.inc)
         WRITE_INI("SettaggiStampa","forzaNome","1")
         WRITE_INI("SettaggiStampa","nomeWmf",STRCAT($path_temp,$File,".emf"))

         COMANDO2("M4_PRINT -NoPreview")
         if( VAR_EXIST(-1,"wk_TSTP_Scala_return")==0 ) { $wk_TSTP_Scala_return=CEIL($stp_scala1) }
         if( $stp_scala1>$wk_TSTP_Scala_return ) { $wk_TSTP_Scala_return = CEIL($stp_scala1) }

         //Restore file layout.txt
         WRITE_INI("stp_option", "layout_file",$wk_BCK_FileLayout)
         EXITSUB()
      }

      $wk_suffisso_emf = RIGHT($wk_NomeLayout,STRLEN($wk_NomeLayout)-5)
      if( VAR_VAL(-1,"wk_OnStampa_2VisteAcc") == 1 )  { $wk_suffisso_emf = STRCAT($wk_suffisso_emf,"_A") }

      GOSUB TSTP_NomeFile

      //stampa senza anteprima
      COMANDO2("M4_PRINT -NoPreview")
      //crea il prn del files stampato
      COMANDO2( FMT( "M4_PRINT -Print {}{}{} //StampaLayoutImg", APICI(), $file, APICI()))

      if( FILE_EXIST($file) )
      {
         k = $wk_ArrBmp + 1
         $wk_ArrBmp = k
         $wk_ArrBmp[k] = $file
      }

      //Restore file layout.txt
      WRITE_INI("stp_option", "layout_file",$wk_BCK_FileLayout)
   }

   PROCEDURA Stampa_Prospetti_PostAnalisi_Acc
   {
      $wk_SuffissoMuro = "EST"
      GOSUB Stampa_Prospetti_PostAnalisi_AccMuro
      //Quoto gli elementi sulle pareti interne
      $wk_SuffissoMuro = "INT"
      GOSUB Stampa_Prospetti_PostAnalisi_AccMuro
      //Quoto gli elementi a censtro stanza
      $wk_SuffissoMuro = "CS"
      GOSUB Stampa_Prospetti_PostAnalisi_AccMuro
   }

   PROCEDURA Stampa_Prospetti_PostAnalisi_AccMuro
   {
      $wk_NomeVar_idx = STRCAT("wk_TSTP_MURO_",$wk_SuffissoMuro,"_idx")
      ScriviSuLog(0,"Stampa_Prospetti_PostAnalisi_AccMuro",$wk_NomeVar_idx)

      $wk_j = 1
      while( $wk_j <= VAR_VAL(-1,$wk_NomeVar_idx) )
      {
         $wk_MURO_ID   = VAR_VAL(-1,STRCAT($wk_NomeVar_idx,"_##",STR($wk_j)))
         //wk_TSTP_MURO_EST_3_strutt
         $wk_MURO_strutt_var = STRCAT("wk_TSTP_MURO_",$wk_SuffissoMuro,"_",STR($wk_MURO_ID),"_strutt")
         $wk_MURO_strutt  = VAR_VAL(-1,$wk_MURO_strutt_var)

         ScriviSuLog(0,"Stampa_Prospetti_PostAnalisi_AccMuro",STRCAT($wk_MURO_strutt_var," ",STR($wk_MURO_strutt)))

         $wk_accesori_su_muro = 0

         $wk_h = 1
         while ( $wk_h <= $wk_MURO_strutt )
         {
            $wk_idx_testing_var = STRCAT($wk_MURO_strutt_var,"_##",STR($wk_h))
            $wk_idx_testing = VAR_VAL(-1,$wk_idx_testing_var)

            COMPONENTI2("$wk_compo",$wk_idx_testing,"*")
            $wk_k = 1
            while ( $wk_k <= $wk_compo )
            {
               if( INSERIMENTO2($wk_compo[$wk_k]) == $ins2_attrezzato
                 | INSERIMENTO2($wk_compo[$wk_k]) == $ins2_vestito
                 | INSERIMENTO2($wk_compo[$wk_k]) == $ins2_riempito  )
               {
                  if( VAR_VAL($wk_compo[$wk_k],"STP_2V_NoStpAccessori") != 1 ) { $wk_accesori_su_muro = 1 }
               }

               $wk_k = $wk_k + 1
            }

            //ScriviSuLog(0,"Stampa_Prospetti_PostAnalisi_AccMuro",STR($wk_idx_testing))

            $wk_h = $wk_h + 1
         }

         ScriviSuLog(0,"Stampa_Prospetti_PostAnalisi_AccMuro",STRCAT($wk_MURO_strutt_var," ",STR($wk_MURO_strutt), " [",STR($wk_accesori_su_muro),"]"))
         if( $wk_accesori_su_muro == 0 )
         {
            VAR_VALUE_SET(-1,$wk_MURO_strutt_var,0)

         }

         $wk_j = $wk_j + 1
      }
   }

   //Luca 17/01/2022
   PROCEDURA StampaComm_V2_30MM
   {
      ScriviSuLog( 0 , "StampaComm_V2_30MM" , "START" )

      WITH_ALIAS("$wk_30mmf","Fia30MM")
      WITH_ALIAS("$wk_30mmr","Rip30MM")

      if( $wk_30mmf == 0 & $wk_30mmr == 0 ) { EXITSUB() }

      $wk_OnStampaComm_V2_LIVING = 1

      $POSTNOMESTAMPA = "-30MM"
      $SET_STAMPA     = "COMM"
      $wk_suffisso_emf = $POSTNOMESTAMPA

      //indico solo il nome file da mandare a Gemo
      if( $OnTerminate & $DIS_TO_GEMO == 1 )
      {
         GOSUB InizioStampaPDF

         GOSUB NomeDisegno

         $GENERA_PDF_IN_CORSO = 1
         GOSUB Add_ArrPrnPs

         GOSUB FineStampaPDF
         EXITSUB()
      }

      COMANDO2("RIGENERA")
      COMANDO2("PROJECTHSF Show None")
      COMANDO2("SHOW ABILITA OFF")

      GOSUB SetStampaInterattiva

      GOSUB InizioStampaPDF
      GOSUB InizializzaVar_TSTP

      $TSTP_ProcInfoCartiglio = "InfoCartiglioGen_TSTP"

      // imposto i default per le stampe
      $VAR_AnteprimaDiStampa = 1
      $TSTP_StampaPreventivo = 0

      // 2 - STAMPA PROSPETTI 2 VISTE
      $wk_OnStampa_2Viste_30MM = 1
      GOSUB StampaComm_V2_2Viste

      $wk_OnStampa_2Viste_30MM = 0

      $POSTNOMESTAMPA = "-30MM"

      #ifndef TEC;AZI
         $POSTNOMESTAMPA = ""
      #endif

      GOSUB FineStampaPDF

      COMANDO2("PROJECTHSF Show All Default")
      COMANDO2("SHOW ABILITA ON")


      //Cancello il file generato dalla stampa per la scala
      FILE_DEL(STRCAT($path_wmf, $File, ".emf"))

      // cancello eventuali file del preventivo e ripristino il flag
      // per il ripo di preventivo interattivo. Attenzione dò per scontato
      // che il tempo sia stato sufficiente per generare il pdf
      FILE_DEL(SUBST_LABEL(STRCAT($path_temp, $File, "prev.ps")))
      $TIPO_PREV = 1

      GOSUB ResetStampaInterattiva

      $wk_OnStampaComm_V2_LIVING = 0

      ScriviSuLog( 0 , "StampaComm_V2_30MM" , "END" )
   }

   PROCEDURA StampaProd_368Glass
   {
      WITH_ALIAS( "$wk_mod", "Stp_ModuloGlass")
      if( $wk_mod == 0 ) { EXITSUB() }

      //Visualizzo elementi nascosti
      COMANDO2("M4_Message actVisibilityRestoreAll")

      //Ciclo moduli
      $wk_ii = 1
      while( $wk_ii <= $wk_mod )
      {
         // 0 - info modulo
         $wk_mod_idx = $wk_mod[$wk_ii]
         $wk_mod_idx_gest = GetPrimoGest( $wk_mod_idx, 0)

         $wk_mod_nome = NOME($wk_mod_idx)
         $wk_mod_nome_gest = NOME($wk_mod_idx_gest)

         $wk_mod_ang = ANG_TOT2($wk_mod_idx)

         // 1 - Inizio Stampa
         GOSUB InizioStampaPDF
         GOSUB StampaProd_368Glass_Init
         VAR_CREATE_NUM( -1, STRCAT( "wk_pagina_", $wk_suffisso_emf), 0, 0, "")

         // 2 - Pagina iso assieme
         GOSUB StampaProd_368Glass_Assieme

         // 3 - Pagine singoli vetri
         VAR_VALUE_SET( $wk_mod_idx, "flag_stampa_mini_iso", 1)
         GOSUB StampaProd_368Glass_Componenti

         // 4 - Reset e Fine Stampa
         COMANDO2("M4_SHOW Ambienti Show")
         COMANDO2("SHOW Abilita On")
         COMANDO2("SHOW All")

         GOSUB FineStampaPDF

         GOSUB CancellaScritteQuote
         GOSUB CancellaGlobaliStp

         ResetVarStampa("flag_stampa")
         ResetVarStampa("flag_stampa_zoom")
         ResetVarStampa("flag_stampa_tratt")
         ResetVarStampa("flag_stampa_mini_iso")

         $wk_ii = $wk_ii + 1
      }
   }

   PROCEDURA StampaProd_368Glass_Init
   {
      // 0 - File
      // 0.1 - Nome
      $wk_idx_riga = $wk_mod_idx_gest

      $SET_STAMPA      = "0002"
      $wk_suffisso_emf = "368GLASS"
      if( $wk_mod_nome_gest == "Cuc_ModuloGlass" )   { $SET_STAMPA = "0006"  $wk_suffisso_emf = "CUCGLASS" }

      SET_#($wk_idx_riga)
      $POSTNOMESTAMPA = STRCAT("-", $wk_suffisso_emf, "_(",STR($wk_idx_riga),")")
      if( VAR_EXIST( $wk_idx_riga, "IDX_GEST") ) { $POSTNOMESTAMPA = STRCAT("-", $wk_suffisso_emf, "_",STR(#IDX_GEST)) }

      // 0.2 - Anteprima
      $VAR_AnteprimaDiStampa = 1
      if( $OnTerminate==1 )
      {
         $VAR_AnteprimaDiStampa = 0
         if( $CNP==0 ) { $VAR_AnteprimaDiStampa = 1 }
      }

      // 1 - Singola stampa
      $wk_nome_layout = "Stampa_XGLASS_BN"
      $wk_nome_form   = "Stampa_Top_O.emf"

      // 1.1 - Cartiglio
      GOSUB InfoCartiglioGen

      $wk_STP_DIS_Titolo          = "STAMPA MODULI GLASS"

      $wk_STP_DIS_LBL_4  = ""
      $wk_STP_DIS_4      = ""

      // 1.1.1 - Operatore
      $wk_STP_DIS_LBL_5  = "Operatore:"
      $wk_STP_DIS_5      = VAR_VAL_STR( -1, "CodOperatore")
      $wk_STP_DIS_LBL_6  = MSG(228)
      $wk_STP_DIS_6      = VAR_VAL_STR( -1, "Gestionale_Ordine_Riferimento")

      // 1.1.2 - Legenda
      $wk_STP_TitoloInfo = "INFORMAZIONI"

      // 1.1.2.1 - Codice + descrizione
      $wk_STP_DIS_VAR1 = STRCAT( VAR_VAL_STR( $wk_mod_idx_gest, "ORD_COD"), " - ", VAR_VAL_STR( $wk_mod_idx_gest, "ORD_DES"))

      // 1.1.2.2 - Finitura
      $wk_STP_FIN_var = GetVarGest(VAR_VAL_STR( $wk_mod_idx_gest, "FIN_var"))
      $wk_STP_FIN_val = VAR_VAL_STR( $wk_mod_idx_gest, $wk_STP_FIN_var)
      if( $wk_STP_FIN_val != "" )
      {
         $wk_STP_DIS_VAR3 = GetDescCatVal($wk_mod_idx_gest, "C014", "CAT")
         $wk_STP_DIS_VAL3 = GetDescCatVal($wk_mod_idx_gest, "C014", "VAL")
      }

      // 1.2 - Disegno
      $wk_SP_LINEA_MOBILI       = 35
      $wk_SP_LINEA_MOBILI_TRATT = $TSTP_SP_LINEA_TRATTEGGIO
      $wk_SP_LINEA_SCRITTE      = 10
      $wk_SP_LINEA_QUOTE        = 10

      $wk_AliasLineeTratt = "STP_LINE_TRAT"

      $wk_FORM_dW =  5
      $wk_FORM_W  =  212
      $wk_FORM_dH =  45
      $wk_FORM_H  =  159

      $wk_STP_DT_IMG  = ""
      $wk_STP_DT_IMG2 = ""

      $wk_view_ang      = "0 0"
      $wk_view_roll     = STRCAT( STR(-1*$wk_mod_ang), " 0")
      $wk_view_iso_roll = "0 0"

      // 1.3 - Mini iso
      $wk_FORM2_dW =  217
      $wk_FORM2_dH =  143
      $wk_FORM2_W  =  73
      $wk_FORM2_H  =  60

      $wk_view_mini_iso_roll = "-25 25"

      // 1.4 - Comandi
      $wk_stp_cmd_1 = ""
      $wk_stp_cmd_2 = ""
   }

   PROCEDURA StampaProd_368Glass_Assieme
   {
      // 0 - Init
      GOSUB StampaProd_368Glass_Init

      // 0.1 - Sovrascrivo parametri per questa stampa
      $wk_FORM_dW =  5
      $wk_FORM_W  =  285
      $wk_FORM_dH =  52
      $wk_FORM_H  =  152
      $wk_nome_form = "Stampa_Top2_O.emf"
      $wk_nome_layout = "Top_Assieme"
      $wk_view_iso_roll = " -25 25"

      // 1 - Reset
      ResetVarStampa("flag_stampa")
      ResetVarStampa("flag_stampa_tratt")

      // 2 - Modulo continuo
      VAR_VALUE_SET( $wk_mod_idx, "flag_stampa", 1)

      // 3 - Elementi vicini tratteggiati
      BOX_MODE(0)
      NEAR_GLOBALE2( "$wk_mod_near", $wk_mod_idx, 50, "*")

      $wk_jj = 1
      while ( $wk_jj <= $wk_mod_near )
      {
         $wk_mod_near_att = $wk_mod_near[$wk_jj]

         if( GetTopLevel($wk_mod_near_att) == $wk_mod_near_att )
         {
            VAR_VALUE_SET( $wk_mod_near_att, "flag_stampa_tratt", 1)
         }

         $wk_jj = $wk_jj + 1
      }

      // 4 - Genero
      GOSUB NomeDisegno
      GOSUB StampaLayout
   }

   PROCEDURA StampaProd_368Glass_Componenti
   {
      COMPONENTI2("$wk_giunzioni", $wk_mod_idx, "G368_Giunzione")
      if( $wk_giunzioni > 0 )
      {
         // 0 - Init
         GOSUB StampaProd_368Glass_Init

         // 1 - Selezione componenti
         // 1.1 - Stampo solo componenti con STP_STAMPA = 1
         WITH_VAR_LOCAL( $wk_mod_idx, "$wk_elementi_tmp", "STP_STAMPA", 0, 1, "1")

         // 1.2 - Tra questi solo quelli con giunzioni
         $wk_elementi = 0
         $wk_j = 1
         while( $wk_j <= $wk_elementi_tmp )
         {
            $wk_elm_idx = $wk_elementi_tmp[$wk_j]

            BOX_MODE(0)
            NEAR_GLOBALE( "$wk_giu", $wk_elm_idx, 1, 1, "G368_Giunzione")
            if( $wk_giu > 0 ) { AddItem2Array( -1, "wk_elementi", $wk_elm_idx, "") }

            $wk_j = $wk_j + 1
         }

         // 2 - Stampa componenti
         $wk_j = 1
         while( $wk_j <= $wk_elementi )
         {
            // 2.0 - Info sul componente
            $wk_elm_idx   = $wk_elementi[$wk_j]
            $wk_elm_ang   = $wk_mod_ang
            $wk_elm_verso = VAR_VAL_STR( $wk_elm_idx, "STP_VERSO")

            // 2.1 - Reset
            // 2.1.1 - Reset di tutte le variabili
            ResetVarStampa("flag_stampa")
            ResetVarStampa("flag_stampa_zoom")

            // 2.1.2 - Reset ambiente
            COMANDO2("M4_SHOW Ambienti Hide")
            COMANDO2("SHOW None")
            COMANDO2("SHOW Abilita Off")

            // 2.1.3 - Cancello quote e scritte
            GOSUB CancellaScritteQuote

            // 2.2 - Visualizzo
            // 2.2.1 - Componente
            VAR_VALUE_SET( $wk_elm_idx, "flag_stampa", 1)
            VAR_VALUE_SET( $wk_elm_idx, "flag_stampa_zoom", 1)

            // 2.2.2 - Giunzioni
            BOX_MODE(0)
            NEAR_GLOBALE( "$wk_giu", $wk_elm_idx, 1, 1, "G368_Giunzione")

            $wk_jj = 1
            while( $wk_jj <= $wk_giu )
            {
               $wk_giu_att = $wk_giu[$wk_jj]

               VAR_VALUE_SET( $wk_giu_att, "flag_stampa", 1)
               VAR_VALUE_SET( $wk_giu_att, "flag_stampa_zoom", 1)

               $wk_jj = $wk_jj + 1
            }

            // 2.3 - Verso di stampa
            $wk_STP_DIS_TitoloDisegno  = ""
            $wk_STP_DIS_TitoloDisegno2 = ""

            if( $wk_elm_verso == "DX" )
            {
               $wk_nome_layout = "Stampa_XGLASS_BN"
               $wk_STP_DIS_TitoloDisegno = "FIANCO DESTRO - VISTA DA ESTERNO"
               $wk_elm_ang = $wk_elm_ang + 90
            }

            if( $wk_elm_verso == "SX" )
            {
               $wk_nome_layout = "Stampa_XGLASS_BN"
               $wk_STP_DIS_TitoloDisegno = "FIANCO SINISTRO - VISTA DA ESTERNO"
               $wk_elm_ang = $wk_elm_ang - 90
            }

            if( $wk_elm_verso == "UP" )
            {
               $wk_nome_layout = "Stampa_XGLASS_BN_TOP"
               $wk_STP_DIS_TitoloDisegno = "COPERCHIO - VISTA DA SOPRA"
            }

            if( $wk_elm_verso == "DW" )
            {
               $wk_nome_layout = "Stampa_XGLASS_BN_TOP"
               $wk_STP_DIS_TitoloDisegno = "FONDO - VISTA DA SOPRA"
            }

            $wk_view_roll = STRCAT( STR( -1 * $wk_elm_ang), " 0")
            $wk_view_ang  = $wk_view_roll

            // 2.4 - Variabili stampa
            $wk_STP_LegendaTitolo = "DIMENSIONI"
            $wk_str_legenda = STRCAT($wk_STP_DIS_TitoloDisegno, " - ", STR(VAR_VAL($wk_elm_idx,"Z")))
            $wk_str_legenda = STRCAT($wk_str_legenda," x " , STR(VAR_VAL($wk_elm_idx,"Y")))
            $wk_str_legenda = STRCAT($wk_str_legenda," x " , STR(VAR_VAL($wk_elm_idx,"X")))
            $wk_STP_LEG_VAR1 = $wk_str_legenda

            $alias_scr     = "STP_SCR_368G"
            $AliasQuota    = "STP_SCR_368G"
            $AliasQuotaLat = "STP_SCR_368G"
            $HChar = 25
            $LChar = 15

            $HChar   = $Yscr/4        $LChar   = $Xscr/4
            $Alt_Chr = $Yscr/4        $Lar_Chr = $Xscr/4

            $wk_stp_cmd_1 = ""
            $wk_stp_cmd_2 = ""

            $wk_STP_DT_IMG = ""
            $wk_STP_DT_IMG2 = ""

            // 2.5 - Quote
            GOSUB StampaProd_368Glass_Quota_Vert
            GOSUB StampaProd_368Glass_Quota_Orizz

            // 2.6 - Scritte
            if( VAR_EXIST( $wk_mod_idx, "pnt_stp_fronte") )
            {
               SET_#($wk_mod_idx)

               $Alt_Chr = $Yscr
               $Lar_Chr = $Xscr

               $P2 = #pnt_stp_fronte
               $testo = "FRONTE"
               $wk_faccia = "A"
               $point = 4
               $ang_scr = $wk_mod_ang
               GOSUB PosizionaScrittaCAD
            }

            // 2.7 - Stampa
            GOSUB NomeDisegno
            GOSUB StampaLayout

            $wk_j = $wk_j + 1
         }
      }
   }

   PROCEDURA StampaProd_368Glass_Quota_Vert
   {
      if( $wk_elm_verso != "DX"
        & $wk_elm_verso != "SX" ) { EXITSUB() }

      //Verticali
      ///Creo array per le varie altezze da quotare
      $wk_giu_vert_h = 0

      $wk_jj = 1
      while( $wk_jj <= $wk_giu )
      {
         $wk_giu_att = $wk_giu[$wk_jj]
         $wk_giu_att_h = VAR_VAL( $wk_giu_att, "pnt_stp_cnt.y")

         AddItem2Array_IfNotExist( -1, "wk_giu_vert_h", $wk_giu_att_h, "")

         $wk_jj = $wk_jj + 1
      }

      ///Quoto le varie altezze
      $wk_jj = 1
      while( $wk_jj <= $wk_giu_vert_h )
      {
         $wk_giu_vert_h_att = $wk_giu_vert_h[$wk_jj]
         $wk_scosta = 10
         $distanza = $wk_scosta + ( 70 * $wk_jj )

         $dist = $distanza
         if( $wk_elm_verso == "SX" ) { $dist = -$distanza }

         SET_#($wk_elm_idx)
         //Quota1
         $P1 = #alto_1

         $P2 = $P1
         $P2.y = $wk_giu_vert_h_att

         $d = MRound( DISTANZA($P1,$P2), 0.1)
         $testo = STR($d)

         $ang_scr = 0
         $point = 4
         $wk_faccia = "F"
         $ang_quoSCH = $wk_elm_ang
         $wk_scosta = 10
         $wk_stile = 0
         GOSUB PosizionaQuotaSchienale

         //Quota2
         $P1 = $P2
         $P2.y = VAR_VAL( $wk_elm_idx, "alto_4.y")

         $d = MRound( DISTANZA($P1,$P2), 0.1)
         $testo = STR($d)

         $ang_scr = 0
         $point = 4
         $wk_faccia = "F"
         $ang_quoSCH = $wk_elm_ang
         $wk_scosta = 10
         $wk_stile = 0
         GOSUB PosizionaQuotaSchienale

         $wk_jj = $wk_jj + 1
      }

      //Orizzontali
      ///Creo array per le varie larghezze da quotare
      $wk_giu_vert_l = 0

      SET_#($wk_elm_idx)
      $P1 = #alto_0
      if( $wk_elm_verso == "SX" ) { $P1 = #base_0 }

      $wk_jj = 1
      while( $wk_jj <= $wk_giu )
      {
         $wk_giu_att = $wk_giu[$wk_jj]

         SET_#($wk_giu_att)
         $P2 = #pnt_stp_cnt
         $P2.y = $P1.y

         SET_#($wk_elm_idx)
         $wk_inter = INTERFERISCI($P2, $wk_elm_ang-90, #alto_0, #base_0)
         if( $wk_inter.x != $ERR_INTERFERISCI
           & $wk_inter.z != $ERR_INTERFERISCI ) { $P2 = $wk_inter }

         $d = MRound( DISTANZA($P1,$P2), 0.1)

         AddItem2Array_IfNotExist( -1, "wk_giu_vert_l", $d, "")

         $wk_jj = $wk_jj + 1
      }

      ///Quoto le varie larghezze
      $wk_jj = 1
      while( $wk_jj <= $wk_giu_vert_l )
      {
         $wk_giu_vert_l_att = $wk_giu_vert_l[$wk_jj]
         $wk_scosta = 10
         $distanza = $wk_scosta + ( 70 * $wk_jj )

         SET_#($wk_elm_idx)

         $dist = $distanza

         //Quota1
         $P1 = #alto_4
         if( $wk_elm_verso == "SX" ) { $P1 = #base_4 }

         $P2 = $P1
         $P2.x = $P2.x - SENO($wk_mod_ang)*$wk_giu_vert_l_att
         $P2.z = $P2.z - COSENO($wk_mod_ang)*$wk_giu_vert_l_att
         if( $wk_elm_verso == "SX" )
         {
            $P2 = $P1
            $P2.x = $P2.x + SENO($wk_mod_ang)*$wk_giu_vert_l_att
            $P2.z = $P2.z + COSENO($wk_mod_ang)*$wk_giu_vert_l_att
         }

         $testo = STR($wk_giu_vert_l_att)

         $ang_scr = 0
         $point = 4
         $wk_faccia = "F"
         $ang_quoSCH = 0
         $wk_scosta = 10
         $wk_stile = 0
         GOSUB PosizionaQuotaSchienale

         //Quota2
         $wk_giu_vert_l_att = #Z - $wk_giu_vert_l_att

         SET_#($wk_elm_idx)
         $P1 = $P2
         $P2 = #base_4
         if( $wk_elm_verso == "SX" ) { $P2 = #alto_4 }

         $testo = STR($wk_giu_vert_l_att)

         $ang_scr = 0
         $point = 4
         $wk_faccia = "F"
         $ang_quoSCH = 0
         $wk_scosta = 10
         $wk_stile = 0
         GOSUB PosizionaQuotaSchienale

         $wk_jj = $wk_jj + 1
      }

      //COMANDO2("SHOW Abilita On")
      //COMANDO2("SHOW All")
      //EXIT()
   }

   PROCEDURA StampaProd_368Glass_Quota_Orizz
   {
      if( $wk_elm_verso != "UP"
        & $wk_elm_verso != "DW" ) { EXITSUB() }

      //Profondità
      ///Creo array per le varie profondità da quotare
      $wk_giu_orizz_p = 0

      SET_#($wk_elm_idx)
      $P1 = #alto_0

      $wk_jj = 1
      while( $wk_jj <= $wk_giu )
      {
         $wk_giu_att = $wk_giu[$wk_jj]

         SET_#($wk_giu_att)
         $P2 = #pnt_stp_cnt
         $P2.y = $P1.y

         SET_#($wk_elm_idx)
         $wk_inter = INTERFERISCI( $P2, $wk_elm_ang, #alto_0, #base_0)
         if( $wk_inter.x != $ERR_INTERFERISCI
           & $wk_inter.z != $ERR_INTERFERISCI ) { $P2 = $wk_inter }

         $d = MRound( DISTANZA($P1,$P2), 0.1)

         AddItem2Array_IfNotExist( -1, "wk_giu_orizz_p", $d, "")

         $wk_jj = $wk_jj + 1
      }

      ///Quoto le varie profondità
      $wk_scosta_lquota = 10

      $wk_jj = 1
      while( $wk_jj <= $wk_giu_orizz_p )
      {
         $wk_giu_orizz_p_att = $wk_giu_orizz_p[$wk_jj]
         $distanza = $wk_scosta_lquota + ( 70 * $wk_jj )
         $dist = $distanza

         SET_#($wk_elm_idx)

         //Quota1
         $P1 = #alto_0

         $P2 = $P1
         $P2.x = $P2.x - SENO($wk_elm_ang)*$wk_giu_orizz_p_att
         $P2.z = $P2.z - COSENO($wk_elm_ang)*$wk_giu_orizz_p_att

         $testo = STR($wk_giu_orizz_p_att)

         $ang_scr = -90
         $point = 4
         $wk_faccia = "F"
         $wk_stile = 0
         GOSUB PosizionaQuota

         //Quota2
         $wk_giu_orizz_p_att = #Z - $wk_giu_orizz_p_att

         SET_#($wk_elm_idx)
         $P1 = $P2
         $P2 = #base_0

         $testo = STR($wk_giu_orizz_p_att)

         $ang_scr = -90
         $point = 4
         $wk_faccia = "F"
         $wk_stile = 0
         GOSUB PosizionaQuota

         $wk_jj = $wk_jj + 1
      }

      //Larghezze
      ///Creo array per le varie larghezze da quotare
      $wk_giu_orizz_l = 0

      SET_#($wk_elm_idx)
      $P1 = #base_0
      if( $wk_elm_verso == "UP" ) { $P1 = #base_4 }

      $wk_jj = 1
      while( $wk_jj <= $wk_giu )
      {
         $wk_giu_att = $wk_giu[$wk_jj]

         SET_#($wk_giu_att)
         $P2 = #pnt_stp_cnt
         $P2.y = $P1.y

         SET_#($wk_elm_idx)
         if( $wk_elm_verso == "DW" ) { $wk_inter = INTERFERISCI( $P2, $wk_elm_ang-90, #base_0, #base_1) }
         else                        { $wk_inter = INTERFERISCI( $P2, $wk_elm_ang-90, #base_4, #base_3) }
         if( $wk_inter.x != $ERR_INTERFERISCI
           & $wk_inter.z != $ERR_INTERFERISCI ) { $P2 = $wk_inter }

         $d = MRound( DISTANZA($P1,$P2), 0.1)

         AddItem2Array_IfNotExist( -1, "wk_giu_orizz_l", $d, "")

         $wk_jj = $wk_jj + 1
      }

      ///Quoto le varie larghezze
      $wk_scosta_lquota = 10

      $wk_jj = 1
      while( $wk_jj <= $wk_giu_orizz_l )
      {
         $wk_giu_orizz_l_att = $wk_giu_orizz_l[$wk_jj]
         $distanza = $wk_scosta_lquota + ( 70 * $wk_jj )
         $dist = $distanza

         SET_#($wk_elm_idx)

         //Quota1
         $P1 = #base_0
         if( $wk_elm_verso == "UP" ) { $P1 = #base_4 }

         $P2 = $P1
         $P2.x = $P2.x + COSENO($wk_elm_ang)*$wk_giu_orizz_l_att
         $P2.z = $P2.z - SENO($wk_elm_ang)*$wk_giu_orizz_l_att

         $testo = STR($wk_giu_orizz_l_att)

         $ang_scr = 0
         $point = 4
         $wk_faccia = "A"
         $wk_scosta_lquota = 10
         $wk_stile = 0
         GOSUB PosizionaQuota

         //Quota2
         $wk_giu_orizz_l_att = #X - $wk_giu_orizz_l_att

         SET_#($wk_elm_idx)
         $P1 = $P2
         $P2 = #base_1
         if( $wk_elm_verso == "UP" ) { $P2 = #base_3 }

         $testo = STR($wk_giu_orizz_l_att)

         $ang_scr = 0
         $point = 4
         $wk_faccia = "A"
         $wk_scosta_lquota = 10
         $wk_stile = 0
         GOSUB PosizionaQuota

         $wk_jj = $wk_jj + 1
      }

      //COMANDO2("SHOW Abilita On")
      //COMANDO2("SHOW All")
      //EXIT()
   }

   //{ STAMPA TECNICA ALZATE VETRO CON SCASSI
   PROCEDURA StampaProd_AlzateVetroCScassi_AIR
   {
      log = 0
      ScriviSuLog( log , "StampaProd_AlzateVetroCScassi_AIR" , "START" )

      WITH_ALIAS("$wk_alz","StpAlzateCScasso")

      if( $wk_alz == 0 )
      {
         ScriviSuLog( log , "StampaProd_AlzateVetroCScassi_AIR" , "-- NON CI SONO ALZATE DA STAMPARe" )
         ScriviSuLog( log , "StampaProd_AlzateVetroCScassi_AIR" , "END" )
         EXITSUB()
      }

      COMANDO2("M4_SHOW Ambienti Hide")
      COMANDO2("SHOW None")
      COMANDO2("SHOW Abilita Off")

      $wk_i = 1
      while ( $wk_i <= $wk_alz )
      {
         $wk_idx_riga = $wk_alz[$wk_i]

         GOSUB InizioStampaPDF
         GOSUB InfoCartiglioGen

         $wk_STP_DIS_Titolo = "STAMPA ALZATA CON SCASSO"

         $wk_STP_DIS_TitoloDisegno  =  ""
         $wk_STP_DIS_TitoloDisegno2 =  ""

         $wk_STP_DIS_LBL_5 = "Operatore:"
         $wk_STP_DIS_5     = VAR_VAL_STR( -1, "CodOperatore")

         //sposto riferimento
         $wk_STP_DIS_LBL_4 = ""
         $wk_STP_DIS_4     = ""
         $wk_STP_DIS_LBL_6 = MSG(228)
         $wk_STP_DIS_6     = VAR_VAL_STR(-1,"Gestionale_Ordine_Riferimento")

         $wk_STP_TitoloInfo = "INFORMAZIONI"
         $wk_STP_DIS_VAR1 = VAR_VAL_STR($wk_idx_riga,"DescEdit__")

         $VAR_AnteprimaDiStampa = 1
         if( $OnTerminate==1 ) { $VAR_AnteprimaDiStampa = 0 }

         SET_#($wk_idx_riga)

         if( VAR_EXIST($wk_idx_riga,"IDX_GEST") ) { $POSTNOMESTAMPA = STRCAT("-ALZAIR_",STR(#IDX_GEST)) }
         else                                     { $POSTNOMESTAMPA = STRCAT("-ALZAIR_(",STR($wk_idx_riga),")") }

         $wk_suffisso_emf = "_ALZAIR"
         VAR_CREATE_NUM(-1,STRCAT("wk_pagina_",$wk_suffisso_emf),0,0,"")

         //Luca 27/01/2022
         $SET_STAMPA       = "PROD"

         GOSUB adatta_dim_quote
         $Yscr = $Yscr/2         $Xscr = $Xscr/2
         $Yscr = $Yscr/2         $Xscr = $Xscr/2

         GOSUB StampaProd_AlzateVetroCScassi_AIR_Sub

         GOSUB FineStampaPDF
         $wk_suffisso_PDF = ""

         GOSUB CancellaGlobaliStp

         $wk_i = $wk_i + 1
      }

      COMANDO2("M4_SHOW Ambienti Show")
      COMANDO2("SHOW Abilita On")
      COMANDO2("SHOW All")

      ScriviSuLog( log , "StampaProd_AlzateVetroCScassi_AIR" , "END" )
   }

   PROCEDURA StampaProd_AlzateVetroCScassi_AIR_Sub
   {
      $wk_SP_LINEA_MOBILI       = $TSTP_SP_LINEA_MOBILI
      $wk_SP_LINEA_MOBILI       = 40
      $wk_SP_LINEA_MOBILI_TRATT = $TSTP_SP_LINEA_TRATTEGGIO
      $wk_SP_LINEA_SCRITTE      = 1
      $wk_SP_LINEA_QUOTE        = 1

      $wk_FORM_dW =  5
      $wk_FORM_dH =  52
      $wk_FORM_W  =  285
      $wk_FORM_H  =  152

      $wk_STP_DT_IMG  = ""
      $wk_STP_DT_IMG2 = ""

      $wk_nome_form = "Stampa_Top2_O.emf"
      $wk_nome_layout = "Bifacciali_Materia"

      $wk_ang_top = ANG_TOT2($wk_idx_riga)

      //$wk_view_ang = STR(-1*$wk_ang_top)

      if( NOME($wk_idx_riga) == "FiancoVetroAlzata_AIR" )
      {
         if( VAR_VAL($wk_idx_riga,"Lato" ) < 0 ) { $wk_ang_top =  $wk_ang_top + 90 }
         else                                    { $wk_ang_top =  $wk_ang_top - 90 }
      }
      $wk_view_ang = STR(-1*$wk_ang_top)
      $wk_view_roll = STRCAT( $wk_view_ang ," 0" )

      if( $DIS_TO_GEMO==0 )
      {
         GOSUB StampaProd_AlzateVetroCScassi_AIR_Quota
      }

      GOSUB NomeDisegno
      GOSUB StampaLayout

      ResetVarStampa("flag_stampa")

      if( $DIS_TO_GEMO==0 ) { GOSUB CancellaScritteQuote }
   }

   PROCEDURA StampaProd_AlzateVetroCScassi_AIR_Quota
   {
      $alias_scr     = "STP_SCR_TOP"
      $AliasQuota    = "STP_QUO_TOP"
      $AliasQuotaLat = "STP_QUO_TOP"
      $wk_faccia = "F"

      $HChar   = $Yscr/2         $LChar   = $Xscr/2
      $Alt_Chr = $Yscr/2         $Lar_Chr = $Xscr/2

      $ang_scr = 0
      $wk_scosta_lquota = 20

      $dist = 100

      SET_#($wk_idx_riga)
      VAR_VALUE_SET($wk_idx_riga ,"flag_stampa",1)

      $wk_b0 = #base_0  $wk_a0 = #alto_0
      $wk_b3 = #base_3  $wk_a3 = #alto_3

      if( NOME($wk_idx_riga) == "FiancoVetroAlzata_AIR" )
      {
         if( VAR_VAL($wk_idx_riga,"Lato" ) < 0 )
         {
            $wk_b0 = #base_2  $wk_a0 = #alto_2
            $wk_b3 = #base_3  $wk_a3 = #alto_3
         }
         else
         {
            $wk_b0 = #base_0  $wk_a0 = #alto_0
            $wk_b3 = #base_1  $wk_a3 = #alto_1
         }
      }

      $wk_idx_scs = -1
      COMPONENTI2("$wk_scs",$wk_idx_riga,"ScassoAlzataVetro_AIR")
      COMPONENTI2("$wk_scs_g",$wk_idx_riga,"CilindroZ_Scassa")
      MergeArray2Array(-1, "wk_scs_g", "wk_scs")

      if( $wk_scs > 0 ) { $wk_idx_scs = $wk_scs[1] }

      if( IS_IDX($wk_idx_scs) == 0 )  { EXITSUB() }

      SET_#($wk_idx_scs)

      $ang_scr    = 0

      //larghezza vetro
      $ang_quoSCH = 0
      $dist = 80
      $wk_stile = 0
      $P1 = $wk_a0
      $P2 = $wk_a3
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))
      GOSUB PosizionaQuotaSchienale

      //altezza vetro
      $ang_quoSCH = $wk_ang_top
      $dist = 80
      $wk_stile = 0
      $P1 = $wk_b0
      $P2 = $wk_a0
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))
      GOSUB PosizionaQuotaSchienale

      //quoto dim scaso
      //larghezza vetro
      $ang_quoSCH = 0
      $dist = 30
      $wk_stile = 0
      $P1 = #alto_0
      $P2 = #alto_3
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))
      GOSUB PosizionaQuotaSchienale

      if( VAR_VAL($wk_idx_scs,"VAR_TipoScasso") == 1 )
      {
         //altezza vetro
         $ang_quoSCH = $wk_ang_top
         $dist = 30
         $wk_stile = 0
         $P1 = #base_0
         $P2 = #alto_0
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR($d+0.5))
         GOSUB PosizionaQuotaSchienale
       }

       //Posizione scasso
       $ang_quoSCH = 0
       $dist = -50
       $wk_stile = 0
       $P1 = $wk_b0
       $P2 = #base_0
       $P2.y = $P1.y
       if( VAR_VAL($wk_idx_scs,"VAR_TipoScasso") == 0 )
       {
         $P2 = #pnt_centro
         $P2.y = $P1.y
       }
       $d = DISTANZA($P1,$P2)
       $testo = STR(FLOOR($d+0.5))
       GOSUB PosizionaQuotaSchienale

       $ang_quoSCH = 0
       $dist = -50
       $wk_stile = 0
       $P1 = $P2
       $P2 = $wk_b3
       $d = DISTANZA($P1,$P2)
       $testo = STR(FLOOR($d+0.5))
       GOSUB PosizionaQuotaSchienale

       $ang_quoSCH = $wk_ang_top
       $dist = -50
       $wk_stile = 0
       $P1 = $wk_b3
       $P2 = $wk_b3
       $P2.y = #base_0.y
       if( VAR_VAL($wk_idx_scs,"VAR_TipoScasso") == 0 )
       {
         $P2 = $wk_b3
         $P2.y = #pnt_centro.y
       }
       $d = DISTANZA($P1,$P2)
       $testo = STR(FLOOR($d+0.5))
       GOSUB PosizionaQuotaSchienale

       $ang_quoSCH = $wk_ang_top
       $dist = -50
       $wk_stile = 0
       $P1 = $P2
       $P2 = $wk_a3
       $d = DISTANZA($P1,$P2)
       $testo = STR(FLOOR($d+0.5))
       GOSUB PosizionaQuotaSchienale
   }
   //} STAMPA TECNICA ALZATE VETRO CON SCASSI

   //{ STAMPE TECNICHE LETTI
   PROCEDURA StampaProd_PannelloRetroLetto_L21
   {
      log = 0
      ScriviSuLog( log , "StampaProd_PannelloRetroLetto_L21" , "START" )

      WITH_VAR("$wk_pan","PannelloRetroLetto_ConScasso",$num_con_figli,1,"1")

      if( $wk_pan == 0 )
      {
         ScriviSuLog( log , "StampaProd_PannelloRetroLetto_L21" , "-- NON SONO PRESENTI PANNELLI" )
         ScriviSuLog( log , "StampaProd_PannelloRetroLetto_L21" , "END" )
         EXITSUB()
      }

      COMANDO2("M4_SHOW Ambienti Hide")
      COMANDO2("SHOW None")
      COMANDO2("SHOW Abilita Off")

      $wk_i = 1
      while ( $wk_i <= $wk_pan )
      {
         $wk_idx_pan = $wk_pan[$wk_i]
         $wk_idx_gest = $wk_idx_pan

         $wk_idx_test = PADRE($wk_idx_pan,1)

         //trovo il primo livello gestionale
         cont = 1
         while( VAR_VAL_STR($wk_idx_gest,"ORD_COD") == "" & cont < 10 )
         {
            $wk_idx_gest = PADRE($wk_idx_gest,1)
            cont = cont + 1
         }

         GOSUB InizioStampaPDF
         GOSUB InfoCartiglioGen

         $wk_STP_DIS_Titolo = "STAMPA PANNELLI RETRO LETTO"

         $wk_STP_DIS_TitoloDisegno  =  ""
         $wk_STP_DIS_TitoloDisegno2 =  ""

         $wk_STP_DIS_LBL_5 = "Operatore:"
         $wk_STP_DIS_5     = VAR_VAL_STR( -1, "CodOperatore")

         //sposto riferimento
         $wk_STP_DIS_LBL_4 = ""
         $wk_STP_DIS_4     = ""
         $wk_STP_DIS_LBL_6 = MSG(228)
         $wk_STP_DIS_6     = VAR_VAL_STR(-1,"Gestionale_Ordine_Riferimento")

         $wk_STP_TitoloInfo = "INFORMAZIONI"
         $wk_STP_DIS_VAR1 = VAR_VAL_STR($wk_idx_gest,"DescEdit__")

         //Luca 01/03/2022
         if( $wk_idx_gest != $wk_idx_pan ) { $wk_STP_DIS_VAR2 = "PANNELLO RETRO TESTIERA" }

         $VAR_AnteprimaDiStampa = 1
         if( $OnTerminate==1 ) { $VAR_AnteprimaDiStampa = 0 }

         SET_#($wk_idx_gest)

         //Luca 01/03/2022 aggiungo lato pannello per evitare di avere 2 file identici
         $wk_verso = ""
         if( $wk_idx_gest != $wk_idx_pan )
         {
            if( VAR_VAL($wk_idx_pan,"Verso") < 0 )  { $wk_verso = "_SX" }
            if( VAR_VAL($wk_idx_pan,"Verso") > 0 )  { $wk_verso = "_DX" }
         }

         if( VAR_EXIST($wk_idx_gest,"IDX_GEST") ) { $POSTNOMESTAMPA = STRCAT("-PANRTRLTT",$wk_verso,"_",STR(#IDX_GEST)) }
         else                                     { $POSTNOMESTAMPA = STRCAT("-PANRTRLTT",$wk_verso,"_(",STR($wk_idx_pan),")") }

         SET_#($wk_idx_pan)

         $wk_suffisso_emf = STRCAT("_PANRTRLTT",$wk_verso)
         VAR_CREATE_NUM(-1,STRCAT("wk_pagina_",$wk_suffisso_emf),0,0,"")

         $wk_idx_riga      = $wk_idx_gest
         $SET_STAMPA       = "0011"

         GOSUB adatta_dim_quote
         $Yscr = $Yscr/2         $Xscr = $Xscr/2
         $Yscr = $Yscr/2         $Xscr = $Xscr/2

         GOSUB StampaProd_PannelloRetroLetto_L21_Sub

         GOSUB FineStampaPDF
         $wk_suffisso_PDF = ""

         GOSUB CancellaGlobaliStp

         $wk_i = $wk_i + 1
      }

      COMANDO2("M4_SHOW Ambienti Show")
      COMANDO2("SHOW Abilita On")
      COMANDO2("SHOW All")

      ScriviSuLog( log , "StampaProd_PannelloRetroLetto_L21" , "END" )
   }

   PROCEDURA StampaProd_PannelloRetroLetto_L21_Sub
   {
      $wk_SP_LINEA_MOBILI       = $TSTP_SP_LINEA_MOBILI
      $wk_SP_LINEA_MOBILI       = 40
      $wk_SP_LINEA_MOBILI_TRATT = $TSTP_SP_LINEA_TRATTEGGIO
      $wk_SP_LINEA_SCRITTE      = 1
      $wk_SP_LINEA_QUOTE        = 1

      $wk_FORM_dW =  5
      $wk_FORM_dH =  52
      $wk_FORM_W  =  285
      $wk_FORM_H  =  152

      $wk_STP_DT_IMG  = ""
      $wk_STP_DT_IMG2 = ""

      $wk_STP_DT_IMG_X = 217
      $wk_STP_DT_IMG_Y = 144
      $wk_STP_DT_IMG_W = 70
      $wk_STP_DT_IMG_H = 57.5

      $wk_nome_form = "Stampa_Top2_O.emf"
      $wk_nome_layout = "Testiere"

      $wk_STP_DIS_TitoloDisegno = "VISTA FRONTALE"

      $wk_ang_top = ANG_TOT2($wk_idx_pan)

      $wk_view_roll = STRCAT( STR(-1*$wk_ang_top) ," 0" )
      $wk_view_ang = STR(-1*$wk_ang_top)
      $wk_view_orbit = STRCAT( STR(-1*$wk_ang_top) ," 0" )

      if( $DIS_TO_GEMO==0 ) { GOSUB StampaProd_PannelloRetroLetto_L21_Quota }

      GOSUB NomeDisegno
      GOSUB StampaLayout

      ResetVarStampa("flag_stampa")
      ResetVarStampa("flag_stampa_lav")
      ResetVarStampa("flag_stampa_tratt")

      if( $DIS_TO_GEMO==0 ) { GOSUB CancellaScritteQuote }
   }

   PROCEDURA StampaProd_PannelloRetroLetto_L21_Quota
   {
      $alias_scr     = "STP_SCR_TOP"
      $AliasQuota    = "STP_QUO_TOP"
      $AliasQuotaLat = "STP_QUO_TOP"

      //$AliasQuotaLat = "NoPrintQuotaLat"
      $wk_faccia = "A"

      //$HChar   = $Yscr/5         $LChar   = $Xscr/5
      //$Alt_Chr = $Yscr/5         $Lar_Chr = $Xscr/5
      $HChar   = $Yscr/2         $LChar   = $Xscr/2
      $Alt_Chr = $Yscr/2         $Lar_Chr = $Xscr/2

      $ang_scr = 0
      $wk_scosta_lquota = 20

      $dist = 100

      SET_#($wk_idx_pan)

      $wk_ang_pan = ANG_TOT_NOR($wk_idx_pan)
      VAR_VALUE_SET($wk_idx_pan ,"flag_stampa",1)

      if( IsIdx($wk_idx_pan,"idx_ferramenta")  )
      {
         VAR_VALUE_SET(#idx_ferramenta ,"flag_stampa_tratt",1)
      }

      $wk_b0 = #base_0
      $wk_a0 = #alto_0
      $wk_b3 = #base_3
      $wk_a3 = #alto_3

      $wk_quota_a_sx = 1
      $wk_quota_a_dx = 1

      GOSUB StampaProd_TestiereLetti_QuotaScassi

      SET_#($wk_idx_pan)

      //LARGHEZZA TOTALE SOTTO
      $ang_quoSCH = 0
      $dist = -80
      //se attivo le lineete a fine quota riduco la distanza
      //$dist = -30

      $wk_stile = 0
      $P1 = #base_0
      $P2 = #base_3
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))

      //$wk_linee_quota = 1
      GOSUB PosizionaQuotaSchienale

      //ALTEZZA TOTALE SX
      $ang_quoSCH = ANG_TOT_NOR($wk_idx_pan)

      //$dist = 80
      $dist = $wk_quota_a_sx*$wk_dist

      //se attivo le lineete a fine quota riduco la distanza
      //$dist = 80

      $wk_stile = 0
      $P1 = #base_0
      $P2 = #alto_0
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR($d+0.5))

      //$wk_linee_quota = 2
      GOSUB PosizionaQuotaSchienale
   }

   PROCEDURA StampaProd_TestiereLetti_QuotaScassi
   {
      if( VAR_VAL_STR(-1,"wk_stampa_TES") == "SCASSI" )
      {
         //Luca 08/03/2022 aggiungo in trasparenza eventuali pannelli retro
         COMPONENTI2("$wk_pil",GetTopLevel($wk_idx_test),"PannelloIll_L21")
         cc = 1
         while ( cc <= $wk_pil )
         {
            VAR_VALUE_SET($wk_pil[cc] ,"flag_stampa_tratt",1)
            cc = cc + 1
         }
      }

      //Luca 01/03/2022 quoto gli scassi
      NEAR_GLOBALE("$wk_scs",$wk_idx_pan,1,1,"ScassoGenTest_L21")

      $wk_dist = 80

      $wk_j = 1
      while ( $wk_j <= $wk_scs )
      {
         $wk_idx_scs = $wk_scs[$wk_j]
         SET_#($wk_idx_scs)

         //LARGHEZZA
         $ang_quoSCH = 0
         $dist = $wk_j*$wk_dist

         $wk_stile = 0
         $P1 = $wk_a0
         $wk_distanza = DistanzaFraPunti($wk_a0,#base_0,$wk_ang_pan)
         $P2 = $P1
         $P2.x = $P1.x + COSENO($wk_ang_pan)*$wk_distanza
         $P2.z = $P1.z -   SENO($wk_ang_pan)*$wk_distanza
         $d = DISTANZA($P1,$P2)
         if( $d <= 20 ) { $wk_stile = 1 }
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuotaSchienale

         $wk_stile = 0
         $P1 = $P2
         $wk_distanza = #X
         $P2 = $P1
         $P2.x = $P1.x + COSENO($wk_ang_pan)*$wk_distanza
         $P2.z = $P1.z -   SENO($wk_ang_pan)*$wk_distanza
         $d = DISTANZA($P1,$P2)
         if( $d < 20 ) { $wk_stile = 1 }
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         $wk_linee_quota = 1
         GOSUB PosizionaQuotaSchienale

         $wk_stile = 0
         $P1 = $P2
         $wk_distanza = #X
         $P2 = $wk_a3
         $d = DISTANZA($P1,$P2)
         if( $d <= 20 ) { $wk_stile = 1 }
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         $wk_linee_quota = 1
         GOSUB PosizionaQuotaSchienale

         //ALTEZZA

         //decido il lato in cui devo quotare
         $wk_lato_quota = "DX"
         $dist = $wk_j*$wk_dist

         $wk_dist_sx = DistanzaFraPunti($wk_b0,#base_0,$wk_ang_pan)
         $wk_dist_dx = DistanzaFraPunti($wk_b3,#base_3,$wk_ang_pan)

         if( $wk_dist_sx < $wk_dist_dx ) { $wk_lato_quota = "SX" }

         if( $wk_lato_quota == "DX" )
         {
            $dist = $wk_quota_a_dx*$wk_dist
            $wk_quota_a_dx = $wk_quota_a_dx + 1
         }
         else
         {
            $dist = $wk_quota_a_sx*$wk_dist*(-1)
            $wk_quota_a_sx = $wk_quota_a_sx + 1
         }

         $ang_quoSCH = ANG_TOT_NOR($wk_idx_pan)

         $wk_stile = 0
         $P1 = $wk_a3
         if( $wk_lato_quota == "SX" ) { $P1 = $wk_a0 }
         $P2 = $P1
         $P2.y = #alto_0.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         //$wk_linee_quota = 2
         GOSUB PosizionaQuotaSchienale

         $wk_stile = 0
         $P1 = $P2
         $P2 = $P1
         $P2.y = #base_0.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         //$wk_linee_quota = 2
         GOSUB PosizionaQuotaSchienale

         $wk_stile = 0
         $P1 = $P2
         $P2 = $wk_b3
         if( $wk_lato_quota == "SX" ) { $P2 = $wk_b0 }
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         //$wk_linee_quota = 2
         GOSUB PosizionaQuotaSchienale

         //aggiungo il raggio
         $P2 = #base_2
         $P2.y = $P2.y + 5
         $testo = STRCAT("R.",STR(MRound(VAR_VAL($wk_idx_scs,"Raggio"),0.5)),"  ")
         $point = 2
         $wk_faccia = "F"
         $ang_scr = $wk_ang_pan
         GOSUB PosizionaScrittaCAD

         $wk_j = $wk_j + 1
      }
   }

   //Testiera LETTO WILDWOOD
   PROCEDURA StampaProd_Testiera_L21
   {
      log = 0
      ScriviSuLog( log, "StampaProd_Testiera_L21", "START")

      WITH_VAR("$wk_pan", "StampaTestiera", $alfa_con_figli, 0, "")

      $wk_pan_num = 1
      while ( $wk_pan_num <= $wk_pan)
      {
         $wk_pan_att  = $wk_pan[$wk_pan_num]
         $wk_pan_gatt = GetPrimoGest( $wk_pan_att, 0)

         $wk_pan_tst  = VAR_VAL_STR( $wk_pan_att, "StampaTestiera")

         $wk_pan_dlt = 0
         if( CheckSel_ORD_SOST($wk_pan_gatt) != 1)                   { $wk_pan_dlt = 1 }

         if( VAR_VAL( $wk_pan_att, "StampaTestieraMan") == 0
           & Is_In_StrArray( $wk_pan_tst, "WW;RP;IM;SP", ";") != 1)  { $wk_pan_dlt = 2 }

         if( VAR_VAL( $wk_pan_gatt, "T_ALLEGATI")
           - VAR_VAL( $wk_pan_gatt, "ALLEGATI") > 0)                 { $wk_pan_dlt = 3 }

         if( $wk_pan_dlt != 0)
         {
            DEL_ARRAY_ITEM( -1, "wk_pan", $wk_pan_num)
            $wk_pan_num = $wk_pan_num - 1
         }

         $wk_pan_num = $wk_pan_num + 1
      }

      if( $wk_pan == 0)
      {
         ScriviSuLog( log , "StampaProd_Testiera_L21" , "-- NON SONO PRESENTI PANNELLI" )
         ScriviSuLog( log , "StampaProd_Testiera_L21" , "END" )
         EXITSUB()
      }

      ScriviSuLog( log, "StampaProd_Testiera_L21", STRCAT("wk_pan = ",STR($wk_pan)))

      COMANDO2("M4_SHOW Ambienti Hide")
      COMANDO2("SHOW None")
      COMANDO2("SHOW Abilita Off")

      $wk_i = 1
      while ( $wk_i <= $wk_pan)
      {
         $wk_idx_pan  = $wk_pan[$wk_i]
         $wk_idx_gest = GetPrimoGest($wk_idx_pan,0)
         $wk_idx_test = $wk_idx_pan

         $wk_TipoTest = VAR_VAL_STR( $wk_idx_pan, "StampaTestiera")
         if( $wk_TipoTest == "") { $wk_TipoTest = "WW" }

         GOSUB InizioStampaPDF
         GOSUB InfoCartiglioGen

         $wk_STP_DIS_Titolo = "STAMPA TESTIERA"
         $wk_STP_DIS_Titolo = STRCAT( $wk_STP_DIS_Titolo, " ", VAR_VAL_STR( $wk_idx_pan, "VAR_TipoTest"))

         $wk_STP_DIS_TitoloDisegno  =  ""
         $wk_STP_DIS_TitoloDisegno2 =  ""

         $wk_STP_DIS_LBL_5 = "Operatore:"
         $wk_STP_DIS_5     = VAR_VAL_STR( -1, "CodOperatore")

         //sposto riferimento
         $wk_STP_DIS_LBL_4 = ""
         $wk_STP_DIS_4     = ""
         $wk_STP_DIS_LBL_6 = MSG(228)
         $wk_STP_DIS_6     = VAR_VAL_STR(-1,"Gestionale_Ordine_Riferimento")

         $wk_STP_TitoloInfo = "INFORMAZIONI"
         $wk_STP_DIS_VAR1 = VAR_VAL_STR($wk_idx_gest,"DescEdit__")

         //materiale struttura
         $wk_STP_DIS_VAR3 = GetDescCatVal($wk_idx_gest,"C118","CAT")
         $wk_STP_DIS_VAL3 = GetDescCatVal($wk_idx_gest,"C118","VAL")

         if( $wk_TipoTest == "RP"
           | $wk_TipoTest == "IM"
           | $wk_TipoTest == "SP"  )
         {
            $wk_STP_DIS_VAR3 = GetDescCatVal($wk_idx_gest,"C057","CAT")
            $wk_STP_DIS_VAL3 = GetDescCatVal($wk_idx_gest,"C057","VAL")
         }

         //Simone 25/03/2022 - Info larghezza materasso
         $wk_STP_DIS_VAR4 = GetDescCatVal($wk_idx_gest,"C080","CAT")
         $wk_STP_DIS_VAL4 = GetDescCatVal($wk_idx_gest,"C080","VAL")

         //Simone 30/03/2022 - Info per stampa Pannello Acc WW
         $wk_STP_DIS_VAR5 = ""
         $wk_STP_DIS_VAL5 = ""
         $wk_STP_DIS_VAR6 = ""
         $wk_STP_DIS_VAL6 = ""

         if( NOME($wk_idx_pan) == "PannelloAccessorio_Testiera_L21"
           & VAR_VAL_STR($wk_idx_pan,"StampaTestiera") == "WW"     )
         {
            $wk_STP_DIS_VAR5 = GetDescCatVal($wk_idx_gest,"C140","CAT")
            $wk_STP_DIS_VAL5 = GetDescCatVal($wk_idx_gest,"C140","VAL")

            $wk_STP_DIS_VAR6 = GetDescCatVal($wk_idx_gest,"C135","CAT")
            $wk_STP_DIS_VAL6 = GetDescCatVal($wk_idx_gest,"C135","VAL")
         }

         $VAR_AnteprimaDiStampa = 1
         if( $OnTerminate==1 ) { $VAR_AnteprimaDiStampa = 0 }

         SET_#($wk_idx_gest)

         if( VAR_EXIST($wk_idx_gest,"IDX_GEST") ) { $POSTNOMESTAMPA = STRCAT("-TEST",$wk_TipoTest,"_",STR(#IDX_GEST)) }
         else                                     { $POSTNOMESTAMPA = STRCAT("-TEST",$wk_TipoTest,"_(",STR($wk_idx_pan),")") }

         SET_#($wk_idx_pan)

         //$wk_suffisso_emf = "_TESTWW"
         $wk_suffisso_emf = STRCAT("_TEST",$wk_TipoTest)
         VAR_CREATE_NUM(-1,STRCAT("wk_pagina_",$wk_suffisso_emf),0,0,"")

         $wk_idx_riga      = $wk_idx_gest
         $SET_STAMPA       = "0018" //IM
         if( $wk_TipoTest == "RP" ) { $SET_STAMPA = "0019" }
         if( $wk_TipoTest == "SP" ) { $SET_STAMPA = "0020" }
         if( $wk_TipoTest == "WW" ) { $SET_STAMPA = "0021" }

         GOSUB adatta_dim_quote
         $Yscr = $Yscr/2         $Xscr = $Xscr/2
         $Yscr = $Yscr/2         $Xscr = $Xscr/2

         ScriviSuLog( log , "StampaProd_Testiera_L21" , STRCAT("$wk_idx_gest = ",STR($wk_idx_gest) , " STAMPA_MANUALE=", STR(VAR_VAL($wk_idx_gest,"StampaTestieraMan")) ))

         //Simone 28/04/2022
         $wk_stampa_TES_Man = 0
         if( VAR_VAL($wk_idx_gest,"StampaTestieraMan") )
         {
            $wk_stampa_TES = "SCASSI"
            $wk_stampa_TES_Man = 1
            GOSUB StampaProd_Testiera_L21_Sub
            $wk_stampa_TES_Man = 0
         }

         $wk_stampa_TES = "ACCESSORI"
         GOSUB StampaProd_Testiera_L21_Sub

         if( $wk_TipoTest != "WW" )
         {
            $wk_stampa_TES = "MASSELLI"
            GOSUB StampaProd_Testiera_L21_Sub
         }

         if( $wk_TipoTest == "WW" )
         {
            $wk_stampa_TES = "SCASSI"
            GOSUB StampaProd_Testiera_L21_Sub
         }

         $wk_stampa_TES = "STAFFA"
         GOSUB StampaProd_Testiera_L21_Sub

         GOSUB FineStampaPDF
         $wk_suffisso_PDF = ""

         $wk_stampa_TES = ""

         GOSUB CancellaGlobaliStp

         $wk_i = $wk_i + 1
      }

      COMANDO2("M4_SHOW Ambienti Show")
      COMANDO2("SHOW Abilita On")
      COMANDO2("SHOW All")

      ScriviSuLog( log , "StampaProd_Testiera_L21" , "END" )
   }

   PROCEDURA StampaProd_Testiera_L21_Sub
   {
      if( $wk_stampa_TES == "SCASSI" )
      {
         $wk_STP_DIS_TitoloDisegno = "VISTA FRONTALE"
         $wk_STP_DIS_TitoloDisegno2 = "QUOTA SCASSI"

         NEAR_GLOBALE("$wk_scs",$wk_idx_pan,1,1,"ScassoGenTest_L21")
         if( $wk_scs == 0 )
         {
            //Simone 28/04/2022
            if( $wk_stampa_TES_Man == 0 ) { EXITSUB() }
         }

         if( $wk_stampa_TES_Man == 1 )
         {
            $wk_STP_DIS_TitoloDisegno2 = ""
         }
      }

      if( $wk_stampa_TES == "STAFFA" )
      {
         $wk_STP_DIS_TitoloDisegno = "VISTA FRONTALE"
         $wk_STP_DIS_TitoloDisegno2 = "QUOTA LAVORAZIONE STAFFA"

         NEAR_GLOBALE("$wk_fr",$wk_idx_pan,5,1,"FresataStaffa_AIR_L21")
         if( $wk_fr == 0 )   { EXITSUB() }
      }

      if( $wk_stampa_TES == "ACCESSORI" )
      {
         $wk_STP_DIS_TitoloDisegno  = "VISTA FRONTALE TESTIERA"
         $wk_STP_DIS_TitoloDisegno2 = "QUOTA ACCESSORI"

         //COMPONENTI2("$wk_mas",$wk_idx_pan,"MasselloAccessorio_TestWW_L21")
         //if( $wk_mas == 0 )  { EXITSUB() }
         $wk_acc = 0

         if( IsIdx($wk_idx_pan,"VAR_Acc_Sx_Idx") ) { $wk_acc = $wk_acc + 1 }
         if( IsIdx($wk_idx_pan,"VAR_Acc_Dx_Idx") ) { $wk_acc = $wk_acc + 1 }

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

      if( $wk_stampa_TES == "MASSELLI" )
      {
         $wk_STP_DIS_TitoloDisegno = "PANNELLO STRUTTURALE"
         $wk_STP_DIS_TitoloDisegno2 = "QUOTA MASSELLI"

         NEAR_GLOBALE("$wk_mas",$wk_idx_pan,5,1,"MasselloAccessorio_Testiera_L21")
         //COMPONENTI2("$wk_mas",$wk_idx_pan,"MasselloAccessorio_TestWW_L21")

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

      $wk_SP_LINEA_MOBILI       = $TSTP_SP_LINEA_MOBILI
      $wk_SP_LINEA_MOBILI       = 40
      $wk_SP_LINEA_MOBILI_TRATT = $TSTP_SP_LINEA_TRATTEGGIO
      $wk_SP_LINEA_SCRITTE      = 1
      $wk_SP_LINEA_QUOTE        = 1

      $wk_FORM_dW =  5
      $wk_FORM_dH =  52
      $wk_FORM_W  =  285
      $wk_FORM_H  =  152

      $wk_STP_DT_IMG  = ""
      $wk_STP_DT_IMG2 = ""

      $wk_STP_DT_IMG_X = 217
      $wk_STP_DT_IMG_Y = 144
      $wk_STP_DT_IMG_W = 72
      $wk_STP_DT_IMG_H = 57.5

      $wk_nome_form = "Stampa_Top2_O.emf"
      $wk_nome_layout = "Testiere"

      $wk_STP_LegendaTitolo = ""

      $wk_vv = 1
      while ( $wk_vv <= 30 )
      {
         VAR_VALUESTR_SET(-1,STRCAT("wk_STP_LEG_VAR",STR($wk_vv)),"")
         VAR_VALUESTR_SET(-1,STRCAT("wk_STP_LEG_VAL",STR($wk_vv)),"")
         VAR_VALUESTR_SET(-1,STRCAT("wk_STP_LEG_FIN",STR($wk_vv)),"")

         $wk_vv = $wk_vv + 1
      }

      $wk_ang_top = ANG_TOT2($wk_idx_pan)

      $wk_view_roll = STRCAT( STR(-1*$wk_ang_top) ," 0" )
      $wk_view_ang = STR(-1*$wk_ang_top)
      $wk_view_orbit = STRCAT( STR(-1*$wk_ang_top) ," 0" )

      if( $DIS_TO_GEMO==0 ) { GOSUB StampaProd_Testiera_L21_Quota }

      GOSUB NomeDisegno
      GOSUB StampaLayout

      ResetVarStampa("flag_stampa")
      ResetVarStampa("flag_stampa_tratt")
      ResetVarStampa("flag_stampa_lav")

      if( $DIS_TO_GEMO==0 ) { GOSUB CancellaScritteQuote }
   }

   PROCEDURA StampaProd_Testiera_L21_Quota
   {
      $alias_scr     = "STP_SCR_TOP"
      $AliasQuota    = "STP_QUO_TOP"
      $AliasQuotaLat = "STP_QUO_TOP"

      $wk_dettagli = 0

      //$AliasQuotaLat = "NoPrintQuotaLat"
      $wk_faccia = "A"

      //$HChar   = $Yscr/5         $LChar   = $Xscr/5
      //$Alt_Chr = $Yscr/5         $Lar_Chr = $Xscr/5
      $HChar   = $Yscr         $LChar   = $Xscr
      $Alt_Chr = $Yscr         $Lar_Chr = $Xscr

      $ang_scr = 0
      $wk_scosta_lquota = 20

      $dist = 100

      SET_#($wk_idx_pan)

      $wk_ang_pan = ANG_TOT_NOR($wk_idx_pan)
      VAR_VALUE_SET($wk_idx_test ,"flag_stampa",1)

      //escludo eventuali pannelli illuminazione
      COMPONENTI2("$wk_pil",$wk_idx_test,"PannelloIll_L21")
      cc = 1
      while ( cc <= $wk_pil )
      {
         VAR_VALUE_SET($wk_pil[cc] ,"flag_stampa",-1)
         cc = cc + 1
      }

      //escludo eventuali accessori attrezzati sulla testiera
      COMPONENTI2("$wk_mod",$wk_idx_test,"Modulo*")
      cc = 1
      while ( cc <= $wk_mod )
      {
         VAR_VALUE_SET($wk_mod[cc] ,"flag_stampa",-1)
         cc = cc + 1
      }

      //escludo eventuali accessori attrezzati sulla testiera
      COMPONENTI2("$wk_men",$wk_idx_test,"MensolaVetro_Testiera_L21")
      cc = 1
      while ( cc <= $wk_men )
      {
         VAR_VALUE_SET($wk_men[cc] ,"flag_stampa",-1)
         cc = cc + 1
      }

      $wk_b0 = #STP_base_0
      $wk_a0 = #STP_alto_0
      $wk_b3 = #STP_base_3
      $wk_a3 = #STP_alto_3

      $wk_quota_a_sx = 1
      $wk_quota_a_dx = 1

      if( $wk_stampa_TES == "SCASSI" )    { GOSUB StampaProd_TestiereLetti_QuotaScassi }
      if( $wk_stampa_TES == "ACCESSORI" ) { GOSUB StampaProd_TestiereLetti_QuotaAccessori }
      if( $wk_stampa_TES == "MASSELLI" )
      {
         //non quota la testiera, ma il massello interno
         if( $wk_TipoTest != "WILDWOOD" )
         {
            $wk_idx_mas = -1
            WITH_VAR_LOCAL($wk_idx_test,"$wk_mi","STP_MasselloInterno",$num_con_figli,1,"1")
            if( $wk_mi > 0 ) { $wk_idx_mas = $wk_mi[1] }

            if( IS_IDX($wk_idx_mas) )
            {
               VAR_VALUE_SET($wk_idx_mas ,"flag_stampa",1)

               SET_#($wk_idx_mas)
               $wk_b0 = #base_0
               $wk_a0 = #alto_0
               $wk_b3 = #base_3
               $wk_a3 = #alto_3

               //escludo i tessuti
               WITH_VAR_LOCAL($wk_idx_test,"$wk_tes","STP_Tessuto",$num_con_figli,1,"1")
               cc = 1
               while ( cc <= $wk_tes )
               {
                  VAR_VALUE_SET($wk_tes[cc] ,"flag_stampa",-1)
                  cc = cc + 1
               }

               //escludo eventuale pannello accessorio wildwood
               COMPONENTI2("$wk_pac",$wk_idx_test,"PannelloAccessorio_Testiera_L21")
               cc = 1
               while ( cc <= $wk_pac )
               {
                  if( VAR_VAL_STR($wk_pac[cc],"VAR_Tipologia") == "WILDWOOD" )
                  {
                     VAR_VALUE_SET($wk_pac[cc] ,"flag_stampa",-1)
                  }
                  cc = cc + 1
               }
            }
         }

         GOSUB StampaProd_TestiereLetti_QuotaMasselli
      }
      if( $wk_stampa_TES == "STAFFA" )    { GOSUB StampaProd_TestiereLetti_QuotaLavorazioni }

      //LARGHEZZA TOTALE SOTTO
      $ang_quoSCH = 0
      $dist = -80
      if( $wk_stampa_TES == "STAFFA" ) { $dist = -160 }

      //se attivo le lineete a fine quota riduco la distanza
      //$dist = -30

      $wk_stile = 0
      $P1 = $wk_b0
      $P2 = $wk_b3
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)

      //$wk_linee_quota = 1
      GOSUB PosizionaQuotaSchienale

      //ALTEZZA TOTALE SX
      $ang_quoSCH = ANG_TOT_NOR($wk_idx_pan)

      $wk_dist = 80
      $dist = $wk_quota_a_sx*$wk_dist
      //if( $wk_stampa_TES == "ACCESSORI" ) { $dist = 160 }

      //se attivo le lineete a fine quota riduco la distanza
      //$dist = 80

      $wk_stile = 0
      $P1 = $wk_b0
      $P2 = $wk_a0
      $d = DISTANZA($P1,$P2)
      $testo = STR(FLOOR(($d+0.05)*10)/10)

      GOSUB PosizionaQuotaSchienale

      if( $wk_dettagli > 0 )
      {
         $wk_nome_form = "Stampa_Top_O.emf"
         $wk_FORM_W  =  212

         if( $wk_dettagli >= 1 )
         {
            $wk_STP_DT_IMG  = STRCAT($path_layout,"Dettagli\",$wk_dettagli[1])
         }

         if( $wk_dettagli >= 2 )
         {
            $wk_STP_DT_IMG2 = STRCAT($path_layout,"Dettagli\",$wk_dettagli[2])
         }
      }
   }

   PROCEDURA StampaProd_TestiereLetti_QuotaLavorazioni
   {
      //lavorazione da stampare e quotare
      //1. FresataStaffa_AIR_L21
      NEAR_GLOBALE("$wk_fr",$wk_idx_pan,5,1,"FresataStaffa_AIR_L21")

      if( $wk_fr > 0 )
      {
         $wk_idx_fres = $wk_fr[1]
         VAR_VALUE_SET($wk_idx_fres ,"flag_stampa_lav",1)

         SET_#($wk_idx_fres)

         //quoto offset staffa rispetto testiera
         //sopra
         $ang_quoSCH = 0
         $dist = 160

         $wk_stile = 0
         $P1 = $wk_a0
         $wk_distanza = DistanzaFraPunti($wk_a0,#base_0,$wk_ang_pan)
         $P2 = $P1
         $P2.x = $P1.x + COSENO($wk_ang_pan)*$wk_distanza
         $P2.z = $P1.z -   SENO($wk_ang_pan)*$wk_distanza
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuotaSchienale

         $wk_stile = 0
         $P1 = $P2
         $wk_distanza = #X
         $P2 = $P1
         $P2.x = $P1.x + COSENO($wk_ang_pan)*$wk_distanza
         $P2.z = $P1.z -   SENO($wk_ang_pan)*$wk_distanza
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         $wk_linee_quota = 1
         GOSUB PosizionaQuotaSchienale

         $wk_stile = 0
         $P1 = $P2
         $P2 = $wk_a3
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         $wk_linee_quota = 1
         GOSUB PosizionaQuotaSchienale

         //destra
         //altezza
         $ang_quoSCH = ANG_TOT_NOR($wk_idx_pan)
         //$wk_stile = 0
         //$P1 = $wk_a3
         //$P2 = $P1
         //$P2.y = #STP_base_0.y
         //$d = DISTANZA($P1,$P2)
         //$testo = STR(FLOOR(($d+0.05)*10)/10)
         ////$wk_linee_quota = 2
         //GOSUB PosizionaQuotaSchienale
         //
         //$wk_stile = 0
         //$P1 = $P2
         //$P2 = $wk_b3
         //$d = DISTANZA($P1,$P2)
         //$testo = STR(FLOOR(($d+0.05)*10)/10)
         ////$wk_linee_quota = 2
         //GOSUB PosizionaQuotaSchienale

         $dist = 20

         $wk_stile = 0
         $P1 = #STP_base_3
         $P2 = #STP_base_3
         $P2.y = $wk_b3.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuotaSchienale

         //QUOTO FORI
         WITH_VAR_LOCAL($wk_idx_fres,"$wk_fori","StpQuotaForo",$num_con_figli,1,"1")
         SORT_POINT($wk_b0,"$wk_fori","base_0")

         $ang_quoSCH = 0

         $dist = 80

         $wk_stile = 0
         $P1 = $wk_a0

         $wk_j = 1
         while ( $wk_j <= $wk_fori )
         {
            SET_#($wk_fori[$wk_j])

            //scritte fori
            $P2 = #base_3

            $testo = "  A"
            $point = 1

            if( $wk_j == 2 | $wk_j == 3 )  { $testo = "  B" }

            $wk_faccia = "F"
            $ang_scr = $wk_ang_pan
            GOSUB PosizionaScrittaCAD

            $P2 = INTERFERISCI( #base_c, $wk_ang_pan + 90 ,$wk_a0,$wk_a3)
            $P2.y = $P1.y
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuotaSchienale

            $wk_stile = 0
            $P1 = $P2

            $wk_j = $wk_j + 1
         }

         $P2 = $wk_a3
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         //$wk_linee_quota = 2
         GOSUB PosizionaQuotaSchienale

         //quoto in altezza il foro
         SET_#($wk_fori[1])

         $ang_quoSCH = 0
         $dist = 20

         $wk_stile = 0
         $P2 = #base_c
         $P1 = $P2
         $P1.y = $wk_b0.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)

         //$wk_linee_quota = 2
         GOSUB PosizionaQuotaSchienale

         $wk_STP_LEG_VAR1 = "FORO A -- D. 8 PROF 16"
         $wk_STP_LEG_VAR2 = "FORO B -- D. 8 PROF 30 SV. D. 12x90°"

         //QUOTO POSIZIONE STAFFE
         WITH_VAR_LOCAL($wk_idx_fres,"$wk_st","StpQuotaStaffa",$num_con_figli,1,"1")
         SORT_POINT($wk_b0,"$wk_st","base_0")

         $dist = -80

         $wk_stile = 0
         $P1 = $wk_b0

         $wk_j = 1
         while ( $wk_j <= $wk_st )
         {
            SET_#($wk_st[$wk_j])

            $P2 = INTERFERISCI( #base_0, $wk_ang_pan + 90 ,$wk_b0,$wk_b3)
            $P2.y = $P1.y
            $d = DISTANZA($P1,$P2)
            $testo = STR(FLOOR(($d+0.05)*10)/10)
            GOSUB PosizionaQuotaSchienale

            $wk_stile = 0
            $P1 = $P2

            $wk_j = $wk_j + 1
         }

         $P2 = $wk_b3
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuotaSchienale

         //aggiungo dettaglio
         AddItem2Array( -1, "wk_dettagli", 0, "StaffaTelaioLettoAIR.bmp")

         //aggiungo ulteriore dettaglio
         AddItem2Array( -1, "wk_dettagli", 0, "Staffa2TelaioLettoAIR.bmp")
      }
   }

   PROCEDURA StampaProd_TestiereLetti_QuotaMasselli
   {
      //Luca 01/03/2022 quoto gli scassi
      //COMPONENTI2("$wk_scs",$wk_idx_pan,"MasselloAccessorio_TestWW_L21")

      NEAR_GLOBALE("$wk_scs",$wk_idx_pan,5,1,"MasselloAccessorio_Testiera_L21")

      $wk_dist = 80

      $wk_j = 1
      while ( $wk_j <= $wk_scs )
      {
         $wk_idx_scs = $wk_scs[$wk_j]

         VAR_VALUE_SET($wk_idx_scs ,"flag_stampa",1)

         SET_#($wk_idx_scs)

         $ang_quoSCH = 0
         $dist = $wk_j*$wk_dist

         $wk_stile = 0
         $P1 = $wk_a0
         $wk_distanza = DistanzaFraPunti($wk_a0,#base_0,$wk_ang_pan)
         $P2 = $P1
         $P2.x = $P1.x + COSENO($wk_ang_pan)*$wk_distanza
         $P2.z = $P1.z -   SENO($wk_ang_pan)*$wk_distanza
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuotaSchienale

         $wk_stile = 0
         $P1 = $P2
         $wk_distanza = #X
         $P2 = $P1
         $P2.x = $P1.x + COSENO($wk_ang_pan)*$wk_distanza
         $P2.z = $P1.z -   SENO($wk_ang_pan)*$wk_distanza
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         $wk_linee_quota = 1
         GOSUB PosizionaQuotaSchienale

         $wk_stile = 0
         $P1 = $P2
         $wk_distanza = #X
         $P2 = $wk_a3
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         $wk_linee_quota = 1
         GOSUB PosizionaQuotaSchienale

         //altezza
         $ang_quoSCH = ANG_TOT_NOR($wk_idx_pan)

         //decido il alto in cui devo quotare
         $wk_lato_quota = "DX"
         $dist = $wk_j*$wk_dist

         $wk_dist_sx = DistanzaFraPunti($wk_b0,#base_0,$wk_ang_pan)
         $wk_dist_dx = DistanzaFraPunti($wk_b3,#base_3,$wk_ang_pan)

         if( $wk_dist_sx < $wk_dist_dx ) { $wk_lato_quota = "SX" }

         if( $wk_lato_quota == "DX" )
         {
            $dist = $wk_quota_a_dx*$wk_dist
            $wk_quota_a_dx = $wk_quota_a_dx + 1
         }
         else
         {
            $dist = $wk_quota_a_sx*$wk_dist*(-1)
            $wk_quota_a_sx = $wk_quota_a_sx + 1
         }

         $wk_stile = 0
         $P1 = $wk_a3
         if( $wk_lato_quota == "SX" ) { $P1 = $wk_a0 }

         $P2 = $P1
         $P2.y = #alto_0.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)

         //$wk_linee_quota = 2
         GOSUB PosizionaQuotaSchienale

         $wk_stile = 0
         $P1 = $P2
         $P2 = $P1
         $P2.y = #base_0.y
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         //$wk_linee_quota = 2
         GOSUB PosizionaQuotaSchienale

         $wk_stile = 0
         $P1 = $P2
         $P2 = $wk_b3
         if( $wk_lato_quota == "SX" ) { $P2 = $wk_b0 }

         $d = DISTANZA($P1,$P2)
         if( $d < 20 )
         {
            $wk_stile = 2
            if( $wk_lato_quota == "SX" ) { $wk_stile = 1 }
         }

         $testo = STR(FLOOR(($d+0.05)*10)/10)
         //$wk_linee_quota = 2
         GOSUB PosizionaQuotaSchienale

         //Luca 02/03/2022
         if( VAR_VAL_STR($wk_idx_scs,"TipoMas") == "M368" | VAR_VAL_STR($wk_idx_scs,"TipoMas") == "MMAT" | VAR_VAL_STR($wk_idx_scs,"TipoMas") == "MENV" )
         {
            //aggiungo dettaglio
            if( VAR_VAL($wk_idx_scs,"Y") == 158 )
            {
               if( VAR_VAL($wk_idx_scs,"X") == 388 ) { AddItem2Array( -1, "wk_dettagli", 0, "MasselloAttrTestImb_H158_L.388.bmp") }
               if( VAR_VAL($wk_idx_scs,"X") == 480 ) { AddItem2Array( -1, "wk_dettagli", 0, "MasselloAttrTestImb_H158_L.480.bmp") }
               if( VAR_VAL($wk_idx_scs,"X") == 572 ) { AddItem2Array( -1, "wk_dettagli", 0, "MasselloAttrTestImb_H158_L.572.bmp") }
            }
            if( VAR_VAL($wk_idx_scs,"Y") == 170 )
            {
               if( VAR_VAL($wk_idx_scs,"X") == 388 ) { AddItem2Array( -1, "wk_dettagli", 0, "MasselloAttrTestImb_H170_L.388.bmp") }
               if( VAR_VAL($wk_idx_scs,"X") == 480 ) { AddItem2Array( -1, "wk_dettagli", 0, "MasselloAttrTestImb_H170_L.480.bmp") }
               if( VAR_VAL($wk_idx_scs,"X") == 572 ) { AddItem2Array( -1, "wk_dettagli", 0, "MasselloAttrTestImb_H170_L.572.bmp") }
            }
         }

         $wk_j = $wk_j + 1
      }
   }

   PROCEDURA StampaProd_TestiereLetti_QuotaAccessori
   {
      $wk_scs = 0

      if( IsIdx($wk_idx_pan,"VAR_Acc_Sx_Idx") )
      {
         AddItem2Array( -1, "wk_scs", VAR_VAL($wk_idx_pan,"VAR_Acc_Sx_Idx"), "")
      }
      if( IsIdx($wk_idx_pan,"VAR_Acc_Dx_Idx") )
      {
         AddItem2Array( -1, "wk_scs", VAR_VAL($wk_idx_pan,"VAR_Acc_Dx_Idx"), "")
      }

      $wk_dist = 80

      $wk_nq_sopra = 1

      $wk_j = 1
      while ( $wk_j <= $wk_scs )
      {
         $wk_idx_scs = $wk_scs[$wk_j]

         VAR_VALUE_SET($wk_idx_scs ,"flag_stampa",1)

         if( NOME($wk_idx_scs) == "ModuloMateriaXTestiera_Mat" )
         {
            //riattivo il figlio altrimenti vedo solo i vetri
            COMPONENTI2("$wk_mf",$wk_idx_scs,"ModuloMateria_Mat")
            if( $wk_mf>0 ) { VAR_VALUE_SET($wk_mf[1] ,"flag_stampa",1) }
         }

         SET_#($wk_idx_scs)

         //Luca 05/05/2022
         //mantis 029425: Stampa letti - Nuova quota accessori
         $dist = $wk_nq_sopra*$wk_dist
         $ang_quoSCH = 0

         $wk_stile = 0
         $P1 = $wk_a0
         $wk_distanza = DistanzaFraPunti($wk_a0,#base_0,$wk_ang_pan)
         $wk_largh = #X
         if( NOME($wk_idx_scs) == "ModuloMateriaXTestiera_Mat" ) { $wk_largh = #Xt }
         $wk_distanza = $wk_distanza + $wk_largh/2

         $P2 = $P1
         $P2.x = $P1.x + COSENO($wk_ang_pan)*$wk_distanza
         $P2.z = $P1.z -   SENO($wk_ang_pan)*$wk_distanza
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuotaSchienale

         $wk_stile = 0
         $P1 = $P2
         $P2 = $wk_a3
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         $wk_linee_quota = 1
         GOSUB PosizionaQuotaSchienale

         $wk_nq_sopra = $wk_nq_sopra + 1



         $ang_quoSCH = 0
         //$dist = $wk_j*$wk_dist
         $dist = $wk_nq_sopra*$wk_dist

         $wk_stile = 0
         $P1 = $wk_a0
         $wk_distanza = DistanzaFraPunti($wk_a0,#base_0,$wk_ang_pan)
         $P2 = $P1
         $P2.x = $P1.x + COSENO($wk_ang_pan)*$wk_distanza
         $P2.z = $P1.z -   SENO($wk_ang_pan)*$wk_distanza
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         GOSUB PosizionaQuotaSchienale

         $wk_stile = 0
         $P1 = $P2
         $wk_distanza = #X
         if( NOME($wk_idx_scs) == "ModuloMateriaXTestiera_Mat" ) { $wk_distanza = #Xt }

         $P2 = $P1
         $P2.x = $P1.x + COSENO($wk_ang_pan)*$wk_distanza
         $P2.z = $P1.z -   SENO($wk_ang_pan)*$wk_distanza
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         $wk_linee_quota = 1
         GOSUB PosizionaQuotaSchienale

         $wk_stile = 0
         $P1 = $P2
         $P2 = $wk_a3
         $d = DISTANZA($P1,$P2)
         $testo = STR(FLOOR(($d+0.05)*10)/10)
         $wk_linee_quota = 1
         GOSUB PosizionaQuotaSchienale

         $wk_nq_sopra = $wk_nq_sopra + 1

         //altezza
         $ang_quoSCH = ANG_TOT_NOR($wk_idx_pan)

         //decido il lato in cui devo quotare
         $wk_lato_quota = "DX"
         $dist = $wk_j*$wk_dist

         $wk_dist_sx = DistanzaFraPunti($wk_b0,#base_0,$wk_ang_pan)
         $wk_dist_dx = DistanzaFraPunti($wk_b3,#base_3,$wk_ang_pan)

         if( $wk_dist_sx < $wk_dist_dx ) { $wk_lato_quota = "SX" }

         if( $wk_lato_quota == "DX" )
         {
            $dist = $wk_quota_a_dx*$wk_dist
            $wk_quota_a_dx = $wk_quota_a_dx + 1
         }
         else
         {
            $dist = $wk_quota_a_sx*$wk_dist*(-1)
            $wk_quota_a_sx = $wk_quota_a_sx + 1
         }

         $wk_stile = 0
         $P1 = $wk_a3
         if( $wk_lato_quota == "SX" ) { $P1 = $wk_a0 }
         $P2 = $P1
         $P2.y = #alto_0.y
         $d = DISTANZA($P1,$P2)
         if( $d < 20 ) { $wk_stile = 2 }
         $testo = STR(FLOOR(($d+0.05)*10)/10)

         //$wk_linee_quota = 2
         GOSUB PosizionaQuotaSchienale

         $wk_stile = 0
         $P1 = $P2
         $P2 = $P1
         $P2.y = #base_0.y
         $d = DISTANZA($P1,$P2)
         if( $d < 20 )
         {
            $wk_stile = 2
            if( $wk_lato_quota == "SX" ) { $wk_stile = 1 }
         }

         $testo = STR(FLOOR(($d+0.05)*10)/10)
         //$wk_linee_quota = 2
         GOSUB PosizionaQuotaSchienale

         $wk_stile = 0
         $P1 = $P2
         $P2 = $wk_b3
         if( $wk_lato_quota == "SX" ) { $P2 = $wk_b0 }
         $d = DISTANZA($P1,$P2)
         if( $d < 20 ) { $wk_stile = 2 }

         $testo = STR(FLOOR(($d+0.05)*10)/10)
         //$wk_linee_quota = 2
         GOSUB PosizionaQuotaSchienale

         //Luca 02/03/2022
         //da completare e/o suddividere
         if( $wk_TipoTest == "WW" )
         {
            if( NOME($wk_idx_scs) == "Modulo_368" | NOME($wk_idx_scs) == "ModuloMateriaXTestiera_Mat" )
            {
               //aggiungo dettaglio
               if( VAR_VAL($wk_idx_scs,"Y") == 138 )
               {
                  if( VAR_VAL($wk_idx_scs,"X") == 368 ) { AddItem2Array( -1, "wk_dettagli", 0, "DettaglioComodino_WW_H.138_L.368.bmp") }
                  if( VAR_VAL($wk_idx_scs,"X") == 460 ) { AddItem2Array( -1, "wk_dettagli", 0, "DettaglioComodino_WW_H.138_L.460.bmp") }
                  if( VAR_VAL($wk_idx_scs,"X") == 552 ) { AddItem2Array( -1, "wk_dettagli", 0, "DettaglioComodino_WW_H.138_L.552.bmp") }
               }
               if( VAR_VAL($wk_idx_scs,"Y") == 184 )
               {
                  if( VAR_VAL($wk_idx_scs,"X") == 368 ) { AddItem2Array( -1, "wk_dettagli", 0, "DettaglioComodino_WW_H.184_L.368.bmp") }
                  if( VAR_VAL($wk_idx_scs,"X") == 460 ) { AddItem2Array( -1, "wk_dettagli", 0, "DettaglioComodino_WW_H.184_L.460.bmp") }
                  if( VAR_VAL($wk_idx_scs,"X") == 552 ) { AddItem2Array( -1, "wk_dettagli", 0, "DettaglioComodino_WW_H.184_L.552.bmp") }
               }
            }
            if( NOME($wk_idx_scs) == "MensolaVetro_Testiera_L21" )
            {
               if( VAR_VAL($wk_idx_scs,"X") == 368 ) { AddItem2Array( -1, "wk_dettagli", 0, "DettaglioMensola_WW_L.368.bmp") }
               if( VAR_VAL($wk_idx_scs,"X") == 460 ) { AddItem2Array( -1, "wk_dettagli", 0, "DettaglioMensola_WW_L.460.bmp") }
               if( VAR_VAL($wk_idx_scs,"X") == 552 ) { AddItem2Array( -1, "wk_dettagli", 0, "DettaglioMensola_WW_L.552.bmp") }
            }
         }

         $wk_j = $wk_j + 1
      }
   }
   //} STAMPA TECNICA LETTI

   //Luca 09/03/2022
   PROCEDURA PianaleAIR_ExportDXF
   {
      ScriviSuLog(0,"PianaleAIR_ExportDXF","START")

      WITH_ALIAS("$wk_pian","PianaleAIR")
      if( $wk_pian == 0 )
      {
         ScriviSuLog(0,"PianaleAIR_ExportDXF","]END - NO PIANALI")

         EXITSUB()
      }

      //path dove esportare
      //$wk_path_dwg = SUBST_LABEL(READ_INI("init", "path_dwg"))
      //if( $wk_path_dwg=="" | FILE_EXIST($wk_path_dwg)!=1 )
      //{
      //   $wk_path_dwg = STRCAT($path_locale,"dwg\")
      //   if( $wk_path_dwg=="" | FILE_EXIST($wk_path_dwg)!=1 ) { $wk_path_dwg = $path_locale }
      //}

      //$wk_path_dwg = STRCAT($path_wmf,$path_archivio)
      $wk_path_dwg = STRCAT($path_temp,$path_archivio)

      //Simone 24/01/2023 - Sposto sotto, dentro al ciclo
      //$wk_nome_dwg = VAR_VAL_STR(-1, "File")
      //$wk_suffisso_nome = "PIANALE_AIR"

      //if( $wk_path_dwg=="" | FILE_EXIST($wk_path_dwg)!=1 ) { COMANDO2(STRCAT("LOGMSG DWG_Composizione CARTELLA EXPORT NON TROVATA")) }

      ScriviSuLog(0,"PianaleAIR_ExportDXF",STRCAT("EXPORT IN -> ",$wk_path_dwg))

      if( $DIS_TO_GEMO == 0 )
      {
         //Salvo la vista corrente
         GOSUB View_Camera0

         // Ripristino la visualizzazione degli elementi ----------------
         //COMANDO2("Show Abilita Off")

         // ripristino la vista a video dopo la stampa
         COMANDO2("M4_show Ambienti Hide")
      }

      $wk_i = 1
      while ( $wk_i <= $wk_pian )
      {
         $wk_idx_pian = $wk_pian[$wk_i]
         $wk_idx_riga = $wk_idx_pian

         // SOLO SE FUORI MISURA E NON CON DISEGNO SPECIALE
         if( VAR_VAL($wk_idx_riga,"ORD_RID") > 0
           & VAR_VAL($wk_idx_riga,"Disattiva_DXF") == 0 )
         {
            $wk_nome_dwg = VAR_VAL_STR(-1, "File")
            $wk_suffisso_nome = "PIANALE_AIR"

            if( VAR_EXIST($wk_idx_riga,"IDX_GEST") ) { $wk_nome_dwg = STRCAT($wk_nome_dwg,"-",$wk_suffisso_nome,"_",STR(VAR_VAL($wk_idx_riga,"IDX_GEST"))) }
            else                                     { $wk_nome_dwg = STRCAT($wk_nome_dwg,"-",$wk_suffisso_nome,"_(",STR($wk_idx_riga),")") }

            //$wk_ang_top = ANG_TOT2($wk_idx_pian) + 90

            ScriviSuLog(0,"PianaleAIR_ExportDXF",STRCAT("[",STR($wk_idx_riga),"] - ",$wk_nome_dwg))

            $wk_file_dxf = STRCAT($wk_path_dwg,$wk_nome_dwg,".dxf")

            //$wk_wall     = 0
            //$wk_file_dwg = STRCAT($wk_path_dwg,$wk_nome_dwg,".dwg")

            if( $DIS_TO_GEMO == 0 )
            {
               COMANDO2("SHOW NONE")

               COMANDO2("setviewhoops view top")
               //COMANDO2(STRCAT("SetViewHoops view roll ",STR($wk_ang_top)))

               COMANDO2(STRCAT("SHOW STRUTTURE IDX ADD ", STR($wk_idx_riga)))

               COMANDO2("UPDATE")

               //COMANDO2(STRCAT("DWG write -f ", $wk_file_dwg , " -ver 21 -2d 1 -wall ",STR($wk_wall)))

               COMANDO2(STRCAT("DWG write -f ", $wk_file_dxf , " -dxf 1"))
            }
            else
            {
               $SET_STAMPA = "0012"
               $wk_estensione_NDR = ".dxf"
               GOSUB NomeDisegnoRiga
               $wk_estensione_NDR = ""
            }
         }

         $wk_i = $wk_i + 1
      }

      if( $DIS_TO_GEMO == 0 )
      {
         // Ripristino la vista corrente
         GOSUB View_Camera1

         // Ripristino la visualizzazione degli elementi ----------------
         //COMANDO2("Show Abilita On")

         // ripristino la vista a video dopo la stampa
         COMANDO2("M4_show Ambienti Show")
         COMANDO2("Show All")
         COMANDO2("Zoomhoops")
      }
   }

   //{ STAMPA TECNICA ALLEGATI AUTOMATICI
   // procedura per allegati 'automatici'
   // verifica la presenza della variabile AUTO_ALLEGATI nei vari elementi
   // se presente utilizza il file indicato nella variabile e lo impagina con i dati dell'ordine
   PROCEDURA StampaProd_AllegatiAuto
   {
      log = 0
      #ifdef TEC
         log = VAR_VAL(-1,"ATTIVA_LOG_DBG")
      #endif

      ScriviSuLog( log , "StampaProd_AllegatiAuto" , "START" )

      WITH_VAR( "$wk_items", $AllegatiAuto_VarCheck, $alfa_con_figli, 0, "")

      if( $wk_items == 0 )
      {
         ScriviSuLog( log , "StampaProd_AllegatiAuto" , "END" )
         EXITSUB()
      }

      $wk_i = 1
      while ( $wk_i <= $wk_items )
      {
         $wk_idx_riga = $wk_items[$wk_i]
         LISTA_VARIABILI( $wk_idx_riga, 0, "$wk_lista_var_tmp", STRCAT( $AllegatiAuto_Var, "*"))

         $wk_lista_var = 0
         $wk_j = 1
         while( $wk_j <= $wk_lista_var_tmp )
         {
            $wk_lista_var_att = $wk_lista_var_tmp[$wk_j]

            if( IS_MATCH( $wk_lista_var_att, STRCAT( $AllegatiAuto_Var, "*")) == 1 )
            {
               $wk_lista_val_att = VAR_VAL_STR( $wk_idx_riga, $wk_lista_var_att)

               if( REPLACE( $wk_lista_val_att, $AllegatiAuto_Path, "") != "" )
               {
                  if( FILE_EXIST($wk_lista_val_att) == 1 )
                  {
                     AddItem2Array( -1, "wk_lista_var", 0, $wk_lista_var_att)
                  }
               }
            }

            $wk_j = $wk_j + 1
         }

         $wk_allegato_num = 0
         $wk_allegato_pag = 0
         if( $wk_lista_var > 0 )
         {
            $wk_h = 1
            while( $wk_h <= $wk_lista_var )
            {
               $wk_var_att  = $wk_lista_var[$wk_h]
               $wk_var_next = $wk_var_att
               if( $wk_h < $wk_lista_var) { $wk_var_next = $wk_lista_var[$wk_h+1] }

               //Trovo pagina corrente
               $wk_allegato_pag = 0
               STR_SPLIT( $wk_var_att, "_", 1, "wk_var_att_array", -1)
               if( $wk_var_att_array > 0 )
               {
                  $wk_var_att_pag = ATOI($wk_var_att_array[$wk_var_att_array])
                  if( $wk_var_att_pag > 0 )  { $wk_allegato_pag = $wk_var_att_pag }
                  //Se sono alla prima pagina, inizio con un nuovo allegato
                  if( $wk_var_att_pag == 1 ) { $wk_allegato_num = $wk_allegato_num + 1 }
               }

               //Trovo pagina successiva
               $wk_allegato_pag_next = 0
               STR_SPLIT( $wk_var_next, "_", 1, "wk_var_next_array", -1)
               if( $wk_var_att_array > 0 )
               {
                  $wk_var_next_pag = ATOI($wk_var_next_array[$wk_var_next_array])
                  if( $wk_var_next_pag > 0 )  { $wk_allegato_pag_next = $wk_var_next_pag }
               }

               //1 - Nuovo allegato
               if( $wk_allegato_pag == 1 )
               {
                  GOSUB InizioStampaPDF
                  GOSUB InfoCartiglioGen

                  $wk_STP_DIS_Titolo = STRCAT( "STAMPA TECNICA SPECIALE - ", STR($wk_allegato_num))
                  $wk_nome_stampa    = STRCAT( "SPEC_", STR($wk_allegato_num))
                  $SET_STAMPA        = "PROD"

                  //if( VAR_EXIST($wk_idx_riga,"ALLEGATI_AUTO_TITOLO") ) { $wk_STP_DIS_Titolo = VAR_VAL_STR($wk_idx_riga,"ALLEGATI_AUTO_TITOLO") }
                  //if( VAR_EXIST($wk_idx_riga,"ALLEGATI_AUTO_NOME") )   { $wk_nome_stampa    = VAR_VAL_STR($wk_idx_riga,"ALLEGATI_AUTO_NOME") }
                  //if( VAR_EXIST($wk_idx_riga,"ALLEGATI_AUTO_SET") )    { $SET_STAMPA        = VAR_VAL_STR($wk_idx_riga,"ALLEGATI_AUTO_SET") }

                  $wk_nome_form      = "Stampa_Top2_O.emf"
                  $wk_nome_layout    = "ALLEGATI_AUTO"

                  $wk_STP_DIS_TitoloDisegno  =  ""
                  $wk_STP_DIS_TitoloDisegno2 =  ""

                  $wk_STP_DIS_LBL_5 = "Operatore:"
                  $wk_STP_DIS_5     = VAR_VAL_STR( -1, "CodOperatore")

                  //sposto riferimento
                  $wk_STP_DIS_LBL_4 = ""
                  $wk_STP_DIS_4     = ""
                  $wk_STP_DIS_LBL_6 = MSG(228)
                  $wk_STP_DIS_6     = VAR_VAL_STR(-1,"Gestionale_Ordine_Riferimento")

                  $wk_STP_TitoloInfo = "INFORMAZIONI"
                  $wk_STP_DIS_VAR1 = VAR_VAL_STR($wk_idx_riga,"DescEdit__")

                  $VAR_AnteprimaDiStampa = 1
                  if( $OnTerminate==1 ) { $VAR_AnteprimaDiStampa = 0 }

                  SET_#($wk_idx_riga)
                  if( VAR_EXIST($wk_idx_riga,"IDX_GEST") ) { $POSTNOMESTAMPA = STRCAT("-",$wk_nome_stampa,"_",STR(#IDX_GEST)) }
                  else                                     { $POSTNOMESTAMPA = STRCAT("-",$wk_nome_stampa,"_(",STR($wk_idx_riga),")") }
               }

               //2 - Genero pagine
               $wk_allegato = VAR_VAL_STR( $wk_idx_riga, $wk_var_att)
               $wk_image = $wk_allegato

               $wk_suffisso_emf = STRCAT( "_", $wk_nome_stampa)
               ScriviSuLog( log , "StampaProd_AllegatiAuto" , STRCAT("Idx: ",STR($wk_idx_riga)," - Allegato: ", STR($wk_allegato_num), "/Pagina: ", STR($wk_allegato_pag), " - File: ", APICI(), $wk_allegato, APICI()))

               GOSUB NomeDisegno
               GOSUB StampaLayout

               //3 - Se la pagina successiva è 1 o se sono arrivato all'ultima pagina, chiudo
               if( $wk_allegato_pag_next == 1
                 | $wk_allegato_pag_next == $wk_allegato_pag )
               {
                  GOSUB FineStampaPDF
                  $wk_suffisso_PDF = ""

                  GOSUB CancellaGlobaliStp
               }

               $wk_h = $wk_h + 1
            }
         }

         $wk_i = $wk_i + 1
      }

      ScriviSuLog( log , "StampaProd_AllegatiAuto" , "END" )
   }
   //} STAMPA TECNICA ALLEGATI AUTOMATICI
}

Macro
{
   //Add_Label_Pcf      "" interattiva Add_Label_Pcf
   StampaComm_TSTP      "" interattiva StampaComm_TSTP
   StampaCommInt_TSTP   "" interattiva StampaCommInt_TSTP

   CNP_Stampe           "" interattiva CNP_Stampe
   CNP_StampeAI         "" interattiva CNP_StampeAI

   PianaleAIR_ExportDXF "" interattiva PianaleAIR_ExportDXF


#ifndef AGE;RIV
   //******************PS  "INIZIO MACRO STAMPE"              interattiva VUOTA
   //
   //StampaComm_V2         "Stampa Fine Ordine [V2]"          interattiva StampaComm_V2
   //
   //StampaComm_TSTP_NEW   "[TEST] Stampa Fine Ordine NEW"    interattiva StampaComm_TSTP_NEW

   StampaTOP             ""                                 interattiva StampaTOP

   // Generazione stampe e archiviazione massiva CNP
   StampaCAM             ""                                 interattiva fine_ordine_seconda

   // Archiviazione massiva allegati di riga manuali
   CopiaArchivio_Lago    ""                                 interattiva CopiaArchivio_Lago

   //StampaXGLASS          "Stampa XGLASS 368"                interattiva StampaXGLASS
   //
   //StampaXGLASS_Armadio  "Stampa XGLASS ARMADIO"            interattiva StampaXGLASS_Armadio
   //
   //StampaXGLASS_Teche    "Stampa XGLASS TECHE"              interattiva StampaXGLASS_Teche
   //
   //******************PE  "FINE MACRO STAMPE"                interattiva VUOTA
#endif
}

