Sei sulla pagina 1di 192

3

Manuale tecnico 3cad


DAU srl Via Sernaglia 108/l - 31053 Pieve di Soligo (TV) tel 0438 -981034 Fax 0438-981063 1

Introduzione
Concetto di "Regola Grafica"
Le Regole sono lelemento base di 3Cad e trovano applicazione in numerosi settori del mobile

Abbiamo gi accennato al concetto di Regola Grafica nel manuale utente di 3Cad. Le regole, come gi detto, sono loggetto fondamentale di 3Cad. Esse trovano applicazione nelle varie fasi di progettazione, sviluppo e vendita del mobile. Con le regole, infatti, si possono generare i codici per i semilavorati, preparare i listini, definire i programmi di foratura ed infine creare la grafica degli articoli. Quest'ultimo aspetto forse quello pi vicino alla filosofia dell'ambiente 3Cad, soprattutto quando questo viene utilizzato come strumento CAD per la costruzione del mobile. Le regole sono costruite mettendo in relazione fra loro un numero ristretto di componenti, le tipologie, che interagiscono in modo diverso in base alle dimensioni del mobile che si vuole disegnare, alle varianti dipendenti dallordine (tipo di frontale,colori etc.), o alle variabili richieste dalla stessa regola (i ripiani sono vetro o legno, e di che spessore?). Le tipologie elementari sono gli oggetti base dai quali si parte per la costruzione di un mobile. In altre parole una tipologia elementare identifica un insieme di semilavorati aventi la medesima destinazione duso, anche se di forma e finiture differenti (anta legno, zoccolo, cappello, base etc.) Data la parametricit del programma, non necessario impostare le caratteristiche di ogni singolo articolo (anta, cappello etc.), ma occorre descrivere solo le informazioni relative alla categoria base da cui deriva. Cos per esempio lanta definita da una sola tipologia che individua le relazioni dimensionali e di posizionamento rispetto alla colonna, definisce i codici da creare per il gestionale, crea eventualmente la distinta base degli elementi che la compongono, il tutto in un'unica descrizione parametrica.

Le regole sono costruite mettendo insieme i componenti base denominati tipologie

La variante lo strumento che agisce sugli oggetti personalizzandoli

Abbiamo detto che le tipologie allinterno della Regola, interagiscono in modo diverso anche in base alle varianti. Queste infatti permettono di modificare il mobile che si vuole costruire definendone il colore, il tipo di maniglia, etc. La variante diventa, quindi, lo strumento che agisce sugli oggetti personalizzandoli in maniera strutturale o semplicemente estetica. Con la regola grafica, assemblando tipologie e varianti, si determina la creazione degli oggetti che andranno a comporre il mobile finito sia dal punto di vista grafico, producendone il disegno sullo scherno, che da quello gestionale, evidenziandone il codice, il prezzo ed eventualmente la distinta base. La regola rappresenta un sistema per l'interazione diretta con l'ambiente 3Cad. Essa consente la definizione sia dei dati che delle azioni da intraprendere durante il suo utilizzo. Quando loperatore seleziona la regola dal relativo elenco per inserirla nellarea del disegno e quindi dellordine, in funzione di quanto stabilito allinterno della regola ed in base alle variabili di ambiente impostate (colori, dimensioni etc...), verr rappresentato un elemento composto dalle tipologie scritte nella regola ed aventi le caratteristiche selezionate dallutente, completamente variabili. Ad esempio, pu venire disegnata una base per cucina avente un numero di ante variabile in base alla larghezza, il colore scelto dalloperatore e, allinterno della finestra preventivo, gli elementi codificati dipendenti dalle caratteristiche assunte dalle tipologie.
2

Le regole si definiscono attraverso luso di un macro-linguaggio

Le regole e cio i criteri che si impostano per la costruzione di un elemento, si definiscono attraverso un macro linguaggio caratterizzato da un numero ridotto di parole chiave, istruzioni e funzioni e da una forte flessibilit nei riguardi della definizione dei dati introdotti dall'utilizzatore. Spiegheremo la sintassi di questo linguaggio al cap. 3 (Linguaggio delle Regole). Con 3Cad si possono gestire vari tipi di ambientazione: cucine, camere, bagni, soggiorni ed ora anche i salotti. Date le differenze, a volte sostanziali, tra i settori sopra citati, necessario suddividere in pi sezioni anche il presente manuale per semplificarne la consultazione da parte dellutente. Le fasi per la creazione del catalogo da utilizzare in 3Cad sono comunque sempre le stesse, indipendentemente dal tipo di ambiente che si vuole arredare. Il primo argomento da affrontare quello della definizione dei dati necessari alla successiva stesura delle regole, vale a dire le tabelle dimensionali, le varianti e soprattutto le tipologie. La fase seguente riguarder la scrittura delle regole che produrranno la grafica dei mobili. Il prodotto a questo punto gi collaudabile, anche se soltanto dal punto di vista puramente grafico, in quanto non sono stati sviscerati gli argomenti concernenti la codifica, le stampe, il passaggio dei dati al sistema gestionale e le lavorazioni (forature e tagli), che generalmente si affrontano in un secondo tempo. Nei capitoli che seguono cercheremo di spiegare tutte le fasi per la costruzione di un catalogo utilizzando anche degli esempi, ma date le notevoli potenzialit del programma 3Cad e la vastit delle casistiche presenti nel settore dellarredamento, consigliamo il lettore di usare il presente manuale come supporto al corso di istruzione, fondamentale allapprendimento delle basi del programma, e come guida da consultare per approfondire il linguaggio delle regole.

Capitolo

Come si crea un catalogo


Passi fondamentali per generare un nuovo catalogo

Concetti generali
er creare un catalogo si deve innanzitutto creare la directory (o cartella) in cui le regole del catalogo verranno memorizzate. Questo si ottiene selezionando la voce Setup dal menu ? e posizionandosi sulla scheda Cataloghi: premendo il tasto Nuovo Catalogo apparir la maschera che permette di inserire il nome del nuovo catalogo. Automaticamente viene creata una sottodirectory della directory 3Cad con il nome del nuovo catalogo. In questa cartella vengono creati tre files : EVENTO.mdb, EVENTO.ldb e Gene.erg.

Usare la voce Configurazione dal menu ? per creare un nuovo catalogo

EVENTO.mdb il file del database dove vengono salvate tutte le tabelle del catalogo e tutti gli altri dati di 3Cad (allegato EVENTO.ldb); Gene.erg un file di tipo regola che gestisce lintestazione dellordine. Il database EVENTO.mdb viene generato in modo completamente automatico tramite la lettura di un particolare file di testo chiamato EVENTO.DDF. Questo file, fornito con la procedura, contiene la definizione di tutte le tabelle di 3Cad e si trova allinterno della directory di installazione di 3Cad. Puntualizziamo che questo file deve esistere solamente nella cartella SYSCOM di 3Cad. Durante la lettura dei prossimi capitoli si incontreranno le spiegazioni sul funzionamento delle tabelle base di 3Cad. Di ogni tabella viene riportata la struttura cos come scritta allinterno del file EVENTO.DDF e ne viene fornita la descrizione. Esiste un file di configurazione molto importante, Evento2.ini, che contiene diversi parametri di utilit Oltre a quello generale, presente nella cartella principale del sistema operativo (es. c:\windows), potrebbe esisterne uno personalizzato per catalogo, contenuto nella relativa cartella. Nel corso del manuale, in relazione ad alcuni argomenti, avremo la necessit di spiegare il significato di alcuni dei numerosi flag gestiti in tale file.

Nota
Le parti che descrivono la struttura delle tabelle del database saranno precedute dal titolo DATABASE.

A questo punto si prosegue con la creazione delle tabelle principali del catalogo tra cui colori, dimensioni e varianti.

Colori e finiture
La tabella dei colori, finiture e maniglie viene richiamata selezionando la voce Colori e finiture dal menu Regole. La finestra che si ottiene suddivisa in due sottoschede.
La tabella dei colori permette di impostare qualsiasi colore si renda necessario utilizzare

Per definire la tabella dei colori bisogna scegliere la scheda Colori. Una volta definita, questa tabella fornisce a 3Cad la gamma dei colori che deve utilizzare durante la fase di visualizzazione della composizione in forma grafica. Quando si lavora con una risoluzione grafica che prevede luso di 65000 colori possibile ottenere delle buone approssimazioni della tinta reale dei componenti.

1. Descrizione del colore 4. Visualizzazione del colore

2. Impostazione Colore

3. Regolazioni cromatiche

5. Importazione immagini

Per inserire i colori bisogna digitarne la descrizione nella prima riga libera. Suggeriamo allutente di lasciare il colore zero come colore di errore, definendo una tonalit che lo evidenzia come tale.
Clic su colore normale per modificarlo

I colori possono avere una doppia definizione: una normale necessaria per la visualizzazione durante il caricamento dellordine e una per il rendering. Per gestire la versione normale baster selezionare lomonimo tasto, in questo modo si abilita la finestra dei colori che quella standard di Windows e nella quale ogni colore viene creato come combinazione dei tre colori fondamentali: Rosso,
5

Verde e Blu. Se si vuole gestire il rendering sar necessario definire anche il colore emesso e riflesso. Nel caso della definizione di vetri, specchi e metalli bisogner impostare anche la relativa trasparenza, riflessione e metallica utilizzando le apposite barre di scorrimento.
Tavolozza dei colori Colori Base

Finestra standard Windows per gestione dei colori

di la

Conferma e annulla operazione

Comando per laggiunta ai colori personalizzati

Finestre delle percentuali dei tre colore base, tonalit, luminosit e saturazione

(Per ulteriori spiegazioni vedi Manuale Tecnico di Windows)

DATABASE I colori vengono salvati nella tabella Speciali del database. Nella tabella Speciali non vengono memorizzati solo i colori ma molti altri tipi di informazioni. I colori si trovano tutti allinterno di un unico record di questa tabella. [SPECIALI] 000 001 002 003 #00 , CaT , COD , DES , MEMO , COD ,TEXT 20 ,TEXT 20 ,TEXT 35 ,MEMO ,+CaT;+COD ,T,T

Il primo campo, quello che riguarda il nome del catalogo, viene riempito con il simbolo # che indica che la tabella indipendente dal catalogo. I campi del codice e della descrizione della tabella riportano la dicitura COLORI. Nel campo Memo vengono memorizzati i vari colori separati dal carattere ASCII corrispondente a 009Dec (TABULAZIONE). Per ogni colore vengono memorizzati i seguenti dati:

- codice (che in questo caso il numero della riga della tabella di input dei Colori); - descrizione; - intensit cromatiche di Rosso, Verde e Blu (espresse tramite valori compresi tra 0 e 255). I valori memorizzati riguardano non solo il colore prescelto, ma anche la tonalit di grigio da utilizzare in corrispondenza del colore per stampanti in bianco e nero (valore compreso tra 0 e 255) ed infine il colore di linea che pu assumere i soli valori compresi tra 0 e 15.

I colori con codice da 180 a 200 sono comuni, vale a dire indipendenti dal catalogo in uso e vengono salvati nel file colori.bin. Pertanto non vanno usati! Il colore viene richiamato allinterno delle regole o in fase di impostazione delle tipologie utilizzando il suo codice che corrisponde al numero di riga. Per associare ai colori la rappresentazione dei relativi materiali ed ottenere quindi unimmagine pi realistica del legno o del marmo, possibile importare dei formati di colore predefiniti o costruiti esternamente a 3Cad (ad esempio in formato jpg). A questo proposito con 3Cad vengono fornite una serie di immagini in formato jpg che si troveranno nelle sottocartelle \wrl2\img dove risiede il programma. La ricerca e selezione delle immagini si pu fare utilizzando le due apposite finestre. La scheda Finiture riguarda la definizione dei frontali, delle maniglie, dei piani e di altre tipologie particolari. Anche in questo caso se si vuole gestire il disegno di alta qualit, sar necessario costruire gli elementi una volta per la versione normale ed unaltra per il rendering. Per visualizzare o definire dei frontali bisogna scegliere la scheda Finiture.
Esistono delle Finiture utilizzabili per la creazione degli elementi.

Il programma viene fornito con una serie di finiture gi create, dalle quali possibile partire per eventuali personalizzazioni. Ogni finitura corrisponde ad un file sorgente presente nella sotto-cartella ANTE di SYSCOM. Per poter operare su questi archivi necessario spostarli in una sotto-cartella ANTE del catalogo. Saranno poi visualizzati nella finestra in basso a sinistra (v.figura che segue). Per creare una finitura si deve fare clic nel pulsante +, digitare il nome e il codice negli appositi campi e confermare, scegliere il tipo tra le opzioni ante e maniglie (per tutto ci che non maniglia, va bene il tipo ante). Nella finestra in basso si andranno a scrivere le righe di codice che costituiranno la nuova finitura. Data la specificit e la complessit dellargomento, ne rimandiamo la spiegazione al capitolo 6. Per quanto concerne le finiture, nel database non viene memorizzato nessun dato. Tutte le informazioni dei files compilati sono contenute nel file ANTE.BIN presente nella cartella del catalogo.

Visualizzazione grafica

Tipo di finitura codice e nome Pulsanti di utilit

Archivio di ante di Evento

Definizione con vbscript

Dimensioni
Gli elementi che si disegnano tramite le regole, si possono distinguere in due categorie principali definite colonne e box, in base alla metodologia di costruzione del mobile, a spalla o a bussolotto. Per ogni elemento, sia box che colonna, viene definito un volume di ingombro determinato attraverso una larghezza, unaltezza e una profondit (L,A,P).

L
Il volume di ingombro di un elemento dato dalle grandezze L, A, P

P
Dovendo operare in unarea limitata dellintera colonna o box come se, ad esempio, dovessimo inserire unanta o dei ripiani, avremo la necessit di definire

uno spostamento in altezza (SA) e una dimensione in altezza (DA) dellarea voluta. Le tabelle Da e SA consentono, per lappunto, la determinazione di un volume interno al mobile sul quale poter operare. Tale volume estensibile solo in senso verticale.

DA SA
Analogamente, le variabili SL e DL determinano un volume interno al mobile in grado di muoversi e/o espandersi in senso orizzontale.

SL DL
La determinazione di tutte le possibili quote rende possibile il ridimensionamento immediato dei vani e dei componenti secondo le tre direzioni, inoltre consente il posizionamento automatico dei ripiani e delle ante. Le variabili A, L, P, SA, DA, SL, DL si dicono Variabili di Sistema. Facciamo notare, anche se si riprender largomento in sede di spiegazione delle regole, che queste variabili devono essere precedute dal carattere $ e senza parentesi (contrariamente alle altre variabili). Poich non tutti gli elementi che si disegnano hanno gli stessi valori possibili di larghezza, altezza, profondit (vedi qualsiasi catalogo di mobili), in 3Cad possibile definire pi tabelle di tipo Larghezza, Altezza etc... con nomi diversi. In relazione alla regola in cui vengono usate, nella sezione di Intestazione, devono essere specificate le tabelle A,L,P... a cui il valutatore deve fare riferimento. Per definire le tabelle delle dimensioni necessario, per prima cosa, selezionare la voce Dimensioni del menu Regole. Sullo schermo compare la seguente videata.

Codice e descrizione della tabella

Pulsanti di comando

Ricerca tabella

Dettaglio delle dimensioni

Pulsanti di Comando: Per creare una nuova tabella premere il tasto Nuovo; quindi digitare il codice e la descrizione della nuova tabella. Il codice deve essere, ovviamente, unico; se sinserisce un codice gi esistente, la nuova tabella canceller la precedente. A questo punto possibile inserire i dati: nella prima colonna vanno inserite le misure, espresse in millimetri, nella seconda il codice, cio una lettera o un numero che pu essere usato per costruire i codici (v.codifica articoli cap.4). Per memorizzare la nuova tabella premere il tasto Salva. Se sintende modificare una tabella gi esistente, sufficiente selezionare la tabella digitando il codice oppure attivando la consueta tabella di ricerca con i tre puntini. Per selezionare la tabella desiderata si deve fare clic due volte sulla corrispondente linea dellelenco. Quando la tabella attiva si possono apportare le modifiche, per salvare la tabella premere il tasto Salva. Il tasto Cancella elimina la tabella attualmente selezionata. Anche in questo caso possibile richiamare delle tabelle di dimensioni gi salvate eseguendo le operazioni di ricerca e selezione gi menzionate.

10

Affinch il catalogo possa funzionare correttamente, si deve impostare almeno una tabella per ciascuna delle seguenti misure: L A P Specifica le possibili larghezze del mobile Specifica le possibili altezze. Specifica le possibili profondit.

