Zásahy daného prvku jsou k dispozici jako pole a lze k nim přistupovat prostřednictvím výrazů využívající syntaxi pole v podobě <FeatID>.Hit[<Výraz pole>].<Přípona> nebo v podobě <FeatID>.RawHit[<Výraz pole>].<Přípona>. Hit vrací kompenzovaná data sondy, je-li kompenzace sondy aktivována. RawHit vždy vrací nekompenzovaná data. Platné přípony jsou X, Y, Z, I, J, K, TX, TY, TZ, TI, TJ, TK, XYZ, TXYZ, IJK a TIJK
Circle1.Hit[1].XYZ
Měřený geometrický střed (kompenzovaný sondou) zásahu 1 kružnice „Circle1“.
Circle1.Hit[2].IJK
Měřený vektor zásahu 2 kružnice „Circle1“
Data zásahů jsou k dispozici pro všechny objekty, které mají zásahy, bez ohledu na to, zda jsou vlastní zásahy zobrazeny v okně úprav či nikoli. Zásahy lze tudíž získat pro skeny a automatické funkce.
V následujících tématech jsou popsány některé další funkce pole, které jsou užitečné pro hledání minimálních či maximálních bodů ve skenu:
Přiřazení oblasti zásahů do pole
Pomocí této syntaxe lze také přiřadit oblast zásahů do pole:
<Feature Id>.<Hittype>[<Startnum>..<Endnum>].<Extension>
kde
<Feature Id> je název prvku.
<Hittype> může být buď slovo „HIT“ pro kompenzovaná data nebo „RAWHIT“ pro nekompenzovaná data. Je-li kompenzace sondy deaktivována, jsou vrácené hodnoty vždy nekompenzované.
<Startnum> je výraz, který identifikuje první hodnotu indexu oblasti zásahů.
<Endnum> je výraz, který identifikuje druhou hodnotu indexu oblasti zásahů.
<Extension> identifikuje typ dat. Možnými příponami jsou tyto měřené nebo teoretické typy dat:
Naměřená hodnota
X – Měřené hodnoty X zásahů
Y – Měřené hodnoty Y zásahů
Z – Měřené hodnoty Z zásahů
XYZ – Měřené hodnoty XYZ zásahů
I – Měřené hodnoty I zásahů
J – Měřené hodnoty J zásahů
K – Měřené hodnoty K zásahů
IJK – Měřené hodnoty IJK zásahů
Teoretická
TX – Teoretické hodnoty X zásahů
TY – Teoretické hodnoty Y zásahů
TZ – Teoretické hodnoty Z zásahů
TXYZ – Teoretické hodnoty XYZ zásahů
TI – Teoretické hodnoty I zásahů
TJ – Teoretické hodnoty J zásahů
TK – Teoretické hodnoty K zásahů
TIJK – Teoretické hodnoty IJK zásahů
Například:
ASSIGN/V1=SCAN1.HIT[1..10].X
V1 je přiřazeno poli 10 hodnot představujících měřené hodnoty X z prvních 10 zásahů SCAN1.
ASSIGN/V2 = SCAN1.HIT[1..SCAN1.NUMHITS].XYZ
V2 je přiřazeno poli bodů z každého z geometrických středů zásahů ve skenu.
Řazení polí
PC-DMIS umožňuje řadit pole buď vzestupně nebo sestupně. Následující dva výrazy berou pole a vrací řazené pole:
Pro vzestupné řazení použijte:
SORTUP(<array>)
Pro sestupné řazení použijte:
SORTDOWN(<array>)
Například:
ASSIGN/V1 = ARRAY(5,8,3,9,2,6,1,7)
V1 je přiřazeno poli „5,8,3,9,2,6,1,7“
ASSIGN/V2 = SORTUP(V1)
V2 bude obsahovat hodnoty pole řazené vzestupně: „1,2,3,5,6,7,8,9“
ASSIGN/V3 = SORTDOWN(V1)
V3 bude obsahovat hodnoty pole řazené sestupně: „9,8,7,6,5,3,2,1“
Vrácení největších nebo nejmenších hodnot indexů z pole
Pole lze vložit do funkce a vrátí se číslo indexu prvku, který má největší či nejmenší hodnotu, pomocí těchto funkcí:
Pro vrácení hodnoty indexu prvku s největší hodnotou použijte:
MAXINDEX(<array>)
Pro vrácení hodnoty indexu prvku s nejmenší hodnotou použijte:
MININDEX(<array>)
Například,
ASSIGN/V1 = ARRAY(5,8,3,9,2,6,1,7)
V1 je přiřazeno poli „5,8,3,9,2,6,1,7“
ASSIGN/V2 = MAXINDEX(V1)
V2 bude obsahovat hodnotu indexu pole 4. Aktuální hodnota tohoto prvku pole je 9
ASSIGN/V3 = MININDEX(V1)
V3 bude obsahovat hodnotu indexu pole 7. Aktuální hodnota tohoto prvku pole je 1
Vrácené hodnoty indexu lze poté využít k získání skutečné hodnoty prvku pole.
Vrácení seřazených hodnot indexů z pole
Pole lze vložit do funkce, seřadit hodnoty pole vzestupně nebo sestupně a poté vrátit hodnoty indexů pomocí těchto funkcí:
Pro vrácení pozic indexů pole v pořadí jejich hodnot řazených od největších k nejmenším použijte:
MAXINDICES(<array>)
Pro vrácení pozic indexů pole v pořadí jejich hodnot řazených od nejmenších k největším použijte:
MININDICES(<array>)
Například:
ASSIGN/V1=ARRAY(4,8,2,9,5,7)
V1 je přiřazeno poli „4,8,2,9,5,7“
ASSIGN/V2=MAXINDICES(V1)
V2 bude obsahovat pole s těmito hodnotami: „4,2,6,5,1,3“
ASSIGN/V3=MININDICES(V1)
V3 bude obsahovat pole s těmito hodnotami: „3,1,5,6,2,4“
Příklad použití funkcí pole pro nalezení minimálních a maximálních bodů ve skenu
Hlavním účelem výše probíraných funkcí pole zásahů je poskytnout vám snadný způsob nalezení minimálních a maximálních bodů ve skenu.
Pro stanovení rozměrů bodu ze skenu SCAN1, který má největší měřenou hodnotu X, byste mohli použít tento výraz:
ASSIGN/MAXPTINDEX=MAXINDEX(SCAN1.HIT[1..SCAN1.NUMHITS].X)
D1=LOCATION OF FEATURE SCAN1.HIT[MAXPTINDEX]
Pro nalezení tří nejvyšších bodů na ose Z skenu SCAN2 lze použít tento výraz:
ASSIGN/MI=MAXINDICES(SCAN2.HIT[1..SCAN2.NUMHITS].Z)
ASSIGN/THREEPOINTS=ARRAY(SCAN2.HIT[MI[1]].XYZ,SCAN2.HIT[MI[2]].XYZ,SCAN2.HIT[MI[3]].XYZ)