2010-09-22 5 views
0

J'ai un tas de Model3DGroups et je veux déterminer sur lequel on a cliqué..NET - Comment déterminer quel Model3DGroup a été cliqué?

Voici un exemple de la façon dont ils ressemblent:

<Model3DGroup x:Name="Linie04OR23"> 
         <!-- Linie04 (XAML Path = (Viewport3D.Children)[0].(ModelVisual3D.Content).(Model3DGroup.Children)[8]) --> 
         <Model3DGroup.Transform> 
          <Transform3DGroup> 
           <TranslateTransform3D OffsetX="14.0807" OffsetY="-76.5861" OffsetZ="-16.1045"/> 
           <ScaleTransform3D ScaleX="1" ScaleY="1" ScaleZ="1"/> 
           <RotateTransform3D> 
            <RotateTransform3D.Rotation> 
             <AxisAngleRotation3D Angle="0" Axis="0 1 0"/> 
            </RotateTransform3D.Rotation> 
           </RotateTransform3D> 
           <TranslateTransform3D OffsetX="-336.736" OffsetY="76.5861" OffsetZ="48.5252"/> 
          </Transform3DGroup> 
         </Model3DGroup.Transform> 
         <GeometryModel3D x:Name="Linie04OR23GR24"> 
          <GeometryModel3D.Material> 
           <MaterialGroup> 
            <DiffuseMaterial> 
             <DiffuseMaterial.Brush> 
              <SolidColorBrush Color="#7A7A7A" Opacity="1.000000"/> 
             </DiffuseMaterial.Brush> 
            </DiffuseMaterial> 
            <SpecularMaterial SpecularPower="37.5467"> 
             <SpecularMaterial.Brush> 
              <SolidColorBrush Color="#ADADAD" Opacity="1.000000"/> 
             </SpecularMaterial.Brush> 
            </SpecularMaterial> 
           </MaterialGroup> 
          </GeometryModel3D.Material> 
          <GeometryModel3D.BackMaterial> 
           <MaterialGroup> 
            <DiffuseMaterial> 
             <DiffuseMaterial.Brush> 
              <SolidColorBrush Color="#7A7A7A" Opacity="1.000000"/> 
             </DiffuseMaterial.Brush> 
            </DiffuseMaterial> 
            <SpecularMaterial SpecularPower="37.5467"> 
             <SpecularMaterial.Brush> 
              <SolidColorBrush Color="#ADADAD" Opacity="1.000000"/> 
             </SpecularMaterial.Brush> 
            </SpecularMaterial> 
           </MaterialGroup> 
          </GeometryModel3D.BackMaterial> 
          <GeometryModel3D.Geometry> 
           <MeshGeometry3D 
    TriangleIndices="0,1,2 0,2,3 4,5,6 " 
    Normals="0.546058,0,0.837747 0.546058,0,0.837747 0.546058,0,0.837747 0.546058,0,0.837747 0.840137,0,-0.542374 " 
    Positions="35.6154,-5.9536e-014,268.126 42.4896,-5.85411e-014,263.645 42.4896,153.172 " 
    /> 
          </GeometryModel3D.Geometry> 
         </GeometryModel3D> 
        </Model3DGroup> 

Répondre

1

Vous pouvez utiliser VisualTreeHelper.HitTest pour cela.

Pour une explication détaillée, voir Hit Testing in a 3D Viewport.

+0

Cette méthode fonctionne mais je ne sais pas comment monter l'arborescence Visual pour trouver le Model3DGroup dans lequel visual3D est. Pouvez-vous expliquer cela aussi? – Hedge

Questions connexes