SA Specifica quali sono i passi in altezza (l'acronimo SA sta per Spostamento in Altezza) in corrispondenza dei quali vengono posizionati gli elementi, come ad esempio le ante. DA Definisce le possibili dimensioni in altezza degli oggetti.

SL Spostamento in larghezza. Indica i passi previsti per lo scostamento orizzontale a partire da sinistra degli elementi, ad esempio le mensole, che non occupano l'intera larghezza del box e che quindi possono essere posizionati in diversi modi. DL Dimensione in larghezza degli oggetti posizionabili in senso orizzontale. Sono le misure in larghezza di elementi come cremagliere o mensole. Vedi SL.

DATABASE [DIMENSIONI] 000 001 , CAT , COD , TEXT 20 , TEXT 18 11

002 003 004 #00

, DES , MEMO , HEAD , COD

, TEXT 35 , MEMO , MEMO , +CAT;+COD , T, T

Le misure vengono memorizzate nella tabella Dimensioni del database. Nel primo campo viene riportato il nome del catalogo a cui si riferisce la tabella memorizzata, nel secondo il codice della tabella, quindi la descrizione. Nel campo memo viene salvata la tabella vera e propria. Le righe sono separate dal carattere ASCII (9), mentre le colonne sono separate dalla virgola. Nel caso delle misure, la tabella viene memorizzata con la prima misura in millimetri, la virgola, leventuale carattere che fa codice, eventuali altre informazioni, quindi il carattere ASCII(9), seguono le altre righe della tabella.

Accanto a quelle viste sopra, esistono altre variabili di sistema che gestiscono le misure di un mobile. Le variabili che seguono non fanno riferimento ad alcuna tabella ma vengono gestite allinterno delle regole ed il loro valore viene assegnato attraverso il comando #LET (v.cap.3). Ne diamo ora la definizione: NA Taglio in altezza della parte inferiore del box. Specificare un valore positivo per questa variabile significa ridurre l'ingombro verticale del box di tale quantit (la riduzione riguarda esclusivamente la parte inferiore) mantenendo allo stesso tempo inalterato il posizionamento ; se il valore , invece, negativo, lingombro del box viene incrementato. In questo modo il fondo del mobile non pi relativo al pavimento ma scostato di una quantit pari a NA. L'uso di NA solitamente legato all'introduzione dello zoccolo (si assegna ad NA laltezza dello zoccolo per con segno negativo, cos da incrementare il box dello spessore dello zoccolo).

NA
NL Taglio in larghezza. Analogo ad [NA] ma con riferimento alla larghezza. Viene ridotto l'ingombro in larghezza del box della quantit specificata in [NL] e soltanto sulla parte sinistra di quest'ultimo. Anche in questo caso luso di valori positivi effettua una riduzione, mentre per incrementare la lunghezza si usano valori negativi.

12

NL
NP Taglio in profondit. Analogo ad [NA] ed [NL] ma con riferimento alla profondit. Viene ridotto l'ingombro in profondit del box ad iniziare dalla schiena. Le quantit positive generano il taglio, quelle negative lincremento.

NP
UL Taglio in larghezza. Analogo ad [NL] riduce per l'ingombro in larghezza del box ad iniziare da dx se negativo (lo incrementa se positivo). UA Taglio in altezza. Analogo ad [NA] riduce per l'ingombro in altezza del box ad iniziare dallalto se negativo (lo incrementa se positivo). UP Taglio in profondit. Analogo ad [NP] riduce per l'ingombro in profondit del box ad iniziare da davanti se negativo (lo incrementa se positivo).

Varianti
Si prosegue con la stesura delle tabelle di Varianti del catalogo

Una volta definite le tabelle delle dimensioni, si prosegue con la determinazione delle possibili varianti del catalogo. Le varianti sono quelle caratteristiche di un elemento che possono essere modificate dalloperatore in fase di costruzione di un ordine permettendogli di personalizzare le composizioni (ad esempio : colore dello schienale, colori ante, colori cassetti, tipi di vetro delle vetrine etc.) Una variante viene creata sotto forma di tabella. Allinterno di una tabella vengono raggruppati valori di natura qualsiasi e si creano delle associazioni. Lassociazione pi semplice quella che lega a una caratteristica il codice interno prescelto per i successivi riferimenti ad essa. Una forma pi complessa di associazione si crea quando ad un elemento corrisponde un maggior numero di informazioni (che possono corrispondere anche a codici di altre tabelle).
13

Usare la voce Varianti del menu Regole per entrare in gestione tabelle varianti

Supponiamo ad esempio di voler creare la tabella che gestisce i colori della struttura o scocca. Per prima cosa si deve scegliere la voce Varianti dal menu Regole. Comparir la seguente schermata. Premere il pulsante Nuovo per creare una nuova tabella.
Icona di collegamento alla tabella colori Campo libero per commenti Inserisci e togli colonne

Codice e descrizione tabella

Classe

Flag per gestione multilingua o codice gestionale

Codice, descrizione e colore opzione Gestione dei marchi delle aziende per il funzionamento del catalogo multifornitore

Innanzitutto si devono digitare le informazioni generali che riguardano la tabella, cio il codice della variante e la descrizione, nel nostro caso il codice sar STR e la descrizione Col. STRUTTURA; vi sono poi degli altri flag: Obbligato che serve per forzare la richiesta, da parte del programma, della scelta di un valore per la variante (si usa soprattutto in cucine). Modello che di solito si usa con valore Su Articolo per legare una variante ad un articolo, anche questo flag trova riscontro pi che altro nellambiente cucina ed ha significato puramente grafico. Non stampa si pu trascurare in quanto la scelta di stampare o meno determinate varianti viene fatta negli appositi moduli di stampa. Classe si usa per impostare un particolare metodo di visualizzazione della variante. Normalmente viene utilizzato nel caso di varianti collegate a colori o immagini: Per i colori si deve impostare #C e il numero della colonna in cui essi sono elencati. In tal modo, in costruzione dellordine, nella fase di selezione delle opzioni della variante, apparir lanteprima dei colori.

14

Anteprima Colore

Per quanto riguarda le immagini, la sintassi : #Bnrcolonna.#percorso dove B sta ad indicare che limmagine collegata di tipo bmp, il nr della colonna quello in cui stato inserito il nome del file.bmp ed in fine, il percorso dello stesso allinterno della cartella del catalogo.

Anteprima immagine

Nota
Suggeriamo al lettore di evitare il riferimento diretto al nome del catalogo allinterno delle tabelle, ma di sfruttare il carattere speciale # che appunto definisce il percorso del catalogo.

Passiamo ora ad inserire le singole opzioni della tabella il cui formato libero e pu contenere varie colonne anche se di default ne vengono proposte solo due.

15

Per continuare con lesempio della scocca, dobbiamo definire i codici dellopzione, le descrizioni e il colore. Per fare tutto ci abbiamo bisogno di tre colonne, quindi ne aggiungiamo una con lapposito pulsante (v. figura). Per dare un titolo alla nuova colonna basta posizionarsi in prossimit di questultima, fare clic tenendo premuto il tasto SHIFT, digitare il nome nellapposito campo e confermare. Per riportare il codice del colore gi definito nella relativa tabella colori, necessario posizionarsi nel campo corretto e scegliere licona dei colori, si aprir la seguente finestra nella quale si seleziona la riga voluta con un doppio clic.

Le varianti possono avere una struttura ad albero. E necessario a tale proposito impostare un flag in Evento2.ini nel gruppo: [INFOGEN] abilitalivellivarianti=1 Limpostazione dei dati per questo tipo di tabella va fatta nel campo del codice opzione inserendo quelli che si possono definire i padri, con dei codici numerici o alfabetici, ed i relativi figli devono avere lo stesso codice pi un sottocodice separato dal primo con un punto (.). I livelli gestibili sono tre. Si osservi, per comprendere quanto detto, la figura che segue:

16

Codice padre o titolo

Codici dei figli

A fronte di tale impostazione dei dati, nella fase di caricamento dellordine, la variante Tipo mensola si presenter come si vede nellimmagine che segue:

Compilando il campo Default con il codice di una opzione, possiamo, per lappunto, determinare il valore di default che dovr assumere la variante in fase di inserimento dellordine.

Nota
Suggeriamo al lettore di fissare sempre il default per le variabili aventi struttura ad albero, cos da avere una visualizzazione corretta della tabella nella fase di inserimento dellordine.

17

Il campo Alias consente di chiamare con nomi diversi la stessa variante. Se dovessimo ad esempio gestire la colorazione dei cassetti dovremmo avere pi varianti con le medesime opzioni: CA1 per il primo cassetto, CA2 per il secondo, CA3 per il terzo, CA4 per il quarto e cos via; per evitare di generare diverse tabelle con gli stessi contenuti, baster inserirne una di generica, ad esempio con codice CAS ed avente tutte le opzioni, per quelle relative a ciascun cassetto sar sufficiente determinarne il codice, ad esempio CA1 con Alias CAS. In questa fase verr richiesto allutente se si vogliono caricare tutte le colonne relative a CAS nella nuova variante CA1, confermando otterremo la medesima tabella, ma con nome CA1. E importante rilevare che ogni modifica effettuata in CAS si ripercuote in CA1 e viceversa, lunico campo che rimane indipendente quello relativo al default , che pu essere diverso da una tabella allaltra. Per le tabelle che richiamano un alias possibile anche escludere delle opzioni (se sono poche), oppure segnalare solamente quelle, che tra tutte, vanno incluse nella tabella attuale. I codici da includere o escludere vanno evidenziati nellapposito spazio riservato, che si pu osservare nella figura che segue:

Spazio riservato per lesclusione o linclusione delle opzioni

Come si pu osservare, la sintassi #E seguito dai codici opzione da escludere, oppure #I seguito dai codici da includere. Il pulsante Marca stato implementato per gestire il cosiddetto catalogo multifornitore. Infatti, si vorrebbe che in un solo archivio venissero caricati i dati di pi aziende. In tal senso, nella tabella delle varianti, si inseriscono a priori i codici delle varie ditte, e poi tutte le varianti ad esse correlate. La visualizzazione e lutilizzo delle stesse saranno vincolati dalla preliminare scelta del marchio. Il flag Mostra codici in lingua consente di visualizzare le colonne nascoste, ossia quelle relative al codice gestionale e alle descrizioni in lingua (fino a cinque).

18

Descrizione della tabella in lingua Flag per visualizzare le colonne nascoste

Codice gestionale e descrizioni in lingua

Come si pu notare, la gestione multi- lingua riguarda sia lintestazione che il contenuto della tabella. Il codice gestionale permette di associare al codice grafico dellopzione un eventuale codice aziendale diverso. E in tal senso una sorta di trascodifica, che consente di trasferire i dati contenuti in tabelle con codici e opzioni generici a qualsiasi programma gestionale, superando i problemi legati ai nomi delle varianti o al numero di caratteri utilizzabili. Come si pu notare nella figura seguente, la sintassi da usare Cod=Opzione, nellesempio rappresentato, 101 il codice gestionale della variante anta e CC, CI, NN ecc. sono i codici delle opzioni.

19

Le varianti sono associate agli articoli nellomonima tabella del database di Evento nel campo VAR. Rimanendo nellesempio riportato sopra, gli articoli con anta come le basi, in corrispondenza di tale campo riporteranno tra gli altri il valore 101. Nel catalogo, per, la variante dellanta continua a chiamarsi _c1ant. Sar necessario sostituire per tutti gli elementi, 101 con _c1ant. In relazione a questa elaborazione, che ovviamente va estesa a tutte le varianti, stata introdotta la gestione dei gruppi. Questa procedura consente di velocizzare la sostituzione delle varianti. E necessario, innanzitutto, individuare gli insiemi di varianti legati ai vari tipi di articoli e attribuire loro un codice. Questo si deve fare attraverso la gestione di una tabella. Dal menu Regole bisogna scegliere la voce Tabelle e caricare la tabella VA, compilare le righe come evidenziato nella figura seguente: nella prima colonna va inserito il codice, nella seconda la descrizione, nella terza le varianti.
Codici varianti grafiche da sostituire a quelle gestionali

A questo punto, nel campo VAR dellanagrafica articoli, invece di scrivere i codici delle varianti, dovremo assegnare il relativo codice di gruppo.

20

Codici varianti gestionali associate allarticolo in anagrafica

Gruppo che sostituisce i codici variante

In questo modo, eventuali cambiamenti a carico della gestione delle varianti verrebbero comodamente estesi allanagrafica, attraverso la modifica della tabella VA. Le varianti vengono richiamate allinterno delle regole nella fase di definizione indicandole con il nome, ma possono venire inserite anche nella valutazione facendo precedere il loro codice dal $, con le parentesi e lindicazione della colonna dove andare a prelevare il contenuto: ad esempio $(STR:3) per estrarre il colore. La loro gestione sar comunque ulteriormente spiegata nel corso del manuale.

21

DATABASE

La parte di intestazione di una tabella di variante viene memorizzata allinterno della tabella Codvar dove infatti troviamo il codice della variante (che identifica quella precisa tabella), la descrizione, il flag di obbligatoriet, il tipo ed un campo memo per le restanti possibili informazioni.

[CODVAR] 000 001 002 003 004 005 006 007 008 009 010 011 012 013 , COD , DES ,TEXT 20 ,TEXT 35 , Codice Variante , Descrizione , Valore Default

, OBBL ,BOOL , TIPO , MEMO ,INTEGER ,MEMO

, Informazioni varie

, FLMOD ,TEXT 1 , flNoStampa ,INTEGER , CODMET ,TEXT 20 , Alias

, deslingua1 ,TEXT 35 , deslingua2 ,TEXT 35 , deslingua3 ,TEXT 35 , deslingua4 ,TEXT 35 , deslingua5 ,TEXT 35 , CLASSE ,TEXT 50

#00,COD,+COD,T,T

Le voci appartenenti a tutte le tabelle delle Varianti vengono memorizzate nella medesima tabella del database EVENTO.mdb denominata Varianti. A tale scopo la tabella stata cos strutturata:

[VARIANTI] 000 001 002 003 004 005 006 007 008 009 010 , CODVAR,TEXT 20, Cod.Variante , CODOPZ,TEXT 60, Valore opzione , DES , MEMO , GES ,TEXT 35, Descrizione ,MEMO ,TEXT 50

, LING1 ,TEXT 35 , LING2 ,TEXT 35 , LING3 ,TEXT 35 , LING4 ,TEXT 35 , LING5 ,TEXT 35 , ordinamento ,LONG

#00,COD,+CODVAR;+CODOPZ T,T Ogni record di Varianti rappresenta una certa opzione appartenente ad una certa tabella. Per questo il primo campo riporta il codice della tabella a cui lopzione si riferisce, il secondo il codice dellopzione e il terzo la descrizione della stessa. Il quarto campo memorizza la terza colonna della tabella, dove vengono riportate informazioni

22

aggiuntive, tabella.

variabili

seconda

del

tipo

di

23

Tipologie
Definire le Tipologie Elementari, cio i componenti base del mobile

Determinate le tabelle di varianti, si prosegue con la creazione delle tipologie elementari. Abbiamo gi detto che in 3Cad si dicono tipologie elementari quei tipi di oggetti di base dai quali si parte per la costruzione di un mobile come ad esempio i fianchi, i ripiani, le ante. Il mobile per interparete costituito da diverse tipologie elementari che possono assumere dimensioni, quantit e aspetto diversi in funzione delle misure e delle varianti dellelemento finito detto colonna. Tra le tipologie elementari possono essere individuati due insiemi particolarmente importanti: (1) (2) Elementi di struttura: fianchi, coperchi, fondi, zoccoli. Facciate: ante, cassetti, schienali bifacciali.

Anche nellambiente cucina o bagni gli elementi sono costituiti da un insieme di componenti quali il fusto, lanta, il top, lo zoccolo ecc.
Usare la voce Tipologie Grafiche dal menu Regole
Elenco Tipologie Descrizione Distinta base estesa

Per creare una nuova tipologia grafica, o per modificarne una gi esistente, si deve selezionare la voce Tipologie dal menu Regole. In questo modo verr attivata una finestra simile alla seguente:

Lato Codice articolo

Orientamento Posizioni e dimensioni Correttivi di dimensioni

Parametri x1,x10

Possiamo notare altre due sottoschede: Macro e Ricalcola Top. In questa sede ne diamo solo una veloce illustrazione, le approfondiremo nel corso del manuale. Macro: scegliendo questa scheda si accede ad un ambiente molto simile a quello delleditor delle regole. Le macro non sono altro che regole richiamabili, a loro volta, allinterno di altre. Se ad esempio abbiamo la necessit di utilizzare frequentemente una grafica, ad esempio la scocca dei mobili da cucina, per
24

evitare di ripetere una serie di istruzioni allinterno di ogni regola che si riferisce a tale scocca, si pu costruire una macro e richiamarla ogni volta che serve. Ricalcola Top: serve per assegnare i codici agli articoli a metro lineare (non solo i top), quando questi cambiano in relazione alle dimensioni. Torniamo alle Tipologie analizzando il significato dei vari campi di questa finestra.

Si crea o modifica una tipologia usando lelenco delle tipologie

Elenco tipologie: lelenco delle tipologie una lista di codici numerici che vanno da 000 a 499. Se un numero riporta a fianco una descrizione, significa che la rispettiva tipologia stata inserita, altrimenti un codice libero. Allinterno di una regola le tipologie vengono richiamate con il codice numerico (non servono gli eventuali zeri iniziali). Per modificare una tipologia esistente, basta portarsi sulla riga che riporta la descrizione della tipologia desiderata e automaticamente, nella maschera posta a destra dellelenco, vengono riportati tutti i dati relativi a tale tipologia. Per crearne una nuova si deve selezionare un codice libero e riempire i campi a destra. Passiamo ad analizzare il contenuto dei dati legati alla tipologia. Alcuni di essi si riferiscono a dei parametri richiamabili e modificabili allinterno delle regole. Accanto al nome che compare nella videata, indichiamo anche quello relativo al parametro che restituiscono.

Posizionarsi sulla riga relativa alla tipologia da modificare o in una riga vuota per crearne una nuova

Il campo codice permette di costruire la codifica dellelemento a magazzino

Codice COD: questo campo viene compilato generalmente nella gestione ad interparete, dove alcune tipologie corrispondono anche ad articoli di vendita (fianchi, ripiani, ecc.). Per quanto riguarda gli altri ambienti: cucina o bagno, la codifica viene generata attraverso le associazioni, di cui parleremo nel capitolo 4. In questo campo si definisce la formula di costruzione del codice. Soltanto attraverso questa formula il programma di grafica in grado di ricavare il codice di magazzino dell'elemento, richiesto in un contesto specifico. Tale codice viene diviso in pi parti, denominate sottocampi. La prima parte, il codice effettivo, obbligatoria se si vuole inserire per lappunto un codice, mentre la seconda parte facoltativa ed a sua volta suddivisa in:
varianti: concatenazione delle coppie variante-opzione: la vecchia scrittura era $(str:@) che corrisponde allattuale str=$(str:1). Funzionano entrambe ma da preferire la seconda. Se si dispone di unanagrafica articoli gi completa delle varianti, non necessario ripeterle, ma verranno lette dal database. commenti: consente alloperatore di introdurre un commento o unannotazione riguardante il componente in questione, pu essere una stringa di tipo qualsiasi speciali: pu essere usato per diversi scopi. Possiamo ad esempio forzare un livello diverso dallo standard previsto per la tipologia , che corrisponde al terzo, definendo #L25

1. Oppure determinare una quantit per loggetto in questione, diversa da uno digitando: #Q10.

La lunghezza complessiva del codice (composta dal codice effettivo unitamente a tutti i sottocampi), ininfluente ai fini della rappresentazione grafica ma deve essere tarata con precisione per la comunicazione con i programmi gestionali. Rimandiamo la spiegazione della codifica al capitolo 4.
Nel creare la tipologia inserire la sua Descrizione

descrizione: in questo campo c la descrizione che si assegna alla tipologia e serve sia come promemoria, che per rappresentare in stampa la descrizione del pezzo qualora esso non risulti in anagrafica. La descrizione della tipologia viene inoltre utilizzata, in fase di compilazione delle regole, per inserire in modo automatico i commenti nelle righe che corrispondono alla tipologia in questione (il commento equivale alla descrizione della tipologia preceduta dal simbolo \\). Lato: serve per facilitare il calcolo delle dimensioni, anche se non fondamentale ai fini della gestione. Per default viene proposta l'origine delle coordinate del box (colonna) sulla quale saranno impostati posizione e dimensioni dell'oggetto (lorigine corrisponde al campo vuoto). Questo campo pu avere significati diversi in relazione al suo contenuto, vediamone alcuni di seguito: 0 Normale (default) 1 Solo perimetro: disegna solo il perimetro dellelemento 2 Solo solido senza perimetro 5 Solo rendering: disegna la tipologia solo nella visualizzazione rendering 6 No grafica: serve per non produrre grafica 7 Togli Pezzo: serve per togliere la tipologia se gi esistente in una determinata posizione 8 Linea: serve per disegnare una linea invece di un parallelepipedo 9 Testo: serve per scrivere testo invece di disegnare 10 Testo: serve per scrivere testo in posizione pianta 11 Oggetto: consente di collegare alla tipologia un 3ds aggiungendo il parametro GL=#percorso\nomefile.3ds (dove il cancelletto sostituisce il nome del catalogo) 12 Oggetto per Alta qualit e rendering: come 11 ma visualizza lelemento solo in rendering o alta qualit 13 Oggetto per rendering: come 11 ma visualizza lelemento solo in rendering.
26

Lato serve per posizionare in modi diversi il componente rispetto allorigine delle coordinate del box

Se lato=6 non viene prodotta grafica , se lato=7 lelemento viene eliminato

19 Cornice: viene utilizzato per il calcolo della cornice o altri profili perimetrali gestibili in pianta, asse LP 20 Piano con estruso: consente di disegnare un piano con bordo sagomato 21 Solido di rivoluzione: permette di gestire figure diverse dal parallelepipedo, utile nel caso di piedini sagomati. 23 Interferenze: non produce grafica, ma occupa lingombro generando un messaggio per eventuali intersezioni con box vicini. Si pu usare ad esempio nel caso della cassettiera vicino alla base angolo. 25 Cornice: uguale al 19 ma gestisce profili sullasse LA 26 Cornice: 19 ma gestisce profili sullasse AP Vedremo nel corso del manuale esempi di utilizzo dei vari lati. posizioni SL,SA,SP e dimensioni L,A,P: forse la parte pi difficile da impostare in quanto si tratta di associare all'oggetto la sua posizione e le sue dimensioni rispetto all'origine di riferimento del box e alle dimensioni del vano, ma anche di fondamentale importanza per la definizione di un catalogo. Ogni tipologia viene pensata da 3Cad come un parallelepipedo con origine nel vertice posteriore in basso a sinistra. Quindi, nei campi posizione si devono inserire le coordinate della posizione dellorigine del parallelepipedo rispetto allorigine del box in cui la tipologia deve essere inserita (vertice posteriore in basso a sinistra). Ad esempio, supponiamo di volere posizionare la tipologia Anta Legno in una costruzione a spalla portante come quella mostrata nella figura seguente. Lanta ha una posizione in larghezza che dista dallorigine del mobile dello spessore del fianco; imposteremo quindi una posizione in larghezza di 25 (le misure sono espresse sempre in millimetri). La sua posizione in altezza solitamente data dalla somma di una costante (altezza della base, in figura rappresentata come uno zoccolo per rendere pi chiaro il disegno) con lo spostamento in altezza del vano in cui l'Anta Legno inserita, cio, supposto che la base sia alta 25, 25+$SA (tabella dimensionale SA degli spostamenti in altezza v. paragrafo dimensioni). La posizione in profondit data dalla profondit del box meno lo spessore delle ante ad esempio $P-20. A questo punto si devono impostare le dimensioni della tipologia, sempre calcolate in riferimento alle dimensioni complessive del vano. Tornando al nostro esempio, la dimensione in larghezza dellanta in una costruzione a spalla sar data dalla larghezza del mobile meno la larghezza del fianco sinistro, vale a dire $L-25; laltezza sar data dallaltezza del vano cio $DA, mentre la profondit corrisponde allo spessore delle ante, nel nostro esempio corrispondono a 20 (vedi esempi figure). In molti casi le dimensioni del box e del vano sono virtuali; la dimensione reale risulta quindi per somma o differenza sulle
27

Le posizione deve essere specificata rispetto allorigine di riferimento del box; le dimensioni si riferiscono al vano che si sta definendo Le misure sono espresse sempre in millimetri

dimensioni virtuali. Ad esempio nel vano da 320 mm, l'Anta Legno alta 318 mm in quanto vengono lasciati 2 mm di spazio, rispettivamente 1 mm sopra e uno sotto. Essendo questa una situazione comune, l'altezza dell'anta sar specificata come altezza del vano "Facciata Legno" meno la costante "2", vale a dire $DA-2 (a volte pu essere pi chiara lindicazione $DA-1-1 che evidenzia il riferimento allaria delle ante).
Lingombro di un oggetto non deve mai intersecare lingombro di un altro elemento

I valori introdotti devono essere il pi possibile corretti e non si deve mai inserire un oggetto all'interno di un altro, ovvero l'ingombro di un elemento non deve mai intersecare l'ingombro di un altro. A volte per, lintersezione pu essere necessaria, come nel caso delle schiene in fresata. In tale situazione, si impostano le misure della schiena come fosse in luce, ovvero appoggiata agli oggetti che la circondano, e, negli appositi campi, dei correttivi in larghezza e altezza che definiscono la misura dellintersezione, ossia della fresata. Le dimensioni reali della schiena risulteranno essere pari alla somma di quelle impostate pi i correttivi e pur disegnando una schiena pi piccola, lanagrafica dellarticolo riporter la misura esatta.

Larghezza colonna $L

Profondit colonna $P

Posizione anta $P - 20

Profondit anta 20 mm Altezza colonna $A

Altezza base 25 mm

28

Larghezza fianco 25 mm

Altezza del vano $DA

Larghezza anta $L - 25 (25 mm la larghezza del fianco sinistro)

Spostamento in altezza $SA

Orientamento: rappresenta la sequenza con cui si devono proporre le tre dimensioni caratteristiche L, A, P. Generalmente si stabilisce lorientamento relativo al senso della venatura del legno, quindi se vogliamo ad esempio definire unanta, dobbiamo pensare di distenderla, per cui la sua lunghezza sar quella che di solito identifichiamo come altezza, laltezza sar quella che normalmente chiamiamo larghezza, la profondit rimane invece invariata. La nuova sequenza sar cos: A,L,P. Per scegliere il tipo di orientamento desiderato, basta fare clic sul relativo pulsante. La definizione di questo dato necessaria sia alla codifica (v. codice barra al capitolo 4), che alla gestione delle lavorazioni (job).
Si possono specificare due colori per lelemento: il secondo colore usato in abbinamento ad alcune facciate

Colori C1 C2: vi sono al massimo due colori per ogni tipologia, anche se normalmente viene utilizzato soltanto il primo; il secondo pu servire per le facciate anta e cassetto dove potremmo avere la necessit di differenziare il colore del pannello (colore struttura) da un eventuale telaio (colore aggiunto). Loperatore deve inserire il codice del colore caricato nella tabella dei colori, se esso univocamente determinato, o il riferimento ad una tabella qualora il colore dipenda da una variante. Riprendendo lesempio della generazione della variante struttura (v. paragrafo varianti), il colore da definire nella tipologia di un fianco sarebbe $(STR:3). Bisogna sempre definire entrambi i parametri C1 e C2, che nel caso sia necessario un solo colore, assumeranno lo stesso valore.

29

La facciata corrisponde ad un codice della tabella finiture, e cio il tipo di facciata che si vuole usare per la tipologia

Facciata FAC: identifica il tipo di facciata per ante e cassetti, oppure la rappresentazione di lavelli, forni o piani cottura. Si fa riferimento alle finiture citate nel paragrafo Colori e Finiture e che approfondiremo nel capitolo 6. Il campo vuoto significa che la tipologia liscia. Anche in questo campo si pu fare riferimento ad una tabella variante. Si ricordi che volendo riferirsi ad un frontale bisogna indicarne il codice senza gli zeri che lo precedono, ad esempio per lanta 0001 basta scrivere 1. Maniglia MAN: identifica la posizione e il tipo di maniglia; il valore da inserire in questo campo ottenuto sommando il codice del tipo di maniglia (contenuto nelle finiture) al valore della posizione voluta. La posizione ha valore 1 quando la maniglia a sinistra (anta destra), 2 quando centrale, 3 quando a destra (anta sinistra). Ad esempio, supponiamo di voler selezionare la maniglia che ha codice 20 e di posizionarla a sinistra: nel campo maniglia scriveremo il numero 21 (o anche 20+1). Qualora si volesse modificare la posizione della maniglia utilizzando il tasto di orientamento predisposto nella finestra di costruzione di 3Cad (cfr. Manuale utente cap. 3), invece di fissare la posizione scrivendo ad esempio 21, potremmo scrivere 20+$PM ($PM la variabile di sistema che contiene il numero della posizione della maniglia cos come selezionato attraverso il tasto di orientamento). Si noti che il codice maniglia non riporta gli zeri iniziali e va modificato moltiplicandolo per 10, ad esempio il codice 0002 verr riportato in questo campo come codice 20. Questo necessario per una questione di compatibilit nella gestione dei dati con la versione 16bit. Anche in questo caso, invece di gestire valori fissi, si pu fare riferimento ad una variante. Disegno DIS: in questo campo si definisce la rappresentazione grafica di elementi che non sono parallelepipedi come ad esempio gli elementi per i terminali. L'ingombro da definire nella tipologia sempre quello totale dato dalle dimensioni in larghezza, altezza e profondit, anche se l'area occupata dalla forma che verr disegnata assolutamente arbitraria. Il disegno viene generato come sagoma di cui parleremo nel paragrafo Sintassi delle Sagome. Rotazione asse AY AX AZ: questo valore permette di ruotare una tipologia in modo indipendente cos da poter utilizzare una particolare tipologia sempre in una determinata posizione. La rotazione si riferisce ai tre assi cartesiani di posizionamento tridimensionale di un oggetto. Parametri Vi poi unultima parte della finestra, i cui campi significativi sono quelli relativi al codice GL ed ai parametri Par.1, Par.2 etc. fino al Par.10. Il primo collegato allinserimento di un disegno 3ds (v. lato 11), gli altri servono per la stesura degli script di definizione delle finiture, per la distinta base su tipologia e per i listini speciali. Tali parametri possono essere anche battezzati con dei nomi pi significativi, basta fare un doppio clic in corrispondenza di quello che si vuole modificare. In un parametro si possono specificare pi valori o varianti separati dalla barra (/) es.
30

Il numero da indicare nel campo maniglia deve essere il codice della tabella maniglie sommato alla posizione voluta 1,2,3 o sommato alla variabile $PM

si Con disegno specifica, per la tipologia, una sagoma diversa da un parallelepipedo

$(COLFIA:1)/$(TPANT:9)/$(STR:1)/$(STR:2). Nelle regole e negli script di definizione della distinta o dei listini speciali i parametri vengono indicati con x1, x2 ecc. ed eventualmente se sono costituiti da pi valori, si fa riferimento anche alla colonna, ricordando che la numerazione parte da zero. Riprendendo lesempio di prima, per estrarre $(colfia:1) bisogna richiedere $(x1:0). Negli script delle finiture il loro contenuto viene estratto attraverso la funzione Calcola (zParametro (1)), Calcola (zParametro (2)) ecc. Anche questo argomento sar ripreso nel corso del capitolo 6. I valori impostati nelle tipologie si possono modificare allinterno delle regole. Alla luce di questo, ad ogni tipologia assoceremo quelli che si possono definire i valori di default dell'elemento a cui la tipologia stessa si riferisce, mentre allinterno delle regole si apportano quelle variazioni rese necessarie dal contesto nel quale la tipologia viene richiamata. Vicino ai campi relativi alla descrizione e codifica della tipologia, possiamo notare dei pulsanti: Barra, Ricalcola, Distinta e Listino Spec. Ne diamo ora una sintetica definizione in quanto sono tutti argomenti che vengono generalmente sviluppati nella fase avanzata del caricamento catalogo, per tanto saranno ripresi nel corso del manuale. Barre: si assegnano agli articoli in anagrafica i rispettivi codici barra (v.capitolo 4 codifica). Ricalcola: serve per gestire le problematiche legate a tipologie particolari, quali i fianchi, che in base alla loro posizione allinterno della composizione, assumono comportamento e codice diverso (fianco terminale-tramezza). Distinta: consente di generare la distinta base attraverso la definizione di uno script (v. capitolo 9). Listino Spec.: ha lo stesso funzionamento della distinta, ma lo scopo quello di generare una lista di elementi che vanno ad incrementare il prezzo delloggetto (tale lista non viene mai visualizzata). Si utilizza, ad esempio, nelle cucine quando i prezzi degli elementi variano in relazione ai frontali, anche in questo caso la gestione avviene attraverso la stesura di uno script.
Commento: Serve collegare il tasto alla procedura elaborata da Tiziano per il codice barra

DATABASE Le tipologie vengono salvate nella tabella Speciali del database. Le tipologie si trovano tutte allinterno di un unico record di questa tabella. [Speciali] 000 , CaT 001 , COD 002 , DES 003 , MEMO #00 , COD , TEXT 20 , TEXT 20 , TEXT 35 , MEMO , +CAT;+COD , T , T

31

Allinterno del primo campo viene inserito il nome del catalogo, poich le tipologie variano da catalogo a catalogo. I campi del codice e della descrizione della tabella riportano la dicitura TIPOLOGIE. Nel campo Memo vengono memorizzate le varie tipologie separate dal carattere ASCII corrispondente a 009Dec (TABULAZIONE). Per ogni tipologia seguenti dati: vengono memorizzati i

- codice (che in questo caso il numero della riga della tabella di input delle Tipologie); - descrizione; - tutti i campi della maschera delle tipologie, ognuno separato dal successivo tramite una virgola.

Tabelle
Le tabelle di 3Cad permettono di organizzare una serie di dati, la cui gestione pu trovare riscontro in varie parti della procedura, come la testata dellordine o le stampe, abbiamo gi visto un loro impiego a proposito dei gruppi di varianti (cfr. par. varianti). Si accede alle Tabelle selezionando lomonima voce dal menu Regole. La schermata che comparir sar la seguente:
Ricerca tabella Casella di attivazione della ricerca delle tabelle nascoste

Si nota che molto simile a quella relativa alle varianti, ma i contenuti trattati sono del tutto differenti. La barra degli strumenti consente le operazioni di creazione, salvataggio, cancellazione gi descritte in varie situazioni. Segnaliamo che possibile inserire delle tabelle, che rimarranno nascoste agli utenti sprovvisti del modulo relativo alla gestione delle Regole. Per ottenere ci, basta
32

far precedere il codice della tabella da una X. Per visualizzarle, necessario attivare la casella Sistema prima di fare la ricerca. Se si effettua la ricerca, attraverso i consueti punti di sospensione, troviamo alcune tabelle gi definite; in questa fase in cui ci apprestiamo a caricare un catalogo, lunica degna di nota quella con codice TP, ossia Tipo Regola. Qui possibile memorizzare dei gruppi di regole. Ogni gruppo riunir un insieme di regole selezionabili dallutente dal relativo elenco durante il caricamento dellordine.

Per creare i vari tipi di regole, allinterno della casella di riepilogo relativa al tipo di tabella, si seleziona la voce
TP- Tipo Regole

i dati della tabella verranno caricati allinterno di un foglio di lavoro tipo spread dentro al quale andremo ad inserire i vari possibili tipi di regole assegnando loro un codice e una descrizione.

33

Selezione tabella TP tipo regola

Elementi della tabella TP tipo regole

Risulta evidente che le voci inserite in questa tabella andranno a personalizzare lambiente di costruzione di 3Cad.

Casella di riepilogo per la scelta del gruppo tipo regola.

Elenco delle regole appartenenti al gruppo selezionato.

Indipendentemente dai gruppi creati dallutente, esiste sempre un gruppo denominato 0-.tutti che contiene tutte le regole del catalogo, qualsiasi sia il gruppo al quale queste ultime sono state associate durante la loro creazione. Per le macro, vale a dire le composizioni presenti a listino, la gestione equivalente. Si creano dei gruppi caratterizzati da codice e descrizione nella tabella TM tipo macro, nel momento in cui si salveranno le macro (v.capitolo 4), ci sar la
34

possibilit di attribuire ad ognuna di queste un determinato gruppo, cos da facilitare la selezione da parte dellutente in fase di caricamento dellordine. Sia il tipo regola che il tipo macro sono tabelle legate alla gestione dei cataloghi di interpareti, per quanto concerne le cucine o i bagni di solito non necessario caricarle. Le altre tabelle: Agenti, Categoria merceologica, listini ecc. non hanno rilevanza per la grafica, sono piuttosto legate a problematiche produttive e gestionali delle aziende e verrano approfondite nel corso del manuale.
DATABASE Le voci appartenenti a tutte le 3Cad(quindi non solo di TP) vengono nella medesima tabella del database denominata Tabelle. A tale scopo la stata cos strutturata: [TABELLE] 000 001 002 003 004 005 006 007 008 #00 , Tip , Cod , Des , INFO , DESL1 , DESL2 , DESL3 , DESL4 , DESL5 ,COD ,+Tip;+Cod ,T,T ,TEXT 3 ,TEXT 10 ,TEXT 35 ,MEMO ,Tipo Tabella ,Codice Tabella ,Descrizione ,Altre Informazioni ,TEXT 50 ,TEXT 50 ,TEXT 50 ,TEXT 50 ,TEXT 50 Commento: Controllare la reale struttura delle tabelle (Mirko 14tabelle di 05.-03) memorizzate EVENTO.mdb tabella

Ogni record di Tabelle rappresenta una certa opzione appartenente ad una certa tabella. Per questo il primo campo riporta il codice della tabella a cui lopzione si riferisce, il secondo il codice dellopzione e il terzo la descrizione della stessa. Il quarto campo memorizza la terza colonna della tabella, dove vengono riportate informazioni aggiuntive, variabili a seconda del tipo di tabella.

35

Importazione dei dati


Le tabelle di 3Cad vengono memorizzate nel database di Evento, ma per facilitare limportazione di dati da altri cataloghi o da ambienti diversi, stata implementata una nuova funzione che consente, appunto, di inserire nel catalogo in uso, tipologie, varianti e dimensioni provenienti da archivi differenti. Per ogni catalogo installato esiste una sottocartella XDATI che contiene un file per ogni tipologia, tabella variante, tabella dimensionale e macro inserite. Tali files hanno estensione DAT e un prefisso che identifica il tipo di dato contenuto (T per tipologia, D per dimensione, V per varianti, TM per macro). Allinterno della procedura, nelle gestioni relative alle tabelle sopra citate, la barra degli strumenti stata implementata con un nuovo tasto che esegue limportazione. Se ad esempio si sta lavorando nella tabella delle dimensioni e si esegue limportazione, la videata che si aprir sar simile alla seguente:

Tasto per accedere agli altri ambienti e selezionare nuove tabelle Elenco dei dati

Tasto per eseguire limportazione

I files che compaiono nella lista a sinistra sono quelli presenti nella cartella XDATI del catalogo in uso, per accedere alle tabelle di altri ambienti si deve fare clic sul tasto Importa e selezionare i dati voluti. La copia avviene cliccando su Esegui Ripristino, dopo avere selezionato le tabelle da importare.

36

Capitolo

Regole Grafiche
Concetti generali
a caratteristica di maggiore interesse nel sistema 3Cad l'opportunit fornita all'utente di interagire con il programma, non solo attraverso i meccanismi di comunicazione standard, quali le finestre, i pulsanti e tutti gli strumenti di controllo presenti nel sistema operativo Windows, ma anche con un linguaggio semplificato che permette di descrivere le tipologie elementari e di combinarle in tutti i modi consentiti al fine di realizzare un mobile. 3Cad prevede quindi due livelli di utilizzazione: (1) Interazione, ovvero controllo diretto (attraverso tastiera e mouse) degli strumenti forniti nelle numerose finestre dell'applicazione. (2) Programmazione, ovvero la stesura delle regole per la definizione di oggetti elementari o complessi che possano essere richiamati al fine di assemblare una composizione.
Una regola grafica una sequenza pilotata di riferimenti alle tipologie elementari

Una regola grafica composta da una sequenza pilotata di riferimenti alle tipologie elementari, le quali devono essere state precedentemente definite nel database attraverso gli appositi strumenti forniti da 3Cad che abbiamo descritto nel primo capitolo. Per sequenza pilotata si intende la possibilit di controllare il flusso di attivazione delle tipologie attraverso l'uso di strutture logiche di controllo. Una tipologia elementare, una volta richiamata, in grado di produrre contemporaneamente l'immagine grafica e il codice dell'oggetto.

Editor Regole
3Cad mette a disposizione delloperatore un particolare ambiente dedicato alla generazione delle regole. Vi si accede dal menu Regole, Regole. Si presenter una finestra simile a quella che segue.

37

Elenco delle Regole. Tasto per editare la Regola.

Barra degli strumenti.

Nellelenco di sinistra compaiono le regole gi salvate. Come si pu notare lestensione ERG, mentre per il file compilato lestensione ERX. Se il catalogo nuovo, e quindi vuoto, la lista contiene solamente la regola vuota Gene.erg (testata) di cui ci occuperemo pi avanti. Per eliminare un file basta selezionarlo e fare clic su Cancella dalla barra degli strumenti. Per editare un file basta selezionarlo e fare clic su Edit. Per visualizzare la grafica prodotta da una regola baste selezionarne il nome dallelenco. Per creare una nuova regola si fa clic su Nuovo, sempre dalla barra degli strumenti, si digita il nome e si conferma. Per scrivere la nuova regola necessario comunque selezionare Edit. La videata che seguir conterr due sottoschede: Definizioni e Valuta. La costruzione di una regola divisa, infatti, in due parti:
Definizioni : la parte in cui si definiscono le caratteristiche generali della regola, come il suo nome, il gruppo di appartenenza, le tabelle di dimensione etc. Valuta : la parte in cui si utilizza il Linguaggio delle Regole per definire quali sono i componenti base dellelemento (tipologie), come sono disposti uno rispetto allaltro, il loro colore etc. Valuta un vero e proprio ambiente di editazione simile a quello di un qualsiasi linguaggio di programmazione.
La regola viene interamente memorizzata in un file ASCII editabile

Dal punto di vista tecnico entrambe queste parti, che loperatore modifica utilizzando la finestra Edit, in due schede distinte, vengono poi memorizzate allinterno di un unico file di tipo testo che avr estensione ERG, in cui le varie sezioni sono contenute in gruppi diversi. E possibile accedere al file ASCII di qualsiasi regola tramite lapposito comando dalla barra degli strumenti. Il relativo file compilato ha estensione ERX e si crea automaticamente quando si esce dallEdit. Le regole si possono generare con qualsiasi editor di testo, in tal caso, prima di essere utilizzabili nella costruzione dellordine con 3Cad, devono essere compilate con lapposito comando presente nella barra degli strumenti.
38

Nota
Anche in questa sezione faremo precedere alla spiegazione delle parti riguardanti leditazione del file testo di una regola, il titolo ASCII.

Definizioni
La scheda Definizioni contente i dati base di una regola

Questa scheda consente linserimento dei dati di base di una regola; vediamo in dettaglio tutte le voci contenute.

Intestazione della regola

Elenco delle variabili usate dalla regola

Tipo: si seleziona il gruppo di appartenenza della regola, corrispondente ad un codice della tabella TP - Tipo regole (come visto nel capitolo 1), precedentemente caricato. Per scegliere il tipo di regola si fa clic sulla freccia a destra che apre la casella di riepilogo. Descrizione: la descrizione della regola; viene visualizzata nellelenco delle regole nella fase di Costruzione dellordine. Commenti : sono delle righe aggiuntive di descrizione o commento alla regola. Codice: Luso di questo campo legato alla gestione delle Macro (v. cap.4). Infatti, se si attribuisce un codice ad ogni regola,
39

indipendente dal codice anagrafico, quando si salva una macro, anche questo viene memorizzato. Tale gestione consente il riconoscimento delle colonne. Chiariamo questo concetto: se nel caricamento dellordine non utilizziamo i codici delle macro, ma costruiamo le colonne partendo dai componenti, il programma , se sono stati definiti i codici nelle regole, in grado di risalire alla macro partendo dai componenti. Nel preventivo comparir cos solo il codice della macro. Il codice da attribuire alla regola libero, ma suggeriamo di seguire un certo criterio di definizione che pu essere questo: un nome che sia legato al tipo di elemento seguito da $L$A$P che ne determina le dimensioni. Ad esempio, nel caso della regola anta, il codice potrebbe essere il seguente: ANTA$L$DA. In generale, nel codice deve essere riportato tutto ci che servir a differenziare una macro dallaltra. Se ad esempio il colore dellanta sar determinante nella definizione delle composizioni, sar necessario specificare nel codice anche la variante che lo gestisce, si otterr cos la stringa: ANTA$L$DA$(ANL:1) dove ANL la variante del colore anta. Perch la funzione sia abilitata nel file Evento2.ini del catalogo deve esserci il seguente flag nel gruppo [INFOGEN]: RicalcolasempreMacro=1 Foto: in questo campo riportiamo il nome di un eventuale file .BMP , interno alla directory di lavoro (catalogo) , corrispondente alla regola da noi disegnata con 3Cad. Tale immagine verr visualizzata nella finestra di Costruzione. Varianti Obbligatorie: se durante lutilizzo di questa regola si vuole obbligare loperatore alla selezione di un valore per una certa variante, si specificano in questa riga le varianti in oggetto (sempre se allinterno della tabella variante il flag di obbligatorio non gi impostato). Link : si tratta della linea di collocamento della regola. E utilizzato solo in cucine dove c lesigenza di posizionare ad una certa quota alcuni mobili come i pensili. E legato ad una tabella di valori impostata nelle altezze dei flag speciali (v. paragrafo Configurazioni particolari del catalogo). Link Precedente / Link Successivo : si tratta del tipo di collegamento del box corrente, rispetto al box precedente e rispetto al box successivo. Il tipo di collegamento chiamato Link corrisponde ad un numero della tabella dei Link, a cui si accede nella fase di costruzione dellordine facendo clic con il tasto destro del mouse sul pulsante collegamenti (vedi manuale utente), e ci serve per posizionare il box della regola corrente, in una certa posizione relativamente al box precedente o successivo. Questo numero il primo di 5 parametri che devono essere inseriti obbligatoriamente in queste due righe, se
40

diversi da zero e separati da virgole. Vediamo il significato dei vari parametri :

0
Tipo Link

Spostamento angolare

Spostamento in Larghezza Spostamento in Altezza

Spostamento in Profondit

Gli spostamenti in Larghezza, Altezza e Profondit servono per comunicare a 3Cad di posizionare il nuovo box secondo la collocazione stabilita dal Tipo Link, ma con degli spostamenti aggiuntivi in larghezza e/o altezza e/o profondit che inseriamo usando questi parametri; spostamento angolare serve per posizionare il nuovo box con una certa rotazione che verr sommata a quella eventualmente prevista dal Tipo Link Lo spostamento angolare in senso antiorario.

Riportiamo di seguito la lista completa dei possibili link. Il numero di link sempre formato da 3 cifre numeriche. Facciamo notare al lettore, che questi campi erano utilizzati per lo pi nella vecchia versione del programma, quando non esisteva ancora la funzione ADDLINK, che spiegheremo nel capitolo relativo al linguaggio delle regole e che consente di collegare i box tra loro con maggiore flessibilit.
NUMERO LINK 101 102 103 104 201 202 203 204 301 302 303 304 401 402 403 404 DESCRIZIONE COLLOCAMENTO destro base retro destro base fronte destro ponte retro destro ponte fronte sinistro base retro sinistro base fronte sinistro ponte retro sinistro ponte fronte fronte base sinistra fronte base destra fronte ponte sinistra fronte ponte destra retro base sinistra retro base destra retro ponte sinistra retro ponte destra
41

501 502 503 504 601 602 603 604

sopra retro sinistra sopra retro destra sopra fronte sinistra sopra fronte destra sotto retro sinistra sotto retro destra sotto fronte sinistra sotto fronte destra

Per questo primo gruppo di link si nota una certa convenzione nella generazione dei numeri di link. La prima cifra del numero corrisponde ai seguenti lati di collocamento: 1=destro 2=sinistro 3=fronte 4=retro 5=sopra 6=sotto La seconda cifra 0 indica che non ci sono variazioni angolari per il posizionamento dellelemento. Lultima cifra numera i possibili collocamenti allinterno del gruppo corrispondente alla prima cifra.
NUMERO LINK 111 112 113 211 212 213 121 122 123 221 222 223 411 131 132 133 231 232 233 DESCRIZIONE COLLOCAMENTO 90 gradi sullo spigolo destro 90 gradi fronte destro 90 gradi lato destro 90 gradi sullo spigolo sinistro 90 gradi fronte sinistro 90 gradi lato sinistro -90 gradi sullo spigolo destro -90 gradi dietro destra -90 gradi lato destro -90 gradi sullo spigolo sinistro -90 gradi dietro sinistra -90 gradi lato sinistro 180 gradi contrapposto 60 gradi sullo spigolo destro 60 gradi fronte destro 60 gradi lato destro 60 gradi sullo spigolo sinistro 60 gradi fronte sinistro 60 gradi lato sinistro

42

141 142 143 241 242 243 151 152 153 251 252 253

45 gradi sullo spigolo destro 45 gradi fronte destro 45 gradi lato destro 45 gradi sullo spigolo sinistro 45 gradi fronte sinistro 45 gradi lato sinistro 30 gradi sullo spigolo destro 30 gradi fronte destro 30 gradi lato destro 30 gradi sullo spigolo sinistro 30 gradi fronte sinistro 30 gradi lato sinistro

Anche in questo secondo gruppo di link si pu notare una certa convenzione nella generazione dei numeri di link. La prima cifra del numero corrisponde ai seguenti lati di collocamento: 1=destro 1=90 gradi 2=sinistro 3=fronte 4=retro 5=sopra 4=45 gradi 6=sotto 5=30 gradi La seconda cifra indica langolo di collocamento dellelemento: 2=-90 gradi 3=60 gradi Lultima cifra numera i possibili collocamenti allinterno del gruppo corrispondente alle prime due cifre.

Esempio: supponendo di essere in visualizzazione pianta vogliamo posizionare il nuovo box (2) usando il Tipo Link 111 (vedi tabella) ma con uno spostamento in larghezza di 20 mm e uno spostamento angolare di 10 rispetto al box precedente. Allinterno della regola specifica, in corrispondenza del campo Link Precedente scriveremo: 111, 20, 0, 0, -10
Spostament o in larghezza di 20mm

(1)

(2)

Angolo di spostamento di -10

43

Tabella larghezze : poich abbiamo visto, nel capitolo precedente, che si possono gestire pi tabelle per ogni tipo di dimensione, una volta inserite le varie tabelle per la larghezza, altezza, profondit (almeno una per ogni tipo di dimensione), si definisce per ogni regola la tabella larghezza, altezza, ... da utilizzare; la selezione avviene sempre dallelenco che si apre cliccando sulla freccia corrispondente sulla destra; Tabella Altezze, Profondit, Spostamenti in Altezza(SA), Dimensioni in Altezza(DA), Spostamenti in Larghezza (SL), Dimensioni in Larghezza (DL): vale lo stesso discorso fatto per la tabella larghezze. Facciamo presente lutilizzo della barra di scorrimento per visualizzare le informazioni che non si vedono.

Icona

Tabelle dimensionali

Nuovo box

Varianti

Dimensioni massime, minime e default

Modo Add : rimasto il campo per compatibilit con la vecchia versione Evento 16, ma non viene utilizzato. Link sx Prec. e Succ. : vale quanto detto precedentemente per i Link. La doppia definizione necessaria per gli angolari,
44

soprattutto in cucine, nel qual caso lelemento collegato ad un box sia a dx che a sx, ma come gi detto, opportuno usare gli ADDLINK Nuovo Box: necessario fissarlo a 1 se la regola dovr sempre generare un nuovo box. Nel caso di regole relative ad elementi come ante, ripiani, cassetti, che per loro natura devono essere posizionati allinterno dei vani e non devono quindi mai generare un nuovo box, questo campo va settato a 2. Quando il campo vuoto significa che gli articoli potranno essere liberamente inseriti a discrezione dellutente, sia allinterno di box esistenti che generandone di nuovi. Il riquadro che si trova in alto a destra contiene licona che verr visualizzata, insieme alla descrizione della regola, nellelenco della finestra di Costruzione. Cliccando sopra tale riquadro compare un elenco di tutte le icone utilizzabili per rappresentare la regola. Facciamo notare che le icone sono dei file bitmap in dotazione al programma e risiedono nellomonima cartella di 3cad.

Immediatamente sotto alla sezione delle icone troviamo la tabella dei campi di variabilit delle dimensioni: si tratta , in termini pratici, delle dimensioni massime e minime impostabili dalloperatore per la regola, e delle dimensioni di default proposte al momento dellutilizzo della regola stessa. Quando lelemento viene selezionato allinterno del relativo elenco della finestra di Costruzione, vengono proposte le dimensioni di default qui predefinite; loperatore pu comunque variare le misure dellarticolo mediante lo stiramento o la selezione nei relativi campi L, A, P. I valori massimi e minimi che lutente potr scegliere saranno quelli stabiliti in questa tabella. Si ricordi che lordine dei dati sempre L, A, P ossia larghezza, altezza e profondit. Settando il flag misura fissa per una o pi dimensioni, in fase di costruzione loperatore non avr a disposizione la scelta delle dimensioni caratteristiche, in quanto vengono bloccate le relative tabelle, potr solo digitare dei valori fissi. Il flag no speciali permette di attribuire alla regola solo le misure contenute nelle tabelle di riferimento, ma non consente di immettere dei valori differenti, in pratica vieta il cosiddetto fuori misura. La parte inferiore della schermata dedicata alle varianti. In questa sede necessario dichiarare quali di esse saranno richiamate dalla regola. Oltre alle varianti definite con la procedura gi descritta, potremmo avere la necessit di introdurne di altre, utili solamente alla grafica in questione e per le quali non bisogna dare alcuna definizione nella relativa tabella. Chiariamo il concetto con un esempio: larticolo anta nella misura 600 mm potrebbe avere un frontale singolo o doppio, a discrezione delloperatore. Per risolvere il problema bisogna
45

generare una variante che permetta tale scelta da parte dellutente. In seguito spiegheremo come creare questo tipo di variante, prima per vediamo il significato dei vari campi presenti. La prima colonna, titolata con L (lock), blocca la variante nella regola. In tal modo eventuali modifiche o ricompilazioni della tabella non vengono riconosciute. Per bloccare tutte le varianti della regola basta selezionare la casella Protetta, situata nella parte in alto a destra della videata.

Con questo tasto si accede alla tabella varianti

Flag per la protezione di tutte le varianti della regola

Digitare il nome della variante o premere ? per visualizzare la tabella varianti

Variante: bisogna digitare il nome della variante desiderata, oppure si ricerca nellapposita tabella a cui si accede con il tasto ? Il tasto Varianti, situato nella barra degli strumenti, consente di entrare nellomonima tabella e di gestirla con tutte le funzioni gi spiegate. Tipo: spostandosi nella seconda colonna e cliccando sulla freccia a destra, si aprir una casella di riepilogo contenente vari tipi , vediamone il significato: Variante : il tipo pi frequente in quanto si riferisce alle varianti classiche, si seleziona automaticamente scegliendo una variante dallelenco visualizzato con ?, va invece selezionato quando si scrive manualmente il nome della variante. Libero: molto usato per inserire delle varianti al volo, senza dover passare per la tradizionale gestione. I valori vanno inseriti nellomonima colonna usando leditor di testo messo a disposizione (ogni valore seguito da vai a capo), oppure possono essere digitati liberamente dalloperatore nel momento in cui viene caricata la regola. Facciamo un esempio: se caricando dei ripiani volessimo utilizzare dei passi di spostamento diversi da quelli standard, potremmo gestire una variante $(PASSI), alla quale lutente, in costruzione dellordine, dovrebbe assegnare dei valori separati da punto e virgola. La variante di tipo libero sempre costituita da una sola colonna a cui si fa riferimento con lo zero: $(PASSI:0).
46

Colonna dei valori gestibili con la variante di tipo libero

Valore fisso: simile alla variante di tipo libero, ma gestisce un solo valore fisso non modificabile dallutente. Sagoma: si mette a disposizione dellutente un editor per la costruzione di sagome libere simile ad un cad bidimensionale (flag Evento2.ini gestionesagome=*). Gruppo: nel GRUPPI.INI del catalogo possono essere dichiarati alcuni gruppi di varianti che trovano utilizzo in pi regole. In tali regole baster richiamare il gruppo e automaticamente verranno visualizzate tutte le varianti che lo compongono. Sel.SQL: viene generalmente usata nella regola di testata (testa.erg), che al momento non abbiamo ancora descritto. E necessaria per estrarre dei dati dalle tabelle anagrafiche. Nella colonna comando viene inserito il nome del comando, mentre lelaborazione viene descritta nel gruppo relativo a quel comando nel valutatore della regola. Selezione da tabella: anche questa viene generalmente usata nella regola di testata. Consente di estrarre dei dati dalle tabelle di evento. Sel. Multiple: consente di selezionare pi opzioni. Misura: come la variante di tipo libero ma accetta solo valori numerici. NoSi e SiNo: sono varianti utilizzabili come swich che restituiscono valore 0 o 1 . La prima avr come default No, la seconda S. Separatore: in presenza di un elevato numero di varianti, possiamo creare dei raggruppamenti titolati, che permettano una elencazione pi chiara. In testa alle varianti che faranno parte del capitolo, scriviamo il nome dello stesso nella colonna Varianti e gli attribuiamo il tipo separatore. Nel momento in cui si vanno a definire le opzioni, in collaudo o in costruzione dellordine, prima di accedere alle varianti, dobbiamo aprire il relativo capitolo.
Commento: Da fare documentazione con Patrizia

47

Nascosta: nasconde la variante nella fase di collaudo o costruzione. Viene utilizzata quando allinterno della regola viene fatta lassegnazione di una variante con il comando LETV. Vedremo di approfondire largomento in sede di spiegazione del linguaggio delle regole. Colore: in fase di costruzione viene aperta la finestra di scelta dei colori di windows, il colore selezionato viene memorizzato come valore numerico nella variante. Font: viene aperta la finestra windows di scelta del tipo di carattere. Le informazioni relative al tratto, dimensioni e colore vengono memorizzate nella variante. File: in fase di collaudo o costruzione viene aperta la finestra per la ricerca dei file, il file selezionato viene salvato con tutto il percorso nella variante. Immagine: viene aperta una finestra per la ricerca delle immagini, vengono visualizzati solo i file di tipo jpj o bmp. Una volta selezionata, limmagine pu essere modificata. Viene salvata nella variante. Editor: in fase di collaudo o costruzione viene aperto un editor di testo, il contenuto viene salvato nella variante. Default : consente di assegnare delle costanti nella regola utilizzando una tabella variante. Praticamente, se ad una variante viene associato il tipo default, tutte le opzioni di tale tabella vengono assegnate come variabili della regola. CatGem :il lettore pu trascurare questo tipo, in quanto viene usato per particolari collegamenti gestionali. Usare la barra di scorrimento per trovare tutte le voci. Alias: si utilizza questa funzionalit quando c la necessit di sdoppiare una variante. Classico lesempio dei cassetti dove anche se la variante generalmente unica, bisogna poter colorare differentemente i vari cassetti. Il nome della variante originale va nella prima colonna, i derivati si mettono negli alias (v.figura). Abbiamo gi affrontato questo problema nel paragrafo relativo alla gestione delle varianti. In effetti si fa riferimento allo stesso concetto ed possibile adottare un metodo o laltro indifferentemente.

48

Colonna Alias

Validit: in questa colonna possiamo condizionare la presenza di una variante al verificarsi di un determinato evento. Ad esempio la definizione del telaio ha senso solo se lanta non liscia. Supponiamo di avere una variante TIPOANTA che contiene i vari tipi di frontali: Codice 1 2 Descrizione Anta liscia Anta con telaio Anta 2 7

Nella tabella TELAIO abbiamo la definizione dei colori come segue: Codice 1 2 3 Descrizione Telaio noce Telaio bianco Telaio ciliegio Telaio 1 0 2

Costruendo la regola dellanta, nellapposita colonna inseriamo la variante TIPOANTA e TELAIO (in realt per definire unanta servono anche altre varianti ma noi consideriamo solo quelle utili al nostro esempio). Nel campo di validit, in corrispondenza del telaio, scriviamo $(TIPOANTA:1)=2 Questo fa s che la variante telaio compaia solo se il tipoanta 2 ossia con telaio.

49

Validit

Descrizione

Descrizione: permette di dare una descrizione alle varianti inserite localmente. Con la barra di scorrimento si visualizzano le altre colonne disponibili. Col.Codice: la gestione di questo campo era prevista anche in Evento 16bit ma in 3Cad stata ampliata. La definizione di questa colonna consente di valutare solo determinati campi della variante in esame. Ricorriamo ad un esempio per chiarire il suo utilizzo. Facciamo sempre riferimento allanta e consideriamo di avere i frontali che nella versione laminato hanno dei colori diversi rispetto al laccato. Nella definizione delle varianti (v. cap.1) costruiremo una tabella tipoanta come segue: Codice 1 2 Descrizione Laminato Laccato

Definiremo di seguito la tabella dei colori dellanta anl in modo tale da porre in relazione la finitura e i colori: Codice AVI CIL FAG GIA MAG
50

Descizione Colore Avio Ciliegio Faggio Giallo Magnolia 6 1 2 4 3

Finitura 2 1 1 2 2

NOC VER

Noce Verde

0 5

1 2

Abbiamo associato il numero 1 ai colori ammessi per il laminato e 2 per i laccati. Nella definizione della regola dellanta dovremo associare entrambe le varianti e porle in relazione, per questo ad anl in Col.Codice dovremo settare quanto segue: $(ANL:4)=$(TIPOANTA:1) In questo modo si andranno a visualizzare solamente le opzioni relative al tipo di finitura scelta.

Col.Codice

Comando: Viene utilizzato principalmente allinterno della regola TESTA.erg (regola di testata) per eseguire dei comandi particolari, legato al tipo di variante selezione da tabella o selezione SQL. Valori: Viene utilizzato nel caso di varianti di tipo libero per fornire allutente una scelta di valori. Minimo/Massimo: nel caso si voglia controllare che una determinata variante di tipo misura non assuma valori al di fuori di un minimo e un massimo consentiti. C1: possibile evidenziare il fondo dove viene descritta la variante scegliendo la tonalit tra una gamma di colori predefiniti. C2: possibile descrivere la variante con dei caratteri diversi rispetto allo standard.

51

ASCII A livello di file testo, tutte le informazioni della scheda Intestazione della regola vengono memorizzate in tre gruppi distinti allinterno del file .ERG (si vedono utilizzando lEditor ASCII dal menu Files). Il primo il gruppo INFO (di cui riportiamo di seguito un esempio) il quale riporta tutte le informazioni della scheda tranne la tabella delle Dichiarazioni e la tabella delle Eccezioni. E infatti allinterno del gruppo GENE che vengono riportate, in forma tabellare , le tre colonne e tutte le righe scritte nella tabella Dichiarazioni (vedi esempio) mentre allinterno del gruppo [ECCEZIONI] si trovato le righe scritte nellarea delle Eccezioni. Esempio: [INFO] Versione =100 Tipo =001-Parete Descrizione=Facciata Ante Legno Commenti = Codice = Foto = Var.Obb. = Link =0,0,0 Icona =005 Dim.Minima =0,0,0 Dim.Massima=5000,5000,5000 Dim.Default=0,0,0 Tab.Dim. =L,A,P,SA,DA,SL,DL [GENE] T , MODELLO TTT , SCH TTT , FAC [ECCEZIONI] #IF $(STR:3)=20,IL COLORE ROSSO NON E AMMESSO Eccezioni il nome dellarea testo utilizzata per la gestione dei casi particolari: quando si vuol far comparire un particolare messaggio al verificarsi di una certa condizione, si scrive una riga di codice apposita in questa area. Si utilizza la sintassi gi spiegata per la grafica delle regole (valgono quindi le strutture di controllo del linguaggio delle regole). Chiariamo con un esempio. Esempio: digitando la seguente riga allinterno delle Eccezioni, facciamo comparire il messaggio Questo tipo di anta non prevede il colore Rosso nel caso in cui il modello anta abbia codice 10 (corrispondente al tipo di modello) ed il colore selezionato sia il rosso : #IF $(MODANTA:1)=5 & $(STR:1)=20,Questo tipo di anta non prevede il colore Rosso

dove MODANTA la tabella varianti per i modelli e dove STR la tabella varianti per i colori struttura.
Nota
Il gruppo ECCEZIONI ha perso di significato con lintroduzione del comando #MSG (v.cap.3) che consente di scrivere i messaggi.

52

Valuta
Una volta completata lintestazione della regola, si passa alla fase di definizione grafica attraverso il linguaggio e le funzioni messe a disposizione da 3Cad. Larea Valuta una vera e propria area di editazione simile a quella degli editor di testo. La regola viene generata scrivendo le tipologie da richiamare per costruire lelemento in oggetto e definendo le strutture di controllo necessarie per guidare la costruzione della grafica. Il nome Valuta attribuito a questa scheda significa, appunto, che quello che viene scritto viene valutato producendo come risultato la grafica dellelemento. La sezione dedicata alla costruzione grafica dell'elemento quella che pi assomiglia al listato di un programma. Attraverso le istruzioni di controllo di flusso della famiglia IF (vedi paragrafo Comandi cap. 3) possibile ottenere diverse sequenze di attivazione per le tipologie elementari. Come detto nell'introduzione, una regola grafica consiste in una specie di programma che viene eseguito dall'inizio alla fine una volta sola. In questo programma, che pi corretto chiamare sequenza di controllo, vengono richiamate le tipologie elementari precedentemente definite nella tabella delle Tipologie (vedi cap. 1 par. Tipologie). L'attivazione di una tipologia elementare consiste nel riportare, ad inizio riga, il codice che la identifica ed eventualmente una sequenza di parametri separati da virgole. Il numero di parametri non fissato, semplicemente basta inserire il nome del parametro seguito dal simbolo = e dal valore che si vuole assegnare al parametro. La lista di tutti i possibili parametri utilizzabili per richiamare la tipologia esposta nel paragrafo Attivazione delle Tipologie del capitolo 3. Ogni volta che si esce dallEditor della regola viene effettuato il salvataggio della stessa come file ERG. La compilazione crea il relativo ERX.

Salva la regola senza uscire dallEditor

Pulsante Ripristina, permette di annullare lultima editazione Area grafica Editor Regole

Di seguito riportiamo un esempio di regola grafica ed accompagneremo il lettore nella comprensione riga per riga della stessa, attraverso una simulazione
53

del metodo interpretativo utilizzato da 3Cad. Anche se in questo stadio di lettura pu sembrare prematuro parlare delle regole cos in dettaglio, riteniamo che un esempio ben congegnato e documentato possa essere di aiuto per la comprensione dei capitoli successivi. Il lettore per esortato a non soffermarsi troppo sui dettagli, anche se presenti, ma a cogliere il senso generale del funzionamento, soprattutto per quanto riguarda il flusso di controllo attraverso il quale i componenti elementari vengono richiamati e posizionati nello spazio tridimensionale. La seguente regola grafica produce una colonna composta da base, cappello, fianco, zoccolo e due ripiani nel caso l'altezza sia maggiore di 1400 millimetri, mentre un ripiano nel caso essa sia superiore a 500 ma inferiore a 1400 millimetri. Partiamo dal presupposto che i dati preliminari relativi alle dimensioni, varianti e tipologie, siano gi stati caricati e per facilitare il lettore, proponiamo di seguito le schermate relative alle varie tipologie impiegate nella regola dellesempio, cos da evidenziare quali sono le impostazioni di massima utili alla grafica, tralasciando in questa fase tutti gli altri dati relativi alla codifica, distinta base o altro:

Fianco

In questa prima immagine vediamo le impostazioni del fianco, soffermiamoci sulle posizioni: sono a zero nella larghezza e profondit, mentre per laltezza viene spostato di quaranta millimetri, che lo spessore dello zoccolo. Le dimensioni sono fisse nella larghezza e parametriche nelle altre due direzioni, in particolare laltezza viene diminuita dello spostamento precedentemente citato $A-40, mentre la profondit quella totale del box $P.

54

Base

Nella figura in alto si notano le caratteristiche della base, per la quale lo spostamento rispetto allorigine del box riguarda la larghezza, infatti si deve tener conto dello spessore del fianco 20, e laltezza per la quale dobbiamo considerare lo zoccolo 40. Per quanto concerne le dimensioni, possiamo evidenziare che la larghezza diminuita dello spessore dei fianchi $L-20-20, laltezza fissa a venti millimetri e la profondit quella totale del box $P. Limmagine sottostante si riferisce al coperchio, che del tutto simile alla base, differisce solo nella posizione in altezza. Esso, infatti, viene posizionato nella parte superiore della colonna diminuita del suo spessore $A-20.

Coperchio

55

Nella figura che segue osserviamo il ripiano, simile anchesso alle due tipologie che lo hanno preceduto, diverso solamente nella posizione in altezza. In questo caso si considera di posizionarlo in relazione ad uno spostamento parametrico sommato a quello fisso dello zoccolo $SA+40. Allinterno della regola vedremo che i ripiani verranno comunque gestiti in modi diversi in relazione allaltezza della colonna. Ricordiamo al lettore, a questo proposito, che ad ogni tipologia vengono attribuiti dei valori standard, che comunque potranno subire notevoli variazioni allinterno delle regole.

Ripiano

Lultima immagine visualizza lo zoccolo che viene posizionato allorigine del box e le cui dimensioni sono fisse in altezza e profondit, mentre la larghezza quella totale della colonna $L.

Zoccolo

56

Vediamo ora la regola:


Esempio grafica di regola 1,C1=3,C2=3 2,C1=3,C2=3 3,C1=3,C2=3 8,P=30,C1=3,C2=3 8,SP=$P-30,P=30,C1=3,C2=3 #IF $A>1400 4,SA=($A/2)+300,A=20,C1=3,C2=3 4,SA=($A/2)-300,A=20,C1=3,C2=3 #ELSEIF $A>500 4,SA=$A/2,A=20,C1=3,C2=3 #ENDIF I componenti elementari si richiamano scrivendo, in righe separate, il codice corrispondente // Ripiano // Ripiano // Ripiano // Fianco // Base // Coperchio // Zoccolo // Zoccolo

Osservando le prime cinque righe del codice della regola, notiamo che vengono incondizionatamente richiamati cinque componenti elementari, rispettivamente i codici 1,2,3 e due volte il codice 8. Le assegnazioni (es. C1=3 etc) che compaiono tra le virgole che seguono i codici dei componenti elementari, indicano che tali oggetti vengono modificati rispetto alle loro impostazioni originali definite in tipologie.
1,C1=3,C2=3 2,C1=3,C2=3 3,C1=3,C2=3 8,P=30,C1=3,C2=3 8,SP=$P-30,P=30,C1=3,C2=3 // Fianco // Base // Coperchio // Zoccolo // Zoccolo

Per i primi tre componenti la modifica relativa al colore C1=3, C2=3 (il lettore trascuri questi valori, essi sono puramente indicativi). Per i due componenti di tipo 8, corrispondenti agli zoccoli, la variazione concerne invece la profondit: il primo lo zoccolo posteriore, il secondo quello anteriore. Questultimo, infatti, viene spostato in avanti della profondit $P diminuita dello spessore (30).
I comandi di controllo si scrivono usando il carattere diesis # come prefisso

Iniziamo ora l'esecuzione della regola fingendoci l'interprete utilizzato da 3Cad per la valutazione delle regole, che nel manuale verr indicato appunto con il termine "Valutatore delle regole" o pi semplicemente "Valutatore". Premettiamo innanzitutto che le righe della sezione Grafica possono essere di tre tipi: comandi, riferimenti ai componenti oppure commenti. Nel primo caso la riga potrebbe iniziare con il carattere # (diesis), oppure con il carattere ! (punto esclamativo), nel secondo caso si pu solo incontrare un riferimento diretto al componente ( 1, 10, etc..), infine i commenti vanno preceduti dalla doppia sbarra // o doppio diesis ##.
Riga 1 1,C1=3,C2=3 // Fianco

Le varianti del componente si specificano usando dei parametri aggiuntivi allinterno della riga

Il valutatore incontra il primo carattere della prima riga:1, non essendo un comando, viene disegnata la tipologia corrispondente: il fianco. Di seguito vengono lette le variazioni rispetto alla definizione originale, nel caso in esame sono relative ai colori, ai quali viene forzato il valore 3. Possiamo supporre che nella nostra tabella colori questo codice corrisponda al bianco. Tutti gli altri parametri, per i quali non viene assegnato alcun valore, rimangono inalterati, conservando le impostazioni specificate nella definizione delle tipologie.
57

Per concludere, osserviamo l'effetto dell'interpretazione della riga numero uno, la quale genera un fianco di altezza pari a $A (altezza complessiva della colonna) e profondit $P.

Fig 1.19

Componente "Fianco" generato dalla riga 1 della regola di esempio.

Una volta completata l'interpretazione di una riga, il valutatore prende in esame la successiva. Verificata lassenza di comandi, viene riconosciuta la tipologia relativa al codice inserito.
Riga 2 2,C1=3,C2=3 // Base

In questo caso il 2 si riferisce ad una "Base". Non essendo specificata nessuna assegnazione relativa alle dimensioni, il componente "Base" viene disegnato in funzione delle caratteristiche predefinite che, nel caso delle dimensioni, sono la larghezza ($L) e la profondit ($P) complessive della colonna. Anche a questo elemento viene forzato il colore bianco. Il posizionamento di questo tipo di componente anch'esso cablato nella propria definizione, ovvero nella parte inferiore del mobile. L'esecuzione della riga numero 2 ha il seguente effetto:

Fig 1.20

Aggiunta del componente "Base" a seguito dell'interpretazione della riga numero 2

In modo del tutto analogo viene eseguita la riga numero 3 per la generazione del componente "Coperchio".
Riga 3 3,C1=3,C2=3 // Coperchio

Il componente "Coperchio" ha delle impostazioni standard che gli consentono il corretto posizionamento in altezza, quindi anche per questo elemento andiamo a modificare solamente il colore. L'esecuzione della riga 3 produce il seguente risultato.
58

Fig 1.21

Aggiunta del componente "Coperchio" a seguito dell'interpretazione della riga numero 3

Le righe 4 e 5 richiamano entrambe lo stesso componente 8 (che lo Zoccolo) ma alterano le sue caratteristiche standard rispetto alla profondit. Allo zoccolo posteriore, che gi nella tipologia viene posizionato a 0, viene forzata una profondit di 30 mm. Per quanto riguarda quello anteriore, dovendone modificare lo spessore e volendolo mantenere a filo davanti, necessario variarne lo spostamento.
Riga 4 Riga 5 8,P= 30,C1=3,C2=3 8,SP=$P-30,P=30,C1=3,C2=3 // Zoccolo // Zoccolo

Dopo l'interpretazione della riga 4 vedremo comparire lo zoccolo posteriore...

Fig 1.22

Aggiunta del componente "Zoccolo" (posteriore) a seguito dell'interpretazione della riga numero 4

mentre a seguito dell'interpretazione della riga "5" vedremo aggiungersi lo zoccolo anteriore.

59

Fig 1.23

Aggiunta del componente "Zoccolo" (anteriore) a seguito dell'interpretazione della riga numero 5

L'esame della sesta riga rappresenta una situazione diversa per il valutatore. Non siamo pi di fronte ad un semplice riferimento al componente, bens a una riga di comando, distinguibile per la presenza del carattere diesis (#) a inizio linea. Il valutatore esamina quindi il tipo di comando che segue e in funzione di esso prosegue la valutazione in differenti modi.
Valutazione comando di un

Il comando presente nella sesta riga l'istruzione IF (ben nota a coloro che conoscono i concetti elementari della programmazione). Tale istruzione consente di biforcare il flusso di controllo in funzione di una condizione logica in esso contenuta. In altre parole se, dopo la valutazione, la condizione logica risulta essere vera verranno valutate le righe immediatamente seguenti, altrimenti vengono esaminate quelle che seguono la consociata parola chiave ELSE (se presente). Osserviamo ora la parte di regola contenente la diramazione condizionata.
#IF $A>1400 4,SA=($A/2)+300,A=20,C1=3,C2=3 4,SA=($A/2)-300,A=20,C1=3,C2=3 #ELSEIF $A>500 4,SA=$A/2,A=20,C1=3,C2=3 #ENDIF // Ripiano // Ripiano // Ripiano

Interpretazione verbale del comando

L'interpretazione verbale che si pu dare a essa la seguente: se l'altezza complessiva della colonna maggiore di un metro e quaranta centimetri allora inserisci due ripiani, rispettivamente trenta centimetri sopra e trenta centimetri sotto la mezza altezza. Altrimenti, se l'altezza inferiore al metro e quaranta e maggiore di cinquanta centimetri, inserisci un solo ripiano esattamente a met altezza. Nel caso in cui non vengano raggiunti neanche i cinquanta centimetri non inserire alcun ripiano. Ricordando quanto detto in precedenza, se la condizione dell'istruzione IF si verifica vengono esaminate le righe successive all'istruzione stessa, altrimenti si procede con il controllo delle condizioni che seguono le parole chiave ELSEIF, o in loro assenza, le righe che seguono la parola chiave ELSE (se presente). Supponiamo ora che l'altezza complessiva della colonna sia stata impostata alla quota 880. La condizione:
#IF $A>1400

60

non sar verificata e il controllo passa quindi all'istruzione


#ELSEIF $A>500

che risulta invece essere vera. Ne consegue che la valutazione della regola prosegue sulla riga numero 10
Riga 10 4,SA=$A/2,A=20,C1=3,C2=3 // Ripiano

che produce un componente di codice 4, corrispondente a un ripiano, posizionato esattamente a met dell'altezza complessiva della colonna ed al quale stato attribuito uno spessore di 20 mm e il solito colore bianco.

Fig 1.24

Aggiunta del componente "Ripiano" posizionato a mezza altezza, a seguito dell'interpretazione della riga numero 10

D'altra parte, se il valore dell'altezza fosse stato fissato a 1650 millimetri, la prima condizione avrebbe avuto riscontro e il valutatore avrebbe esaminato le seguenti righe:
Riga 7 Riga 8 4,SA=($A/2)+300,A=20,C1=3,C2=3 // Ripiano 4,SA=($A/2)-300,A=20,C1=3,C2=3 // Ripiano

L'effetto delle due righe sopraindicate di inserire due ripiani con spessore 20 mm posizionati ad altezze differenti; rispettivamente 30 cm sopra la met e 30 cm sotto la met, come si vede nella figura seguente.

61

Fig1.25

Aggiunta di due componenti di tipo "Ripiano" posizionati rispettivamente 30 cm al di sopra e al di sotto di met altezza.

ASCII A livello di file testo, tutte le righe della scheda Grafica della regola vengono memorizzate allinterno del gruppo GRAFICA del file .ERG (si vede utilizzando lEditor ASCII dal menu Files). Esempio:

[GRAFICA] 1,C1=3,C2=3 2,C1=3,C2=3 3,C1=3,C2=3 // Fianco // Base // Coperchio // Zoccolo

8,P=30,C1=3,C2=3

8,SP=$P-30,P=30,C1=3,C2=3 // Zoccolo #IF $A>1400 4,SA=($A/2)+300,A=20,C1=3,C2=3 // Ripiano 4,SA=($A/2)-300,A=20,C1=3,C2=3 // Ripiano #ELSEIF $A>500 4,SA=$A/2,A=20,C1=3,C2=3 // Ripiano #ENDIF.........

Allinterno della Grafica della Regola in funzione uno strumento di aiuto denominato Generatore riga.

Generatore Riga
Il Generatore di riga viene visualizzato premendo il ? oppure F2

Il Generatore riga una finestra di aiuto che viene visualizzata quando si digita il carattere ? (SHIFT+ apostrofo) oppure premendo il tasto F2. Questa finestra di 3Cad aiuta loperatore, addetto alla stesura delle regole, a comporre le varie righe della regola grafica. Vediamo le varie parti della finestra.

62

Scelta del tipo di funzione Modifiche da apportare alla tipologia (campi della finestra)

Area di creazione o modifica di una sagoma da applicare alla tipologia Pulsante di ricerca della sagoma

Pulsanti di Comando

La finestra si utilizza in questo modo:

premendo uno dei pulsanti in alto a destra possibile scegliere se inserire all interno della riga della regola una formula (comando) una tipologia o una macro. Se si vuole riportare una tipologia allinterno della riga, si seleziona Tipologia, si apportano le eventuali modifiche allinterno dei campi della finestra e quindi si preme Invio o si chiude la finestra. La riga verr riportata, con le eventuali modifiche, allinterno dellarea grafica della regola. Per associare una sagoma alla tipologia selezionata, si deve utilizzare il pulsante di ricerca della sagoma, che far comparire un elenco di tutte le sagome gi create. Le eventuali variazioni ai campi si possono fare inserendo dei valori assoluti che sostituiscono i default inseriti nella gestione delle tipologie, oppure modificando i default stessi di una certa quantit; Esempio :
-Se il campo Altezza viene lasciato vuoto, la tipologia viene disegnata con laltezza di Default impostata nella tabella delle tipologie; -se nel campo Altezza digitiamo 480, la tipologia viene disegnata con una Altezza corrispondente a 480 mm; -se nel campo Altezza digitiamo +40, la tipologia viene disegnata con laltezza di Default impostata nella tabella delle tipologie aumentata di 40 mm.

Se si vuole inserire una formula allinterno della regola, si deve utilizzare lomonimo pulsante, comparir lelenco dei comandi, si seleziona quello desiderato premendo Invio o chiudendo la finestra del generatore e la formula verr riportata allinterno della riga della regola;

Vediamo ora il significato dei Pulsanti di Comando che si trovano a destra:


63

Default Il pulsante Default viene utilizzato quando si vogliono modificare i campi della finestra caricando i valori di Default della tipologia. Ripristina Il pulsante Ripristina serve per ripristinare i valori precedenti alle ultime modifiche apportate nei campi della finestra. Tipologie Il pulsante Tipologie serve per richiamare la finestra Tipologie (vedi cap. 1 par. Tipologie) e modificare i dati delle tipologie caricate, oppure crearne di nuove; questa finestra permette di accedere anche alla scheda macro e quindi gestire le macro stesse. Sagome Il pulsante Sagome serve per richiamare la finestra di Gestione Sagome (cap. 3 par. Sintassi delle Sagome) e generarne di nuove o modificare quelle esistenti.

64

La regola GENE.ERG
Abbiamo in precedenza parlato della regola GENE.ERG ed abbiamo visto come questa regola viene creata in modo automatico alla generazione di un nuovo catalogo. Ora che abbiamo esaminato le varie parti di intestazione della regola possiamo vedere cosa contiene e a cosa serve la regola generale chiamata GENE.ERG.
Allinterno della regola GENE.ERG si definiscono le tabelle varianti generali del catalogo, richieste nella testata Ordine

La regola GENE.ERG non ha grafica, quindi la scheda Valuta non viene considerata. Per costruirla si va ad agire solo nella parte di intestazione. In essa, infatti, si definiscono le varianti generali del catalogo, che compariranno nellintestazione dellordine. Le opzioni impostate per le varianti in Testata dellOrdine andranno ad inizializzare le stesse varianti, se ridichiarate, nelle singole regole grafiche inserite nella composizione. Se ad esempio, in Testata Ordine impostiamo per la variante Colore struttura lopzione NOC (noce), tale opzione sar estesa a tutte le regole che richiamano la stessa variante.

65

Capitolo

Sintassi del linguaggio


Come usare il linguaggio delle Regole di Idea

Concetti generali
bbiamo pi volte evidenziato come in 3Cad sia possibile interagire con il programma, non solo attraverso i meccanismi di comunicazione standard, quali le finestre, i pulsanti e tutti gli strumenti di controllo presenti nel sistema operativo Windows, ma anche con il cosiddetto linguaggio delle regole che permette di combinare tra loro le tipologie elementari in tutti i modi consentiti, al fine di realizzare un prodotto.

Nel precedente capitolo abbiamo descritto come vanno impostate le regole, quali sono i dati preliminari da definire e, attraverso un esempio, abbiamo anche potuto vedere come si sviluppa il codice di una regola. In questa sede cercheremo di spiegare tutti i simboli, le funzioni ed i comandi disponibili nel linguaggio di 3Cad.

Nota.
Nel corso del capitolo, verranno descritti anche simboli e istruzioni che non vengono utilizzati direttamente dalloperatore, bens inseriti in modo automatico da Idea allinterno del file ASCII della regola nel momento in cui si crea o salva la regola stessa. Queste descrizioni, puramente informative, verranno riportate in paragrafi a parte, accompagnate dal titolo ASCII.

Definizioni generali
Definizione di riga
Una riga una sequenza di caratteri che rappresenta una espressione valutabile

Con la parola riga si intende una qualsiasi sequenza di caratteri che rappresenti un'espressione valida per il valutatore delle regole. Per definizione una riga deve iniziare a capo rispetto a qualsiasi scrittura precedente che non le appartenga, ovvero a sinistra del primo carattere di una riga non pu comparire nulla se non elementi di tabulazione. Definizione di gruppo Si definisce gruppo una sezione di un file di regola formata da un'intestazione e da una o pi righe. Un gruppo abbraccia tutto quello che compreso tra
66

un'intestazione (inclusa) e l'intestazione successiva (esclusa) oppure tra un'intestazione (inclusa) e la fine del file, nel caso si tratti dell'ultimo gruppo definito. L'intestazione composta da un nome racchiuso tra parentesi quadre. I gruppi vengono visualizzati nel formato ASCII della regola. Loperatore pi evoluto potr usare leditazione del file ASCII quando ad esempio dovr copiare righe di codice da una regola allaltra.
// inizio file regola [GRUPPO1] ................... ................... .................... Finisce il gruppo GRUPPO1 ed inizia il GRUPPO2

Inizia il gruppo denominato GRUPPO1

[GRUPPO2] ................... .................... // fine file regola

Finisce con la fine del file il GRUPPO2

La definizione di gruppo presenta un nome racchiuso tra parentesi quadre e una o pi righe a seguire. Nellesempio che segue viene riportato un gruppo denominato INFO che si trova sempre allinterno del file ASCII di una regola poich ne definisce le caratteristiche principali (impostate dalloperatore nella scheda Definizioni della Regola):

Esempio 1: [INFO] Descrizione = Commenti = Spostabile = Flagnuovo =1 Dim.minima =0,0,0 Dim.massima=5000,5000,5000 Dim.default=1000,1000,1000
In questo secondo esempio riportato un altro importante gruppo che si trova in tutte le regole che utilizzano componenti le cui caratteristiche sono definite da tabelle di varianti; il gruppo GENE riporta il tipo di variante ed il nome della relativa tabella (impostate manualmente nella scheda Definizione della Regola):

Esempio 2: [GENE] R,SQLCLI,,,Selezione Cliente x S,SP,,,Spessore T,TIPOART R,SQLMATE,,,Scelta Materiale x T,RIVESTIM,RIVEST,$(TIPO:0)=1,Rivestimento Esterno

67

T,RIVESTIM,RIVINT,$(TIPO:0)=1,Rivestimento Interno
In questo terzo esempio sono riportati alcuni dei gruppi che si trovano in tutte le regole, a cui si accede scegliendo una voce dalla casella Gruppo nella scheda Valuta di una Regola:

Esempio 3: [PREV] // // ---------------- Gestione DB --------------------prova

#LET l=$larg:0 #LET a=$alt:0

[CODICE] #LETS codicep=$(sqlcli:0) #LETS codicep=$(CODICEp)$[format;$(larg:0);0000]\ $codicep,$desmate

[GRAFICA] cerchio 0,0,300,300,&HFF8000,12 wmf C:\logo\Idea.bmp,0,0,100,200

I caratteri riservati
I simboli utilizzabili nelle regole di Idea

La sintassi delle regole di 3CAD prevede l'utilizzo di un insieme di caratteri riservati. Questi sono :
// {} () + & | = ! == < << > >> !! <=
68

Commento Formula

oppure

##

Commento

Priorit nelle formule o valore di una variante Operatore di addizione Operatore di sottrazione Operatore AND logico Operatore or logico Operatore di uguaglianza tra numeri Operatore diverso tra numeri Operatore di uguaglianza tra stringhe Operatore minore tra numeri Operatore minore tra stringhe Operatore maggiore tra numeri Operatore maggiore tra stringhe Operatore diverso tra stringhe Operatore minore-uguale tra numeri

>= : , / $ \ # *

Operatore maggiore-uguale tra numeri Prefisso per l'indice di colonna in una tabella Separatore di colonna nelle tabelle Operatore di divisione Prefisso di variabile o di variante Continuazione della riga attuale nella successiva (a capo) Prefisso per i comandi Annullamento di riga in caso di risultato nullo od operatore di moltiplicazione.

Si analizzano ora i vari simboli ad uno ad uno. Caratteri // oppure


Commento // oppure ##

## - commento

Consente di inserire parole di commento all'interno dei files delle regole. Tutto quello che compare alla destra dei simboli // fino al termine della riga, viene ignorato dal valutatore delle regole.
Esempio 1: #IF $L > 300 // --- Larghezza non standard Il valutatore interpreta listruzione #IF $L > 300 che la parte di riga posta a sinistra dei caratteri //, mentre ignora la parte a destra, in questo caso Larghezza non standard. Esempio 2: // ----Gestione del database -----

Il valutatore in questo caso ignora completamente la riga.

Carattere \ (barra retroversa) - continuazione di una riga nella successiva


Continuazione riga \

Spesso pu accadere che la lunghezza delle righe in una regola ecceda le dimensioni dello schermo, con conseguente riduzione della leggibilit della stessa. L'uso della barra retroversa a termine riga informa il valutatore che la continuazione della linea viene rimandata alla riga successiva, dove la medesima situazione pu verificarsi a sua volta.
Esempio:

1,l=100,p=200,a=300,c1=1,c2=1\ ,sl=200,sa=200

Carattere * (asterisco) - elisione di riga in caso di risultato nullo


Elisione riga *

Il carattere asterisco (*), che va sempre posto tra la parentesi tonda aperta e il nome di una variabile, impone al valutatore di annullare completamente la riga, nella quale questa scrittura presente, nel caso il valore restituito dalla variabile corrisponda alla stringa nulla. Questa notazione utile nei casi in cui una porzione della stringa da generare sia assolutamente necessaria al significato della stessa e in mancanza della quale di rigore non produrre nulla. Consente, ad esempio, di evitare la produzione di quei codici in cui una o pi componenti elementari risultano indefinite. Generalmente questa opzione viene

69

utilizzata solo nell'ambito della generazione di codici, cosa che non esclude la sua applicazione anche in altre situazioni come, ad esempio, la grafica.
Esempio: #LETS COD=BXL/$(*FAB:3)

Con il comando LETS si assegna ad una variabile un valore, in questo caso la variabile COD assume significato solo se la variante FAB in colonna tre non vuota. Caratteri { } - formula
Le parentesi { }

Calcola numericamente l'espressione contenuta tra parentesi e ne converte il risultato in stringa. L'espressione deve essere sintatticamente corretta, ovvero concorde con la tradizionale notazione per le espressioni matematiche. In caso di errore di valutazione viene ritornata la stringa vuota.
Esempio: Supponendo che la variabile $(vani) contenga il valore 2, la scrittura:

Vano {$(vani)*2} Cassetti verr interpretata come Vano 4 Cassetti

Caratteri ( ) - parentesi tonde


Le parentesi ( )

(1) Priorit nelle formule. Luso delle parentesi tonde per impostare la priorit di valutazione nelle formule identico a quello della notazione matematica classica, tipico dei moderni linguaggi di programmazione. (2) Valore di una variante. Un altro tipo di sintassi che vede coinvolte le parentesi tonde riguarda il riferimento agli elementi delle tabelle delle varianti (vedi cap. 1) Carattere

, (virgola) - separatore di colonna


Esempio: [GENE] T T , STR , TRAM

Separatore ,

Nel file ASCII separa le stringhe organizzate in modo tabellare.

Nelle righe in cui si richiamano le tipologie, viene usata per separare tra loro i parametri.
Esempio: 8,SP=$P-30,P=30 // zoccolo

Carattere
Prefisso di variabile $

$ (dollaro) - prefisso di variabile

Il carattere $ serve per fare riferimento ad una variabile e deve precedere il nome della variabile nella stesura della regola. Vi sono due tipi di variabili, quelle definite dallutente e quelle che fanno riferimento agli elementi di una tabella varianti. La sintassi da seguire per lutilizzo delle variabili la seguente:
70

$(nomevariabile:nr.colonna)

Il numero della colonna nel caso delle varianti definite dallutente zero (variante di tipo libero v. cap.1). Per le varianti assegnate con il comando LET la sintassi :
$(nomevariabile)

Il carattere $ pu essere usato anche in un contesto particolare, nel senso che genera una variabile fittizia, secondo questa sintassi:
$M:N

dove M ed N sono dei numeri interi, con M minore di N; quello che si ottiene una stringa che elenca tutti gli interi da M a N, separati da un ;.
Esempio: $1:10 genera la stringa 1;2;3;4;5;6;7;8;9;10

Carattere : varianti
Riferimento ai valori di una tabella :

- riferimento agli elementi di una tabella

Utilizzando lopportuna sintassi, come spiegato nel paragrafo precedente, il carattere : restituisce la voce presente nella colonna indicata dal carattere che segue i : , in corrispondenza della riga selezionata in quel momento, rispettivamente ad una certa tabella di Variante. Deve essere specificato naturalmente il nome della tabella variante di cui si vuole ottenere lo specifico valore. Facciamo presente al lettore che per le varianti tabellate la numerazione delle colonne parte da uno, mentre per le varianti di tipo libero c ununica colonna, la zero.
Esempio: $(COL:1)

Carattere # (diesis) - prefisso dei comandi Il carattere diesis viene utilizzato allinterno delle regole come prefisso dei comandi. Carattere ! (punto esclamativo) - prefisso di funzioni Il punto esclamativo ad inizio riga il prefisso per le funzioni. Caratteri = , ! , < , > - confronto
Confronto =, ! , < , >

I caratteri sopra indicati servono per operare i confronti in modo tradizionale, quindi: = ! < > sta per sta per sta per sta per uguale diverso minore maggiore

71

La notazione singola si usa nel caso di confronti numerici. In presenza di stringhe il simbolo va raddoppiato. In alternativa a ciascuno di questi caratteri possono essere usate le parole: UGUALE DIVERSO MINORE MAGGIORE con evidente significato. Questa diversa notazione si rivela notevolmente utile nei casi di difficile leggibilit. Caratteri & , | - operatori logici Gli operatori logici AND e OR vengono usati generalmente insieme al comando #IF (diramazione condizionata), oppure per calcolare il valore true o false di unespressione racchiusa fra parentesi graffe. Approfondiremo questultimo concetto nel prossimo paragrafo.

Operatori logici &,|

La calcolatrice di 3Cad
In 3CAD troviamo un calcolatore algebrico, vale a dire uno strumento che permette di calcolare il valore di una espressione algebrica, scritta come stringa. Il calcolatore esegue la valutazione purch lespressione sia racchiusa fra parentesi graffe. Le operazioni e gli operatori ammessi da questo calcolatore sono elencati di seguito, alcuni di essi li abbiamo gi citati precedentemente. Funzioni numeriche ABS SGN SIN SND COS CSD TAN TND ASN ACS ATN INT FRC RND EXP LOG SQR NOT restituisce un intero positivo corrispondente alla parte intera del numero rappresentato dalla stringa (valore assoluto) restituisce 1 se il numero rappresentato dalla stringa positivo, -1 se negativo, 0 se lo zero restituisce il valore del seno di un angolo espresso in gradi simile a SIN ma restituisce un risultato pi preciso restituisce il valore del coseno di un angolo espresso in gradi simile a COS ma restituisce un risultato pi preciso restituisce il valore della tangente di un angolo espresso in gradi simile a TAN ma restituisce un risultato pi preciso restituisce il valore dellarcoseno, espresso in gradi restituisce il valore dellarcocoseno, espresso in gradi restituisce il valore dellarcotangente, espresso in gradi restituisce la parte intera di un numero o espressione restituisce la parte decimale di un numero assegnato restituisce il valore arrotondato di un numero decimale (.5) restituisce il valore dellesponenziale di base e restituisce il valore del logaritmo in base e restituisce il valore della radice quadrata di un numero d come risultato 1 se il valore inserito 0 e restituisce 0 in tutti gli altri casi
Esempio 1: #LET A={5+5} in A sar contenuto il valore 10
72

Esempio2: #LET A={LOG(3)*SIN(30)/SQR(2)} in A sar contenuto il risultato di tutta le spressione

Operatori logici & | corrisponde alloperatore logico AND corrisponde alloperatore logico OR
Esempio: #LET A=3 #LET P={($A<5) & ($A>1)} in P sar contenuto il valore 1 perch sono due condizioni vere (ciascuna vale 1)

Confronto di stringhe == !! >> << per stabilire se le due stringhe sono uguali per stabilire se le due stringhe sono diverse per stabilire se la prima stringa maggiore della seconda, in base allordine dei codici ASCII per stabilire se la prima stringa minore della seconda, in base allordine dei codici ASCII
Esempio 1: #LET P={BBB<<aaa}

in P sar contenuto il valore 1 (cio true) perch il codice ASCII di B minore di quello di a.

Esempio 2:

#LET P={aab==aaa}

in P sar contenuto il valore 0 (cio false) .

Operatori numerici >= <= <>, !=, ! = > < + * / controlla se il primo valore maggiore o uguale del secondo controlla se il primo valore minore o uguale del secondo controlla se i due valori sono diversi controlla se i due valori sono uguali controlla se il primo valore maggiore del secondo controlla se il primo valore minore del secondo esegue la somma dei due valori esegue la differenza dei due valori esegue il prodotto dei due valori esegue la divisione dei due valori
Esempio 1: #LET A=5/8

assegna ad A il risultato 0.625. Esempio 2: #LET A= {(16+74)/(15*2)-1}

assegna ad A il risultato 2.

73

Il calcolatore in grado, inoltre, di stabilire se un elemento appartiene a un insieme oppure no. Verr restituito il valore -1 nel caso lelemento appartenga allinsieme, 0 in caso contrario. La sintassi per eseguire questo test :
{el[el1;el2;el3;...;elN]} Esempio 1: #LETS PIPPO={aa[1,2,aa,3,4,5]}

in PIPPO sar contenuto il valore 1 poich lelemento aa appartiene allinsieme indicato Esempio 2: #LETS PIPPO={a[1,2,aa,3,4,5]}

in PIPPO sar contenuto il valore 0 poich lelemento a non appartiene allinsieme indicato

Il calcolatore permette, dato un intervallo di numeri interi, di ottenere ad ogni valutazione della regola, un valore diverso compreso nellintervallo definito. La sintassi la seguente:
$(RN0n1n2) I numeri n1 e n2 devono avere il formato 000 Esempio 1: #LETS PIPPO=$(RN0001200)

La variabile PIPPO ritorner ad ogni valutazione un valore casuale compreso tra 1 e 200

Esiste una funzione che controlla la presenza di una determinata variante e restituisce il valore 1 nel caso esista, 0 se la variante non presente. La sintassi la seguente: $(<nomevariante>_SPECIFIED)
Esempio 1: #LETS PIPPO=$(STR_SPECIFIED)

La variabile PIPPO assumer il valore 1 se la variante STR esiste, 0 nel caso contrario

Le variabili di sistema di utilit Elenchiamo di seguito le variabili di sistema disponibili in 3Cad. Esse restituiscono informazioni di vario genere, non strettamente legate alle regole grafiche, ma di utilit ad esempio in alcuni test o a livello di stampe e collegamenti gestionali. .PROGNAME .PERCORSO .WINDIR .SYSDIR .TEMPDIR o TMPDIR .USERNAME .COMPUTERNAME
74

restituisce il nome del programma (Evento2) restituisce il nome del catalogo corrente restituisce il nome della cartella di windows restituisce il nome della cartella di windows system restituisce la cartella dove vengono salvati i file temporanei mostra il nome dellutente di rete con cui stato fatto il login restituisce il nome del computer

.DATAORA .TEMPFILE

restituisce la data lora nel formato gg/mm/aaaa-hh.mm restituisce il nome del file temporaneo

75

I Comandi del linguaggio delle regole


Vediamo in sequenza i comandi del linguaggio di definizione delle regole. Comando #LET
Il comando #LET per assegnare un valore

Il comando #LET consente di assegnare una quantit ad una variabile a singolo valore quali le variabili di sistema o quelle utente; non consentito l'uso di #LET con le variabili tabella in quanto i loro valori sono codificati in modo statico direttamente nel database. A differenza dell'usuale notazione per le variabili, nel comando #LET ci si riferisce alla variabile semplicemente utilizzando il suo nome privato delle parentesi e del prefisso $. E importante osservare che si possono fare pi assegnazioni con il comando #LET, purch tutte sulla stessa linea.
Esempio 1: #LET A=625 // imposto l'altezza a 625 millimetri In questo esempio viene assegnato il valore 625 alla variabile $A che identifica laltezza. Esempio 2: #LET B=5+5

In questo esempio viene assegnato il valore 10 alla variabile B. Esempio 3: #LET A=5,B=7

In questo esempio viene assegnato il valore 5 alla variabile A e il valore 7 alla B, con un unico comando.

Nota
Quando il valore di una variabile viene assegnato tramite #LET allinterno di una regola, il nuovo valore cos impostato rimane permanente allinterno della regola utilizzata; pu essere modificato solamente attraverso unaltra assegnazione.

Comando #LETS
Il comando #LETS per assegnare un valore

Il comando #LETS consente di assegnare ad una variabile un valore di tipo stringa. A differenza dell'usuale notazione per le variabili, nel comando #LETS ci si riferisce alla variabile semplicemente utilizzando il suo nome privato delle parentesi e del prefisso $.
Esempio 1: #LETS codice=$(sqlcli:0) In questo esempio viene assegnato alla variabile codice il valore che si trova nella tabella sqlcli nella colonna 0. Esempio 2: #LETS prova=primo,secondo,terzo,quarto,quinto

Qui invece la variabile definita dallutente e corrisponde a $(prova); il valutatore gli assegna il valore primo,secondo,terzo,quarto,quinto; se si valuta $(prova:0) essa conterr il valore primo, $(prova:1) conterr il valore secondo e cos via. Si noti luso della virgola come separatore. Esempio 3: #LETS ALFA1=primo, ALFA2=secondo #LET N=2
76

$(ALFA$(N)) lultima istruzione valuta prima il contenuto della variabile N, poi quello della variabile ALFA di indice il valore di N, quindi il valore restituito sar quello di ALFA2, cio secondo.

Nota 1
Quando il valore di una variabile viene assegnato tramite #LETS allinterno di una regola, il nuovo valore cos impostato rimane permanente allinterno della regola utilizzata; pu essere modificato solamente attraverso unaltra assegnazione.

Nota 2
Esiste una particolarit nel comando LETS con assegnazioni multiple ad esempio: #LETS alfa=primo,secondo,beta=terzo assegna alla variabile ALFA il valore primo,secondo e alla variabile BETA il valore terzo Pu essere utilizzato in alternativa il comando LETT che non accetta assegnazioni multiple, in modo tale che la riga #LETT alfa=primo,secondo,beta=terzo corrisponde allassegnazione alla variabile ALFA del valore primo,secondo,beta=terzo

Comando #LETV
Il comando #LETV per assegnare un valore ad una variante tabellata

Il comando #LETV consente di assegnare un valore alla prima colonna di una variante tabellata. Automaticamente vengono assegnate anche le altre colonne relative allopzione identificata dal valore assegnato.
Esempio: #LETV str=02 In questo caso come se assegnassimo il valore 02 alla prima colonna della variante STR. La procedura restituir tutti i valori associati a quella opzione: STR=02,02,noce,1

Comando #IF
Condizioni logiche #IF #ELSEIF #ELSE #ENDIF

#ELSEIF

#ENDIF

Il comando #IF.... permette di effettuare dei controlli allinterno della regola, in base ai quali svolgere poi operazioni tra loro diverse. Un esempio testuale pu essere: se la larghezza > 900 disegna due ante, altrimenti disegna unanta. Il controllo (scritto in grassetto) pu essere composto da pi test di verifica, ed in generale viene definito condizione logica. Lo schema di una struttura di controllo #IF-#ELSEIF-#ELSE-#ENDIF il seguente:
#IF condizione logica righe #ELSEIF condizione logica //ALTRIMENTI SE condizione logica
77

// SE condizione logica

righe #ELSE righe #ENDIF // FINE // ALTRIMENTI

Tale struttura consente di richiamare sequenze di comandi (righe) in accordo al risultato di diverse condizioni logiche. Il valutatore verifica se il risultato della condizione logica vero, nel qual caso esamina le righe immediatamente successive alla parola chiave #IF; in caso contrario esamina le condizioni logiche (una alla volta) associate alle parole chiave #ELSEIF (se presenti) comportandosi in modo analogo. Se le condizioni logiche risultano essere tutte false, il valutatore esamina le righe che seguono la parola chiave #ELSE (se presente) fino alla parola #ENDIF. Le condizioni logiche devono essere specificate di seguito (e nella stessa linea) ai comandi #IF o #ELSEIF, mentre le righe contenenti le parole chiave #ELSE ed #ENDIF non devono contenere nessun altro carattere; le righe che seguono una condizione logica o la parola chiave #ELSE vanno necessariamente scritte su linee separate ( e sottostanti).
Si pu specificare un numero indefinito di annidamenti di condizioni logiche

La forma pi semplice per il comando #IF prevede la presenza di una condizione logica e di una riga al suo seguito mentre nella forma pi complessa constatiamo un numero indefinito di annidamenti di condizioni logiche associate a parole chiave #ELSEIF. Nell'esempio che segue osserviamo due strutture #IF annidate; il secondo #IF viene valutato solo se la condizione del primo risulta vera, altrimenti il controllo passa al comando #LET DA = $(TIPO:8).
Esempio : #IF $(TIPO:1) = 1 #IF $DA > 1280 #LET DA = 1280 #ENDIF #ELSE #LET DA = $(TIPO:8) #ENDIF

In questo secondo esempio riportiamo una struttura completa #IF-#ELSEIF#ELSE-#ENDIF, nella quale (come spiegato in precedenza) una sola delle righe comprese tra le parole chiave, verr valutata.
Esempio: #IF $A > 1980 //se laltezza maggiore di 1980 #LET A = 1980 #ELSEIF $A < 470 #LET A = 470 #ELSE #LET A = $(MISURE:4) #ENDIF

Infine mostriamo la forma pi semplice di un comando #IF, nella quale la variabile P viene limitata superiormente al valore 980
Esempio: #IF $P > 980 #LET P = 980
78

//se la profondit maggiore di 980

#ENDIF

Il Comando #IF Facciamo notare al lettore, che in alcuni casi possibile usare solo il comando IF senza il relativo ENDIF. La sintassi la seguente: #IF <condizione> <istruzione per condizione vera> <istruzione per condizione falsa> Esempio:
#IF $a>1000 #MSG A superiore a 1000 #MSG A inferiore a 1000

Comando #IFDEF #IFNDEF


Condizioni definizione #IFNDEF di #IFDEF

Il comando #IFDEF (IF DEFined) presenta il medesimo funzionamento del comando #IF nella sua forma pi semplice, ovvero #IF-#ELSE-#ENDIF, con la differenza che l'espressione logica ad esso associata viene valutata soltanto dal punto di vista della consistenza: se l'espressione riportata di seguito alla parola chiave #IFDEF definita, verranno valutate le righe comprese tra #IFDEF ed #ELSE, altrimenti l'attenzione viene spostata sulle righe comprese tra #ELSE ed #ENDIF. Vediamo di chiarire il concetto di "definizione" di una variabile; una variabile si dice definita se possibile reperire il suo valore corrente. Una variabile che si riferisce ad una tabella definita quando esiste una riga attiva; una variabile dichiarata dall'utente definita solo se le stato assegnato un valore.
Schema : #IFDEF Espressione riga #ELSE riga #ENDIF // FINE // ALTRIMENTI // SE DEFINITA Espressione

Il comando #IFDEF permette di sapere se una variabile definita, e cio se possibile reperire il suo valore

In modo assolutamente analogo viene descritto il comportamento del comando #IFNDEF (IF Not DEFined) nel quale la valutazione del primo gruppo di righe legata all'assenza di definizione per lespressione specificata. Un'espressione definita quando tutte le variabili al suo interno sono definite. Il comando #IFDEF viene quasi sempre applicato alle variabili di riferimento delle tabelle di varianti. Applicare #IFDEF a variabili di sistema un'azione priva di significato, anche se legittima. Esiste anche il comando #ELSEIFDEF.
Esempio: #IFDEF $(Colore:1) #LETS A=$(Colore:1) #ELSEIFDEF $(Scocca:1) #LETS A=$(Scocca:1) #ELSE #LETS A=BIANCO #ENDIF
79

Nell'esempio appena riportato andiamo prima a verificare se $(Colore:1) valutabile oppure no, e cio se stata selezionata una riga della tabella Colore, poi si verifica se definita la tebella scocca. L'istruzione che segue #IFDEF viene eseguita se $(Colore:1)=VALORE VALIDO, e cio se esiste una riga attiva della tabella (qualsiasi sia il contenuto di $(Colore:1)) , altrimenti si passa al controllo sulla variante scocca. Se questa definita viene eseguita lassegnazione che segue, altrimenti si passa alle istruzioni che seguono #ELSE, che saranno considerate solo se $(Colore:1)= 1 e $(Scocca:1)= . Senza variazioni di sorta si sarebbe potuto sostituire la condizione $(Colore:1) con $(Colore:1)=1, che dal punto di vista della calcolabilit assolutamente equivalente e produce il medesimo risultato. Il comando #FOR
Ripetere operazioni in modo ciclico usando #FOR Schema : #FOR Valore ;Valore ;....,Condizione righe #ENDFOR // FINE //PER Valore; Valore; .,Condizione

Il comando #FOR consente di scrivere regole pi compatte, nel senso che la ridondanza introdotta dalla programmazione esclusivamente sequenziale pu essere eliminata. Ad esempio, un blocco condizionale #IF-#ELSEIF le cui condizioni si concentrino su un'unica variabile pu spesso essere sostituito dal comando #FOR opportunamente parametrizzato. Il funzionamento viene riassunto nel seguente modo: ad una variabile di sistema, denominata $(I) (il cui nome fisso), viene assegnato il primo dei valori specificati dopo la parola chiave #FOR. Di seguito viene valutata la condizione logica posta al termine della riga contenente l'istruzione #FOR. Se la condizione falsa si inizia la valutazione delle righe comprese tra #FOR ed #ENDFOR, al cui termine viene assegnato il valore successivo alla variabile $(I) ed il ciclo si ripete tante volte quanti sono i valori riportati dopo il #FOR. Altrimenti, se la condizione logica vera, si passa direttamente alla riassegnazione della variabile $(I) (senza valutare le righe) utilizzando il valore successivo nella lista dei valori e la condizione logica viene valutata nuovamente. Intuitivamente si sarebbe portati a fornire una condizione logica per la quale sia il valore True a consentire l'accesso alle righe contenute nel #FOR, ma il comportamento del valutatore in assenza di una possibile espressione (ricordiamo che la condizione logica opzionale, non necessaria) di ritornare un valore False. Quindi non includere una condizione logica nel comando #FOR equivale a introdurre una condizione sempre falsa e quindi il valutatore esaminerebbe sempre il contenuto delle righe per qualsiasi valore della lista $(I). evidente a questo punto che la condizione logica deve necessariamente dipendere anche dalla variabile $(I) al fine di ottenere valori diversi per ogni ciclo di valutazione2.

il simbolo indica la non calcolabilit dell'espressione.

Supponiamo che la condizione sia vera gi dall'inizio; se la condizione logica non contiene la variabile indice $(I) non vi modo per il quale possa ritornare il valore False in quanto l'unica via per
2

80

Vediamo ora un tratto di regola contenente l'istruzione #FOR.


Esempio: #FOR 0;330;660;990;1320;1650, $I > $A + 220

5,sa=$i // ripiano #ENDFOR La variabile $(I) assume inizialmente il valore 0 e immediatamente dopo la condizione logica viene valutata: poich il confronto 0 > altezza complessiva + 220 sicuramente falso, la tipologia elementare 5, corrispondente al ripiano, viene richiamata e posizionata con un certo spostamento in altezza dipendente dalla variabile $(I). Si ritorna p oi alla valutazione del prossimo valore per la variabile $(I).

In questo modo riusciamo a richiamare pi volte la stessa riga $(I) con parametri differenti e inoltre vincoliamo l'accesso alle righe attraverso una condizione logica che deve risultare non-vera. L'istruzione #FOR pu essere quindi parametrizzata per il caso generale (per esempio fornendo l'intera lista di quote per il posizionamento dei ripiani) e vincolata per il caso particolare (ad esempio impedendo l'inserimento di ripiani posizionati oltre l'altezza massima della colonna). Unaltra sintassi possibile per il comando #FOR la seguente:
#FOR $M:N righe #ENDFOR Esempio: #LET ALFA=12,BETA=20 #FOR $$(ALFA):$(BETA) {$(I)+5} #ENDFOR Loutput sar una sequenza di dati, in colonna, che vanno dal 17 al 25.

Il ciclo #DO...#LOOP (#continue) (#break)


Ripetere operazioni in modo ciclico usando #DO...#LOOP

Questa coppia di comandi crea e gestisce un ciclo nella forma


#DO [righe] #BREAK (condizioni di uscita) [righe] #LOOP <condizioni di uscita>

dove lesecuzione del ciclo termina quando listruzione di uscita diventa vera.
Esempio: #LET ALFA=0 #DO #LET alfa=$alfa+1 alterare il proprio risultato modificare il valore di qualche variabile cosa che impossibile visto che nessuna delle righe viene valutata quando la condizione corrisponde al vero.
81

#LOOP $alfa >=5

La variabile ALFA viene incrementata fino a cinque, dopo il ciclo si ferma.


#DO #LET alfa=$(alfa)+1 #BREAK $a<{$(alfa)*320} 4,SA=$(ALFA)*320 #LOOP $(alfa) >=5

Nellesempio sopra descritto abbiamo utilizzato il comando Break: in questo caso il ciclo si interrompe se Laltezza del box inferiore al risultato dellespressione contenuta tra le graffe. Il comando #BREAK
Uscire anticipatamente da un ciclo usando #BREAK

Serve per uscire direttamente da un ciclo al verificarsi di una determinata condizione, senza eseguire ulteriori istruzioni (v. esempio precedente). Il comando #CONTINUE

Saltare alcune istruzioni in un ciclo con #CONTINUE

Serve per saltare una sequenza di istruzioni allinterno di un ciclo al verificarsi di una certa condizione ed arrivare direttamente alla condizione di controllo per luscita dal ciclo stesso. Esempio:
#DO #LET alfa=$(alfa)+1 #BREAK $a<{$(alfa)*320} #CONTINUE $(alfa)=3 4,SA=$(ALFA)*320 #LOOP $(alfa)>=5

In questo caso quando la variabile ALFA=3 si salta listruzione che segue e continua il ciclo con ALFA=4 Il comando #SQL
Assegnare il risultato di una query a una variabile mediante #SQL

Questo comando permette di assegnare ad una variabile il risultato di una chiamata SQL sul database correttamente utilizzato.
Esempio: #SQL alfa=SELECT * FROM CLIENTI WHERE CODICE =$(beta) assegna alla variabile ALFA il risultato della query SQL che corrisponde alla ricerca di tutti i campi dellanagrafica del cliente, dato il codice: da notare che in questo caso si utilizzata una variabile per gestire il codice.

Il comando #SWAP
Scambiare il valore di due variabili mediante il comando #SWAP

Questo comando permette lo scambio di valore fra due variabili; la sintassi la seguente:
Esempio: #SWAP a,b

82

Il comando #MSG Questo comando consente di visualizzare un messaggio. Al comando deve fare seguito il testo o la variabile che dovr comparire a video: Esempio: #MSG Finitura non valida oppure: #MSG Lunghezza $(lun) Il comando #PUSH e #POP Il comando #PUSH salva il contenuto delle variabili attive, il comando #POP azzera leffetto del push. Esiste anche il comando #POPALL che azzera tutti gli eventuali PUSH annidati allinterno dei cicli IF. Il comando #PUSH necessit di specificare il nome della variabile da salvare, mentre il comando #POP non ha parametri. Il comando #DUMP Questo comando restituisce lelenco di tutte le variabili utilizzate. Non viene usato nelle regole grafiche, ma in altre applicazioni. Il comando #INP Questo comando consente di inserire allinterno della regola un prompt con la richiesta del valore della variabile. La sintassi la seguente: #INP nomevar, valore di default, titolo esempio dellutilizzo del comando allinterno di un ciclo IF:
#IF $l<400 #INP L,400, MISURA MINIMA #ENDIF

Se la lunghezza dellelemento inferiore a 400, si aprir una finestra con la richiesta di inserire la nuova misura, che come default proporr 400. Il comando #DUMPFILE Questo comando permette di inserire una riga ad un file specificato. La sintassi la seguente: #DUMPFILE <nomefile>,<descrizione> Il comando #GOTO o #JUMP o #VAI Questi comandi, che sono equivalenti, consentono di spostarsi in un altro programma di cui si specifica il nome. La sintassi la seguente:
83

#GOTO # <nomeprogramma> Il cancelletto prima del nome del programma sostituisce il percorso del catalogo. La sintassi pu essere anche la seguente: #VAI <etichetta> [condizioni] esempio:
#LET pp=0 # alfa // etichetta ALFA 2,sl=$(pp),a=100,sa=+$(pp) // Fianco #LET pp=$(pp)+100 #GOTO Alfa $(pp)<500

Facciamo rilevare la possibilit, anche allinterno delle regole di creare una etichetta contenete delle istruzioni.

Gli Script VB
Scrivere parte della regola utilizzando un linguaggio di script

#VB e #ENDVB Questi due comandi permettono di scrivere delle righe di codice con un linguaggio di Script allinterno della regola. Questo tipo di applicazione non trova molto riscontro in ambito grafico, ma piuttosto per elaborazioni particolari legate a gestioni anagrafiche o alle stampe. Grazie a questi comandi si pu accedere a tutte le funzioni previste dal VBSCRIPT (al momento lunico linguaggio di script da noi collaudato). La propriet v() permette la comunicazione tra i due ambienti (regole e script) attraverso il passaggio di variabili di input e output. Cerchiamo di chiarire il concetto con lesempio che segue:
#LETS XVAR=$(90:6) #VB V("R1")= EX(EX(V("XVAR"),";",2),"=",2) V("R2")= EX(EX(V("XVAR"),";",3),"=",2) V("R3")= EX(EX(V("XVAR"),";",4),"=",2) #ENDVB #IF $(R1)==$(R2) & $(R1)==$(R3) #LET INIZIOY=$(INIZIOY)+3 #LETS DES=$[SQL;SELECT VARIANTI.MEMO FROM VARIANTI WHERE VARIANTI.CODOPZ='$(R1)'] #VB V("TESSUTO")= EX(V("DES"),CHR(9),2) #ENDVB TX TL 10 (18, $(INIZIOY)) TESSUTO $(R1) $(TESSUTO) #LET INC=6 #ENDVB

Come si pu notare il comando LETS assegna un contenuto alla variabile XVAR che viene elaborata allinterno dello script VB. Le variabili di output sono, sempre considerando lesempio sopra descritto, R1, R2 ed R3. Possiamo evidenziare nello script anche lutilizzo del comando EX per estrarre dalla variabile XVAR determinati campi. Questa funzione, come molte altre che non approfondiamo in questa sede, stata opportunamente implementata nel programma 3Cad per facilitare alcune operazioni di uso frequente.

84

La gestione degli script pu essere implementata in qualsiasi gruppo di valutazione di una Regola. Il comando !QUOTA e !QUOTAJ Questi due comandi permettono di quotare gli elementi inseriti in composizione: il primo consente di quotare il singolo articolo, il secondo evidenzia la quota totale. Nella regola, dopo il comando bisogna evidenziare il punto di inizio e fine quota, leventuale misura se diversa da $L e la distanza dal disegno della quota stessa. !QUOTA (0;$A;0),($L;$A;0), ,100 La dimensione che si andr a quotare parte dallorigine sinistra in alto del mobile e termina in corrispondenza del lato destro dello stesso. Il disegno della quota sar spostato di 10 cm rispetto alla composizione. !QOTAJ usa gli stessi parametri e sintassi. Se si vogliono differenziare vari tipi di quotatura, ad esempio quello delle basi rispetto a quello dei pensili, basta specificare un numero progressivo che identifichi il tipo di quota, ad esempio !QUOTA1 (0;$A;0),($L;$A;0), ,100 !QUOTA2 (0;$A;0),($L;$A;0), ,150 Nella fase di stampa sar poi possibile decidere quali quote far comparire (v. capitolo 5).

Nota 1
Se una o pi coordinate da quotare sono il risultato di unoperazione algebrica, questa va racchiusa tra parentesi graffe. Esempio: !QUOTA (0;$A;0),({$L/2};$A;0),,100

Il comando !PM Questo comando consente di forzare il senso sinistro e destro della regola. Per il lettore poco addentro alle problematiche del settore del mobile, il senso di un elemento determinato dallapertura dellanta, se esiste, oppure se si tratta di un terminale, dal suo posizionamento nella composizione. Le tre immagini che seguono identificano rispettivamente unanta destra, una centrale ed una sinistra.

85

Nella figura che segue sono rappresentate due basi terminali.

Terminale sinistro

Terminale destro

Come abbiamo gi spiegato nel primo capitolo, esiste una variabile di sistema, appunto $PM, che assume il valore uno nel caso lelemento sia destro, tre se sinistro ed in fine vale due quando centrale. La scelta del senso dellelemento nella fase di costruzione dellordine, avviene attraverso lapposito pulsante (v. manuale utente). Lutilizzo di !PM allinterno della regola nega questa possibilit di scelta da parte delloperatore. La sintassi : !PM 1 !PM 2 !PM 3 per forzare il senso destro per forzare il senso centrale per forzare il senso sinistro

Il comando !SAGOMA Questo comando, che spiegheremo pi approfonditamente nel paragrafo relativo alle sagome, permette di disegnare una figura diversa dal parallelepipedo
86

(tipica rappresentazione di una tipologia), direttamente allinterno della regola. Vediamo un esempio di applicazione: #LETS PERC=0,0,500,0,800,400,0,400 !SAGOMA TOP $(PERC) 9,DIS=$(TOP) La prima istruzione assegna ad una variabile di tipo stringa, le coordinate (x,y) dei punti che identificano il perimetro della poligonale. Successivamente il comando !SAGOMA disegna appunto la sagoma che sar richiamata dalla tipologia mediante il parametro DIS. Il comando !DELTA Questo comando ha significato solo nellambito dellinterparete. In generale per delta si vuole indicare la differenza che solitamente esiste tra la tabella delle altezze (A) e quella degli spostamenti in altezza (SA). Vedremo pi avanti nelle configurazioni particolari dei cataloghi, che esiste un flag destinato a contenere questo valore, ma per gestire i casi particolari possibile definirlo anche nelle singole regole. Esempio: !DELTA 40 Il comando !ALTEZZE Questo comando legato alla gestione delle linee altezze nei flag speciali (v. paragrafo relativo), in particolare si usa quando vi sono pi modulistiche definite. E necessario specificare il numero della colonna a cui fare riferimento, tale numero pu essere sostituito da una variabile. Esempio: !ALTEZZE 1 Il comando !RIV oppure !RIVALUTA Questo comando fa si che la regola si rivaluti nel caso in cui un box ad essa collegato venga modificato. E utilizzato, ad esempio, nel caso degli angolari fuori squadra. Al comando si fa seguire il parametro 1 oppure 2 Esempio: !RIVALUTA 1 nel caso degli angolari !RIVALUTA 2 in tutti gli altri casi Il comando !MTTRASLA e !MTINIT o !MTRESET Con !mttrasla possiamo appunto traslare una o pi tipologia nelle tre direzioni e ruotarle nei tre assi, con !mtinit o !mtreset (sono equivalenti) si annullano gli spostamenti precedentemente definiti. Sintassi:
87

!MTTRASLA L,A,P,AX,AY,AZ !MTINIT oppure !MTRESET Esempio:


!MTTRASLA 0,0,0,0,45,0 5 // anta 2 // base 4 // ripiano !MTRESET

Nellesempio abbiamo impostato una rotazione sullasse y di 45 gradi, tutte le tipologie che inseriamo dopo assumeranno tali impostazioni, fino a quando azzeriamo gli spostamenti con il comando !mtreset (o !mtinit). Il comando !SPOSTAMI e !SPOSTAMIREL Anche questi comandi, come i precedenti, permettono di traslare un oggetto rispetto alla posizione originale, ma in questo caso lo spostamento agisce su tutto il box corrente. Il primo dei due fa uno spostamento assoluto, il secondo considera eventuali rotazioni del box precedente. Sintassi: !SPOSTAMI (L),(A),(P),(ANGOLO) !SPOSTAMIREL (L),(A),(P),(ANGOLO) I comandi !ADDPUNTO, !DELPUNTO e !AZZERAPUNTI In relazione alla quotatura manuale degli elementi (v. manuale utente), sono stati introdotti questi comandi che consentono di aggiungere e togliere punti significativi da quotare. La sintassi prevede di specificare le coordinate x,y,z del punto da inserire o eliminare. Come gi precisato in precedenza, leventuale espressione algebrica che rappresenta una coordinata va racchiusa tra parentesi graffe. !ADDPUNTO X,Y,Z !DELPUNTO X,Y,Z !AZZERAPUNTI senza alcun parametro elimina tutti i punti, sia quelli standard che quelli inseriti con !addpunto. I comandi !INVERITLATO e !AZZERAINVERTILATO Questi due comandi permettono di capovolgere tutte le considerazioni fatte allinterno di una regola sul $PM (senso sinistro o destro). Per chiarire il concetto facciamo riferimento alla base angolare delle cucine (regola per la quale sono stati creati i due comandi). Data la complessit di gestione dellangolo fuori squadra, la regola stata costruita dagli operatori della Dau. Siccome non c omogeneit tra i produttori di mobili nella definizione della base angolare destra e sinistra (per alcuni la base sinistra quella con lanta con apertura destra), per evitare di generare unaltra regola con gli opportuni controlli sul senso ($PM) invertiti, stato introdotto il comando !INVERTILATO, che va inserito nella regola originale nel caso in cui il senso sia contrario a quello da noi considerato.
88 Commento: Chiedere Ago per funzionamento

E importante che alla fine della regola si inserisca anche !AZZERAINVERTILATO per riportare la valutazione del $PM alla normale gestione. Il comando !DRAGGER Questo comando permette di aggiungere un dragger. La sintassi la seguente: !DRAGGER <nome dragger>,pos X,pos Y,pos Z,Variabile,Direzione Lultimo parametro pu assumere i seguenti valori: 1=L, 2=A, 3=P, 4=menu I comandi !BOXVICINO e !BOXINFO Questo comando cerca i box vicini. E molto utile nel caso si vogliano gestire elementi di finitura, come le cornici soprapensile delle cucine, dove la gestione dei pezzi laterali deve considerare la presenza o meno di elementi vicini.
!BOXVICINO (variabile), (lato),(tipobox),(posX),(posY),(dimX),(dimY),(Nmax)
Commento: Esiste ancora?

Nella variabile ottengo il numero dei box trovati, nel lato devo specificare appunto il lato di ricerca, questo parametro pu valere: DESTRA, SINISTRA, SOPRA, SOTTO, DAVANTI, DIETRO. Il TipoBox pu valere 1 o 2 e comunque pu essere omesso. Gli altri parametri relativi alla posizione e dimensione individuano larea di ricerca. Lultimo valore indica il numero massimo di box cercati. Con questa funzione si ottengono tante variabili (variabile1variabilen) quanti sono i box trovati. Le informazioni in esse contenute sono: il numero del box, la posizione in x, la posizione in y, la dimensione in x e la dimensione in y. Se il numero massimo di box da trovare uno, nella variabile definita ottengo anche le informazioni relative al box trovato. Attraverso il comando !BOXINFO si ottengono informazioni pi dettagliate relative ai vari box trovati. Nel comando devo specificare il numero del box a cui fare riferimento. !BOXINFO (variabile),(TipoInfo),(Nbox) Nel tipoinfo devo specificare il tipo di informazioni che desidero avere, (es. PL, PA, PP, DL, DA, DP,AXZ,A01,TIPO), se non dichiaro nulla vengono comunque memorizzate tutte. Lultimo parametro indica il numero del box che voglio analizzare. Questultimo valore lo posso ottenere dalla colonna zero della variabile ottenuta con il comando !BOXVICINO.
!boxvicino !boxvicino !boxvicino !boxvicino !boxvicino BOXSX,sinistra ,,0, $A-361,$P+200,360,2 BOXDX,destra ,,0, $A-361,$P+200,360,2 BOXSU,SOPRA ,,70,70, $L-140,$P-140,1 BOXSOPRADX,SOPRA,, $L-60,61,40,$P-61,1 BOXSOPRASX,SOPRA,,20,61,40, $P-61,1

!BOXINFO BSIN,,$(BOXSX1:0)

89

I comandi !BOXPANNELLO Questo comando permette di estrarre le informazioni relative ai vari pannelli di cui composto il box. Il comando !COMMENTO Questo comando consente di inserire nelle macro generate in 3Cad dei commenti o note. La sintassi la seguente: !COMMENTO nota1,nota2,nota3

Commento: Da vedere la sintassi con Ago

Commento: Manca documentazione

Funzioni
Al fine di facilitare laccesso a dati e controlli particolari allinterno delle regole, sono state introdotte delle funzioni. La sintassi per le funzioni la seguente:
$[<nomefunzione>;par1; par2;...;parN]

dove par1,...,parN sono parametri che variano a seconda della funzione.


Esempio: $[FORMAT;$a;000]

Le funzioni trovano ampio utilizzo anche allinterno delle stampe parametriche e nelle elaborazioni dei dati anagrafici. Cerchiamo di spiegarne lutilizzo e la sintassi di seguito. Funzione LOOK
La funzione LOOK cerca un codice di valore maggiore o uguale a uno assegnato

La funzione LOOK trova, allinterno di una variante, lelemento che maggiore o uguale rispetto al codice inserito e restituisce lintera riga sotto forma di vettore. La sintassi per questa funzione :
$[LOOK;<nomevariante>;<codice>] Esempio : si supponga che in una tabella misure siano riportati nelle righe di una colonna codice i seguenti valori: 100,200,500,1000,1500; listruzione #LETS misura=$[LOOK;misure;800] assegna alla variabile misura il vettore avente come componenti i campi della riga avente codice 1000, poich il valore immediatamente superiore a 800.

Funzione LOOKB
La funzione LOOKB per cercare un codice di valore minore o uguale di uno assegnato

La funzione LOOKB trova, allinterno di una variante, lelemento che minore o uguale rispetto al codice inserito e restituisce lintera riga sotto forma di vettore. La sintassi per questa funzione : $[LOOKB;<nomevariante>;<codice>]
Esempio : si supponga che in una tabella misure siano riportati nelle righe di una colonna codice i seguenti valori: 100,200,500,1000,1500; listruzione
90

#LETS misura=$[LOOKB;misure;800] assegna alla variabile misura il vettore avente come componenti i campi della riga avente codice 500, poich il valore immediatamente inferiore a 800.

Funzione IIF
La funzione IIF esegue un IF in linea

La sintassi per questa funzione :

$[IIF;<condizione>;valore1;valore2]

La funzione IIF si comporta come un IF in linea, vale a dire che se la condizione vera viene accettato il primo valore, mentre se falsa viene accettato il secondo.
Esempio : #LETS PIPPO=$[IIF;$A>300;ALFA;BETA] In questo esempio viene assegnato alla variabile PIPPO il valore ALFA se la variabile A maggiore di 300, il valore BETA altrimenti.

Funzione CASE
La funzione CASE sceglie fra un elenco di possibilit

La funzione CASE valuta il contenuto di unespressione e, a seconda del risultato, restituisce il valore corrispondente, avendo a disposizione varie possibilit. La sintassi per questa funzione :
$[CASE;<condizione>;valore1;valore2;...;valoreN] Esempio:#LETS PIPPO=$[CASE;$A;PRIMO;SECONDO;TERZO...] In questo esempio viene assegnato alla variabile PIPPO il valore PRIMO se la variabile A uguale a 1, il valore SECONDO se uguale a 2 e cos via. Lassegnazione di tipo posizionale, di conseguenza la variabile $A di tipo numerico e pu assumere valori interi da uno a n.

Funzione DIR
La funzione ricerca un file DIR

La funzione DIR restituisce il valore 1 se esiste il file richiesto, il valore 0 in caso contrario. La sintassi per questa funzione :
$[DIR;<nomefile>] Esempio : #LETS PIPPO=$[DIR;C:\programmi\3cad\dauctrl.ocx] in PIPPO sar contenuto il valore 1 se il file in oggetto stato trovato e 0 se non c

Funzione LEN
La funzione LEN restituisce la lunghezza di una stringa.

La funzione LEN restituisce la lunghezza di una stringa assegnata. La sintassi per questa funzione :
Esempio : $[LEN;stringa] #LETS PIPPO=$[LEN;ALFA]

In questo esempio viene assegnato alla variabile PIPPO il valore 4, poich la stringa ALFA composta da 4 caratteri; si noti che la stringa da valutare stata scritta senza apici. Al posto della stringa ci pu essere una variabile, es. $(alfa).

91

Funzione MID
La funzione restituisce sottostringa MID una

La funzione MID ritorna una sottostringa della stringa selezionata. La sintassi per questa funzione :
Esempio 1: $[MID;<parola>;<da carattere>;<numero caratteri>] #LETS PIPPO=$[MID;PAROLA;3;2]

In questo esempio viene assegnato alla variabile PIPPO il valore RO. Esempio 2: #LETS PIPPO=$[MID;PAROLA;3]

In questo esempio viene assegnato alla variabile PIPPO il valore ROLA, perch, se non viene specificato il numero di caratteri, la funzione MID restituisce la parte finale della stringa, a partire dal carattere specificato.

Funzione ESTRAI o EX
La funzione ESTRAI restituisce una sottostringa parte di un elenco.

La funzione ESTRAI restituisce una sottostringa della stringa selezionata rispetto a un separatore; il separatore pu essere costituito da una sequenza di diversi caratteri. La sintassi per questa funzione :
$[ESTRAI;<variabile>;<separatore>;<posizione>] Esempio: #LETS PIPPO=$[ESTRAI;Primo,Secondo,Terzo,Quarto;,;3] In questo esempio viene assegnato alla variabile PIPPO il valore Terzo. La stringa su cui si fa la ricerca pu essere costituita da una variabile.

Funzione INSTR
La funzione INSTR cerca una stringa allinterno di un testo.

La funzione INSTR determina in che posizione si trova una certa stringa allinterno di unaltra stringa. La sintassi per questa funzione :
$[INSTR;<stringa>;<stringa da cercare>] Esempio: #LETS PIPPO=$[INSTR;Primo,Secondo,Terzo;Secondo] In questo esempio viene assegnato alla variabile PIPPO il valore 7, in quanto la parola cercata secondo inizia nel settimo carattere della stringa Primo,Secondo,Terzo.

Funzione FORMAT
La funzione FORMAT formatta una stringa.

La funzione FORMAT formatta un campo secondo il formalismo della funzione Format$ di VBA. La sintassi per questa funzione :
Esempio 1 : $[FORMAT;<stringa>;<formato>] #LETS PIPPO=$[FORMAT;12;0000]

In questo esempio viene assegnato alla variabile PIPPO il valore 0012. Esempio 2 : #LETS PIPPO=$[FORMAT;131098;00-00-00]

In questo esempio viene assegnato alla variabile PIPPO il valore 13 10-98.

92

Funzione FORMATV
La funzione FORMATV formatta una stringa con quattro zeri.

La funzione FORMATV ha le stesse caratteristiche del FORMAT e serve per gestire la virgola. La sintassi $[FORMATV;<stringa>;<formato>]
Esempio : #LETS PIPPO=$[FORMATV;12.45;00.00] In questo esempio viene assegnato alla variabile PI PPO il valore 12,45.

Funzione SQL
La funzione SQL esegue un comando SQL.

La funzione SQL esegue per lappunto un comando SQL. Il comando un comando di selezione che deve ritornare un campo che corrisponde al ritorno della funzione. La sintassi per questa funzione :
$[SQL;<comando SQL>] Esempio:#LETS NOME=$[SQL;SELECT rag1 from clienti where cod=0001] In questo esempio alla variabile NOME viene assegnato il nome del cliente il cui codice lo 0001.

Funzione SQLA
La funzione SQLA esegue un comando SQL sul database alternativo.

La funzione SQLA identica alla precedente, solo che va eseguita solamente sul database alternativo (presente in alcune procedure e contenente informazioni di tipo gestionale)

Funzione DELTAVAR
La funzione DELTAVAR evidenzia le varianti modificate rispetto alla testata

Questa funzione si usa solo nelle stampe. Serve per evidenziare in ogni articolo le varianti modificate rispetto alle impostazioni di testata. Largomento sar ripreso nel capitolo relativo alle stampe, diamo in questa sede un breve cenno in proposito al file GRUPPI.INI, dove nel gruppo [variantistampa] vengono elencate le varianti di testata. Nel modulo di stampa, mediante il comando #VARSTAMPA, tali varianti vengono assegnate alla variabile $(_varsustampa). La sintassi per questa funzione :
$[DELTAVAR;<var.testata>;<var.riga>] Esempio : #LETS pippo = $[deltavar;$(_varsustampa);$(3:13)] Nellesempio lultimo parametro si riferisce al campo speciali del record relativo allarticolo (v.cap.5 stampe).

Funzione CODVAR
La funzione CODVAR per restituire la descrizione del codice di una variante.

La funzione CODVAR ritorna la descrizione del codice variante impostato. La sintassi per questa funzione :
Esempio : $[CODVAR;<nomevariante>] #LETS PIPPO=$[CODVAR;STR]

Alla variabile PIPPO viene assegnato il valore Colore Struttura, che , appunto, la descrizione della variante di codice STR. La funzione equivale alla chiamata con SQL: $[SQL;SELECT DES FROM VARIANTI WHERE CODVAR=STR]

93

Funzione VAR o VAROPZ


La funzione VAR restituisce la descrizione dell opzione scelta tra un elenco di varianti.

La funzione VAR o VAROPZ ritorna la descrizione dellopzione scelta relativamente ad una determinata variante. La sintassi per questa funzione :
$[VAR<formato><lingua>;<Numero della Variante/<nomevariante>;<elenco varianti>]
Commento: C uguale a quella di prima

Il formato imposta loutput secondo il seguente schema:


0 -> Descrizione della opzione 1 -> Descrizione della variante = descrizione della opzione 2 -> Codice della opzione - Descrizione della opzione 3 -> Codice della Variante - Descrizione della variante 4 -> Codice della Variante Descrizione della opzione 5 -> Come 0 Descrizione della opzione 9 -> Come 1, ma per gestione in lingua

Il parametro relativo alla lingua pu essere omesso. Lelenco delle varianti pu essere a sua volta estratto dalle tabelle del database relative allordine (es. Rordine) ed il nome, o numero della variante, serve per selezionare la stessa allinterno dellelenco citato.
Esempio : #LETS PIPPO=$[varopz1;2;anta=01;str=02;canta=01]

Alla variabile PIPPO viene assegnata la stringa Colore struttura=noce, che la combinazione della descrizione della variante di codice STR con la descrizione dellopzione avente codice 02.

Funzione VARIANTE
La funzione VARIANTE restituisce la descrizione di una variante.

La funzione VARIANTE ritorna la descrizione dellopzione relativamente ad una variante secondo i vari formati elencati precedentemente, in relazione alla funzione VAROPZ. La sintassi per questa funzione : $[VARIANTE;<cod.variante=cod.opzione>;<formato>]
Esempio : #LETS PIPPO=$[variante;anta=02;1] Alla variabile PIPPO viene assegnata la stringa Tipo anta=telaio.

Funzione WEEK
La funzione WEEK restituisce il numero della settimana.

Questa funzione restituisce il numero corrispondente della settimana a cui appartinene una certa data. La sintassi per questa funzione :
$[WEEK;<gg/mm/aaaa>] Esempio: #LETS PIPPO=$[WEEK;10/03/2003] In questo esempio viene assegnato alla variab ile PIPPO il valore 11 che il numero corrispondente alla settimana del 10 marzo 2003.

94

Funzione DATA
La funzione DATA incrementa una certa data di n giorni.

Questa funzione incrementa la data definita di un certo numero di giorni. La sintassi :


$[DATA;<gg/mm/aaaa>;n] Esempio: #LETS PIPPO=$[DATA;07/07/2003;30] In questo esempio viene assegnata alla variabile PIPPO la stringa contenente la seguente data: 06/08/2003.

Funzione DIM
La funzione DIM formatta le dimensioni

Questa funzione formatta le dimensioni secondo lo schema dim1xdim2xdim3 La sintassi :


$[DIM;dim1;dim2;dim3] Esempio: #LETS PIPPO=$[DIM;120;720;340] In questo esempio viene assegnata alla variabile PIPPO la stringa: 120x720x340

Funzione LIRE ed EURO


Le funzioni LIRA ed EURO operano la conversione delle valute

La funzione LIRE converte un importo espresso in lire nella valuta euro. La funzione EURO compie il cambio inverso: da euro a lire. La sintassi :
$[LIRE;<importo in lire>] $[EURO;<importo in euro>] Esempio: #LETS PIPPO=$[EURO;100] In questo esempio alla variabile PIPPO viene assegnato il valore 193627.

Esempio: #LETS PIPPO=$[LIRE;193627] In questo esempio alla variabile PIPPO viene assegnato il valore 100.

Funzione OTTIMIZZA
OTTIMIZZA per lottimizzatore di taglio

Facciamo presente al lettore solo lesistenza di questa funzione per la gestione dellottimizzatore di taglio.

95

Le variabili di sistema per la grafica


Le variabili di sistema di 3Cad

Esiste un numero fisso di variabili all'interno di 3Cad che fanno diretto riferimento alle caratteristiche comuni a tutti i componenti, quali, ad esempio, l'altezza, la larghezza e la profondit. La sintassi per le variabili di sistema data dal nome della variabile preceduto dal simbolo dollaro ($). Il contenuto di una variabile di sistema pu essere forzato tramite il comando #LET ad un valore stabilito dallutente. Seguono ora i nomi di tutte le variabili di sistema utilizzabili in 3Cad.
$L $A $P $SA $DA $SL $DL $NL $NA $NP $UL $UA $UP $PM Lunghezza Altezza Profondit Spostamento in altezza Dimensione in altezza Spostamento in larghezza Dimensione in larghezza Taglio in larghezza Taglio in altezza Taglio in profondit Ulteriore lunghezza BOX Ulteriore Altezza Box Ulteriore Profondit box punto applicazione maniglia (1 sx, 2 centro, 3 dx)

Oltre a queste, il sistema mette a disposizione un altro gruppo di variabili, legate ai pulsanti presenti nella finestra di disegno della regola o di costruzione dellordine. Esse sono: $(LATOSX) e $(LATODX): vengono generalmente usate per la gestione dello zoccolo laterale sinistro e destro nelle cucine, ma potrebbero avere impieghi diversi a discrezione dellutente. Loperatore apponendo il flag nella relativa casella inizializza questa variabile a 1 e, quindi, allinterno della regola si pu condizionare la presenza o meno di una tipologia in funzione del valore assunto dalla variabile in questione. $(LATOASX) e $(LATOADX): queste variabili hanno la stessa gestione delle precedenti, ma si riferiscono alle alzatine. $(LATOBSX) e $(LATOBDX): anche per queste variabili vale quanto spiegato in precedenza, solo che gestiscono le cornici dei pensili. Facciamo notare al lettore che tutte queste variabili possono essere utilizzate anche nei cataloghi di interparete ad esempio per la gestione dei fianchi terminali. $(APERTO): si riferisce allomonimo flag e viene usato per togliere i frontali dalla grafica. Anche in questo caso mettendo lapice sulla casellina viene
96

assegnato il valore 1 alla variabile APERTO che nella regola pu essere verificata per condizionare la presenza o meno dei frontali. Esempio di scrittura di una regola:
#IF $(aperto)=0 5 // anta #ENDIF

In questo esempio lanta viene disegnata solo se $(aperto) ha valore zero, ossia il flag APERTO non viene settato. La figure visualizzano i flag relativi alle variabili spiegate nella fase di collaudo e progettazione:

Flag relativi alle variabili LATOSX, LATODX e APERTO

Latosx,LatoAsx,Lato Bsx,Latodx,LatoAdx ,LatoBdx

Aperto

97

Vediamo ora altre variabili di sistema che si riferiscono alle dimensioni e alle posizioni dei box: CURBOX CURREG LBOX LATO Il numero del box corrente (la numerazione parte da zero). Il numero della regola se il box ne contiene pi di una. Il numero del box collegato al box corrente (da notare che il conteggio in questo caso parte da 1). Il numero del collegamento; ovvero il tipo di collegamento tra il box corrente ed il box indicato dalla variabile LBOX (vedremo in seguito la classificazione dei vari tipi di collegamento). Posizione iniziale assoluta in larghezza del box. Posizione iniziale assoluta in altezza del box. Posizione iniziale assoluta in profondit del box. Spostamento in larghezza rispetto al box precedente e al tipo di collegamento in larghezza. Spostamento in altezza rispetto al box precedente e al tipo di collegamento in altezza. Spostamento in profondit rispetto al box precedente e al tipo di collegamento in prof. Angolo attuale di rotazione sul piano XY del box corrente. Angolo attuale di rotazione sul piano XZ del box corrente. Angolo attuale di rotazione sul piano YZ del box corrente. Dimensione in altezza del box precedente. Dimensione in larghezza del box precedente. Dimensione in profondit del box precedente. Posizione in altezza del box precedente. Posizione in larghezza del box precedente. Posizione in profondit del box precedente. Dimensione in altezza del box collegato allangolo dalla parte opposta allanta. Nel caso non esista alcun box, assume automaticamente il valore 600. Dimensione in larghezza del box collegato allangolo dalla parte opposta allanta. Nel caso non esista alcun box, assume automaticamente il valore 600. Dimensione in profondit del box collegato allangolo dalla parte opposta allanta. Nel caso non esista alcun box, assume automaticamente il valore 600. Questa variabile memorizza il taglio che lutente imposta nella fase di progettazione, facendo clic destro su un oggetto selezionato.

POSL POSA POSP SPTL SPTA SPTP BAXY BAXZ BAYZ LBOXDA LBOXDL LBOXDP LBOXPA LBOXPL LBOXPP CBOXDA

CBOXDL

CBOXDP

_TAGLIO

98

_LINK

Questa variabile riporta il numero di addlink e tutti i parametri associati, nel caso venga usato il comando !SCEGLIADDLINK (v.spiegazione dei comandi). Questa variabile sente la vicinanza delle pareti (inserite con le opportune funzioni nella costruzione dellordine), assumendo il valore 1 oppure 3 rispettivamente se il muro a sinistra o a destra della regola. La variabile memorizza leventuale angolo fuori squadra delle pareti e consente alla base ad angolo di adattarsi ad esso.

_PARETE

_ANGOLO

Carattere @ (a commerciale) - riferimento a una colonna di tabella


Uso del carattere @

Il carattere a-commerciale veniva sfruttato esclusivamente nelle regole grafiche nella generazione dei codici degli elementi e nella definizione delle varianti. Attualmente, con la gestione dei codici a barre e la nuova notazione per le varianti, viene poco utilizzato. Vediamo quale era la sua gestione: (1) Riferimento ad una colonna generica. Quando il carattere a-commerciale (@) viene inserito come prefisso di una variabile di sistema (come L, A, P, DA...) otteniamo un differente risultato dal processo di valutazione, ovvero non viene pi restituito il valore corrente della variabile (impostato interattivamente dal pannello principale di EVENTO 32) bens una delle informazioni tabulate nella relativa tabella della variabile. La colonna dalla quale estrarre l'informazione, viene specificata scrivendo lindice di colonna a seguito del carattere @ e senza spaziature; valori corretti per lindice sono i valori numerici o alfabetici (non alfanumerici). La riga presa in considerazione sar quella in cui il valore allinterno della prima colonna risulta essere immediatamente maggiore oppure uguale al contenuto della variabile di sistema corrispondente. In altre parole, se il valore di una variabile di sistema non tra quelli indicati nella tabella di definizione, viene selezionata come riga attiva quella che riporta la quota immediatamente superiore. (2) Riferimento ad una colonna generica con elisione della riga. Una seconda possibilit di scrittura data dalla presenza, prima dell'indice di colonna, del carattere asterisco (*), attraverso il quale forziamo il valutatore ad elidere l'intera riga, nella quale compare la variabile, se il risultato ottenuto nullo, ovvero nessun valore specificato in corrispondenza della colonna scelta.
Esempio 1: @3A Ritorna linformazione che si trova in corrispondenza della riga attiva e in colonna 3 della tabella di definizione delle altezze utilizzata nella regola.

Esempio 2: @*1P Ritorna linformazione in corrispondenza della riga attiva e della colonna 1 nel la tabella di definizione delle profondit, salvo il caso in cui nessun valore sia stato specificato in tale posizione, circostanza che provocher l'annullamento dell'intera riga nella quale la presente scrittura compare.

99

Il terzo caso, in cui n l'asterisco n l'indice di colonna compaiono, viene trattato nel paragrafo successivo.
Riferimento alla seconda colonna di una tabella usando @

(3) Riferimento implicito alla seconda colonna di una tabella. Quando il carattere a-commerciale il solo prefisso di una variabile di sistema, il valutatore restituisce il valore contenuto della colonna 2 della tabella di definizione della variabile. La colonna 2 corrisponde di solito al "codice"; la riga presa in considerazione sempre quella attiva al momento e cio come spiegato al punto (1).
Esempio: @P Rappresenta il codice riportato in colonna 2 della tabella che descrive i passi delle profondit della riga attiva della tabella.

Concatenamento variante-opzione usando @

(4) Concatenamento variante-opzione (obsoleta in eliminazione). Quando la scrittura relativa ad una variabile presenta, in sostituzione dell'indice di colonna, il carattere acommerciale, il valutatore delle regole produce come risultato la concatenazione del nome della tabella Variante con il codice dell'opzione selezionata .Questa particolare scrittura serve esclusivamente per produrre codici compatibili con la parte gestionale la quale richiede una particolare formattazione dei campi.
Esempio: $(STR:@) Rappresenta il codice riportato nella prima colonna della tabella Variante il cui nome STR.

Carattere ^ - riferimento a una colonna di tabella Vale lo stesso discorso fatto per la @, con la sola differenza che il riferimento, anzich esser calcolato sulle dimensioni del box calcolato sulle reali dimensioni del pannello. E vale solo per L,A,P Questo serve soprattutto nella creazione delle informazioni legate alla riconduzione dei codici di articolo.

Variabili In 3CAD esistono due tipi di variabili: quelle definite dallutente, a valore singolo, e quelle che fanno riferimento agli elementi delle tabelle varianti. (1) Variabili definite dall'utente. Lutente che si occupa della stesura delle regole, a volte trova necessario poter disporre di variabili aggiuntive per memorizzare un valore, effettuare un calcolo od un confronto. A questo scopo 3CAD permette di creare semplici variabili che contengono un singolo valore; il loro nome deve essere preceduto dal simbolo $ e va racchiuso tra parentesi tonde, anche se questultima condizione non necessaria (ma preferibile per una maggiore leggibilit). Le variabili definite dall'utente non necessitano di dichiarazione; esse vengono create la prima volta che il valutatore incontra il loro nome durante l'interpretazione di una regola. Il valore di una variabile definita dallutente viene assegnato mediante luso dei comandi #LET oppure #LETS, ma in questo caso non sar preceduta dal simbolo $.
100

Esempio 1:

#LET MODO=1

con questa istruzione la variabile MODO viene creata nel momento in cui viene valutato il comando LET e le viene assegnato il valore 1.

Esempio 2:

#LETS modello=BLUE

come sopra, solo che in questo caso la variabile modello forzata a contenere un valore di tipo stringa.

Esempio 3:

#IF $A<100 #LETS modello=BLUE #ELSEIF $(A)>200 #LETS modello=GREEN #ENDIF

in questo esempio stato introdotto il comando (#IF...#ELSEIF...#ENDIF) che abbiamo spiegato sopra; ci che si vuole mettere in evidenza la sintassi per le variabili, e come essa vari a seconda del contesto in cui sono ins erite; le scritture $A e$(A) sono del tutto equivalenti. Esempio4: #LET ALFA=12 #LET BETA=18 $$(ALFA):$(BETA) lultima istruzione genera la stringa 12;13;14;15;16;17;18.

Riferimento tabelle varianti

alle

(2) Riferimento agli elementi di una tabella varianti. Come abbiamo gi spiegato nel corso del manuale, 3Cad permette di specificare, attraverso unapposita finestra di inserimento, delle tabelle denominate varianti attraverso le quali definiamo le caratteristiche diverse dei vari componenti (colori, modelli, accessori etc.). Le informazioni allinterno di queste tabelle, sono organizzate per righe e colonne (similmente ad un foglio di calcolo). Per leggere uno dei valori di una tabella necessario specificare, attraverso unopportuna sintassi: il nome della tabella Variante ed un indice di colonna che pu essere numerico o alfabetico (non entrambi); l'indice assume valori scalari (ovvero ordinabili), che nel caso numerico sono i simboli dall'uno al nove (1-9), mentre nel caso alfabetico sono tutte le lettere dell'alfabeto inglese. La riga sar invece quella attualmente selezionata durante lutilizzo della regola. I valori di una tabella non possono essere alterati attraverso il comando di assegnazione #LET ma con il comando #LETV. Di seguito riportiamo alcuni esempi sullutilizzo delle tabelle delle varianti.
Esempio 1: $(COLORE:3) colonna 3, riga selezionata : valore della variante COLORE,

Esempio 2: $(*FACCIATA:6) Il carattere asterisco (*), che va sempre posto tra la parentesi tonda aperta e il nome della variabile, impone al valutatore di annullare completamente la riga, nella quale questa scrittura presente, nel caso il valore ottenuto dalla variabile FACCIATA in colonna 6 sia la stringa nulla. Questa notazione utile nei casi in cui una porzione della stringa da generare sia assolutamente necessaria al significato della stessa e in mancanza della quale di rigore non produrre nulla.
101

Con le variabili possibile anche unaltra sintassi, di cui si d un esempio:


Esempio: #LETS PROVA=SETTEMBRE #LETS A=$(PROVA;1;3) In A sar contenuto il valore SET. Con questa sintassi praticamente come utilizzare la funzione MID.

102

Attivazione delle Tipologie


Le tipologie elementari si richiamano allinterno di una regola, riportando allinizio di una riga il codice di identificazione della tipologia

L'attivazione di una tipologia elementare avviene riportando allinizio di una riga vuota nella fase della valutazione di una regola, il codice che identifica la tipologia stessa. Se non vengono specificati altri parametri, la tipologia viene disegnata nella sua definizione originale e cio seguendo le caratteristiche definite allinterno della tabella delle tipologie. Per apportare delle modifiche alle impostazioni di base, sar necessario scrivere il nome di ciascun parametro seguito dal carattere = e dal nuovo valore che dovr assumere. I vari parametri devono essere separati dalla virgola. Riportiamo un esempio di attivazione di tipologia semplice e uno di tipologia con parametri:
3 3,C1=2,C2=2,L=$L-20,FAC=21 : attivazione semplice :attivazione con parametri

Elenco dei parametri di attivazione delle tipologie Abbiamo gi approfondito nel primo capitolo il significato dei vari parametri relativi alla tipologia, quindi ora proponiamo solo un elenco con una sintetica spiegazione degli stessi:
LATO : assume diversi significati in base al suo valore. Generalmente le tipologie grafiche lo hanno impostato a zero; COD oppure #C: serve per specificare il codice che la tipologia genera allinterno della corrispondente riga del preventivo; SL : serve per specificare uno spostamento in larghezza; SA : serve per specificare uno spostamento in altezza; SP : serve per specificare uno spostamento in profondit; L : serve per specificare la dimensione in larghezza della tipologia; A : serve per specificare la dimensione in altezza della tipologia; P : serve per specificare la dimensione in profondit della tipologia;
Colore C2

Colore C1

C1,C2 : si riferiscono rispettivamente al colore struttura e al colore aggiunto della tipologie. Generalmente solo il primo importante, il secondo viene usato solo in presenza di particolari finiture anta (vedi figura sopra), dove necessario distinguere il colore del pannello dalleventuale telaio. I due parametri devono essere utilizzati sempre in
103

coppia, anche se si vuole modificare solo uno dei due colori; si pu fare riferimento direttamente ad un valore della tabella dei colori, oppure ad una variante tabellata; FAC: serve per modificare il tipo di finitura della tipologia; il valore a cui si fa riferimento uno dei codici delle finiture presenti nella scheda colori e finiture; MAN: serve per modificare il tipo di maniglia della tipologia; come valore si fa riferimento ad uno dei codici delle maniglie presenti nella scheda colori e finiture; AZ,AY,AX: serve per modificare langolo di rotazione con cui disegnare la tipologia; i tre valori numerici si riferiscono ai tre assi di posizionamento tridimensionale di un oggetto; DIS : serve per assegnare una sagoma. Abbiamo gi accennato alla possibilit di attribuire alla tipologia una grafica diversa dal parallelepipedo creando una cosiddetta Sagoma. Vedremo nelle prossime pagine i vari metodi per generare le sagome. SE :condizione inline: imposta una formula, che se falsa non crea il pannello. Esempio: 10,SE=$(ANTA)=1 in questo caso la tipologia 10 viene disegnata solo se la variabile ANTA vale uno. X1,X2.. X10 :parametri aggiuntivi, definiti dallutente e legati alla finitura con gli script e alle gestioni di distinta base e listini speciali.

104

Utilizzo e gestione delle macro di tipologie


Come gi detto nel capitolo 1, le macro non sono altro che regole richiamabili, a loro volta, allinterno di altre. Si accede alla creazione di una macro dal men Regole-Tipologie e scegliendo la scheda macro.
Descrizione macro

Parametri aggiuntivi macro

Area di editazione macro

Per attivare una macro allinterno di una regola, basta inserirne il nome allinizio di una riga vuota. Come le tipologie, anche le macro ora possono essere modificate utilizzando dei parametri. Se, ad esempio, una macro disegna una scocca, la stessa potr essere ridimensionata, ruotata o spostata in base ai diversi parametri a disposizione. I parametri standard di attivazione sono gli stessi spiegati per le tipologie. Eventuali parametri aggiuntivi possono essere impiegati utilizzando allinterno della macro la funzione !PARAMETRI $(nomevariabile1)=, $(nomevariabile2)=,ecc. Quando viene richiamata la macro, si assegnano i valori ai parametri aggiuntivi con le stesse modalit di quelli standard. Esempio di una macro che chiameremo CASSETTO:
!PARAMETRI CAS,COLCAS 14,SL=1,SA=$(SPOST),A=$(ALT) // cassetto

Vediamo ora allinterno della regola che disegna una cassettiera con quattro cassetti, come viene richiamata e gestita la macro CASSETTO:
// ------------INSERIMENTO 1 CASSETTO-------------CASSETTO,spost= $SA,alt=$(HCAS1:3)-3,CAS=$(cas1) #LET SPALT=$SA+1+$(hcas1:3)+1 // ------------INSERIMENTO 2 CASSETTO-------------CASSETTO,spost= $(SPALT),alt=$(HCAS2:3)-3,CAS=$(cas2) #LET SPALT=$SA+1+$(hcas1:3)+1+$(hcas2:3)+1 // ------------INSERIMENTO 3 CASSETTO-------------CASSETTO,spost= $(SPALT),alt=$(HCAS3:3)-3,CAS=$(cas3)
105

#LET SPALT=$SA+1+$(hcas1:3)+1+$(hcas2:3)+1+$(hcas3:3)+1 // ------------INSERIMENTO 4 CASSETTO-------------CASSETTO,spost= $(SPALT),alt=$(HCAS4:3)-3,CAS=$(cas4)

Nella regola la variabile $(SPALT) viene assegnata per gestire lo spostamento in altezza dei cassetti.

Parametri standard

Parametri aggiuntivi

106

Sintassi delle sagome


Una sagoma qualsiasi forma di oggetto diverso da un parallelepipedo

La sagoma identifica un oggetto con forma diversa dal parallelepipedo. Se ad una tipologia necessario applicare una forma poligonale bisogna per prima cosa generare la nuova figura come sagoma. Esistono due tecniche diverse per generarla: la prima che descriveremo quella pi macchinosa, legata alla vecchia versione del programma. La seconda pi veloce, ma comunque si basa sugli stessi concetti di base ed stata introdotta pi recentemente nella procedura. Lutente potr scegliere a sua discrezione quale metodo seguire. Creazione guidata: dal menu Regole si deve scegliere la voce Sagome. La videata che comparir sar simile alla seguente:

Finestra di Gestione delle Sagome

Area della sagoma

Tabella tipo spread in cui si descrive la sagoma : Formula per Punti della Sagoma

La sagoma viene disegnata per punti identificati da due coordinate: x e y. Vi sono poi a disposizione due funzioni che consentono di disegnare un cerchio o un arco. Il disegno deve avvenire in senso orario partendo dallangolo superiore sinistro. Non necessario chiudere la sagoma ripetendo le coordinate del primo punto, il disegno viene completato automaticamente. E possibile disegnare solo forme convesse, le forme concave in costruzione potrebbero soffrire di fastidiose trasparenze. Vediamo nel dettaglio come si devono definire i punti per disegnare la poligonale:

Disegnare per punti

definizione per punti: si suddivide tutta la sagoma o parte della sagoma in un insieme di punti; quindi si scrivono le coordinate dei punti riferite allasse X ed Y allinterno di righe diverse dello spread:

107

Esempio:
Coordinata asse X Coordinata asse Y

e cos via

Disegnare un arco

definizione di un arco : se si individua , allinterno della sagoma , un tratto di forma che corrisponde ad un arco, si pu utilizzare il comando A per disegnare larco piuttosto che definirlo per punti. Il comando A necessita di alcuni parametri che devono essere specificati nelle celle che seguono la casella dove si usa il comando A:

N=numero di segmenti in cui si vuol suddividere larco

Punto iniziale (coordinate)

Punto intermedio (coordinate)

Punto finale (ccordinate)

An

p1x
Esempio:

p1y

p2x

p2y

p3x

p3y

in questo esempio abbiamo disegnato una sagoma formata da due archi di 5 segmenti; i comandi e parametri inseriti nelle celle sono:

A5, 300,

400, 500 \

400, 500,

300+(100*0.707), 100*0.293 ,

400+(100*0.707) , 400+(100*0.707),

A5, 100, 0, 400

Disegnare un cerchio

definizione di un cerchio : se si individua, allinterno della sagoma, un tratto di forma che corrisponde ad un cerchio, si pu utilizzare il comando C per disegnare il cerchio piuttosto che definirlo per punti. Anche per il comando C si specificano dei parametri nelle celle che seguono la casella dove si usa il comando C:
Centro del cerchio (coordinate) Misura del raggio del cerchio

N=numero di segmenti in cui si vuol suddividere il cerchio

Cn

p1x

p1y

Esempio:

in questo esempio abbiamo disegnato una cerchio avente il centro calcolato in base alla variabile di sistema $L e raggio fisso di valore 450 mm.
108

I tre metodi sopra descritti possono essere utilizzati anche insieme. Le coordinate dei punti possono essere valori fissi, riferimenti a variabili di sistema ($L, $A, $P) oppure parametri ($T1, $T2..,$T10). Negli ultimi due casi, quando al parametro DIS della tipologia viene assegnato il codice della sagoma, bisogna aggiungere i valori da assegnare alle variabili o ai parametri utilizzati nella creazione del disegno. Esempio: 2, DIS=nomesagoma:$l-150;$a+200 Dopo i due punti vengono assegnati i valori ai parametri, separandoli da punto e virgola. La sagoma che noi disegniamo sul piano potr subire uno sviluppo poi come solido nelle tre direzioni: altezza, lunghezza o profondit, oppure, in altri termini, la sagoma dovr essere visualizzata in pianta, profilo o fronte. Quando definiamo la poligonale necessario quindi specificare anche lorientamento.

Orientamento della sagoma

Schema di sviluppo dellelemento in pianta, di profilo, di fronte.

Y A
dallalto verso il basso (la sagoma risulta esatta se vista dallalto); da destra a sinistra (la sagoma risulta esatta se vista di fianco); da davanti verso dietro (la sagoma risulta esatta se vista di fronte).

P Z L

109

Se lo sviluppo del solido sar in pianta, il disegno della sagoma non subir variazioni quando verr associato alla tipologia. Negli altri due casi, invece, quando la sagoma deve essere visualizzata di fronte o di profilo, bisogna ricordare che il disegno originale subisce delle rotazioni. La logica del programma quella di mantenere come punto fisso lorigine del pannello. Ricordiamo al lettore che per origine di un pannello si intende il vertice posteriore in basso a sinistra (v. capitolo 1, par.Tipologie). Abbbiamo precedentemente detto che il disegno della sagoma ha come inizio il punto in alto a sinistra, di conseguenza nello sviluppo in fronte quello che stato disegnato nella parte superiore comparir in basso e viceversa. Per quanto concerne la vista di profilo, ci sar unulteriore rotazione, per cui quanto disegnato nella parte destra sar visualizzato nella parte anteriore, mentre quello che stato disegnato a sinistra comparir nella parte posteriore del pannello. Cerchiamo di chiarire i concetti sopra esposti con degli esempi: la sagoma stata disegnata con orientamento Fronte

Lo sviluppo solido in profondit sar il seguente:

110

Se alla stessa sagoma viene assegnato lorientamento Profilo, il risultato nella tipologia sviluppata nel senso della lunghezza sar il seguente:

Il profilo di tipo Cappa specifico per il disegno delle cappe delle cucine. A questo proposito, facciamo notare allutente che luso delle sagome per disegnare le cappe, e pi in generale qualsiasi tipo di oggetto di arredamento, stato soppiantato dalla gestione dei disegni 3ds. Diamo comunque un esempio di come si dovrebbe disegnare una semplice cappa a camino.
Primo punto Secondo punto

Quinto punto Sesto punto Settimo punto

Ultimo punto, dopo il quale il disegno viene chiuso automaticamente

Quarto punto

Terzo punto

111

Come si pu notare dallimmagine, viene disegnato il perimetro esterno della cappa ed il perimetro del camino. Lo sviluppo in grafica sar il seguente:

ASCII Allinterno del nome del gruppo relativo alla Sagoma ci devono essere gli stessi parametri: [Cornice:$L$(angolo:3)] 0,0,\

20,40,.......

Sagoma al volo. Questo metodo consente di disegnare le sagome direttamente allinterno di una regola I concetti e i limiti sono quelli gi descritti sopra. Vediamo nellesempio che segue la sintassi da usare: #LETS TMP=0,0, $L,0, $L,$P, 0,$P, $P-100,0 con il comando LETS vengono assegnate ad una variabile stringa le coordinate (x,y) per punti del perimetro della sagoma in senso orario (ricordiamo la possibilit di gestire anche le funzioni arco e cerchio). Poi tramite il comando che segue: !SAGOMA TOP $(TEMP) si crea la sagoma che sar richiamata dalla tipologia con il parametro DIS: 9, DIS=$(TOP) //sagoma top

Il commando !sagoma, senza ulteriori parametri, crea la sagoma con orientamento pianta, per gestire gli altri orientamenti vi sono i tre comandi !sagomaL, !SagomaP e SagomaC che permettono di disegnare la sagoma rispettivamente in Profilo, Fronte e Cappa. A differenza delle sagome costruite dal men Regole-Sagome che vengono salvate sul database, queste sagome sono definite al volo perch rimangono

112

locali nella regola in cui vengono utilizzate e non possono essere richiamate al di fuori di essa. Questa gestione stata implementata con delle funzioni che consentono di operare sulla sagoma stessa dei fori ovali o rotondi. Il comando che consente questo tipo di operazioni FE (foro ellittico). La sintassi : FE<n.punti>,x1,y1,x2,y2 Quando si determina il percorso che dovr seguire la poligonale, viene aggiunta anche listruzione che esegue la foratura. Esempio:
#LETS perc=0,0,$l,0,$l,$p,0,$p,fe50,50,50,$l-50,$p-50 !SAGOMA cerchiocos $(perc) 6,dis=$(cerchiocos) // top

113

Funzioni matematiche per il calcolo dei punti significativi


Questi comandi si basano su funzioni che richiedono 2 box fra loro collegati e la relazione esistente tra punti di box1 e box2, e lintersezione di linee virtuali definite da box1 e box2. Sono usati principalmente nelle regole degli elementi angolari. !MT COLLEGA (PXCOLL),(PYCOLL),(PX),(PY),(ANGOLO) Gestisce un collegamento con il box precedente di tipo 198. Il collegamento prevede i seguenti parametri: pxcoll, pycoll: posizione x e y del box collegato (riferite a se stesso) px,py: punto di contatto con il box corrente angolo: angolo di rotazione

Il sistema mette a contatto pxcoll, pycoll con px,py e ruota di angolo. !DISTANZA (VARIABILE), (PX1),(PY1),(PX2),(PY2) inserisce in variabile la distanza tra 2 punti ricalcola i collegamenti dei box e azzera ogni linea tracciata di riferimento Calcola una retta a cui assegna un numero identificativo (da 0 a 9) parallela (tipo=0) o perpendicolare (tipo=1) al box selezionato a una distanza (distanza) dallorigine La retta pu essere riferita al box collegato con il parametro [boxprecedente]=1 Calcola il punto di intersezione tra 2 rette identificate da idretta1 e idretta2, inserendolo nelle variabili varx e vary e indicando in errore il valore 1 se lintersezione ha avuto successo Trasforma il punto (puntox, puntoy) del box collegato in varx e vary del box corrente Trasforma il punto (puntox, puntoy) del box corrente in varx e vary del box collegato !MATHAZZERA

!RETTA (ID),(TIPO),(DISTANZA),[BOXPRECEDENTE]

!INTERSECA (VARX),(VARY),(IDRETTA1),(IDRETTA2),[ERRORE]

!PUNTO (VARX),(VARY),(PUNTOX),(PUNTOY)

!PUNTOL (VARX),(VARY),(PUNTOX),(PUNTOY)

114

LINK
Cosa inserire nei campi Link in intestazione regola

Con il termine link si vuole indicare il tipo di collegamento esistente tra due box vicini. Abbiamo gi visto, spiegando lintestazione delle regole, che il tipo link pu essere definito nei campi Link Precedente e Link Successivo e in relazione a ci esiste una lista di link che consentono di collocare un box rispetto ad un altro in moltissimi modi. Per collegare tra loro gli elementi, uno strumento ancora pi potente risulta essere il comando ADDLINK.

Il comando addlink
Questa funzione consente di creare diversi collegamenti ( sempre tra box ) a seconda delle necessit (quindi collegamenti diversi con box diversi) sfruttando una semplice sintassi e seguendo sempre la stessa tabella sopra riportata. Il metodo di lavoro da utilizzare consiste nel denominare ogni tipo di box con il comando TIPOBOX e un numero identificativo del box stesso. Dopodich si definisce con la funzione ADDLINK il vero e proprio tipo di collegamento che si vuole instaurare. Per maggior chiarezza portiamo un esempio. (sopralzo) ! AZZERA !TIPOBOX 1 !ADDLINK1 coll a dx,101 !ADDLINK2 coll sopra,501 (schiena) !AZZERA !TIPOBOX 2 Con questo metodo abbiamo definito due diversi tipi di link per lo stesso box ovvero: nel caso in cui si affianchino due box sopralzo ci sar fra loro un collegamento a dx (101 come da tabella), quando si aggiunger una schiena questa verr posta sopra (501 come da tabella). Al comando ADDLINK possono essere aggiunti dei parametri facoltativi che specificano degli spostamenti nelle tre direzioni L, A, P ed una eventuale rotazione. La sintassi diventa la seguente: ADDLINK5 coll sopra,501,xx,yy,zz,aa dove Una breve descrizione chiarisce il tipo di collegamento 501 il codice che individua il tipo di collegamento (tabellato) xx leventuale spostamento in larghezza yy leventuale spostamento in altezza zz leventuale spostamento in profondit
115

aa leventuale rotazione

Segnaliamo al lettore che sempre possibile il collegamento manuale dei box, argomento che sar ripreso nel manuale utente, e che si effettua selezionando lelemento e cliccando con il tasto destro sulla voce di men Collegamenti, la finestra che apparir sar simile alla seguente:
Box a cui collegare

Tipo di Link

Spostamenti e rotazioni del box

116

Configurazioni particolari del catalogo


Sulla base delle tipologie definite si andranno a creare le regole e quindi i veri e propri elementi che compongono il catalogo in oggetto. Dopo aver creato gli oggetti del catalogo, lutente pu memorizzare alcune informazioni che servono per personalizzare ulteriormente il catalogo. In relazione a questo vi sono delle differenze di impostazione tra i cataloghi di cucine o bagni ed i cataloghi di interpareti. Alcune configurazioni sono comunque comuni ad entrambe le gestioni, una di queste la deriva.
Voce Flag Speciali del menu Regole

Per accedere a questa sezione del programma si deve selezionare la voce Flag Speciali dal menu Regole. Deriva

Con la derivazione viene forzato il valore di una variante di un elemento, ad un valore che dipende da unaltra variante

La prima scheda appunto quella intitolata Deriva, essa gestisce le relazioni esistenti tra le varianti. Si tratta di un metodo che consente ad alcune tipologie di ereditare le varianti di altre tipologie ad esse collegate. In altre parole possibile forzare il valore della variante di un componente in funzione (o in corrispondenza) del valore della variante di un componente adiacente o di uno pi esterno (che lo contiene); ad esempio il massello potrebbe ereditare lo stesso colore dallanta oppure essere forzato al colore nero se quello dellanta noce. Come si vede nella figura che segue, ci sono due colonne: nella prima si devono inserire le varianti che faranno derivare le varianti della seconda colonna. La derivazione avviene infatti dal primo gruppo (Tabella di deriva) verso il secondo (Tabella derivata).

Le derivazioni sono possibili solo tra tabelle di varianti

Derivazione totale

Derivazione su valori specifici

Vi sono due modi per impostare un legame di derivazione, a seconda che la variante debba essere derivata per tutti i possibili valori oppure soltanto per alcuni.
117

1) Derivazione per tutti i valori possibili

Nel primo caso i nomi delle due tabelle devono essere inseriti uno nella cella di sinistra laltro in quello di destra. Questa scrittura provoca la derivazione del valore della variante di destra dal valore della variante di sinistra (qualunque esso sia). Nel secondo caso si ha invece una derivazione solo su valori specifici; la sintassi simile alla forma precedente con la differenza che vengono introdotti anche i valori sui quali il processo di derivazione deve reagire. Se la variante del primo gruppo uguale al valore associato, allora la variante del secondo gruppo viene forzata all'altro valore specificato.
Nellesempio visualizzato la variante xan fa derivare tutte le altre. In pi se essa assume particolari valori, la variante ca1 ne assumer degli altri definiti.
DATABASE Le tabella di Deriva viene salvata nella tabella Speciali del database. Le varie derive si trovano tutte allinterno di un unico record di questa tabella. [Speciali] 000 , CaT 001 , COD 002 , DES 003 , MEMO #00 , COD , TEXT 20 , TEXT 20 , TEXT 35 , MEMO , +CAT;+COD , T , T

2) Derivazione su valori specifici

