/// <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); } }