Exemple #1
0
        public RectangleFeatureVisual(RectangleFeatureCurve featureCurve, double thickness = 0.01)
        {
            Contract.Requires(thickness > 0);
            Contract.Requires(featureCurve != null);
            Contract.Ensures(object.ReferenceEquals(featureCurve, FeatureCurve));

            this.featureCurve = featureCurve;
            this.thickness    = thickness;

            var emissiveMaterial = new EmissiveMaterial();

            emissiveMaterial.Bind(
                EmissiveMaterial.BrushProperty,
                () => featureCurve.IsSelected,
                isSelected => isSelected ? Brushes.DarkOrange : Brushes.Black);

            var material = new MaterialGroup();

            material.Children.Add(new DiffuseMaterial {
                Brush = Brushes.Black
            });
            material.Children.Add(emissiveMaterial);

            model3d          = new GeometryModel3D();
            model3d.Material = model3d.BackMaterial = material;
            Content          = model3d;

            Update();
        }
        private Geometry GetGeometry(RectangleFeatureCurve rect)
        {
            var rectPoints = ShapeHelper.GenerateRectangle(rect.CenterResult,
                                                           rect.NormalResult,
                                                           rect.WidthVectorResult,
                                                           rect.WidthResult,
                                                           rect.HeightResult);

            return(GetProjectedGeometry(rectPoints));
        }