Il primo campo viene inizializzato con il nome del catalogo poich le derive variano da catalogo a catalogo. I campi del codice e della descrizione della tabella riportano la dicitura DERIVA. Nel campo Memo vengono memorizzate le varie derive separate dal carattere ASCII corrispondente a 009Dec (TABULAZIONE).

Gruppi tipologie La seconda scheda dei flag speciali riguarda le tipologie legate alla riconduzione ed alle lavorazioni. Nella parte sinistra della schermata appare lelenco di tutte le tipologie, nella parte destra vi sono altre quattro finestre, analizziamole:
Tipologie Aperto lelenco delle tipologie che non devono essere visualizzate nella vista Aperta

(1) Tipologie Aperto : permette di indicare le tipologie da non visualizzare quando si desidera una vista del mobile aperto nella fase di ambientazione (v. manuale utente). Le tipologie devono essere indicate una di seguito allaltra separate da asterischi, iniziando con un asterisco e terminando con un asterisco. Per la selezione si pu utilizzare lelenco delle tipologie applicando le tecniche standard di Windows per le selezioni (tasti SHIFT o CTRL + clic del mouse). (2) Tipologie Top : consiste di una tabella con varie colonne. Nella prima colonna viene indicato il numero della tipologia in corrispondenza della quale due tipologie adiacenti dello stesso tipo devono essere fuse in un unica tipologia (Tipologia a riconduzione). Quindi, se nella composizione di alcune colonne, pi tops appartenenti alla medesima tipologia risultano essere adiacenti, si otterr come risultato un unico top il cui ingombro dato dall'unione degli ingombri dei tops che lo costituiscono. Oltre al numero della tipologia si possono definire altre caratteristiche attraverso luso di alcuni flag, vediamo quali sono e che significato hanno: A legge la misura massima relativa alla tipologia in
118

