Dela via


Testa om ett objekt får plats i ett blanksteg med mixad verklighet

Med kontrollen Mätkamera kan du avgöra om ett objekt med en känd storlek får plats i ett visst utrymme. I den här artikeln skapar vi en arbetsyteapp för att göra just detta.

Dricks

Kontrollerna för mixed reality (MR) fungerar bäst i välbelysta miljöer med strukturerade ytor. Spårning är bättre på LIDAR-aktiverade enheter.

Lägga till minimifält för måttindata i en arbetsyteapp

Först skapar vi en tom arbetsyteapp. Sedan ska vi lägga till ett sätt för användaren att ange de minimimått som ska testas mot (det vill säga det minsta utrymmet som ska innehålla det objekt som vi vill passa).

  1. Skapa en tom arbetsyteapp.

  2. Välj fliken Infoga och infoga tre kontroller Textetikett på skärmen.

  3. Ändra egenskap Text för etiketter till Minimibredd, Minimidjup och Minimihöjd.

    En skärmbild av en textetikett i Microsoft Power Apps Studio, som visas tillsammans med dess egenskaper.

  4. Välj fliken Infoga, infoga tre kontroller för Textinmatning och placera dem till höger om de tre etiketterna.

  5. Byt namn på Textinmatning-kontrollerna till minWidth, minDepth och minHeight.

    En skärmbild av en Textinmatning kontroll i Microsoft Power Apps Studio, som visas tillsammans med dess egenskaper.

  6. Markera alla tre Textinmatning-kontrollerna. Ändra gruppens Format egenskap till Nummer och egenskap Default till 1.0.

    En skärmbild av tre Textinmatning kontroller i Microsoft Power Apps Studio, som visas tillsammans med egenskaper för den valda gruppen.

Lägg till och bind kontrollen Mätkamera

Nu lägger vi till kontrollen Mätkamera så att användaren kan mäta ett tredimensionellt utrymme. Måtten binds till en datatabell för senare användning.

  1. Välj fliken Infoga och expandera Media.

  2. Välj Mätkamera om du vill placera kontrollen på appskärmen. Dra kontrollen nära botten av skärmen.

  3. Ändra kontrollens egenskaper enligt följande:

    Egenskapsnamn Värde Där
    Unit of measurement Feet or Meters På fliken egenskaper.
    Measurement type Volume På fliken egenskaper.
    Rita ruta På fliken egenskaper.
    Items Table({label:"Test Volume"}) Ange på fliken Avancerat
    ItemsLabels "etikett" Ange på fliken Avancerat
    OnMixedRealitySelect Set(testVolume, LookUp(MeasureInMR1.Measurements, Label = "Test Volume")); Ange på fliken Avancerat

Egenskaperna Items, ItemsLabels och OnMixedRealitySelect i kontrollen Mätkamera ser ut som följande exempel när du är klar:

En skärmbild av en Measure in 3D kontroll i Microsoft Power Apps Studio, som visas tillsammans med egenskaper Items och ItemsLabels.

En skärmbild av en Measure in 3D-kontroll under konstruktion i Microsoft Power Apps Studio, visas med egenskapen OnMixedRealitySelect.

Formeln i Items fångar måtten på det uppmätta utrymmet i en datatabell med namnet "Testvolym". Formeln i OnMixedRealitySelect ställer in en variabel med namnet "testVolume" till de värden som finns i tabellen "Testvolym".

Visa resultat

Slutligen lägger vi till textetiketter för att visa måtten som tagits och resultatet av testet (d.v.s. om objektet får plats i det mätta utrymmet).

  1. Välj fliken Infoga och infoga fyra kontroller Textetikett på skärmen.

  2. Ändra egenskapen Text för etikettkontrollerna enligt följande. (Tips: Kopiera varje formel och klistra in den i formelfältet eller i fliken avancerade egenskaper, beroende på vad du föredrar.)

    • Första etiketten:

          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"))
      

      Med den här formeln anges etiketttexten efter om testet lyckades eller misslyckades, baserat på de minimimått som krävs för att hålla kvar det objekt som ska passas in. Om testet inte har körts, antingen för att inga mått tagits med eller på grund av ett fel, återspeglar etikettexten detta.

      En skärmbild av en Textetikett-kontroll under anläggning i Microsoft Power Apps Studio, med egenskapen Text i formelfältet och fliken Avancerade egenskaper.

    • Andra etiketten:

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

      Med den här formeln anges etikettexten som "Avgränsande bredd:" följt av bredden på det mätta utrymmet.

    • Tredje etiketten:

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

      Med den här formeln anges etikettexten som "Avgränsande djup:" följt av djup på det mätta utrymmet.

    • Fjärde etiketten:

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

      Med den här formeln anges etikettexten som "Avgränsande höjd:" följt av höjd på det mätta utrymmet.

Appens skärm bör nu se ut så här:

Skärmbild av sista appskärmen.

Testa appen

Välj förhandsgranskningsknappen om du vill köra appen i förhandsgranskningsläge. Och välj sedan Measuring Camera för att fylla i etiketterna med data. Kontrollera att etikettbanden fungerar genom att ange nya värden i textinmatningsfälten.

En skärmbild av appskärmen i förhandsgranskningsläge efter att nya minimimått har angetts.

Värdena för Avgränsande bredd och Avgränsande djup kan bytas när du utför testet.

Spara och publicera din app. Öppna den på en enhet som är kompatibel med mixad verklighet för att testa om ett objekt med de angivna dimensionerna passar inom avgränsningarna för ett insamlat mått.

Filtrera en datakälla

Appen som vi skapade testar en enskild uppsättning mått som anges av användaren när appen körs. Du kan dock utöka den för att testa mot datakälla genom att använda formeln som ett Filter.

Låt säga att appen innehåller en referens till en Dataverse-tabell med namnet Produkter som innehåller tre kolumner Bredd, Djup och Höjd (motsvarande varje produkts dimensioner). Om du vill filtrera samlingen på endast de mått som passar inom en mätt volym kan vi använda följande formel.

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

Se även

Anteckning

Kan du berätta om dina inställningar för dokumentationsspråk? Svara i en kort undersökning. (observera att undersökningen är på engelska)

Undersökningen tar ungefär sju minuter. Inga personuppgifter samlas in (sekretesspolicy).