Del via


Test om et objekt får plass i et område ved hjelp av blandet virkelighet

Du kan bruke kontrollen Målekamera til å fastsette om et objekt av en kjent størrelse får plass i et bestemt område. I denne artikkelen skal vi opprette en lerretsapp som gjør nettopp dette.

Tips

Kontrollene for blandet virkelighet fungerer best i godt belyste miljøer med overflater med flat tekstur. Sporing er bedre på LIDAR-aktiverte enheter.

Legg til inndatafelter for minimumsdimensjoner i en lerretsapp

Først skal vi opprette en tom lerretsapp. Vi skal deretter gi brukeren en fremgangsmåte for å angi minimumsdimensjonene å teste mot (det vil si det minste området objektet får plass i).

  1. Opprett en tom lerretsapp.

  2. Velg Sett inn-fanen. Sett inn og plasser tre Tekstetikett-kontroller på skjermen.

  3. Endre egenskapen Text for etikettene til henholdsvis Minimum Width, Minimum Depth og Minimum Height.

    Et skjermbilde av en tekstetikett som er under bygging i Microsoft Power Apps Studio, og vises sammen med egenskapene for den.

  4. Velg Sett inn-fanen. Sett inn tre Tekstinndata-kontroller, og plasser dem til høyre for de tre etikettene.

  5. Endre navnet på kontrollene for tekstinndata til henholdsvis minWidth, minDepth og minHeight.

    Et skjermbilde av en kontroll for tekstinndata som er under bygging i Microsoft Power Apps Studio, og vises sammen med egenskapene for den.

  6. Velg alle tre kontrollene for tekstinndata. Endre egenskapen Format for gruppen til Tall, og angi 1.0 for egenskapen Default.

    Et skjermbilde av tre kontroller for tekstinndata som er under bygging i Microsoft Power Apps Studio, og vises sammen med egenskapene for den valgte gruppen.

Legg til og bind kontrollen Målekamera

Vi skal nå legge til kontrollen Målekamera, slik at brukeren kan måle et tredimensjonalt område. Vi skal binde målingene til en datatabell for senere bruk.

  1. Velg Sett inn-fanen, og utvid Medier.

  2. Velg Målekamera for å plassere kontrollen på appskjermen. Dra kontrollen nær bunnen av skjermen.

  3. Endre egenskapene for bildekontrollen som følger:

    Egenskapsnavn Verdi Hvor
    Unit of measurement Fot eller meter Velg i Egenskaper-fanen
    Measurement type Volume Velg i Egenskaper-fanen
    Box draw On Velg i Egenskaper-fanen
    Items Table({label:"Test Volume"}) Angi i Avansert-fanen
    ItemsLabels "etikett" Angi i Avansert-fanen
    OnMixedRealitySelect Set(testVolume, LookUp(MeasureInMR1.Measurements, Label = "Test Volume")); Angi i Avansert-fanen

Egenskapene Items, ItemsLabels og OnMixedRealitySelect for kontrollen Målekamera skal se ut som i følgende eksempler når du er ferdig:

Et skjermbilde av kontrollen Measure in 3D som er under bygging i Microsoft Power Apps Studio, og vises sammen med egenskapene Items og ItemsLabels for den.

Et skjermbilde av kontrollen Measure in 3D som er under bygging i Microsoft Power Apps Studio, og vises med egenskapen OnMixedRealitySelect for den.

Formelen i Items registrerer dimensjonene til det målte området i en datatabell kalt «Test Volume». Formelen i OnMixedRealitySelect angir verdiene som er registrert i tabellen «Test Volume», for en variabel kalt «testVolume».

Vis resultatene