Tipologie Top lelenco delle tipologie che i cui top, se adiacenti, vengono fusi in un unico top

anagrafica, N non stampa il disegno (es.barra reggipensile), T serve per totalizzare, significa che anche se vengono usati vari pezzi di una barra, tali pezzi vengono unificati in un unico pezzo avente la lunghezza specificata.

(1) Tipologie aperto

(2) Tipologie top

Esempio di utilizzo del flag A per la lettura della lunghezza in anagrafica

Nella seconda colonna vengono invece introdotti i codici delle tipologie per la lavorazione dei tops che si rendono necessari durante la fusione degli stessi (Tipologia Incidenza). infatti possibile introdurre nel gruppo Tipologie non solo la descrizione di oggetti elementari ma anche la definizione di particolari lavorazioni cui sono soggetti alcuni pezzi; ad esempio i fori rettangolari nei quali trovano sede le coppe di un lavabo in acciaio per cucina. Nella colonna Taglio vengono indicate le tipologie che permettono la divisione del top in pi parti. La colonna Travaso si riferisce alla generazione di un file ini per il trasferimento dei dati alle macchine a controllo numerico. La colonna Booleane permette di unire le tipologie ed eseguire le eventuali forature; i valori che si possono scrivere sono: 1 unisce le tipologie solo se hanno lo stesso senso vena, 3 unisce le tipologie ignorando il senso vena, 5 unisce le tipologie aventi il medesimo senso vena , ma sul piano delle altezze (es. zoccoli), 7 unisce le tipologie sul piano delle altezze ignorandone il senso vena. (3) Schemi disegno : era utilizzato nelle versioni precedenti di Evento, attualmente non abilitato. (4) Tipologie quotabili in pianta : anche questo campo veniva gestito nella vecchia versione, ma attualmente non abilitato.

