Pole zásahů

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

Teoretická

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)