Как отобразить MeshElement3D в виде каркаса?
Я хотел бы отобразить любой MeshElement3D (например, BoxVisual3d) в helix-toolkit в виде каркаса. Как это можно сделать?
РЕДАКТИРОВАТЬ:
Благодаря ответу Эрно де Вирда я смог написать следующий код
Класс, расширяющий BoxVisual3D
public class GeometryBoxVisual3D : BoxVisual3D { public MeshGeometry3D Geometry() { return Tessellate(); } }
Добавьте экземпляр box в область просмотра:
GeometryBoxVisual3D box = new GeometryBoxVisual3D(); box.Fill = new SolidColorBrush(Colors.Red); Viewport3D.Children.Add(box); MeshGeometry3D geometry3 = box.Geometry(); LinesVisual3D lines = new LinesVisual3D(); lines.Thickness = 3; lines.Points = geometry3.Positions; lines.Transform = new TranslateTransform3D(3,1,1); Viewport3D.Children.Add(lines);
Это приводит к следующему отображению:
Если я скрою оригинальную коробку и помещу LinesVisual3D поверх коробки, я могу отобразить каркас, как если бы он был оригинальным объектом, но у него все еще отсутствуют края по бокам.
1 ответ
По телефону MeshElement3D.Tesselate()
вы можете получить MeshGeometry3D
(Сетка).
Далее создайте LinesVisual3D
объект.
Скопируйте Точки сетки в Точки LinesVisual3D
,
Это создаст внутреннюю сетку (см. Источники: LinesVisual3D.cs в наборе инструментов helix)
Наконец, убедитесь, что вы установили толщину LinesVisual3D
и добавить его на сцену.