DATABASE I quattro tipi di informazioni impostabili dalla finestra Gruppi Tipologie vengono memorizzati allinterno di quattro record distinti della tabella di database chiamata Speciali. [Speciali] 119

000 , CaT 001 , COD 002 , DES 003 , MEMO #00 , COD

, TEXT 20 , TEXT 20 , TEXT 35 , MEMO , +CAT;+COD , T , T

Il primo campo viene inizializzato con il nome del catalogo poich queste informazioni variano da catalogo a catalogo. I campi del codice e della descrizione della tabella riportano la dicitura: SCHEMIDISEGNO, per la tabella schemi disegno; TIPAPERTO, per la tabella tipologie aperto; TIPOLOGIETOP , per la tabella tipologie top; ed infine TIPQUOTE, per le tipologie quotabili in pianta. Nel campo Memo vengono memorizzate i valori delle tabelle, separati dal carattere ASCII corrispondente a 009Dec (TABULAZIONE).

Altezze

1. Linee altezze definite per vista frontale

2. Linee di collegamento per le regole

2.Riferimento allaltezza attraverso la variabile

5. Pulsante Crea Documentazione

4. Ultimo numero ordine

Linee Altezze linsieme dove si specificano le linee di righello da usare nella vista frontale

(1) Linee altezze : si tratta delle varie linee di righello che appaiono utilizzando il pannello della vista frontale, dalla finestra di Costruzione di 3Cad. Tramite queste linee loperatore riesce a posizionare in modo esatto i vari elementi della composizione. Sono state previste pi colonne per poter gestire varie modulistiche. Loperatore pu specificare nelle diverse colonne le varie misure in altezza (ad esempio in base ai vari tipi di zoccolo). Nel caso in cui si utilizzino varie colonne di altezze, allinterno della regola bisogna impostare a quale colonna fare riferimento con il comando !ALTEZZE seguito dal numero della colonna alla quale fare riferimento (il numero pu essere sostituito da una variabile)

