Example #1
0
        /// <summary>
        /// Отрисовать срез модели
        /// </summary>
        private void DrawSlice(float z, float delta, int sliceIndex)
        {
            GL.Normal3(Vector3.UnitZ);
            SetupMaterial(options.View.SliceLineColor, options.View.SliceLineColor, 100f);
            GL.LineWidth(options.View.SliceLineWidth);
            Slice slice = model.GetSlice(z, options);

            slice.Index = sliceIndex;
            if (cbSolidLayer.Checked)
            {
                Slice nextSlice  = model.GetSlice(z + delta, options);
                Slice solidLayer = Slice.Combine(slice, nextSlice, z);
                slice.Parts.AddRange(nextSlice.Parts);
                DrawSliceParts(solidLayer);
                if (solidLayer.Parts.Count > 0)
                {
                    DrawFill(solidLayer, true);
                }
            }
            else
            {
                DrawSliceParts(slice);
                if (slice.Parts.Count > 0)
                {
                    DrawFill(slice, false);
                }
            }


            if (cbInnerPerimeter.Checked)
            {
                slice = slice.Expand(new SimpleSliceExpander(), -0.2f);
                DrawSliceParts(slice);
            }
        }