Teste, om et objekt kan være i et rum, ved hjælp af mixed reality

Du kan bruge kontrolelementet Målekamera til at bestemme, om et objekt med en kendt størrelse kan være i et bestemt rum. I denne artikel opretter vi en lærredsapp, så du kan gøre netop det.

Tip

Kontrolelementer til mixed-reality (MR) fungerer bedst i veloplyste miljøer med overflader med flade strukturer. Sporing er bedre på LIDAR-baserede enheder.

Føje inputfelter med minimummål til en lærredsapp

Vi skal først oprette en tom lærredsapp. Derefter skal vi give brugeren mulighed for at angive de minimummål, der skal testes imod (den mindste plads, der kan indeholde det objekt, som vi vil indpasse).

  1. Opret en tom lærredapp.

  2. Vælg fanen Indsæt. Indsæt og placer tre Tekstmærkat-kontrolelementer på skærmen.

  3. Rediger egenskaben Text for labels til henholdsvis Minimumbredde, Minimumdybde og Minimumhøjde.

    Et skærmbillede af en tekstlabel under konstruktion i Microsoft Power Apps Studio, der vises sammen med egenskaberne.

  4. Vælg fanen Indsæt. Indsæt tre kontrolelementer Tekstinput, og placer dem til højre for de tre labels.

  5. Omdøb tekstinputkontrolelementerne til henholdsvis minWidth, minDepth og minHeight.

    Et skærmbillede af et kontrolelement til tekstinput under konstruktion i Microsoft Power Apps Studio, der vises sammen med egenskaberne.

  6. Markér alle tre tekstinputkontrolelementer. Rediger gruppens egenskab Format til Nummer, og angiv egenskaben Default til 1.0.

    Et skærmbillede af tre kontrolelementer til tekstinput under konstruktion i Microsoft Power Apps Studio, der vises sammen med egenskaberne for den valgte gruppe.

Indsætte og binde kontrolelement Målekamera

Nu skal vi tilføje kontrolelementet Målekamera, så brugeren kan måle et tredimensionalt rum. Vi binder målingerne til en datatabel til senere brug.

  1. Vælg fanen Indsæt, og udvid Medier.

  2. Vælg Målekamera for at placere kontrolelementet i appskærmbilledet. Træk kontrolelementet tæt på bunden af skærmen.

  3. Rediger kontrolelementets egenskaber som følger:

    Egenskabsnavn Værdi Hvor
    Måleenhed Fod eller meter Vælg under fanen Egenskaber
    Måletype Volumen Vælg under fanen Egenskaber
    Tegning af boks Til Vælg under fanen Egenskaber
    Items Table({label:"Test Volume"}) Angiv under fanen Avanceret
    ItemsLabels "label" Angiv under fanen Avanceret
    OnMixedRealitySelect Set(testVolume, LookUp(MeasureInMR1.Measurements, Label = "Test Volume")); Angiv under fanen Avanceret

Egenskaberne Items, ItemsLabels og OnMixedRealitySelect for kontrolelementet Målekamera skal se ud som følgende eksempler, når du er færdig:

Et skærmbillede af kontrolelementet Measure in 3D under konstruktion i Microsoft Power Apps Studio, der vises sammen med egenskaberne Items og ItemsLabels.

Et skærmbillede af kontrolelementet Measure in 3D under konstruktion i Microsoft Power Apps Studio, der vises sammen med egenskaben OnMixedRealitySelect.

Formlen i Items registrerer dimensionerne af det målte rum i en datatabel med navnet "Test Volume". Formlen i OnMixedRealitySelect angiver en variabel med navnet "testVolume" til de værdier, der registreres i tabellen "Test Volume".

Vise resultaterne

Til sidst skal vi tilføje tekstlabels for at få vist de målinger, der er foretaget, og resultatet af testen (med andre ord, om objektet kan være i det opmålte rum).

  1. Vælg fanen Indsæt. Indsæt og placer fire Tekstmærkat-kontrolelementer på skærmen.

  2. Rediger egenskaben Text for labelkontrolelementerne på følgende måde. (Tip: Kopiér hver formel, og indsæt den i formellinjen eller på fanen Avancerede egenskaber, alt efter hvad du foretrækker.)

    • Første label:

          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 formel angiver labelteksten efter, om testen lykkedes eller mislykkedes, på basis af de minimummål, der kræves for at opbevare det objekt, der skal indpasses. Hvis testen ikke blev kørt, enten fordi der ikke blev hentet nogen målinger, eller der opstod en fejl, afspejles det i labelteksten.

      Et skærmbillede af et tekstlabelkontrolelement under konstruktion i Microsoft Power Apps Studio, der vises med egenskaben Text på formellinjen og fanen med avancerede egenskaber.

    • Anden label:

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

      Denne formel angiver labelteksten til "Afgrænsningsbredde:" efterfulgt af bredden på den målte plads.

    • Tredje label:

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

      Denne formel angiver labelteksten til "Afgrænsningsdybde:" efterfulgt af dybden på den målte plads.

    • Fjerde label:

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

      Denne formel angiver labelteksten til "Afgrænsningshøjde:" efterfulgt af højden på den målte plads.

Appskærmen skulle nu se sådan ud:

Skærmbillede af den endelige appskærm.

Teste appen

Vælg eksempelknappen for at køre appen i eksempeltilstand. Vælg Målekamera for at udfylde labels med data. Du kan kontrollere, at labelbindingerne virker, ved at angive nye værdier i tekstinputfelterne.

Et skærmbillede af appskærmen i eksempeltilstand, når der er angivet nye minimummål.

Værdierne for Afgrænsningsbredde og Afgrænsningsdybde kan udskiftes, når du udfører testen.

Gem og publicer din app. Åbn den på en enhed med mixed reality-funktionalitet for at teste, om et objekt med de angivne dimensioner kan være inden for grænserne af de målinger, der registreres.

Filtrering af datakilde

Den app, vi har oprettet, tester et enkelt sæt dimensioner, som angives af brugeren, når appen kører. Men du kan udvide den til at teste enhver datakilde ved at anvende formlen som et Filter-prædikat.

Lad os f.eks. sige, at vores app indeholder en reference til en Dataverse-tabel med navnet Produkter, der indeholder tre kolonner: Bredde, Dybde og Højde (svarende til de enkelte produkters mål). Hvis du vil filtrere samlingen til kun at vise de målinger, der passer ind i en målt volumen, kan du anvende 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å

Bemærk

Kan du fortælle os om dine sprogpræferencer for dokumentation? Tag en kort undersøgelse. (bemærk, at denne undersøgelse er på engelsk)

Undersøgelsen tager ca. syv minutter. Der indsamles ingen personlige data (erklæring om beskyttelse af personlige oplysninger).