Vi skal til slutt legge til tekstetiketter for å vise målingene som ble tatt, og resultatet av testen (det vil si hvorvidt objektet får plass i det målte området).

  1. Velg Sett inn-fanen. Sett inn og plasser fire Tekstetikett-kontroller på skjermen.

  2. Endre egenskapen Text for etikettkontrollene som følger. (Tips: Kopier hver formel, og lim den inn på formellinjen eller i egenskapsfanen Avansert, alt etter hva du foretrekker.)

    • Første etikett:

          If(IsBlankOrError(testVolume), "No Measurement captured",
              If(testVolume.Height >= Value(minHeight.Text) &&
              ((testVolume.BoundingWidth >= Value(minWidth.Text) && testVolume.BoundingDepth >= Value(minDepth.Text)) ||
              (testVolume.BoundingWidth >= Value(minDepth.Text) && testVolume.BoundingDepth >= Value(minWidth.Text))),
              "Fit Test Succeeded", "Fit Test Failed"))
      

      Denne formelen angir etiketteksten i henhold til hvorvidt testen var vellykket eller mislykket, basert på minimumsdimensjonene som kreves for å gi plass til objektet vi vil plassere. Hvis testen ikke ble kjørt, enten fordi ingen målinger ble registrert eller det oppstod en feil, gjenspeiler etiketteksten dette.

      Et skjermbilde av en kontroll for tekstetikett som er under bygging i Microsoft Power Apps Studio, og vises med egenskapen Text på formellinjen og i egenskapsfanen Avansert.

    • Andre etikett:

          Concatenate("Bounding Width: ", Text(testVolume.BoundingWidth))
      

      Denne formelen angir «Bounding Width:» for etiketteksten etterfulgt av breddedimensjonen til det målte området.

    • Tredje etikett:

          Concatenate("Bounding Depth: ", Text(testVolume.BoundingDepth))
      

      Denne formelen angir «Bounding Depth:» for etiketteksten etterfulgt av dybdedimensjonen til det målte området.

    • Fjerde etikett:

          Concatenate("Bounding Height: ", Text(testVolume.Height))
      

      Denne formelen angir «Bounding Height:» for etiketteksten etterfulgt av høydedimensjonen til det målte området.

Appskjermen skal nå se slik ut:

Et skjermbilde av den endelige appskjermen.

Testing av appen

Velg forhåndsvisningsknappen for å kjøre appen i forhåndsvisningsmodus. Velg Målekamera for å fylle ut etikettene med data. Du kan kontrollere at etikettbindingene fungerer, ved å angi nye verdier i tekstinndatafeltene.

Et skjermbilde av appskjermen i forhåndsvisningsmodus etter at nye minimumsdimensjoner er angitt.

Verdiene for Bounding Width og Bounding Depth kan byttes når du utfører testen.

Lagre og publiser appen. Åpne den på en enhet med blandet virkelighet for å teste om et objekt med de angitte dimensjonene får plass innenfor grensene for alle registrerte mål.

Filtrer en datakilde

Appen vi opprettet, tester ett sett med dimensjoner som angis av brukeren når appen kjører. Du kan imidlertid utvide den slik at den tester mot enhver datakilde, ved å bruke formelen som et Filter-predikat.

La oss for eksempel si at appen vår inneholder en referanse til en Dataverse-tabell kalt Produkter som inneholder tre kolonner: Bredde, Dybde og Høyde (tilsvarende dimensjonene for hvert produkt). Vi kan filtrere samlingen slik at den bare viser målingene som hadde fått plass i et målt volum, ved å bruke følgende formel.

    If(IsBlankOrError(testVolume), Products,
    Filter(Products, testVolume.Height >= Height &&
        ((testVolume.BoundingWidth >= Width && testVolume.BoundingDepth >= Depth) ||
        (testVolume.BoundingWidth >= Depth && testVolume.BoundingDepth >= Width))))

Se også

Obs!

Kan du fortelle oss om språkinnstillingene for dokumentasjonen? Ta en kort undersøkelse. (vær oppmerksom på at denne undersøkelsen er på engelsk)

Undersøkelsen tar rundt sju minutter. Det blir ikke samlet inn noen personopplysninger (personvernerklæring).