120

Linee collegamento una tabella di raggruppamento delle tipologie che serve per specificare i tipi di collegamenti possibili tra le tipologie stesse

(2) Linee di collegamento: dentro questa tabella si definiscono le classificazioni dei tipi di collegamento. Riprendiamo in questa sede gli argomenti relativi ai link visti nel corso del secondo capitolo, si stabilisce, infatti, come le regole devono collegarsi tra loro, cos da facilitare loperatore nella fase di inserimento dellordine. Per ogni gruppo, che si identifica con un numero ed una descrizione (v. nellimmagine es. 0-BASI), si definisce quali saranno i gruppi ai quali le regole del gruppo stesso potranno collegarsi ed in quale modo. Ogni gruppo corrisponde ad una riga della tabella e sono numerati a partire da 0,1,2,.. I vari gruppi si specificano nella colonna Tipologie separati da un asterisco (*) . Il lato corrisponde ad un codice della tabella dei Link gi esposta nel secondo capitolo, mentre altezza serve per specificare laltezza alla quale posizionare le regole che appartengono al gruppo. Se vengono usate varie modulistiche in altezza, sfruttando la possibilit di compilare pi colonne, invece di specificare unaltezza fissa, si va a definire un puntatore alla tabella delle altezze, cos la quota di inserimento degli elementi varia in funzione della modulistica prescelta. Facciamo notare al lettore, che anche la numerazione delle righe della tabella parte da zero, come per le colonne. La sintassi la seguente: $(TABALTEZZE:n.RIGA) Nel corso del secondo capitolo abbiamo visto che nellintestazione delle regole c un apposito campo, chiamato link, dove si stabilisce lappartenenza della regola ad un determinato gruppo.

Delta Altezze corrisponde alla differenza tra le tabelle A e SA

(3) Delta altezze: questo campo viene utilizzato nella gestione dellinterparete dove generalmente tra la tabella delle altezze A (che si riferisce allaltezza totale dellelemento) e quella degli spostamenti in altezza SA (che riguarda il modulo di inserimento dei componenti quali ante e ripiani), c una differenza che dipende dallo zoccolo. Inserendo in questo campo il delta, 3Cad calcola in modo automatico la posizione degli articoli, aggiungendo questo valore allo spostamento. Il dato qui impostato viene considerato da tutte le regole del catalogo, ma nel caso in cui in una grafica debba riferirsi ad un valore diverso, allinterno della regola si pu utilizzare il comando !DELTA seguito dal valore da assegnare. (4) Ultimo ordine : si tratta dellultimo ordine memorizzato a livello di file esterno. Ricordiamo al lettore che oltre ad essere salvato come file .EVE, lordine viene memorizzato nel database in varie tabelle: TORDINE per i dati di testata, RORDINE per le righe relative agli articoli inseriti, BORDINE per i dati della produzione, DORDINE per leventuale distinta base, VORDINE per le varianti. In presenza di una rete di calcolatori collegati, c la necessit di permettere il salvataggio degli ordini dalle varie postazioni senza problemi di sovrapposizione. Per risolvere questo problema, nella tabella speciali del database ci sar un record per ciascun operatore dove viene definito un numeratore con il relativo numero dordine iniziale. Lo stesso numeratore va specificato nellevento2.ini di ogni calcolatore. In sostanza vengono fissati degli intervalli di numeri ordine disponibili per le varie postazioni. Questo metodo, per, limita ciascun operatore al salvataggio di un numero massimo di composizioni. Per ovviare a questo, stato introdotto un altro sistema che prevede lo stesso numeratore per tutte le postazioni, consentendo di memorizzare ordini allinfinito. Nellimprobabile evenienza che diversi operatori salvino la composizione nel
121

Ultimo ordine il numero dellultimo ordine memorizzato

medesimo istante, la procedura si preoccupa di creare ordini distinti nellestensione (EV2 invece di EVE). (5) Crea Documentazione : premendo su tale pulsante si crea il file /3Cad/NomeCatalogo/doc.txt che contiene un elenco dei colori, tipologie, macro, dimensioni, varianti, regole e sagome utilizzate nel catalogo, con le loro principali caratteristiche.
DATABASE I primi quattro tipi di informazioni impostati dalla finestra Altezze vengono memorizzati allinterno di quattro record distinti della tabella di database chiamata Speciali. [Speciali] 000 , CaT 001 , COD 002 , DES 003 , MEMO #00 , COD , TEXT 20 , TEXT 20 , TEXT 35 , MEMO , +CAT;+COD , T , T

