Array di punti

I punti di un determinato elemento sono disponibili sotto forma di array, ed è possibile accedervi mediante espressioni che utilizzano la sintassi di array <ID elemento>.Hit[<espressione array>].<prolunga> o <ID elemento>.RawHit[<espressione array>].<prolunga>. Durante l'esecuzione della compensazione del tastatore Hit restituisce i dati compensati del tastatore. RawHit restituisce sempre dati non compensati. Estensioni valide sono X, Y, Z, I, J, K, TX, TY, TZ, TI, TJ, TK, XYZ, TXYZ, IJK e TIJK

Circle1.Hit[1].XYZ
Il centro misurato (compensato dal tastatore) del punto 1 di "Circle1".

Circle1.Hit[2].IJK
Il vettore misurato del punto 2 di "Circle1"

I dati sui punti sono disponibili per tutti gli oggetti contenenti punti, indipendentemente dal fatto che i punti effettivi vengano o meno visualizzati nella finestra di modifica. Pertanto, è possibile ottenere punti per le scansioni o per gli elementi automatici.

Gli argomenti che seguono trattano alcune funzioni applicabili agli array, esse si dimostrano utili per trovare il minimo ed il massimo punto di una scansione.

Assegnare un intervallo di punti a un array

Un intervallo di punti può essere assegnato ad un array usando la sintassi seguente:

<ID elemento>.<Tipo di Punto>[<Num Iniziale>...<Num Finale>].<Prolunga>

dove

<ID Elemento> è il nome dell'elemento

<Hittype> può essere la parola "HIT" per i dati compensati o "RAWHIT" per i dati non compensati. Se la compensazione tastatore è disabilitata, il valore restituito è sempre privo di compensazione.

<Num Iniziale> è un'espressione che identifica il valore del primo indice dell'intervallo di punti

<Num finale> è un'espressione che identifica il valore del secondo indice dell'intervallo di punti

<Prolunga> identifica il tipo dei dati. Le possibili estensioni riguardano questi tipi di dati teorici o misurati:

Misurati

Teorica

Per esempio:

ASSEGNA/V1 = SCAN1.HIT[1..10].X
V1 è assegnato a un array di 10 valori che sono i valori di X misurati dai primi 10 punti di SCAN1.

ASSEGNA/V2 = SCAN1.HIT[1..SCAN1.NUMHITS].XYZ
V2 è assegnato a un array di punti da ognuno dei baricentri dei punti nella scansione.

Ordinamento degli array

PC-DMIS consente di ordinare gli array in modo crescente o decrescente. Le due espressioni seguenti accettano un array e restituiscono un array ordinato:

Per ordinare in ordine ascendente utilizzare:
SORTUP(<array>)

Per ordinare in ordine discendente utilizzare:
SORTDOWN(<array>)

Per esempio:

ASSEGNA/V1 = ARRAY(5,8,3,9,2,6,1,7)
V1 è assegnato all'array "5,8,3,9,2,6,1,7"

ASSEGNA/V2=SORTUP(V1)
V2 conterrà i valori dell'array in ordine crescente: "1,2,3,5,6,7,8,9"

ASSEGNA/V3=SORTDOWN(V1)
V3 conterrà i valori dell'array in ordine decrescente: "9,8,7,6,5,3,2,1"

Come restituire il valore maggiore o minore degli indici di un array.

È possibile inserire un array in una funzione ed ottenerne il numero di indice dell'elemento con il valore massimo o minimo utilizzando le funzioni seguenti:

Per ottenere l’indice dell’elemento con il valore massimo, utilizzare:

MAXINDEX(<array>)

Per ottenere l’indice dell’elemento con il valore minimo, utilizzare:

MININDEX(<array>)

Ad esempio,

ASSEGNA/V1 = ARRAY(5,8,3,9,2,6,1,7)
V1 è assegnato all'array "5,8,3,9,2,6,1,7"

ASSEGNA/V2=MAXINDEX(V1)
V2 conterrà il valore dell'indice dell'array 4. Il valore effettivo degli elementi di quell'array è 9.

ASSEGNA/V3=MININDEX(V1)
V3 conterrà il valore dell'indice dell'array 7. Il valore effettivo degli elementi di quell'array è 1.

È possibile utilizzare i valori di indice restituiti per ottenere il valore effettivo dell'elemento dell'array.

Come ottenere i valori di indice dato di un array, dopo l’ordinamento.

È possibile inserire un array in una funzione, ordinare i valori dell'array in modo crescente o decrescente e poi restituire i valori dell'indice utilizzando le seguenti funzioni:

Per restituire le posizioni di indice dell'array in base ai relativi valori ordinati dal maggiore al minore, utilizzare:
MAXINDICES(<array>)

Per restituire le posizioni di indice dell'array in base ai relativi valori ordinati dal maggiore al minore, utilizzare:
MININDICES(<array>)

Per esempio:

ASSEGNA/V1=ARRAY(4,8,2,9,5,7)
V1 è assegnato all'array "4,8,2,9,5,7"

ASSEGNA/V2=MAXINDICES(V1)
V2 conterrà un array con i seguenti valori: "4,2,6,5,1,3"

ASSEGNA/V3=MININDICES(V1)
V3 conterrà un array con i seguenti valori: "3,1,5,6,2,4"

Esempio d’uso di funzioni su array, per trovare il Massimo e Minimo Punto di una Scansione

Lo scopo principale delle funzioni viste sopra, che agiscono su array di punti, è di fornire in modo semplice il minimo ed il massimo punto di una scansione.

Per dimensionare il punto da SCAN1 che ha il valore X massimo misurato, è possibile utilizzare la seguente espressione:

ASSEGNA/MIND_MAX_PUNTI=MAXINDEX(SCAN1.HIT[1..SCAN1.NUMHITS].X)

D1 = POSIZIONE DELL'ELEMENTO SCAN1.HIT[IND_MAX_PUNTI]

 

Per individuare i tre punti più elevati nell'asse Z di SCAN2, utilizzare la seguente espressione:

ASSEGNA/MI=MAXINDICES(SCAN2.HIT[1..SCAN2.NUMHITS].Z)

ASSEGNA/TREPUNTI=ARRAY(SCAN2.HIT[MI[1]].XYZ,SCAN2.HIT[MI[2]].XYZ,SCAN2.HIT[MI[3]].XYZ)