Il primo campo viene inizializzato con il nome del catalogo poich le informazioni variano da catalogo a catalogo, con esclusione del campo ultimo numero ordine che viene memorizzato in un record comune a tutti i cataloghi (che quindi contiene # allinterno del campo Cat.). I campi del codice e della descrizione della tabella riportano la dicitura: TABALTEZZE, per la tabella altezze; TABLINK, per la tabella dei collegamenti; DELTA, per il valore del delta; ed infine NUMERO, per il campo ultimo numero ordine. Nel campo Memo vengono memorizzate i valori delle tabelle, separati dal carattere ASCII corrispondente a 009Dec (TABULAZIONE).

122

Capitolo

Codifica
Come codificare i semilavorati e gli articoli di listino

Concetti generali
a codifica in genere il passo successivo a quello della generazione delle regole. Essa permette di ottenere dal programma oltre alla rappresentazione grafica, il preventivo della composizione. Inoltre consente il passaggio dei dati elaborati con 3Cad al sistema gestionale dellazienda, condizionando tutte le fasi successive di fatturazione e gestione di magazzino.

Rimanendo nellambito dellinterparete, i primi elementi da considerare ai fini della codifica, sono i componenti, ossia le tipologie. Abbiamo gi visto nel primo capitolo dove andare a definire il loro codice, ora spiegheremo la metodologia da seguire per costruirlo. In linea di massima si possono adottare due strategie. La prima consiste nellanalizzare approfonditamente il sistema di codifica utilizzato dal produttore, verificare come varia al variare delle dimensioni delloggetto, associare a ciascuna misura i caratteri corrispondenti nelle tabelle dimensionali. Facciamo un esempio: il codice dei fianchi costituito da un prefisso FI, seguito da un numero che ne indica laltezza e un altro la profondit. Supponiamo che i valori corrispondano alla seguente tabella: H.364 H.684 H.1004 H.1324 H.1644 H.1964 P.320 P.600 FI11 FI12 FI21 FI22 FI31 FI32 FI41 FI42 FI51 FI52 FI61 FI62

Come si pu notare, alla profondit 320 stato associato il numero 1, alla profondit 600 il numero 2. Per le altezze stato utilizzato un progressivo. In funzione di questi dati, nelle tabelle dimensionali A e P (altezza e profondit), andiamo a compilare la seconda colonna come si nota nelle schermate che seguono:

123

Tabella Altezze

Colonna per la costruzione del codice

Tabella Profondit

Colonna per la costruzione del codice

Nel codice della tipologia andremo a scrivere la stringa: FI@A@P Dove FI il prefisso, ossia la parte fissa del codice, @A e @P sono le formule usate per dire al programma di andare a prendere i valori nella seconda colonna rispettivamente delle tabelle A e P. A volte si rende necessaria anche la compilazione delle colonne successive, quindi lindicazione verr ampliata con il numero della stessa. Se, ad esempio, il numero progressivo assimilato alle altezze, fosse stato caricato in terza colonna, la sintassi sarebbe stata la seguente:
124

FI@3A@P Il lettore ricordi che la seconda colonna considerata come default, quindi non va specificata. Questo tipo di codifica piuttosto laborioso e diventa addirittura inutilizzabile quando i codici non seguono una logica ben definita. In ogni caso, loperazione non si esaurisce con la codifica delle tipologie, in quanto esistono articoli non contemplati e per i quali si andr a specificare il codice dentro la regola. Il secondo metodo di codifica molto pi veloce e permette di superare il problema legato allassenza di logica evidenziato sopra. Esso consiste nellassociare agli articoli di anagrafica un codice di appartenenza, da definire nellapposito campo detto Codice della barra. Lo stesso codice sar richiamato dalla tipologia. La procedura, mediante le dimensioni delloggetto, sar in grado cos di restituire il suo codice. La realizzazione di quanto sopra si basa su due punti fondamentali: nellarchivio anagrafico devono essere inserite le dimensioni degli articoli e bisogna che queste rispettino lo stesso orientamento attribuito alle tipologie. Abbiamo visto nel primo capitolo come lorientamento rappresenti la sequenza con cui si devono proporre le tre dimensioni caratteristiche L, A, P. Generalmente esso relativo al senso della venatura del legno e mette in rilievo le due dimensioni principali, lasciando per ultima quella che non pu variare. Volendo definire unanta, la sua lunghezza sar quella che di solito identifichiamo come altezza, laltezza diventer quella che normalmente chiamiamo larghezza, mentre la profondit che di solito rimane fissa, resta il terzo dato. La nuova sequenza sar cos: A,L,P. Considerando ancora lanta come esempio, il codice da scrivere nel campo codice barra potrebbe essere +XANT , nel quale i primi due caratteri sono fissi ed obbligatori, e ANT il nome, che in questo esempio, dovr essere attribuito a tutte le ante aventi le stesse caratteristiche e che si differenziano solo per le dimensioni. Nella tipologia relativa allanta, la sintassi da seguire sar invece: ^(XANT) Lattribuzione dei codici viene fatta scegliendo la voce di menu Compila Barre.
Suggerimento
Per facilitare la selezione degli articoli e la compilazione del relativo codice barra, si pu eseguire in Access una query .allinterno del file anagrafico.

Anche questo sistema di codifica ha dei limiti, per cui il caso particolare va sempre trattato allinterno della regola. I due metodi possono comunque convivere, loperatore potr abbinare i due sistemi in modo tale da ottimizzare e velocizzare la codifica. Successivamente, una volta collaudate le regole e verificata la loro componibilit, si passa alla costruzione delle macro, o composizioni, presenti a listino. Queste ultime si generano in costruzione dellordine assemblando i vari componenti, utilizzando i comandi messi a disposizione dallambiente 3Cad e per la spiegazione dei quali, rimandiamo il lettore al manuale utente. In questa sede ci preoccupiamo, invece, di approfondire il funzionamento delle macro. Una volta creata la composizione nella finestra di costruzione di 3Cad il comando per il salvataggio Ctrl-M, dopo il quale si aprir la seguente finestra:
125

Campo per il codice di listino della macro Codice anagrafico della macro

Codice delle regole per il riconoscimento automatico Pulsante per il salvataggio della macro

Il codice di listino e la descrizione si devono inserire negli omonimi campi. Si pu definire poi il gruppo di appartenenza, come per le regole, facendo clic sulla freccia e selezionando uno tra tutti i gruppi presenti, precedentemente caricati nella tabella tipo macro come visto al capitolo 1. Se, come accade di frequente, il codice di listino diverso da quello anagrafico, prima del gruppo [BOX] si deve inserire un gruppo [GEN] nel quale si specifica il codice effettivo. Proseguendo nellanalisi della videata, Il campo Crea codice propone i codici delle regole dei componenti (v.definizione delle regole), necessari al riconoscimento delle colonne. Per salvare la macro, fare clic su Salva e chiudere la finestra. Le stesse operazioni si dovranno ripetere per tutte le composizioni di listino.

La codifica nelle cucine


Per quanto concerne lambiente cucina, la codifica avviene attraverso le associazioni. Loperazione consiste nel legare ad una determinata regola grafica un codice di vendita. Dal punto di vista anagrafico, il codice articolo a cui ci si riferisce quello neutro, ossia privo del prefisso modello (tabella ARTNEUTRI del database). Dal menu ordini si sceglie la voce Builder, la finestra che si apre sar simile alla seguente:

126

Scelta del codice articolo sinistro Codice della tipologia Relativo codice destro

Salvataggio dellassociazione

Loperatore deve scegliere il codice articolo e associargli la regola voluta, determinare le dimensioni, selezionare il gruppo di appartenenza (codice tipologia). Per elementi che hanno codici diversi a seconda del senso sinistro e destro, basta effettuare il salvataggio per il sinistro (il destro viene di conseguenza).

127

Capitolo

Stampe Parametriche
Come utilizzare il linguaggio delle Regole per la generazione di moduli di stampa personalizzati

Concetti generali
Le stampe, in 3Cad sono manipolabili dalloperatore che ne imposta laspetto grafico attraverso i cosiddetti moduli di stampa

e stampe di 3Cad sono gestite in modo parametrico, cio , sulla base dei dati prodotti per la stampa da programma, laspetto grafico del modulo, pu essere completamente manipolato dalloperatore il quale pu impostare la grafica della stampa a proprio piacimento. In alcuni casi, a seconda della stampa, loperatore pu anche intervenire sulla selezione dei dati in uscita.

I files dei moduli di stampa vengono creati e modificati utilizzando lEditor Ascii di 3Cad o qualsiasi editor di preferenza delloperatore; infatti un modulo di stampa un file di tipo testo, simile a quello di memorizzazione delle regole ed avente lestensione *.STN nel caso di stampe generiche di 3Cad, mentre lestensione *.STG per le stampe relative ai carichi.
I moduli di stampa, sono files tipo testo con estensione *.STN o *.STG e si trovano allinterno della cartella del catalogo

I files delle regole di stampa sono contenuti in una specifica cartella, impostata dalloperatore nel Setup di 3Cad (flag percorsostampe in Evento2.ini) oppure possono trovarsi in tutte le sottocartelle di 3Cad corrispondenti ai vari cataloghi in uso. Nel primo caso le stampe sono uniche per tutti i cataloghi utilizzati (e quindi modificando un modulo di stampa, la modifica si ripercuote allinterno di tutti i cataloghi), mentre nel secondo caso sono personalizzabili a livello di singolo catalogo (e quindi la modifica fatta in un file di stampa rimane isolata allinterno del catalogo nel quale si ha operato). Quando si vuole creare o modificare un file di stampa , si deve quindi crearlo o cercarlo allinterno della cartella stampe generale o relativa al catalogo sul quale si sta operando.
ASCII I files dei moduli di stampa hanno lestensione *.STN e sono memorizzati allinterno della cartella del catalogo (EVENTO 32\NomeCatalogo) oppure nella cartella stampe impostata dallutente.

Formato della Regola di stampa


Il modulo di stampa riporta tre gruppi: [VARIABILI], [TESTA], [PAGINA]

Il generico modulo di stampa strutturato in gruppi poich infatti, esso costituisce una regola di stampa (per la sintassi di gruppo vedi Cap.1). I gruppi del modulo di stampa sono i seguenti ad eccezione di INTESTAZIONE con cui si intendono le prime righe del modulo, prive di gruppo:

128

INTESTAZIONE (opzionale): sono le prime righe del modulo prive di gruppo e servono per avviare delle specifiche di comando preliminari rispetto allesecuzione della stampa; [VARIABILI] (opzionale): in questo gruppo, lutente pu dichiarare delle variabili da utilizzare nel corso della stampa, allinterno delle quali memorizzare dei valori di cui poter usufruire quando necessario; [TESTA] (obbligatorio): allinterno del gruppo testa si definisce laspetto grafico dellintestazione e del piede del modulo di stampa (si vedranno poi le istruzioni di linguaggio utilizzate per definire il modulo di stampa); [PAGINA] (obbligatorio): allinterno del gruppo pagina si definisce laspetto grafico del corpo di stampa. E in questa parte del modulo che contenuta la maggior parte dei dati di stampa (si vedranno in seguito le istruzioni del modulo di stampa).

Le specifiche di comando servono per produrre i dati da stampare e sono precedute dal simbolo #.

Allinterno di un qualsiasi gruppo del modulo di stampa, si possono trovare delle specifiche di comando che servono, a livello di calcolo, per produrre dei dati particolari da riportare poi in stampa (di solito, per, sono contenute nel gruppo TESTA oppure riportate allinizio del modulo). Queste specifiche di comando sono in alcuni casi modificabili dalloperatore, in altri casi fissate a livello di programma e quindi solamente richiamabili dal modulo di stampa. I comandi sono in genere preceduti dal simbolo # (per in alcuni casi possono esserne privi ).
Esempio di righe di comando: #ACCORPA PREPETI

Nota
Se loperatore modifica una stampa per personalizzarla oppure crea una nuova stampa, deve fare attenzione a non privare il file ASCII di stampa dellintestazione dei gruppi obbligatori ed inoltre non deve cancellare le righe di comando (sempre se necessarie in esecuzione di stampa). Se non interessato al contenuto di un gruppo obbligatorio pu cancellare tutte le righe del gruppo, ma non pu eliminare lintestazione del gruppo ([TESTA]...).

Cosa contiene la stampa parametrica

Oltre alle righe relative alle specifiche di comando, che appunto servono per preparare le informazioni da stampare, allinterno dei files di stampa, si trovano le varie righe che descrivono completamente la stampa, cio le istruzioni che stampano le righe di fincatura del modulo, le istruzioni che stampano i testi fissi del modulo e le istruzioni che stampano i dati in un certo formato ed in una certa posizione. Vi sono poi istruzioni per riprodurre in stampa intere tabelle di dati, riprodurre immagini, cambiare il formato del testo etc...

129

Variabili della Regola di stampa


Le variabili di stampa sono di tre tipi: definite dallutente, variabili singole, variabile records.

I dati che vengono stampati in un modulo di stampa, possono essere di tre tipi (come dati si intendono le informazioni pre-impostate da programma o create tramite luso delle specifiche di comando). Un esempio di dato il nome di un cliente che varia da ordine ad ordine, e quindi non pu essere riportato come testo fisso in un file di stampa, ma deve essere riportato come variabile poich assume un valore diverso per ogni pagina o riga stampata. Di qui si capisce limportanza delluso delle variabili nelle stampe parametriche. Nelle regole di stampa (moduli) le variabili vengono indicate racchiudendo il loro nome tra parantesi angolari: <nomevariabile>
Esempio: <PAG> : variabile che riporta il numero di pagina attuale

Per fare riferimento ad una variabile, usare le parentesi < >

3Cad gestisce quattro tipi di variabili:


Variabili definite dallutente

(1) variabili definite dallutente: devono essere dichiarate nel gruppo [VARIABILI] e quindi il loro nome e valore vengono gestiti completamente dallutente;
Esempio: [VARIABILI] SPAZI3=______

Variabili predefinite

(2) variabili predefinite: sono variabili singole il cui nome e valore sono impostati da 3Cad in fase preliminare rispetto allavvio della stampa oppure impostate con luso delle specifiche di comando durante la stampa; per usarle bisogna conoscerne il nome (una lista delle variabili generate da 3Cad viene fatta nelle prossime sezioni del capitolo);
Esempio: <PAG> : variabile che riporta in numero di pagina attuale

Variabile records

(3) variabile records: si tratta di un insieme di dati strutturato come un foglio elettronico, cio i valori vengono inseriti in una matrice di righe e colonne. Le colonne contengono i vari campi di un record, mentre le righe contengono varie tipologie di records da utilizzare in stampa;
Ad esempio, nel generico modulo di stampa si dispone dei seguenti dati relativi allordine in corso memorizzati allinterno della variabile records (si riporta solo uno scorcio dei dati).
COLONNE RIGHE

A B

00001=n.ordine BIANCHI GIORGIO

23/04/97=data 000001=Cliente Ditta s.n.c. Via Roma, 16

Per utilizzare i valori memorizzati nei vari records, non serve specificare alcun nome di variabile, ma sufficiente fare riferimento al campo che interessa. Cio:
130

< numero riga, numero colonna >


Nellesempio precedente, per stampare il valore BIANCHI GIORGIO, si pu estrarre il 2 campo del 2 record usando il seguente riferimento alla variabile: <2,2>

(4) variabili definite nella regole GENE.ERG: questo tipo di variabile viene dichiarato nel gruppo [GENE] della regola GENE.ERG che si trova nella cartella del catalogo in uso. Per digitare le variabili allinterno della regola GENE.ERG necessario utilizzare la finestra Editor Regole di 3Cad oppure usare un editor di testi generico. Le variabili dichiarate nella regola GENE differiscono da quelle dichiarate localmente nel modulo di stampa poich sono utilizzabili da qualsiasi regola di stampa. Variabili predefinite
Le variabili predefinite vengono preimpostate da 3Cade si possono solo utilizzare: variabili standard e variabili gest.carichi

Durante lutilizzo di 3Cad vengono predisposte da programma un insieme di variabili (predefinite) che si possono poi utilizzare allinterno delle regole di stampa e di cui non serve la dichiarazione. Queste variabili vengono elencate nella prossima lista e ne viene spiegato il contenuto. Poich ogni stampa viene preparata eseguendo calcoli diversi, in alcune stampe si possono riscontrare delle variabili predefinite aggiuntive di cui si riporta una tabella a parte. Si tratta delle stampe relative alla gestione dei carichi che, infatti, costituiscono un insieme a parte nellambito delle regole di stampa di 3Cad ( *.stg). Esiste poi un ulteriore insieme di variabili predefinite (di cui si fornisce una terza lista) che si utilizzano in maniera diversa rispetto a tutte le altre variabili di stampa: sono le cosiddette variabili di programmazione; esse si usano allinterno delle regole di stampa in corrispondenza di particolari istruzioni di calcolo per effettuare una selezione dei dati da stampare. Il loro valore viene prodotto da programma.

Variabili di programmazione

131

TABELLA VARIABILI PREDEFINITE STANDARD


NOME DATA PAG DIML DIMA DIMP RIGA NOMEVARIANTE !NOMEVARIANTE DITTA0 DITTA1 DITTA2 DITTA3 DITTA5 NOTA RIGA DESCRIZIONE Data corrente Numero di pagina corrente Larghezza della composizione Altezza della composizione Profondit della composizione Contatore di riga in una composizione Restituisce il codice dellopzione corrente selezionata per la Restituisce la descrizione dellopzione corrente selezionata per la Logo 1 riga nome ditta 2 riga nome ditta Indirizzo-Localit Fax Note di stampa Ultima riga ordine letta

TABELLA VARIABILI PREDEFINITE GEST.CARICHI


NOME CAR_COD CAR_DES CAR_VOLUME CAR_COLLI DESCRIZIONE Codice carico Descrizione carico Volume del carico Numero colli carico

T ABELLA VARIABILI DI PROGRAMMAZIONE


NOME $(CURBOX) $(SELECT) $(FROM) $(WHERE) $(ORDER) $(TABELLA) $(DESTABELLA) DESCRIZIONE Numero del box corrente clausola Select di una istruzione SQL di selezione clausola From di una istruzione SQL di selezione clausola Where di una istruzione SQL di selezione clausola Order di una istruzione SQL di selezione Codice tabella delle tabelle generiche di 3Cad Descrizione tabella delle tabelle generiche di 3Cad

Nota
Per specifiche sulle istruzioni SQL di stampa , vedere le prossime sezioni del capitolo.

132

Variabile records
Anche le variabili records vengono preimpostate da 3Cade si possono solo utilizzare

Durante lutilizzo di 3Cad vengono predisposti da programma i vari records e campi della variabile records (di cui si parlato in precedenza). Anche i records di questa variabile sono predefiniti per cui si possono solo utilizzare i valori preimpostati da programma per inserirli allinterno delle regole di stampa (non serve alcuna dichiarazione). Il contenuto della variabile records pu variare da stampa a stampa, per cui il suo contenuto pu essere diverso nellambito dei vari tipi di stampa.

Records prodotti per stampa di testa e righe ordine

Si riporta qui una tabella che riporta il contenuto dei vari records relativi alla stampa della testata e righe ordine .

133

RECORD N 1 - Campi testa ordine


N RECORD 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 NUMERO 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 DESCRIZIONE A (intestazione record) Numero ordine Data ordine Codice Cliente *** Non usato *** Riferimento riga 1 Data consegna Data arrivo Data listino Riferimento riga 2 Famiglia ordine Destinazione riga 1 Destinazione riga 2 Indirizzo destinazione CAP destinazione Localit destinazione *** (info2.r4) *** *** (info2.r5) *** Codice pagamento Codice agente Percentuale provvigioni Codice sconto 1 Sconto 1 Codice sconto 2 Sconto 2 Codice sconto 3 Sconto 3 Codice sconto 4 Sconto 4 Cod.destinazione Tabella 1 aggiunta Tabella 2 aggiunta Tabella 3 aggiunta Tabella 4 aggiunta Tabella 5 aggiunta

134

RECORD N 2 - Campi del cliente


N RECORD 2 2 2 2 2 2 2 2 NUMERO CAMPO 1 2 3 4 5 6 7 8 DESCRIZIONE B (intestazione record) Nome cliente 1 riga Nome cliente 2 riga Indirizzo CAP Localit Provincia Record completo del cliente

RECORD N 3 - Campi della riga articolo


N RECORD 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 NUMERO CAMPO 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 DESCRIZIONE Livello; (codice numerico) Carattere per misura Codice articolo Descrizione Quantit Prezzo Maggiorazioni Larghezza reale Altezza reale Profondit reale Larghezza anagrafica Altezza anagrafica Profondit anagrafica Varianti Tipologia Note Annotazioni Descrizione 1 riga Descrizione 2 riga Descrizione 3 riga Descrizione 4 riga *** 100 *** *** 0/7 *** OFI6Q ----X

135

RECORD N 4 - Campi della quantit


N RECORD 4 NUMERO CAMPO 1 DESCRIZIONE Quantit

RECORD N 5 - Campi delle varianti


N RECORD 5 5 5 5 5 5 5 5 5 5 5 5 NUMERO CAMPO 1 2 3 4 5 6 7 8 9 10 11 12 DESCRIZIONE Varianti modificate Varianti Descrizione variante 1 Descrizione variante 2 Descrizione variante 3 Descrizione variante 4 Descrizione variante 5 Descrizione variante 6 Descrizione variante 7 Descrizione variante 8 Descrizione variante 9 Descrizione variante 10

RECORD N 6- Varianti locali


N RECORD 6 6 6 NUMERO CAMPO 1 2 ... DESCRIZIONE VARIANTE1 OPZIONE1 ...

RECORD N7- Varianti diverse da testata


N RECORD 7 7 7 NUMERO CAMPO 1 2 ... DESCRIZIONE VARIANTE1 OPZIONE1 ...

RECORD N8 - Campi delle varianti


N RECORD 8 8 8 8 NUMERO CAMPO 1 2 3 4 DESCRIZIONE VARIANTE1 OPZIONE1 .....(variante2) .....(opzione 2)

136

RECORD N 9- Campi dei totali


N RECORD 9 9 9 9 9 9 NUMERO CAMPO 1 2 3 4 5 6 DESCRIZIONE Totale Totale - Maggiorazioni Maggiorazioni Totale Formattato Peso Volume

RECORD N10N RECORD NUMERO CAMPO DESCRIZIONE

RECORD N90 N RECORD NUMERO CAMPO DESCRIZIONE

RECORD N91N RECORD NUMERO CAMPO DESCRIZIONE

Se il flag sul file Evento2.ini impostato modocucina=0 allora i campi delle stampe sono quelli dellevento pareti normale, altrimenti se modocucina =1 mantiene la compatibilita con il vecchio Eventoc a 16bit ed i campi sono i seguenti:

137

Tracciato per stampe con eventoC


RECORD N 1 - Campi testa ordine
N RECORD 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 NUMERO CAMPO 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 DESCRIZIONE A (intestazione record) Numero ordine Data ordine Codice Cliente *** Flag *** Vs. Ordine Data consegna Data arrivo Vs. Ordine 2 INFOSCHED.t(1) Riferimento Descrizione riga 0 Descrizione riga 1 Descrizione riga 2 Descrizione riga 3 Descrizione riga 4 Descrizione riga 5 Codice Pagamento Codice Agente Provvigione Agente Tabella Sconto 1 % Sconto 1 Tabella sconto 2 % Sconto 2 Tabella Sconto 3 % Sconto 3 Tabella Sconto 4 % Sconto 4 Codice Destinatario Tabella 1 Aggiunta Tabella 2 Aggiunta Tabella 3 Aggiunta Tabella 4 Aggiunta Tabella 5 Aggiunta

138

1 1 1 1 1 1 1 1 1 1 1 1 1

35 36 37 38 39 40 41 42 43 44 45 46 47

INFOSCHED.t(1) INFOSCHED.t(2) INFOSCHED.t(3) INFOSCHED.t(4) INFOSCHED.t(5) INFOSCHED.t(6) INFOSCHED.t(7) INFOSCHED.t(8) INFOSCHED.t(9) INFOSCHED.t(10) INFOSCHED.t(11) INFOSCHED.t(12) INFOSCHED.t(13)

RECORD N 2 - Campi del cliente


N RECORD 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 NUMERO CAMPO 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 DESCRIZIONE B (intestazione record) Codice cliente Partita IVA Nomignolo Ragione Sociale Supplemento Indirizzo CAP Localit Provincia Zona Codice Fiscale Telefono Fax Telex Cliente Fatturazione Listino SC1 SC2 SC3 SC4 AGE Provvigione
139

2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

ISP Provv. Isp. Area **DOPPIO (usa TAB1) ** Codice Pagamento Banca Piazza Codice Abi+CAB Conto Corrente ** non gestito ** ** non gestito ** ** non gestito ** ** non gestito ** Area Spedizione Vettore Porto Famiglia ordine

RECORD N 3 - Campi della riga articolo


N RECORD 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 NUMERO CAMPO 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 DESCRIZIONE 1-2 Speciale Codice Descrizione 1 Descrizione 2 Quantit Prezzo 1 Prezzo 2 Prezzo 3 Dim L Dim A Dim P Sp Nota1 Nota2 Nota3 Nota4 Varianti

140

3 3 3 3 3 3

19 20 21 22 23 24

R + Numero riga Sconto Riga 1 Sconto Riga 2 Sconto Riga 3 Sconto Riga 4 Macro ??

RECORD N 4 Totale Ordine


N RECORD 4 4 4 4 4 4 4 4 4 NUMERO CAMPO 1 2 3 4 5 6 7 8 9 Prezzo 1 Prezzo 2 Prezzo 3 DESCRIZIONE 0

RECORD N 5 Varianti modificate rispetto alla testata


N RECORD 5 5 5 5 NUMERO CAMPO 1 2 3 4 DESCRIZIONE Variante 1 Opzione 1 (Variante 2) (Opzione 2)

141

RECORD N 6 Varianti Locali modificate


N RECORD 6 6 6 6 NUMERO CAMPO 1 2 3 4 DESCRIZIONE Variante 1 Opzione 1 (Variante 2) (Opzione 2)

RECORD N 7 Varianti Globali modificate rispetto alla testata


N RECORD 7 7 7 7 NUMERO CAMPO 1 2 3 4 DESCRIZIONE Variante 1 Opzione 1 (Variante 2) (Opzione 2)

RECORD N 8 Campo delle Varianti


N RECORD 8 8 8 8 NUMERO CAMPO 1 2 3 4 DESCRIZIONE Variante 1 Opzione 1 (Variante 2) (Opzione 2)

RECORD N 9 Volumi e Totali


N RECORD 9 9 9 9 9 9 9 NUMERO CAMPO 1 2 3 4 5 6 7 DESCRIZIONE Totale Totale - maggiorazioni Maggiorazioni Totale formattato Peso Volume Peso Lordo

RECORD N 15 Tutti i Campi dellarticolo


N RECORD 15 15 15 15 NUMERO CAMPO 1 2 3 DESCRIZIONE Codice Descrizione Descrizione 2

142

Gruppi della Regola di stampa


Abbiamo gi detto che la regola di stampa (o modulo di stampa) strutturata in gruppi, vediamo di seguito cosa contengono i vari gruppi. Intestazione
NellIntestazione si scrivono delle specifiche di comando

Nella parte di intestazione del modulo, cio nelle prime righe della regola che, come visto prima non sono contenute in nessun gruppo, si possono specificare delle righe di comando per avviare dei calcoli preliminari di stampa. Per le specifiche di comando vedi prossima sezione.
Esempio: #IMPORTO #ACCORPA

Gruppo Variabili
Nel gruppo [VARIABILI] obbligatorio dichiarare delle variabili definite dallutente

Allinterno del gruppo [VARIABILI] necessario dichiarare le variabili di cui lutente necessita nel corso della stampa e cio le variabili definite dallutente; per gli altri tipi di variabile non prevista la dichiarazione, ma lutilizzo diretto allinterno delle righe del modulo. Una variabile definita dallutente un valore che pu essere richiamato molte volte nel corso del modulo di stampa, e che pu inoltre essere modificato in qualsiasi momento. Luso di una variabile rispetto alluso diretto del valore risulta molto pi flessibile e in alcuni casi indispensabile.
Esempio: si vuole definire una variabile LISTINO che contiene il numero di listino da usare in stampa; allinterno del gruppo [VARIABILI] si scrive: [VARIABILI] LISTINO=010 Poi, nel corso del modulo, per richiamare il numero di listino si fa riferimento alla variabile <LISTINO>.

Gruppo Testa
Il gruppo [TESTA] definisce le informazioni da stampare in testa e piede di stampa Il gruppo [PAGINA] definisce le informazioni da stampare in corpo di stampa

Il gruppo [TESTA] un insieme di istruzioni e comandi che permette di definire le informazioni di intestazione e piede di pagina della stampa. E un gruppo obbligatorio. Gruppo Pagina Il gruppo [PAGINA] un insieme di istruzioni e comandi che permette di definire le informazioni relative al corpo di stampa. Anche questo un gruppo obbligatorio. Nei prossimi paragrafi verranno riportate le istruzioni di stampa e le specifiche di comando utilizzabili nelle regole di stampa.

143

Specifiche di Comando
I comandi servono per avviare delle elaborazioni particolari

Le specifiche di comando sono delle istruzioni particolari utilizzabili nelle regole di stampa (precedute dal simbolo #) che servono per avviare alcuni tipi di elaborazione, durante lesecuzione di stampa. Quando 3Cad legge il modulo, interpretando queste righe genera dei calcoli particolari che producono poi in stampa le informazioni relative al calcolo effettuato. Le informazioni prodotte dallesecuzione dei comandi vengono poi inserite allinterno della variabile tipo records vista in precedenza e secondo lordine visto nelle tabelle delle pagine precedenti. La sintassi della specifica di comando la seguente:

Le informazioni prodotte dai comandi vengono inserite allinterno della variabile records.

Sintassi di comando

[#]COMANDO [parametro1] [parametro2] ....[parametroN] Le specifiche di comando si possono suddividere in due categorie:


Lista delle specifiche di comando ##

Comandi fissi (privi di parametri): producono sempre lo stesso tipo di calcolo e quindi lo stesso risultato; Comandi parametrici (usano i parametri): a seconda dei parametri specificati, il comando esegue delle elaborazioni diverse generando vari risultati.

Vediamo quali sono i possibili comandi di stampa di 3Cad: ## Anulla i controlli attivi; #IMPORTO Genera il record n.9 contenente i totali di stampa dellordine (vedi tabelle precedenti).

#IMPORTO

#PREPARA

#PREPARA Prepara i records n.3 contenenti i dati non accorpati degli articoli che compongono lordine ed i totali dellordine (vedi tabelle precedenti). #prepara tutti : stampa tutti gli elementi che stanno nella sezione speciali

#ACCORPA

#ACCORPA , #INFOACCORPA Prepara i records n.3 contenenti i dati accorpati degli articoli che compongono lordine (vedi tabelle precedenti).

#VARIANTI

#VARIANTI Genera il record n.8 relativo alla lista delle varianti e opzioni dellordine (vedi tabelle precedenti);

#STAMPAAPE

#STAMPAAPE Crea la variabile predefinita STAMPAAPE che indica se la stampa del disegno deve avvenire in modalit aperta o normale;

144

#SQL

#SQL param1 param2 param3 Crea una selezione di dati SQL secondo i parametri impostati da programma (vedi tabella variabili di programmazione) param1 = $(SELECT) param2 = $(WHERE) param3 = $(ORDER); #SQL stringa Crea una selezione di dati SQL da una qualsiasi tabella del database digitando direttamente la stringa SQL a seguito del comando;

#NEXT

#NEXT param1 param2 param3 [param4 [param5 param6] ] Effettua la lettura del prossimo record relativo ad una estrazione di dati SQL creata in precedenza oppure legge il prossimo box in ordine; utilizzare il comando usando i seguenti parametri (quelli racchiusi tra parentesi sono opzionali): param1 = altezza del blocco di stampa; param2 = altezza globale del foglio; param3 = tipo lettura : 0 oppure 1 oppure 2 (0=leggi prossimo record della query attiva, 1=leggi prossimo record della tabella attiva, 2=leggi prossimo box in ordine) param4 = tipo di spool: 0 oppure 1 (di default =0) (0=stampa in un unico spool, 1=stampa immediatamente ogni singola pagina) param5 = larghezza del blocco di stampa; param6 = larghezza globale del foglio; Gli ultimi due parametri consentono di fare pi stampa sulla stessa pagina anche in orizzontale. Possono essere gestiti insieme ai primi due: esempio: ... ORIZZONTALE DIM 300 210 ... #NEXT 105 210 0 0 150 300 stampa 4 etichette per pagina. Lordine di avanzamento sempre prima in orizzontale e poi in verticale. Nellesempio precedente lordine delle etichette : 12 34

145

#IMPOSTA

#IMPOSTA Mette a disposizione i dati del cliente allinterno del record n.1 e del record n.2 (vedi tabelle precedenti).

#ARTICOLO

#ARTICOLO Calcola il costo dei semilavorati. Si usa nel caso in cui sia stata impostata la distinta base sulla tipologia o i listini speciali.

#DISTINTA

#DISTINTA Elabora la distinta base degli articoli (per la gestione classica della distinta base e non sulla tipologia).

#EXESQL

#EXESQL Esegue le selezioni SQL prima di stampare. Nel devambiente potrei creare uno script da eseguire per ogni riga da stampare. /XSCRIPTnome

#CODICIESCLUDI

#CODICIESCLUDI Permette di escludere o includere dei codici da stampare, legato ai parametri /XCODEXCL /XINCL #VARSTAMPA e #VARSTAMPAZ Stampa le varianti dellarticolo che sono diverse rispetto alla testata. Vengono considerati i dati impostati nel file GRUPPI.INI dove ci sar un gruppo denominato variantistampa. Esempio di file Gruppi.ini [VARIANTISTAMPA]
STR=*STR* FAC=*<FAC>*

#VARSTAMPA e #VARSTAMPAZ

Nel modulo di stampa il comando Varopz che abbiamo spiegato nel terzo capitolo estrarr il contenuto della variante che ha le impostazioni differenti rispetto alla testata. Esempio :
[VAROPZ1;1;<6,0>]
#SALVADB

#SALVADB Salva il record dellordine sul database prima di effettuare la stampa. Facciamo presente al lettore che c la possibilit di fissare un flag nellEvento2.ini che fa la medesima cosa.

PREPETI

PREPETI param1 param2 param3 Prepara una selezione di dati SQL per la stampa delle bindelle o etichette (vedi prossime sezioni del capitolo); i parametri devono essere impostati come di seguito : param1 = percorso param2 = n.ordine param3 = n.etichetta
146

Per identificare univocamente un pezzo allinterno di una composizione, 3Cad assegna ad ogni elemento un codice matricola, che nel caso delle cucine un progressivo casuale, mentre per linterparete un numero legato alla tipologia. Questo codice necessario soprattutto per la stampa delle bindelle.
PREPBOX

PREPBOX param1 Prepara le righe ordine che corrispondono al box specificato dal parametro, inserendo i dati, come visto in precedenza, allinterno del record n.3; param1 = numero box corrente (usare la var. $(CURBOX)) #FOR DBS #END DBS !P Crea una nuova pagina

147

Istruzioni di stampa
Le istruzioni di stampa servono per riprodurre su carta le informazioni, organizzandole in modi diversi

Le istruzioni di stampa sono un insieme di comandi particolari che servono per produrre in stampa linee, testi, tabelle di dati e comunque riprodurre su carta quanto prodotto a livello di calcolo. Riportiamo anche qui una panoramica delle istruzioni utilizzabili nelle regole di stampa di 3Cad distinguendole in due gruppi principali: istruzioni per la creazione di testa e piede di pagina e istruzioni per la creazione del corpo di stampa.

Istruzioni del gruppo [TESTA]


ORRIZZONTALE: imposta stampa orizzontale

ORIZZONTALE HORIZ ORIZ Imposta lorientamento di stampa in senso orizzontale.

VERTICALE: imposta stampa verticale

VERTICALE VERT Imposta lorientamento di stampa in senso verticale.

DIM: imposta dimensioni foglio

DIM param1 param2 Imposta le dimensioni del modulo di stampa param1 = dimensione orizzontale param2 = dimensione verticale
Esempio: DIM 290 210

Nota
Le istruzioni ORIZZONTALE, VERTICALE, DIM, sono istruzioni obbligatorie, cio devono essere sempre utilizzate nelle regole di stampa perch definiscono le caratteristiche di impostazione della pagina. E importante, inoltre, fare attenzione alle dimensioni specificate con luso dellistruzione DIM poich esse devono concordare con lorientamento di pagina impostato.

148

LI : stampa una linea

LI param1 param2 param3 Traccia una linea secondo i seguenti parametri ( unistruzione molto utilizzata poich permette di definire le fincature del modulo): param1 = coordinate iniziali della linea; specificare le coordinate numeriche del punto iniziale della linea ( Xi , Yi ) param2 = coordinate finali della linea; specificare le coordinate numeriche del punto finale della linea ( Xf , Yf ) param3 = tipo di linea e spessore linea; i due valori vanno digitati di seguito senza inserimento di spazi. Per il tipo di linea specificare uno dei valori: N P linea normale linea punteggiata

Per lo spessore linea, specificare un numero ( 1=spessore minimo della linea)


Esempio: LI (100,100) (150,200) N2

BX BOX : stampa un rettangolo

BOX param1 param2 param3 BX param1 param2 param3 param1 = coordinate iniziali del rettangolo; specificare le coordinate numeriche del punto iniziale della linea ( Xi , Yi ) param2 = coordinate finali del rettangolo; specificare le coordinate numeriche del punto finale della linea ( Xf , Yf ) param3 = colore di riempimento
Esempio: BX (100,100) (150,150) 10

Disegna un rettangolo allinterno della stampa secondo i seguenti parametri:

149

TX : stampa del testo

TX param1 param2 param3 param4 Inserisce del testo secondo i parametri specificati (anche questa istruzione molto utilizzata perch serve per stampare testi prefissati o il contenuto dei vari tipi di variabili viste in precedenza): param1 = allineamento orizzontale e allineamento verticale; i due valori vanno digitati di seguito senza inserimento di spazi. Per lallineamento orizzontale specificare uno dei valori: T per allineare il testo in alto B per allineare il testo in basso Per lallineamento verticale specificare uno dei valori: L per allineare il testo a sinistra C per allineare il testo al centro R per allineare il testo a destra param2 = dimensione del carattere e attributi ; i due valori vanno digitati di seguito senza inserimento di spazi. Per la dimensione carattere specificare un numero Per gli attributi (che sono facoltativi) specificare uno o pi di uno dei seguenti valori: C per formattare il testo in corsivo S per formattare il testo in sottolineato B per formattare il testo in grassetto param3 = inizio del testo ; specificare uno dei seguenti valori: ( Xi , Yi ) coordinate iniziali del testo X per specificare che il testo va inserito di seguito allultimo elemento inserito Y per specificare che il testo va inserito sotto lultimo elemento inserito param4 = testo da stampare; pu essere una stringa (scritta senza delimitatori), una variabile (scritta tra parentesi angolari) o un campo di un record (specificato con <riga,colonna>).
Esempio: TX TC 10GC (10,20) Cliente TX TL 12 (70,80) <DATA> : stampo la dicitura Cliente

TX2 : stampa testo su pi linee

TX2 param1 param2 param3 param4 Il comando TX2 analogo al comando TX con la predisposizione per a stampare campi formattati su pi righe.
150

TX3 : stampa del testo facendo una selezione

TX3 param1 param2 param3 param4 param5 Listruzione TX3 ha la stessa funzione di TX , per permette la stampa parziale dei campi. Ci avviene tramite lutilizzo del quarto parametro come di seguito: param1 = allineamento orizzontale e allineamento verticale; i due valori vanno digitati di seguito senza inserimento di spazi. Per lallineamento orizzontale specificare uno dei valori: T per allineare il testo in alto B per allineare il testo in basso Per lallineamento verticale specificare uno dei valori: L per allineare il testo a sinistra C per allineare il testo al centro R per allineare il testo a destra param2 = dimensione del carattere e attributi ; i due valori vanno digitati di seguito senza inserimento di spazi. Per la dimensione carattere specificare un numero Per gli attributi (che sono facoltativi) specificare uno o pi di uno dei seguenti valori: C per formattare il testo in corsivo S per formattare il testo in sottolineato B per formattare il testo in grassetto param3 = inizio del testo ; specificare uno dei seguenti valori: ( Xi , Yi ) coordinate iniziali del testo X per specificare che il testo va inserito di seguito allultimo elemento inserito Y per specificare che il testo va inserito sotto lultimo elemento inserito param4 = verso e num.caratteri; specificare il verso di selezione del testo ed il numero di caratteri da prelevare. Il verso di selezione campo di un record avere il seguente valore: L per prelevare da sinistra R per prelevare da destra param5 = testo da stampare; pu essere una stringa (scritta senza delimitatori), una variabile (scritta tra parentesi angolari) o un campo di un record (specificato con <riga,colonna>).
Esempio: TX3 BL 20B (100,100) L4 Testo di prova listruzione provoca la stampa del testo Test

151

FONT : modifica tipo di font usato

FONT param1 Specifica il tipo di font da utilizzare da una certa riga del modulo di stampa fino alla specifica di un font diverso, in una successiva riga del modulo, o fino alla fine del modulo. param1 = nome del font; si specifica il nome di un font di Windows95 (vedi cartella Fonts del Pannello di Controllo). Se si specifica un font inesistente, 3Cadverr terminato.
Esempio: FONT Times New Roman

WMF PIC : stampa una immagine

WMF param1 param2 param3 Riproduce un elemento grafico in una certa posizione del foglio. La sintassi di comando : param1 = coordinate iniziali dellelemento; specificare le coordinate numeriche del punto iniziale del grafico ( Xi , Yi ) param2 = dimensioni del grafico; specificare le dimensioni numeriche dellelemento grafico da introdurre ( Xd , Yd ) param3 = percorso file; specificare il nome del file relativo allelemento grafico da introdurre indicandone il percorso completo. Suggeriamo di utilizzare a tale proposito la variabile $(.percorso) che restituisce, per lappunto, il percorso del catalogo in uso.
Esempio: WMF (7,1) (45,20) $(.PERCORSO)\LOGO.JPG

Code25 : stampa codice a barre tipo Interleavd25

CODE25 param1 param2 param3 Stampa il codice a barre di tipo INTERLEAVD 25 (il codice INTERLEAVD25 di tipo numerico). I parametri da specificare con questo comando sono : param1 = coordinate iniziali dellelemento; specificare le coordinate numeriche del punto iniziale del codice da stampare ( Xi , Yi ) param2 = dimensioni del codice; specificare le dimensioni numeriche del codice a barre da stampare ( Xd , Yd ) param3 = codice; specificare il codice da stampare.
Esempio: CODE25 (100,100) (50,20) 12345

152

Code25V : stampa codice a barre tipo Interleavd25 in verticale

CODE25V param1 param2 param3 Vale quanto detto per il Code25, solo che consente di stampare in verticale. CODE39 param1 param2 param3 Stampa il codice a barre di tipo 3D9 (il codice 3D9 un codice di tipo alfanumerico). I parametri da specificare con questo comando sono : param1 = coordinate iniziali dellelemento; specificare le coordinate numeriche del punto iniziale del codice da stampare ( Xi , Yi ) param2 = dimensioni del codice; specificare le dimensioni numeriche del codice a barre da stampare ( Xd , Yd ) param3 = codice; specificare il codice da stampare.
Esempio: CODE39 (100,100) (50,20) 3D9

Code39 : stampa codice a barre tipo 3D9

Code39V : stampa codice a barre tipo 3D9 in verticale

CODE39V param1 param2 param3 Oltre al code39 esiste anche la possibilit di stampare in verticale con code39V, i parametri sono gli stessi di Code39. CODE39CK e CODE39CKV Si pu stampare in code39CK e code39CKV cio con il check digit (controllo di lettura). EAN13 ed EAN13V EAN13 e EAN13V CODEMABRY param1 param2 param3 param4 param5 param6 param7 Per poter sfruttare le potenzialit di questo comando che consente di stampare tutti i tipi di codice a barra, lutente deve essere in possesso dellapposito programma. I parametri da specificare per questo comando sono : param1 = coordinate iniziali dellelemento; specificare le coordinate numeriche del punto iniziale del codice da stampare ( Xi , Yi ) param2 = dimensioni del codice; specificare le dimensioni in larghezza e altezza del codice a barre da stampare ( DimX , DimY ) param3 = tipo; il tipo di barcode (vedi tabella 1) param4 = testo; il testo da stampare param5 = direzione; la direzione del barcode (vedi tabella 2). E opzionale ed il valore di default zero.

Code39CK e CODE39CKV : stampa codice a barre con il check digit

EAN13 ed EAN13V

CodeMABRY : stampa tutti i tipi di codice a barre

153

Param6 = allineamento; lallineamento del barcode allinterno del rettangolo di stampa (vedi tabella 3). E opzionale ed il valore di default zero. Param7 = dimensione barra; la dimensione della singola barra. E opzionale ed il valore di default zero. Tabella 1: 0=niente 1=2 of 5 - numbers only 2=Interleaved 2 of 5 - numbers only 3=Code 3 of 9 (also called Code 39) - numbers, upper case, and - . * $ / + % ( il default) 4=Codabar (rationalized) - numbers and A B C D - $ : / . + 5=Extended 3 of 9 (also called Extended Code 39) - full ASCII character set 6=Code 128A - upper case, numbers, punctuation, and control charac 7=Code 128B - upper and lower case, numbers, and punctuation 8=Code 128C - numbers only 9=UPC-A - numbers only (11 numbers and a check digit) 10=MSI Code - numbers only 11=Code 93 - numbers, upper case, and - . * $ / + % 12=Extended Code 93 - full ASCII character set 13=EAN-13 - numbers only (12 numbers and a check digit) 14=EAN-8 - numbers only (7 numbers and a check digit) 15=PostNet - numbers only (with a check digit) Note: this style always displays as full size. The BarWidth property has no effect. 16=ANSI 3 of 9 (also called Code 39) - 3:1 narrow-to-wide bar width ratio numbers, upper case, and - . * $ / + % 17=ANSI Extended 3 of 9 (also called Extended Code 39) - 3:1 narrow-to-wide bar width ratio - full ASCII character set 18=Code 128 (auto-select) - full ASCII character set - automatically selects between Code 128 A, B, and C to produce the smallest barcode 19=UCC/EAN-128 - special version of Code 128 used in package in HIBC applications - full ASCII character set 20=UPC-E - numbers only - used for zero-compression UPC symbols. For the Caption property you may enter either a six-digit UPC-E code or a complete 11-digit (includes code type, which must be 0 (zero)) UPC-A code. If an 11-digit code is entered, the BarCod control will convert it to a six-digit UPC-E code, if possible. If it is not possible to convert from the 11-digit code to the six-digit code, nothing is displayed. 21=Royal Mail RM4SCC - numbers and letters only (with a check digit) This is the barcode used by the Royal Mail in the United Kingdom. Note: this style always displays as full size. The BarWidth property has no effect. 22=MSI Code with 2 MOD checksum digits - numbers only 23=DUN-14 - numeric only. 14 digits long, including checksum digit. If you set the <Caption> to an 11-digit string, BarCod will modify it appropriately to create an EAN-13 code (to which it then adds the 14th digit, the checksum). If you set the <Caption> to a 12-digit string, BarCod will add the EAN-13
154

checksum and then the DUN-14 checksum. If you set the <Caption> to a 13digit string or 14-digit string, BarCod will truncate the string to 13-digits and then add the DUN-14 checksum Tabella 2: 0= da SX a DX 1= da Dx a SX 2= da Sopra a Sotto 3= da Sotto a Sopra Tabella 3: 0=Sinistra 1=Destra 2=Centrato

COLOREPENNA PENCOLOR : cambia il colore della penna di immagini e/o testi

COLOREPENNA param1 param2 param3 PENCOLOR param1 param2 param3 Cambia il colore della penna (cio del bordo delle immagini o testi rappresentati in stampa). I parametri da specificare sono tre valori numerici delle intensit RGB del colore da settare e sono : param1 = intensit del colore rosso; specificare il valore numerico corrispondente ; param2 = intensit del colore verde; specificare il valore numerico corrispondente ; param3 = intensit del colore blue; specificare il valore numerico corrispondente.
Esempio: COLOREPENNA 214 244 122

COLORERIEMPIMENTO FILLCOLOR : cambia il

COLORERIEMPIMENTO param1 param2 param3 FILLCOLOR param1 param2 param3 Cambia il colore del riempimento di disegni o scritte. I parametri da specificare sono tre valori numerici delle intensit RGB del colore da settare e sono : param1 = intensit del colore rosso; specificare il valore numerico corrispondente ; param2 = intensit del colore verde; specificare il valore numerico corrispondente ; param3 = intensit del colore blue; specificare il valore numerico corrispondente.

colore di riempimento delle immagini e/o testi

155

Esempio: COLORERIEMPIMENTO 214 244 122

TIPORIEMPIMENTO FILLSTYLE : cambia il

TIPORIEMPIMENTO param1 FILLSTYLE param1 Cambia il tipo di riempimento di oggetti di tipo BX. Il parametro da specificare assume uno dei seguenti valori numerici : param1 = tipo; specificare: 0 1 2 3 4 5 6 7 Riempimento pieno Nessun Riempimento Linee Orizzontali Linee Verticali Linee diagonali da destra a sinistra Linee diagonali da sinistra a destra Rete Rete diagonale
TIPORIEMPIMENTO 6

tipo di riempimento di immagini e/o testi

Esempio:

SPESSORE : cambia lo spessore della penna

SPESSORE param1 Cambia lo spessore della penna in stampa. Il parametro da specificare il valore numerico dello spessore.
Esempio: SPESSORE 2

BW MODOBW : setta la modalit di stampa in bianco e nero

BW MODOBW Listruzione BW o MODOBW viene utilizzata per settare la modalit di stampa in bianco e nero. Per default, infatti, la stampa a colori. ORIGINE param1

ORIGINE: modifica lorigine del blocco di stampa

Listruzione ORIGINE serve per modificare lorigine del blocco di stampa in una posizione diversa da quella standard che corrisponde allangolo in alto a sinistra del foglio (0,0). Si usa ad esempio per la carta intestata. param1 = coordinate iniziali della stampa; specificare le coordinate numeriche del punto iniziale del blocco di stampa ( Xi , Yi )
Esempio: ORIGINE (0, 150)

156

Istruzioni del gruppo [PAGINA]


ARG : stampa un disegno di 3cad

ARG param1 param2 param3 param4 Stampa un disegno di 3Cad. param1 = coordinate iniziali del disegno; specificare le coordinate numeriche del punto iniziale del disegno di EVENTO 32 ( Xi , Yi ) param2 = coordinate finali del disegno; specificare le coordinate numeriche del punto finale del disegno di EVENTO 32 ( Xf , Yf ) param3 = vista del disegno ; specificare la vista con cui riprodurre il disegno. Essa assume i seguenti valori: V(angoloXY, angoloXZ, AngoloYZ) della vista oppure VNumeroVista, dove NumeroVista pu assumere i seguenti valori: 0 = vista libera (quella attiva al momento della stampa) 1 = ortogonale sx 2 = ortogonale dx 3 = fronte 4 = profilo 5 = pianta 6a= ass. 45 sx 6b= ass. 45 dx E possibile stampare anche le viste personalizzate salvate per lordine (v. manuale utente), per far questo il parametro diventa VSn, dove con n si precisa il numero della vista. param4 = opzioni ; un insieme di opzioni che permettono di avere un disegno con caratteristiche particolari. I valori che pu assumere questo parametro sono: /DM (Larghezza, Altezza, Profondit) : indica le dimensioni della parete sulla quale dimensionare gli elementi grafici nel caso che questi superino le quote specificate relative alla stanza. Non vi quindi ridimensionamento per gli elementi che trovano spazio in questo volume, al contrario di quelli con taglia superiore che devono essere ridotti in scala; /F AltezzaCarattere : definisce laltezza dei caratteri in stampa; /TR : il disegno viene fatto introducendo solo le linee di struttura, fatto cio in trasparenza;

157

/SP : il disegno viene fatto con levidenziazione degli elementi speciali; /A : il disegno viene fatto senza le tipologie definite nella tabella Tipologie Aperto della scheda Gruppi Tipologie che si visualizza e modifica usando la voce Flag Speciali del menu Regole; /TE *NumTipologia*...* : il disegno viene fatto senza le tipologie che si specificano di seguito (il numero della tipologia da escludere deve essere racchiuso tra asterischi); /TI *NumTipologia*...* : il disegno viene fatto usando solo le tipologie che si specificano di seguito (il numero della tipologia da includere deve essere racchiuso tra asterischi); /PA : il disegno viene fatto con lausilio delle pareti; /R Xi, Yi, Zi, Orient, Passo, AllinO, AllinV: per inserire un righello nel disegno; il righello pu avere un senso orizzontale, verticale o di profondit a seconda dei parametri usati; Xi, Yi, Zi sono la posizione del righello rispetto al disegno; Orient definisce la dimensione a cui si riferisce il righello e pu assumere i valori L(larghezza) A(altezza) o P(profondit) eventualmente seguito dal carattere F per invertire lorigine del righello; Passo definisce il passo da usare nel righello e pu assumere i valori : Num cio un numero definito dallutente, B per utilizzare le misure di listino, M per stampare solo la misura totale; AllinO pu assumere i seguenti valori: T per allineare il testo sopra ; B per allineare il testo sotto; AllinV pu assumere i seguenti valori: L per allineare il testo a sinistra; C per allineare il testo al centro; R per allineare il testo a destra; /PR : per stampare il disegno in prospettiva; /BI : per stampare il disegno ignorando le tonalit di grigio, stampa cio linee nere su sfondo bianco; /NOTE : stampa le note; /BOX : stampa solo il box preparato usando il comando PREPBOX $(CURBOX) . /QUOTA: stampa le quote. Per questo parametro esistono delle specifiche che consentono di gestire vari tipi di quote. Per stampare le quote inserite manualmente dallutente nella costruzione dellordine e definite come fronte o pianta (v. manuale), bisogna scrivere *F*P*. Abbiamo gi detto che nelle regole possibile differenziare i diversi tipi di quota, ad esempio le basi ed i pensili, con il comando !quotan, dove n precisa il
158

numero del tipo di quota (ad esempio 1 per i pensili e 2 per le basi). Nel modulo di stampa, volendo stampare entrambe le quotature, si deve scrivere *1*2* /SCALAxxx: fattore di scala per la risoluzione di stampa (1, 2, 3), sgrana di pi e occupa meno memoria (sono ammessi anche valori non interi es: 1.5) /SCRIPTQfile*NumTipologia*...*: permette di caricare uno script delle quote indicandogli quali sono le tipologie da quotare; /SLxxx: lo spessore della linea, evidenzia il tratto a penna (default=1); /RQxxx: disegna un riquadro le cui dimensioni possono variare tra 100 e 900 (default=400); /TOPn*x: permette di stampare la legenda degli spezzoni delle cornici; x la distanza della quota dal disegno e n indica il tipo di legenda secondo il seguente schema:
0 = numero progressivo dello spezzone 1 = misura effettiva 2 = misura nominale 3 = misura davanti 4 = misura dietro

Nota
Per effetto delle modifiche apportate alla gestione delle misure delle cornici, il campo NOTA da 10 passato a 12 <103,12> Le misure effettive si trovano nel campo 5, le nominali nel campo 6, quelle davanti nel campo 9, quelle dietro nel campo 10.

/BE NumBox**: disegna i box elencati tra asterischi a colori e gli altri in bianco e nero; /BOB: stampa i box identificati dalla matricola (si usa per le etichette) /BOE: stampa lordine completo evidenziando la matricola (si usa per le etichette); /BW: stampa in bianco e nero con le ombre; /CA: correzione luce ambiente (da 0 a 10); /CD: correzione luce diffusa (da 0 a 10); /CS: correzione speculare (da 0 a 10); /CO: forza la stampa a colori; /BC: forza la stampa senza ombreggiatura (equivale a /CS10 /CD10 /CA10 /CO);

159

/ET: stampa letichetta del disegno (in visord che un visualizzatore dellordine); /EXvalore: stampa lesplosione del disegno, necessario specificare il grado di esplosione desiderato (valore compreso tra 0 e 1); /FD(x1,y1,z1)(x2,y2,z2): imposta la parte di composizione da stampare da (x1,y1,z1) a (x2,y2,z2). Sono a disposizione le variabili $(minl), $(mina), $(minp) che indicano il punto di minimo della composizione e $(diml), $(dima), $(dimp) che indicano le dimensioni massime; /Fn: dimensioni del font; /FRn: dimensioni delle frecce nelle quote (se n=-1 scrive solo il testo); /GANxxx: serve a riportare le righe sugli oggetti 3DS in funzione dellangolo di stondatura in stampa. Il valore da definire varia da 0.5 a 1; /LATOn: si usa quando sono state inserite le pareti e serve per stampare in fronte solo la parete indicata da n; /LAV: permette di stampare la descrizione delle lavorazioni delle tipologie top; /NOASSI: nella stampa del singolo box non mostra gli assi;
Esempio di istruzioni ARG: ARG (1,1) (100,70) V1 /DM(600,3000,625) /BOX ARG (50,25) (280,200) V0 /PA ARG (5,35) (25,110) V4 /DM(600,3000,625) /F6 /R-2,0,0,A,B,BR ARG (45,35) (205,110) V3 /R0,0,0,L,1000,B,BR /R-2,0,0,A,B,BR /DM(5000,3000,800) /F6

ARG (45,120) (205,170) V5 /DM(5000,3000,2000) /F6 /R0,0,0,P,B,BR /TE*15*

TAB LIS : stampano informazioni in forma tabellare

TABnome param1 param2 param3 param4 param5 LISnome param1 param2 param3 param4 param5 Stampa una tabella di dati preimpostati tramite uno dei comandi visti in precedenza, dove ogni riga corrisponde a un elemento codificato come ad esempio box, vani o componenti. Un gruppo [PAGINA] che contiene il comando per la stampa di una tabella di dati non pu contenere altri comandi. nome = tipo tabella ; i nomi ed i significati delle tabelle che si possono stampare usando il parametro TAB sono i seguenti: 1 : stampa le righe ordine comprendendo tutti i livelli della distinta in dettaglio;
160

1N2 : stampa le righe ordine comprendendo i livelli 1 (box) e 3 (componenti), esponendo il dettaglio per ciascun box; 1N2N4 : stampa le righe ordine comprendendo i livelli 1 (box), 3 (componenti) ed il livello 4, esponendo il dettaglio per ciascun box; 2 : stampa le righe ordine comprendendo i livelli 1 (box) e 3(componenti), accorpando le righe per ogni box in ordine; 3 : stampa solamente le righe di livello 3 (componenti) effettuando gli accorpamenti per ogni box; 4 : stampa le righe ordine accorpando gli articoli in modo assoluto; 5 : stampa le righe ordine accorpando tutti gli articoli; 1N1N2 : stampa solamente le righe di livello 3 (componenti) non effettuando accorpamenti; 1N2N3 : stampa le righe di livello 1 (box) non effettuando accorpamenti; SQL : stampa le righe della selezione di dati impostata precedentemente come query di generazione di un dynaset; SQQ : stampa le righe della selezione di dati impostata precedentemente come query di generazione di uno snapshot. param1 = coordinate iniziali della tabella; specificare le coordinate numeriche del punto iniziale della tabella ( Xi , Yi ) param2 = coordinataX finale tabella, altezza riga, numero righe; specificare la coordinata asse X numerica del punto finale della tabella , laltezza di una riga della tabella ed il massimo numero di righe che la tabella pu contenere ( Xf , Ar, Nr ) param3 = opzioni ; pu essere una combinazione dei seguenti valori: N equivale a nessuna opzione e pu essere omesso; T totalizza i campi numerici allineandoli a sinistra; S stampa la griglia della tabella; R pone una linea tra una riga ed unaltra; W adatta il testo di una qualsiasi colonna anche su pi righe in modo che il testo non sia troncato; B per allineare il testo in basso; C per allineare il testo al centro; param4 = altezza carattere; specificare laltezza del carattere; param5 = colonne ; usando questo parametro, si possono definire le caratteristiche per forma e contenuto di ogni colonna della tabella. Le colonne, dotate delle relative caratteristiche, vanno indicate una di seguito allaltra poich costituiscono

161

un unico parametro dellistruzione TAB. Le caratteristiche di una colonna si indicano seguendo la seguente sintassi: (Descr, NumCarAllin, , Formula, ..., Formula) dove: Descr : intestazione della colonna NumCarAllin : larghezza e allineamento colonna. Si specifica la larghezza della colonna in caratteri seguita dal tipo di allineamento del testo che pu assumere uno dei seguenti valori: L allineamento a sinistra, C allineamento al centro, R allineamento a destra Formula : lespressione che corrisponde al valore del campo da stampare nella colonna e pu contenere il nome di una variabile, di un campo della variabile records o altri valori. Vediamo alcuni esempi:
Esempi di specifiche del campo Formula: <DATA> <3,1> <3,1:5:7> :stampa nella colonna il valore della variabile predefinita <DATA>; :stampa nella colonna il valore del record n3 , campo n 1; :stampa nella colonna il valore del reco rd n3 , campo n 1, partendo dal 5carattere del campo e prelevando 7 caratteri dopo il 5;

Esempi di utilizzo dellistruzione TAB: TABSQL (20,20) (199,4,55) T 8 (Codice , 12L ,, <90,0>) \

(Descrizione , 40L ,, <90,DES>) \ (Info TABSQL (20,20) (199,4,55) T 8 (Codice , 40L ,, <90,INFO:1:40> ) , 12L ,, <90,0>) \

(Descrizione , 35L ,, <90,DES>) \ (DesBreve , 10L ,, <90,DESBREVE> ) in questo esempio DES e DESBREVE sono nomi di campi estratti tramite una istruzione SQL da database

ho aggiunto il parametro R che va usato al posto di S per generare la griglia solo al cambio di articolo, anzich su tutte le righe TAB3N4 (0,135) (198,6,20) RT 10 (Q.ta (Adriano Pederiva) , 3CR ,, <4,1>)

TOP : stampa il disegno del top

TOP param1 param2 param3 Stampa il disegno del top della composizione secondo i parametri specificati. param1 = coordinate iniziali del top; specificare le coordinate numeriche del punto iniziale del disegno del top ( Xi , Yi ) param2 = coordinate finali del top; specificare le coordinate numeriche del punto finale del disegno del top ( Xf , Yf )
162

param3 = opzioni ; un insieme di opzioni che permette di avere un disegno con caratteristiche particolari. I valori che pu assumere questo parametro sono: /F AltezzaCarattere : definisce laltezza dei caratteri in stampa; /T NumTop : definisce il numero di top da stampare su un foglio; /BI: forza la stampa solo colore bianco e senza ombre; /BW: stampa in bianco e nero con le ombre; /CA: correzione luce ambiente (da 0 a 10); /CA: correzione luce ambiente (da 0 a 10); /CD: correzione luce diffusa (da 0 a 10); /CO: forza la stampa a colori; /CS: correzione speculare (da 0 a 10); /BC: forza la stampa senza ombreggiatura (equivale a /CS10 /CD10 /CA10 /CO); /FD(x1,y1,z1)(x2,y2,z2): imposta la parte di composizione da stampare da (x1,y1,z1) a (x2,y2,z2). Sono a disposizione le variabili $(minl), $(mina), $(minp) che indicano il punto di minimo della composizione e $(diml), $(dima), $(dimp) che indicano le dimensioni massime; /FRn: dimensioni delle frecce nelle quote (se n=-1 scrive solo il testo); /RQxxx: disegna un riquadro le cui dimensioni possono variare tra 100 e 900 (default=400); /SCALAxxx: fattore di scala per la risoluzione di stampa (1, 2, 3), sgrana di pi e occupa meno memoria (sono ammessi anche valori non interi es: 1.5) /SCRIPTQfile*NumTipologia*...*: permette di caricare uno script delle quote indicandogli quali sono le tipologie da quotare; /SLxxx: lo spessore della linea, evidenzia il tratto a penna (default=1); /TE *NumTipologia*...* : il disegno viene fatto senza le tipologie che si specificano di seguito (il numero della tipologia da escludere deve essere racchiuso tra asterischi); /TI *NumTipologia*...* : il disegno viene fatto usando solo le tipologie che si specificano di seguito (il numero della tipologia da includere deve essere racchiuso tra asterischi); /TR : il disegno viene fatto introducendo solo le linee di struttura, fatto cio in trasparenza; /YY : nella stampa del singolo box non mostra le quote inserite a livello di regola;
163

/XSCRIPTfile: per stabilire la validit del codice; /XCODINCL*cod**: codici inclusi; /XCODESCL*cod**: codici esclusi;
Esempio: TOP (1,40) (199,250) /T4

TOP2 : stampa la visione dinsieme del top

TOP2 param1 param2 param3 Stampa la visione dinsieme del top secondo i parametri specificati.

164

Script Quote
Per ottenere la quotatura delle lavorazioni dei piani o mensole necessario gestire il file ScriptQuote.scr presente nella cartella del catalogo. Le variabili di sistema disponibili in ScripQuote.scr sono le seguenti: L DIMPTOP DIMLTOP PX PY DX DY Numero della lavorazione Profondit del top Lunghezza del top Posizione in larghezza della lavorazione Posizione in profondit della lavorazione Dimensione in larghezza della lavorazione Dimensione in profondit della lavorazione

I comandi disponibili sono i seguenti: QX px1, py1, px2, py2 Quota secondo la lunghezza, esegue tre quote: dallultimo punto quotato al punto px1,py1 dal punto px1, py1 al punto px2, py2 dal punto px2, py2 al prossimo punto quotato QY px1, py1, px2, py2 QU px1, py1, px2, py2 TX px1, py1, Testo Quota lungo la profondit con le stesse modalit di QX Quota assoluta dal punto 1 al punto 2 Scrive il testo indicato nella posizione px1, py1

La lavorazione L 999 consente di eseguire una quota in assenza di lavorazione. Vediamo di seguito un esempio di file ScripQuote.scr: #IF $L=90 QU $px,0,$px,$py QU $px+$dx-70,$py,$px+$dx-70,$py+$dy QX $px, 0-50 QX $dx+$px, 0-50 TX $px+$dx/2, $dimptop+150, Lavorazione $L QX $dimltop, -100 QY $dimptop, $dimltop+50 #ENDIF Queste righe di comandi produrranno il tipo di quotatura evidenziato nellimmagine che segue:
165

Corrisponde alla sesta riga di istruzione QX

Questa quota ottenuta con la terza e quarta riga QX

Corrisponde alla prima riga di istruzione QU

Quota definita dalla istruzione QY

Corrisponde alla seconda riga di istruzione QU

Istruzione TX

Stampe generiche fornite con 3Cad


Per stampe generiche si intendono le regole di stampa STN

Abbiamo gi detto che i moduli di stampa sono dei files che hanno estensione STN. Insieme al pacchetto 3Cad vengono forniti alcuni moduli di stampa generici che lutente potr modificare allo scopo di personalizzare ulteriormente il proprio lavoro (per questo le stampe di 3Cad sono anche definite regole di stampa).

Gestione Stampe Carichi


La gestione dei carichi di 3Cad che vedremo dettagliatamente nel prossimo capitolo, prevede la generazione di alcune stampe di utilit ( tra cui le liste di carico, la lista delle bindelle, la lista di prelievo etc...). Queste stampe utilizzano gli stessi criteri di generazione delle stampe parametriche analizzate finora, con alcune varianti: i files in cui vengono salvate le regole di stampa dei carichi riportano lestensione .STG ed inoltre nella stesura dei moduli sono disponibili variabili aggiuntive predefinite. ed in particolare una istruzione - TAL - studiata appositamente per gestire la stampa della distinta base. Varibili predefinite Carichi Come anticipato in precedenza, oltre alle normali variabili predefinite di 3Cad la gestione dei carichi mette a disposizione delle variabili predefinite aggiuntive che riportano alcune informazioni riguardanti il carico (per una lista di queste variabili vedi la sezione di questo capitolo intitolata Variabili Predefinite). TALnome param1 param2 param3 param4 param5
TAL : stampa le informazioni in forma tabellare e a pi livelli

Stampa una tabella di dati preimpostati tramite uno dei comandi visti in precedenza, dove ogni riga corrisponde a un elemento codificato oppure ad un elemento di livello inferiore e cio che risulta essere, allinterno della distinta
166

base dellarticolo, un componente dellelemento di livello superiore. Per ogni livello degli elementi stampati possibile generare in automatico la somma delle righe appartenenti a tale livello. Le specifiche sui livelli e sui totali di stampa vengono date tramite luso del parametro param5 come vedremo ora. Un gruppo [PAGINA] che contiene il comando per la stampa di una tabella di dati non pu contenere altri comandi. nome = tipo tabella ; i nomi ed i significati delle tabelle che si possono stampare usando il parametro TAB sono i seguenti: 1 : stampa le righe ordine comprendendo tutti i livelli della distinta in dettaglio; 1N2 : stampa le righe ordine comprendendo i livelli 1 (box) e 3 (componenti), esponendo il dettaglio per ciascun box; 2 : stampa le righe ordine comprendendo i livelli 1 (box) e 3(componenti), accorpando le righe per ogni box in ordine; 3 : stampa solamente le righe di livello 3 (componenti) effettuando gli accorpamenti per ogni box; 4 : stampa le righe ordine accorpando gli articoli in modo assoluto; 5 : stampa le righe ordine accorpando tutti gli articoli; 1N1N2 : stampa solamente le righe di livello 3 (componenti) non effettuando accorpamenti; 1N2N3 : stampa le righe di livello 1 (box) non effettuando accorpamenti; 1N2N4 : stampa le righe ordine comprendendo i livelli 1 (box), 3 (componenti) ed il livello 4, esponendo il dettaglio per ciascun box; SQL : stampa le righe della selezione di dati impostata precedentemente come query di generazione di un dynaset; SQQ : stampa le righe della selezione di dati impostata precedentemente come query di generazione di uno snapshot. param1 = coordinate iniziali della tabella; specificare le coordinate numeriche del punto iniziale della tabella ( Xi , Yi ) param2 = coordinataX finale tabella, altezza riga, numero righe; specificare la coordinata asse X numerica del punto finale della tabella , laltezza di una riga della tabella ed il massimo numero di righe che la tabella pu contenere ( Xf , Ar, Nr ) param3 = opzioni ; pu essere una combinazione dei seguenti valori: N equivale a nessuna opzione e si pu omettere; T totalizza
167

i campi numerici allineandoli a sinistra; S stampa la griglia della tabella; W adatta il testo di una qualsiasi colonna anche su pi righe in modo che il testo non sia troncato; B per allineare il testo in basso; C per allineare il testo al centro; param4 = altezza carattere; specificare laltezza del carattere; param5 = colonne ; usando questo parametro, si possono definire le caratteristiche per forma e contenuto di ogni colonna della tabella. Le colonne, dotate delle relative caratteristiche, vanno indicate una di seguito allaltra poich costituiscono un unico parametro dellistruzione TAB. Le caratteristiche di una colonna si indicano seguendo la seguente sintassi: (Descr, NumCarAllin, Livello , Formula, ..., Formula) dove: Descr : intestazione della colonna NumCarAllin : larghezza e allineamento colonna. Si specifica la larghezza della colonna in caratteri seguita dal tipo di allineamento del testo che pu assumere uno dei seguenti valori: L allineamento a sinistra, M allineamento al centro, R allineamento a destra Livello : livello della riga da stampare seguito dai caratteri: * indica il cambio di livello delle righe di stampa, S indica di effettuare il totale per le righe di livello da stampare, B indica di stampare la riga in grassetto, C indica di stampare la riga in corsivo (******* R salta una riga dopo il campo ********) Formula : lespressione che corrisponde al valore del campo da stampare nella colonna e pu contenere il nome di una variabile, di un campo della variabile records o altri valori. Vediamo alcuni esempi:
Esempi di specifiche del campo Formula: <DATA> <3,1> <3,1:5:7> :stampa nella colonna il valore della variabile predefinita <DATA>; :stampa nella colonna il valore del record n3 , campo n 1; :stampa nella colonna il valore del record n3 , campo n 1, partendo dal 5carattere del campo e prelevando 7 caratteri dopo il 5;

Esempi di utilizzo dellistruzione TAL: TALSQL (5,30) (199,4,58) N 8 (Vettore ( ( (Scarico (Modello , 3L ,1*BS, <90,0>) \

, 35L ,1B, <90,1>) \ , 60L ,1 , <> ) \

, 5.2CR ,2*B, <90,2>) \ , 8L ,2B, <90,6> )

168

Stampe carichi fornite con 3Cad


Per stampe carichi si intendono le regole di stampa STG

Utilizzando le informazioni finora riportate per quanto riguarda le stampe parametriche, lutente pu modificare le stampe carichi fornite con il pacchetto. Forniamo la lista delle stampe carichi date con 3Cad. CARICO.STG CARICO1.STG CARICO2.STG CARICO3.STG CARICO4.STG CARICO5.STG CARICO6.STG CARICO7.STG CUCTIPOL.STG DEMO.STG TABELLA.STG Esempio di CARICO6.STG
// Stampa Lista di Carico Senza Elementi // [TESTA] VERTICALE DIM 200 290

FONT ARIAL

TX TL 16BC (70,5) Lista di Carico (6) TX TL 14C (70,15) Rif. Carico N. <car_cod> <car_des> Vol. <car_volume> N.Colli <car_colli> TX BR 6C (200,280) Pag.<PAG>

WMF (1,1) (24,19) dau.wmf TX BR 11BC (52,7) Software TX BR 11BC (52,12) per la grafica TX BR 11BC (52,17) e l'automazione TX BL 8C (51,280) Dau SRL - Via Mira 2/C - 31053 Pieve di Soligo (TV) Tel. 0438-837063 Fax 0438-981063

//[ddf] -------------------------------------------//000, TORDINE.VETTORE //001, TABELLE.Des //002, TORDINE.CARICO //003, TORDINE.RIF //004, TORDINE.DESTRAG1
169

//005, CLIENTI.RAG1 //006, BORDINE.PERCORSO //007, BORDINE.NUMERO //008, BORDINE.ETI //009, BORDINE.REPARTO //010, BORDINE.CODIMB //011, BORDINE.DES //012, BORDINE.DIM1 //013, BORDINE.DIM2 //014, BORDINE.DIM3 //015, BORDINE.VOLUME

[PAGINA] // I CAMPI <90,XX> SONO DELLA SELEZIONE CON L'SQL #SQL SELECT TORDINE.VETTORE, TABELLE.Des, TORDINE.SCARICO, TORDINE.RIF, TORDINE.DESTRAG1, \ CLIENTI.RAG1, BORDINE.PERCORSO, BORDINE.NUMERO, BORDINE.ETI, BORDINE.REPARTO, \ BORDINE.CODIMB, BORDINE.DES, BORDINE.DIM2, BORDINE.DIM3, \ BORDINE.VOLUME TORDINE ON FROM \ ((BORDINE BORDINE.DIM1, INNER JOIN AND

(BORDINE.PERCORSO = TORDINE.PERCORSO) (BORDINE.NUMERO = TORDINE.Numero)) \

LEFT JOIN CLIENTI ON TORDINE.CLIENTE = CLIENTI.COD) INNER JOIN TABELLE ON TORDINE.VETTORE = TABELLE.Cod \ $(where) $(order)

// AddVariabile BORDINE.ETI "

"order",

"

ORDER

BY

TORDINE.SCARICO,

// AddVariabile "order", " ORDER BY TORDINE.SCARICO desc, BORDINE.ETI "

TALSQL (5,30) (199,4,58) N 8 (Vettore ( ( (Scarico (Modello (N.Ordine ,2B,<90,5>,<90,3>,<90,4> ) \ ( ( (Collo (Reparto (Cod.Imb
170

, 3L

,1*BS, <90,0>) \

, 35L ,1B, <90,1>) \ , 60L ,1 , <> ) \

, 5.2CR ,2*B, <90,2>) \ , 8L , 8R ,2B, <90,6> ) \ ,2B, <90,3> ) \ , ) \ ) \ 70L

(Cliente-Rif.-Dest.Diversa , 25L ,2 , <> , 5L ,3 , <>

, 4CR ,3 , <90,8> ) \ , 5L , 8L ,3 , <90,9> ) \ ,3 , <90,10> ) \

(Descriz (Dim. (Dim. (Dim. (Volume

, 35L ,3 , <90,11> ) \ , 4CR ,3 , <90,12>) \ , 4CR ,3 , <90,13>) \ , 4CR ,3 , <90,14>) \ , 4.3CR ,3 , <90,15>)

171

Capitolo

Costruzione delle finiture


I comandi e le funzioni per la generazione delle finiture con gli script

iprendiamo in questa sede largomento delle finiture, gi accennato nel corso del primo capitolo. Nellambiente 3cad, si chiamano finiture i frontali (ante e cassetti), i piani speciali (lavelli, piani cottura, top sagomati), le maniglie o pomoli, eventuali altri oggetti che per la loro forma necessitino di una definizione grafica pi complessa di quanto si possa realizzare con una regola.

Abbiamo visto in che modo accedere alla costruzione delle finiture (menu regole, colori e finiture) e sappiamo che il linguaggio usato il vbscript . Per disegnare le ante basta fare riferimento ad alcune funzioni specifiche, mentre nel caso di gestioni pi complesse si rende necessaria la conoscenza di alcune nozioni di visual basic, per tanto, consigliamo il lettore di consultare la documentazione ad esso relativa, disponibile nel sito microsoft Si gi detto che esistono quattro categorie di finiture: ante, piani, maniglie e tipologie. Per creare una finitura si crea una riga nella finestra in alto a destra dove si indica il tipo di finitura , anta o maniglia, il codice e il nome , la definizione delle finiture avviene con il vbscript nella parte in basso della finestra mentre la visualizzazione della finitura compare in alto a destra. I dati presenti tra le parentesi tonde sono i valori che il programma passa e che si hanno a disposizione per costruire la finitura. Nel caso dellanta, come si nota, vi sono le dimensioni in larghezza e altezza, i colori e la posizione da terra. In questo ambiente si andranno a definire la forma, le dimensioni e i colori dellanta sfruttando alcune funzioni parametriche delle quali forniamo un elenco con una spiegazione sintetica relativa al loro utilizzo.

172

Valori che il programma mette a disposizione per costruire la finitura

Per tutti i comandi che seguono, il lettore ricordi che la posizione e le dimensioni del disegno si ottengono dalle coordinate iniziali e finali, e le eventuali misure da definire vanno espresse in millimetri.

Funzioni per la definizione delle finiture normali


ZFACCIATA x1, y1, x2, y2, colore, penna, trasparenza La facciata mi permette di inserire un pannello pieno dalla coordinata x1,y1 alla coordinata x2,y2. Inoltre si pu definirne la trasparenza fissando a 1 lultimo parametro. Il parametro penna pu essere impostato a 0 cos da definire un tratto nero. ZCOLORE Ritorna il colore. Solitamente si assegna ad una costante con la seguente sintassi: Q= zColore(cc) dove cc il codice del colore definito nellomonima tabella ZFACCIATAN tipo, x1, y1, x2, y2, par1, par2, colore, penna Disegna un telaio il cui tipo varia secondo la seguente lista: 0 intero senza tagli 1 con taglio a 45 2 taglio dritto verticale 3 taglio dritto orizzontale Si definiscono poi le coordinate iniziali e finali del telaio, lo spessore dei montanti laterali, laltezza dei montanti trasversali, il colore e la penna.
173

ZFACCIATAV tipo, x1, y1, x2, y2, colore, penna, par1, par2 Questa funzione permette di disegnare unanta con lavorazioni particolari, sempre da definire nel tipo, in base alla seguente lista: 0 cappello di gendarme 1 pannello con angoli smussati Si determinano le coordinate iniziali e finali del pannello, il colore, la penna, ci sono poi due parametri che nel tipo 1 determinano lampiezza dello smusso. ZRIFLESSOVETRO x1, y1, x2, y2, penna Disegna 3 linee inclinate che rendono lidea del vetro riflettente. ZLINEA x1, y1, x2, y2, penna Disegna una linea con origine in x1,y1 e termine in x2,y2 ZPENNA colore, stile, spessore Consente di definire un tipo di tratto personalizzato. La definizione del colore avviene con lo standard di windows : Q=zpenna (RGB(0,0,0), 0,2) ZATTRFACCIATA tipo, x1, y1, x2, y2, colore, penna Disegna una forma esagonale se si definisce tipo 0, oppure un cerchio se il tipo 1, una linea diagonale se si imposta a 3. ZFACCIATAM x1, y1, x2, y2, Sotto, Sopra, lato, latoa, latob, interno, riq, riq2, c1, c2, penna, TRASP Permette di disegnare nellanta un pannello smussato in base a diversi parametri. Per dare una spiegazione pi esauriente preferiamo illustrare il tipo di facciata con una immagine anticipando che leventuale trasparenza si determina con -1:
Il parametro latoa determina laltezza del massello superiore Lampiezza dello smusso superiore viene determinata dal parametro sopra

Il parametro lato determina la larghezza dei montanti laterali

Il parametro interno impostato a 1 disegna il pannello, se vale 0, non lo disegna

Nel parametro riq si determina a che distanza disegnare un altro eventuale contorno

Riq2 definisce lo spostamento dello smusso

Il parametro latob determina laltezza del massello inferiore

Lampiezza dello smusso inferiore viene determinata dal parametro sotto

174

ZRETTANGOLO x1, y1, x2, y2, penna Disegna un rettangolo. ZRETE x1, y1, x2, y2, tipo, distanza tra linee, penna Consente di tracciare delle linee, aventi una certa distanza tra loro e una posizione differente in base al tipo: 1 disegna linee inclinate di 45 con direzione a sinistra 2 disegna linee inclinate di 45 con direzione a destra 3 disegna una griglia con linee inclinate di 45 4 disegna linee orizzontali 8 disegna linee verticali I tipi 5, 6, 7 e dal 9 in poi, disegnano vari tipi di intersezioni tra linee orizzontali, verticali ed oblique. ZRETINATURA x1, y1, x2, y2, tipo, colore, penna, raggio, distanza Disegna dei cerchi di un determinato raggio, aventi una certa distanza tra loro. Inoltre variando il parametro tipo da 1 a 3, li posiziona in modi diversi. ZFACCIATATEX x1, y1, x2, y2, colore, nome file Permette di richiamare unimmagine in formato jpg o bmp, da un determinato percorso da indicare tra virgolette come segue: "WRL2\FORNI\1A51701O.JPG"
Nota
Allinterno degli script bene evitare di utilizzare il percorso ed il nome del catalogo, ma sfruttare la funzione percorso che restituisce appunto il percorso del catalogo in uso.

ZPANNELLO x1, y1, z1, x2, y2, z2, c1 Consente di disegnare un pannello delle dimensioni specificate. I parametri da definire sono le coordinate iniziali e finali in x, y , z e il colore. ZFORNELLO tipo, x, y, d, penna Questa funzione disegna 3 tipi diversi di fuoco per piano cottura, i valori da definire variano da 0 a 2. Si devono stabilire le coordinate iniziali e la dimensione. ZPARAMETRO Permette di considerare i 10 parametri eventualmente definiti in tipologia. La sintassi prevede di farlo precedere dal comando calcola come nellesempio: p1=calcola(zparametro(1))

175

Come si vede allinterno della finestra in basso si andranno a costruire le finiture usando il linguaggio di programmazione sopra descritto.

Anta con telaio

Codice vbscript

Le righe di vbscript cos definite andranno a creare unantina con telaio, come si pu notare nellimmagine in alto a destra. Una volta scritto il codice si deve fare clic sul pulsante Salva e Disegna, per compilare il file e poterlo visualizzare in costruzione dellordine necessario selezionare Crea Ante. Nel caso si voglia avere la visualizzazione RENDER, necessario scegliere la scheda Finiture Render e rigenerare, con lo stesso nome, tutte le finiture create per la versione normale, implementandole con altre funzioni specifiche, per le quali proponiamo un secondo elenco.

Nota
Nella gestione delle finiture per la visualizzazione normale consigliabile non definire i disegni con tanti punti, ne richiamare file 3DS troppo particolareggiati, in quanto si va ad appesantire notevolmente il programma.

176

Funzioni per la definizione delle finiture render


Leditor e i comandi di costruzione sono quelli precedentemente descritti, cambiano solamente le funzioni disponibili, mentre per quanto riguarda la finestra di collaudo, ora ci si trover di fronte al tipico visualizzatore della micrsoft per gli oggetti vrml, con i diversi pulsanti di spostamento. I parametri riportati tra parentesi quadre non sono obbligatori. WCOLORE numero colore o indicazione RGB Restituisce il colore come zcolore WRPANNELLO Orientamento, colore, dimensione in X, dimensione in Y, dimensione in Z, raggio stondatura 1, raggio stondatura 2, raggio stondatura 3, raggio stondatura 4, raggio stondatura 5 Disegna un pannello come zpannello al quale si deve specificare un orientamento (v. orientamento tipologie nel capitolo 1), in quanto in questa versione si potr vedere anche la venatura del legno. WRPANNELLO2 dimensioni in x, dimensioni in y, dimensioni in z,colore davanti,colore dietro,colore a destra,colore a sinistra,colore sopra,colore sotto,linee bordo true o false Questa funzione permette di disegnare un pannello al quale si possono colorare tutti i lati in modo differente. Lultimo parametro consente di tracciare il contorno se impostato a uno, altrimenti no se lasciato a zero. WRINLINE nome del file,posizione in x, posizione in y,posizione in z, [rotazione axz],[rotazione ayz],[rotazione axy],[fattore scala x],[fattore scala y],[fattore scala z] WRFACCIA(LATO 0-DAVANTI 1-SOPRA 2-DESTRA O SINISTRA,DIMENSIONE IN X,DIMENSIONE IN Y,DIMENSIONE IN Z, COLORE FACCIATA, LINEE BORDO TRUE O FALSE) WRTRASFORMA(POSIZIONE IN X, POSIZIONE IN Y ,POSIZIONE IN Z,[ROTAZIONE AXZ],[ROTAZIONE AYZ],[ROTAZIONE AXY],[FATTORE SCALA X],[FATTORE SCALA Y],[FATTORE SCALA Z]) WRCHIUDI() CHIUDE WRTRASFORMA WR(STRINGA DI COMANDI WRML)

177

WRLIBRERIA(DIMESINE IN LARGHEZZA, DIMESINE IN ALTEZZA, DIMESINE IN PROFONDITA,TEXTURE) WRSFERA(POSIZIONE IN X, POSIZIONE IN Y, POSIZIONE IN Z,DIMENSIONE IN X,DIMENSIONE IN Y,DIMENSIONE IN Z,COLORE) WRBOX(POSIZIONE IN X, POSIZIONE IN Y, POSIZIONE IN Z,DIMENSIONE IN X,DIMENSIONE IN Y,DIMENSIONE IN Z,COLORE)

WLBOX(POSIZIONE IN X, POSIZIONE IN Y, POSIZIONE IN Z,DIMENSIONE IN X,DIMENSIONE IN Y,DIMENSIONE IN Z,COLORE) WRCILINDRO(POSIZIONE IN X, POSIZIONE IN Y, POSIZIONE IN Z,DIMENSIONE IN X,DIMENSIONE IN Y,DIMENSIONE IN Z,COLORE,[ORIENTAMENTO DA 0 A 2 (0 IN PIEDI,1 RUOTATO IN X,2 RUOTATO IN Y)]) WR3D(NOMEFILE,COLORE,[DIMENSIONE IN X] ,[DIMENSIONE IN Y] ,[DIMENSIONE IN Z],[SECONDO COLORE], [TERZO COLORE] , [QUARTO COLORE] , [QUINTO COLORE]) WRCRASCENA(TRUE O FALSE) WRDOPPIOESTRUDI Esiste un nuovo comando da utilizzare nelle finiture che consente di estrudere un oggetto con "due" sagome wrdoppioestrudi 1,"#0,0,1000,0,1200,800,500,2000","#0,0,100,0,100,200,200,200,200,300, 0,300,0,0",c1,c2 primo parametro = tipo (-1,1,2,3 indica le direzioni di estrusione) secondo = sagoma dell'anta terzo = sagoma del profilo c1 = colore1 c2 = colore2

178

Capitolo

Calcolo delle cornici


Come si disegnano le cornici di finitura

In ogni caso, i concetti che si sfruttano per elaborarle, possono trovare riscontro anche in altri tipi di finitura, come i profili dei piani. Alla tipologia della cornice si deve attribuire LATO 19 (sono stati aggiunti anche 20 e 21). La posizione e la dimensione sono quelle standard. La fase successiva consiste nel disegnare una sagoma che identifica il profilo della fascia. In questo modo si possono rappresentare cornici piuttosto particolareggiate. Per rappresentare correttamente la sezione della cornice necessario considerare il profilo destro. Il disegno della sagoma deve seguire determinati criteri: come prima cosa bisogna definire come tipo di orientamento il profilo, il disegno della sezione della cimasa va considerato capovolto e la parte della cornice che appoggia sul fusto del pensile va disegnata allesterno dellingombro, mentre la parte sporgente va considerata allinterno dello stesso. Nellasse X si considera lo spessore totale della cornice, nellasse Y la sua altezza. Vediamo nelle immagini che seguono lo sviluppo di una cornice piuttosto elaborata.

e cornici di finitura soprapensili o copriluce sono tipiche delle cucine, ma possono venire utilizzate anche nei mobili per soggiorno o negli armadi, soprattutto se di tipo tradizionale.

179

La parte di disegno esterno allingombro quella interna al mobile, mentre quella contenuta nellingombro ci che sporge dal mobile

Orientamento della sagoma

Una volta applicata alla tipologia, il risultato della sagoma sar il seguente:

Profilo da considerare per sviluppare il disegno

Il percorso che la finitura dovr seguire si pu stabilire in due modi differenti: attraverso una sagoma, oppure sfruttando i parametri legati agli spostamenti e dimensioni. Vediamo i comandi e la sintassi attraverso degli esempi. Se dobbiamo differenziare i pezzi di cornice perch esistono codici diversi per i laterali, possiamo sfruttare le variabili di sistema LATOBSX e LATOBDX per controllarne la presenza:
#IF $(LATOBSX)=1 37,SL=0,SP=0,L=0,P= $P,DIS=$(_cim:7) // CIMASA LATERALE #ENDIF #IF $(LATOBDX)=1 37,SL=$L,SP=$P,L=0,P=0-$P,DIS=$(_cim:7) // CIMASA LATERALE #ENDIF 36,SL=0,SP=$P,L=$L,P=0,DIS=$(_cim:7) // CIMASA

180

Come si nota, non viene considerato lo spessore delle cimase, in quanto esso viene definito dalla sagoma . Se invece si applica la medesima cornice anche sui fianchi, si pu tracciare il percorso completo come fosse una sagoma:
#LETS PERC=0,0,0,$P,$L,$P,$L,0 !SAGOMA PERCORSO $(PERC) 36,LATO=19,DIS=$(_CIM:7),X1=$(PERCORSO) // CIMASA

In questo caso si disegna una sagoma sfruttando il comando !SAGOMA e definendo i punti attraverso la variabile $(PERC). In entrambi gli esempi, il nome del disegno del profilo della cimasa contenuto nella variante $(_CIM), in colonna 7.
Punto iniziale Ultimo punto

0,0

$L,0
$L,$P

0,$P Terzo punto Secondo punto

Suggerimento
La parte di istruzioni relative al calcolo delle cornici pu essere contenuto in una macro richiamabile allinterno delle regole. (V.Cap.1)

181

Lavorazioni delle cornici


Nella gestione delle cornici, quando si in presenza di elementi a diversa profondit o angolari, necessario operare delle lavorazioni, ossia dei tagli e, in alcuni casi, anche degli allungamenti. Chi costruisce il catalogo pu operare in vari modi, ricorrendo, ad esempio, alle funzioni !boxvicino (v. capitolo 3), che effettuano il controllo su una determinata area per verificare la presenza di elementi vicini, ed elaborare degli algoritmi che consentano di fare gli opportuni tagli. Per gestire le lavorazioni delle cornici possibile intervenire anche nel DEVAMBIENTE.VBS nella funzione EseguiLavorazioneCornice. Nel file Evento2.ini esiste un flag che stabilisce se si devono ignorare oppure no i codici dei singoli spezzoni, prima di unirli: CodiceSpezzoniCornici=N oppure S Esistono due tipi diversi di lavorazione per le cornici: quelle definite dalle regole e quelle create in automatico dal programma quando i perori di estrusione, pur toccandosi, non permettono di creare una linea unica. Nel primo caso,sul parametro (2) della tipologia cornice, si scrive X;Y^codice^X1;Y1 dove x,y sono le coordinate L e P del punto dove si vuole che compaia la descrizione della lavorazione e x1,y1 sono le coordinate finali. Nel secondo caso, ogni lavorazione richiama la funzione EseguiLavorazioneCornice di Devambiente.vbs La sintassi sar la seguente: EseguiLavorazioneCornice xcod, tipolav, pt1, pt2, pt3, pt4, lav1, lav2 XCod=codice1 & vbtab & codice2 Pt1=x & vbtab & y punto iniziale della linea su cui mi appoggio Pt2=x & vbtab & y punto finale della linea su cui mi appoggio Pt3=x & vbtab & y punto iniziale della linea che tocca Pt4=x & vbtab & y punto finale della linea che tocca E possibile modificare i codici ed i punti per poter allungare, accorciare o modificare le cornici. TipoLav=1 TipoLav=2 TipoLav=3 TipoLav=4 il punto iniziale della cornice da aggiungere su una delle linee della cornice gi calcolata (la linea in nLinea) il punto finale della cornice da aggiungere su una delle linee della cornice gi calcolata (la linea in nLinea) il punto iniziale della cornice gi calcolata su una delle linee della cornice da aggiungere (la linea in nLinea) il punto finale della cornice gi calcolata su una delle linee della cornice da aggiungere (la linea in nLinea)

Allinterno di questo script posso chiamare la seguente funzione: AllungoLinea ptx1, pty1, ptx2, pty2, allungo Allunga la linea che va da pt1 a pt2 di Allungo dalla parte di pt2.
182

Se sul parametro(2) metto un codice lavorazione, richiamo la funzione: EseguiLavorazioneCornice Xcod contiene solo il codice della cornice creata Tipolav=0 Punti tutti a 0 Lav1 = parametro(2) Lav2 vuoto Il parametro(2) deve essere scritto nel seguente modo: X;Y^codice^X1;Y1 Dove x,y sono le coordinate (L,P) del punto iniziale della lavorazione e x1,y1 le coordinate del punto finale. Se sui flag speciali viene messa una lunghezza massima per la cornice, quando tale misura viene superata, viene richiamata la funzione Spezzacornice di devambiente.vbs Sub SpezzaCornice (p1x, p1y, p2x, p2y, lung, spezz) Dove p1 il punto iniziale della cornice, p2 quello finale e lung la lunghezza totale. Nellattuale versione di 3Cad funzionano anche le tipologie Taglio (esattamente come per i top).

183

Capitolo

Le lavorazioni
Il collegamento con le macchine a controllo numerico

a procedura 3Cad, oltre a fornire la grafica e le stampe connesse allordine, consente il passaggio dei dati alla produzione attraverso dei files per le macchine a controllo numerico. Le macchine a cui si fa riferimento in questa sede sono quelle di tipo foro inseritrice.

Anche in riferimento a questo argomento, dobbiamo operare una distinzione tra la gestione delle cucine, a cui si possono tranquillamente associare i bagni, e linterparete. Nel primo gruppo gli elementi che necessitano di lavorazioni sono: - i top e le mensole, per i quali necessario conoscere i tagli iniziali, finali ed i fori per eventuali lavelli, piani cottura, cappe o faretti - le alzatine, conici e zoccoli, per i quali servono i tagli - le ante che devono essere forate per il posizionamento delle maniglie - i fianchi delle colonne che hanno attrezzatura interna Nellinterparete le informazioni da passare sono pi numerose e riguardano quasi tutti i componenti: fianchi, top, schiene, ripiani ecc. Per operare, la macchina a controllo numerico necessita dei programmi. Questi, nella maggior parte dei casi, sono delle liste di lavoro la cui sequenza diversa a seconda delle esigenze (per colore, per collo, per ordine, ecc.). Meno frequente la gestione del codice a barre, che prevede la generazione di una etichetta per ogni pezzo. In tal caso la macchina esegue le lavorazioni in base alle informazioni contenute nel codice. Nei paragrafi che seguono spiegheremo come vanno caricati i dati relativi agli articoli che prevedono lavorazioni e come si ottengono i files da travasare alle macchine a controllo numerico, distinguendo la gestione delle cucine o bagni da quella interparete.

184

Le lavorazioni nelle cucine


I top e le mensole vanno gestiti come tipologie a riconduzione. Con tale termine si indicano quelle tipologie che nel caso siano adiacenti vanno unificate in un unico pezzo. Gi nella definizione della tipologia, gli elementi a riconduzione hanno come caratteristica una X nel campo codice, mentre il codice stesso va inserito nel campo COMMENTI.

Le tipologie a riconduzione devono poi essere specificate nella scheda Gruppi Tipologie dei flag speciali. Nella prima colonna della tabella tipologie top, vanno inseriti tra asterischi i numeri ad esse relativi.

Tipologie a riconduzione

Lavorazioni ammesse per la tipologia

185

Nella stessa tabella, la seconda colonna elenca le lavorazioni ammesse per quella tipologia, sempre contenute tra asterischi. Come si pu notare nella figura sopra, in corrispondenza della tipologia 30 c il carattere A. In tale posizione si possono infatti specificare dei parametri che regolano il comportamento della riconduzione. Abbiamo gi visto lutilizzo di questi parametri nel paragrafo relativo alle configurazioni particolari del catalogo (cap.3), ribadiamo in questa sede che A serve alla procedura per andare a leggere la lunghezza della tipologia in anagrafica. 3Cad pu predisporre i programmi di foratura per varie macchine, ma essendo lEssetre quella con cui inizialmente stato creato il collegamento e con la quale si creato un rapporto di collaborazione, faremo sovente riferimento ad essa, soprattutto per limpostazione dei dati. Ogni lavorazione identificata da un codice costituito da un valore numerico di tre caratteri, inoltre vi sono cinque eventuali parametri che possono contenere svariate informazioni, ad esempio la larghezza e profondit del foro. Un altro dato importante quello relativo alla posizione della lavorazione (coordinate x,y) che comunque deriva dalla grafica. Tornando al database di Essetre, le lavorazioni standard gestite sono divise in quattro classi:C1, C2, C3 e C4. Nella prima classe sono contenute le lavorazioni di testa (inizio barra) e sono numerate da 001 a 099, nella seconda quelle di coda (fine barra) numerate da 101 a 199, la terza classe contenente i codici da 200 a 299 viene da noi ignorata, in fine la quarta classe riguarda i fori e la numerazione va da 300 a 600. Tutte le lavorazioni hanno un massimo di cinque parametri utilizzabili. Tali parametri hanno sempre dei valori di default che in certi casi devono rimanere fissi. Naturalmente i dati possono essere personalizzati dagli utenti in base alle loro esigenze, quindi evidente che per gestire correttamente le lavorazioni in un catalogo indispensabile avere come supporto il relativo database aggiornato di Essetre. In 3Cad la lavorazione viene passata nel campo commenti del codice come segue:
62,COD=X/ /L001A$(PX3)C$(ANGOLOX:0)

In questo esempio, relativo ad un top in angolo, la lavorazione 001 corrisponde alla femmina di testa, il parametro A contiene una variante che definisce in questo caso la lunghezza della femmina, il parametro C riporta lampiezza dellangolo. Si noti che gli eventuali parametri vengono definiti di seguito alla lavorazione senza separatori. La lavorazione viene eseguita solo se si poggia esattamente sopra la superficie dellelemento su cui deve incidere ed ha la medesima direzione. La prima una condizione indispensabile, per quanto concerne invece langolo di rotazione, ci possono essere dei casi in cui esso deve poter essere ignorato. Per gestire questultima situazione ed altre esigenze necessario utilizzare il parametro x1. Questo parametro pu assumere i seguenti valori: 1 per generare solo il codice di lavorazione senza grafica, 2 per ignorare langolo di rotazione, 3 per attuare entrambi i precedenti. Per poter eseguire il trasferimento dei dati ottenuti da 3Cad alla macchina a controllo numerico, nella colonna Travaso nei flag speciali necessario mettere 1 nel caso dei top e 2 per cornici o zoccoli.
186

Facendo riferimento a barre di top e mensole necessario indicare alla macchina quali barre andare a prelevare, in tal senso di fondamentale importanza che in relazione agli elementi interessati, il campo DISBMP della tabella ARTICOLI sia compilato. In alcuni casi il codice della barra top potrebbe essere lo stesso della mensola, ma essendo necessario distinguere le due cose in quanto le lavorazioni delluno sono capovolte rispetto a quelle dellaltra, al codice si fa seguire il carattere 0 per i top e 1 per le mensole. (es. 101337A;0).

Flag travaso per bordo macchina

Dopo aver completato la composizione, si pu controllare immediatamente il file che verr travasato alla macchina a controllo numerico attraverso la voce Dump Tops del men verifiche. I vari pezzi di top vengono identificati dal numero ordine (6 caratteri) pi un progressivo (che pu essere anche una lettera), lelenco rispecchia la lista dei top che si visualizzano in grafica tramite il pulsante Top.

187

Codice della barra

Lavorazione 603 con punto di applicazione 630 e primo parametro 860

Lavorazione di testa e coda

Il trasferimento dei dati avviene mediante la voce Trasferimento Top dal men anagrafiche. Il file che si ottiene e che andr importato nella macchina a controllo numerico xnomecarico.txt. In relazione a questa gestione bisogna definire uno specifico gruppo in evento2.ini del catalogo: [TRAVASITOP] pathtravaso1=H: numerotop=1 descrizione1=Carico ultimocarico1=1 NomeFile=1 Per aggiustare certi parametri da travasare, viene gestito il file SCRIPTESSETRE.SCR Il caso pi frequente da risolvere quello relativo alle coordinate di posizionamento del foro. Queste, graficamente si riferiscono allinizio del foro, mentre generalmente la macchina considera il centro del foro. Nello scriptessetre.scr quindi si deve incrementare la x di una certa quantit:
#IF $l=535 #LET x=$(x)+297

Le variabili che lutente dovr gestire nello script sono: $l $(x) $(y)
188

codice lavorazione coordinata x del foro coordinata y del foro

$(A) $(B) $(C) $(D) $(E) $(dimtopl) $(dimtopa) $(dimtopp) $(lavatesta) $(lavcoda) $(xfine)

primo parametro della lavorazione secondo parametro della lavorazione terzo parametro della lavorazione quarto parametro della lavorazione quinto parametro della lavorazione lunghezza della barra altezza della barra profondit della barra lavorazione di testa lavorazione di coda ??

Nota
La lavorazione 1 che si incontra in scriptessetre.scr una lavorazione fittizia che viene usata ad esempio per gestire le finiture di testa e coda.

189

Le lavorazioni nellinterparete
Nel momento in cui si definiscono le tipologie consigliabile utilizzare i numeri pi bassi per quegli elementi che avranno lavorazioni, in quanto il file, che viene creato per essere travasato alla macchina a controllo numerico, ha un nome lungo otto caratteri (vecchia gestione MS dos) costituito per i primi cinque dal numero dellordine, solo due caratteri sono quelli riservati alla tipologia ed in fine un progressivo alfanumerico.

190

Capitolo

Distinta base estesa


La gestione della distinta base dalle tipologie

Questo tipo di distinta legato alla grafica, ogni elemento grafico infatti si porter la propria distinta base. Ad esempio la distinta base dellarticolo base con anta sar costituita dalle tipologie che la compongono, ovvero, la tipologia anta riporter il codice dellanta, della maniglia, dei paracolpi, , il fianco riporter il codice del fianco e cos via. Allinterno della tipologia, cliccando il tasto distinta compare una finestra di editazione allinterno della quale andr inserito lo script per il calcolo della distinta base. Le variabili a disposizione per la costruzione della distinta possono essere cos elencate: VARIABILI DEL PADRE Sono a disposizione tutte le varianti del padre e vanno richiamate usando il prefisso GV davanti al nome della variante, ci sono inoltre le varianti MCOD, MDES, MDL, MDA, MDP che sono rispettivamente il codice, la descrizione e le dimensioni del padre. VARIABILI DELLA TIPOLOGIA Sono a disposizione tutte le varianti della tipologia e vanno richiamate usando il prefisso LV davanti al nome della variante, ci sono inoltre le varianti COD codice DES descrizione DL, DA, DP dimensioni tipologia PL, PA, PP posizionamento tipologia C1, C2 colori MA maniglia FI facciata AX, AY, AZ angoli di rotazione I PARAMETRI DA X1 A X10 parametri della tipologia allinterno dei quali si possono richiamare le varianti della regola che servono per lindividuazione del codice, i parametri verranno richiamati con $(x1) ad esempio
191

a distinta base viene costruita in base alle tipologie che compongono larticolo.

#LETS codicemaniglia=$(X9)

Parametri tipologia

La riga che crea il codice della distinta ha le seguente sintassi: CODICE, QUANTITA, VARIANTI DEL COMPONENTE, LUNGHEZZA, LARGHEZZA, SPESSORE, NOTE1, NOTE2, NOTE3, NOTE4 Es: 992103,03 Una volta salvato lordine, verr compilata la tabella DISTINTAT nel database. Affinch questo modo di costruzione della distinta venga eseguito da 3CAD, bisogna impostare nellevento2.ini del catalogo il parametro ELABORADISTINTAT=1

192

Potrebbero piacerti anche