# -*- coding: utf-8 -*- """ Лаба 6, рисунок «Группы шпуров в забое»: сверху — забой с группами шпуров (I врубовые, II отбойные, III контурные, IV подошвенные), снизу — разрез: глубины врубовых l_в и отбойных l_о шпуров, величина заходки l_зах, отступ контурных шпуров от края 10-15 см, ширина B. Перерисовано векторно вместо скана методички (в скане метка III отсутствовала). """ import numpy as np import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt import matplotlib.font_manager as fm fm.fontManager.addfont('C:/Windows/Fonts/GOST2304A.ttf') matplotlib.rcParams['font.family'] = 'GOST 2.304 type A' matplotlib.rcParams['mathtext.default'] = 'regular' matplotlib.rcParams['mathtext.fontset'] = 'custom' matplotlib.rcParams['mathtext.rm'] = 'GOST 2.304 type A' matplotlib.rcParams['mathtext.it'] = 'GOST 2.304 type A' matplotlib.rcParams['mathtext.bf'] = 'GOST 2.304 type A' fig = plt.figure(figsize=(7.6 / 2.54, 8.0 / 2.54), dpi=300) ax = fig.add_axes([0, 0, 1, 1]) ax.set_aspect('equal'); ax.axis('off') ax.set_xlim(-0.4, 8.4); ax.set_ylim(-4.95, 4.4) BLACK = '#111111' # --- верх: забой (подковообразное сечение) с группами шпуров ------------------- R, HW, YC = 2.6, 1.5, 1.5 # свод, стена, уровень пят th = np.linspace(0, np.pi, 200) ax.plot(R * np.cos(th) + 3.0, YC + R * np.sin(th), color=BLACK, lw=1.6) ax.plot([0.4, 0.4], [0, YC], color=BLACK, lw=1.6) ax.plot([5.6, 5.6], [0, YC], color=BLACK, lw=1.6) ax.plot([0.4, 5.6], [0, 0], color=BLACK, lw=1.6) g_cut, g_aux, g_cont, g_toe = '#cc1f2d', '#1f5fb4', '#111111', '#1d8a4b' holes = [] # врубовые — замкнутое кольцо в центре for t in np.radians(np.arange(8) * 45 + 22.5): holes.append((3.0 + 0.42 * np.cos(t), 2.15 + 0.30 * np.sin(t), g_cut)) # отбойные — кольцо вокруг вруба for t in np.radians(np.arange(12) * 30 + 15): rr = 0.42 + (0.72 if abs(np.cos(t)) > 0.5 else 0.55) holes.append((3.0 + rr * np.cos(t) * 1.15, 2.05 + rr * np.sin(t) * 1.25, g_aux)) # контурные — по периметру с отступом off = 0.33 rc = R - off for t in np.linspace(np.radians(12), np.pi - np.radians(12), 11): holes.append((3.0 + rc * np.cos(t), YC + rc * np.sin(t), g_cont)) for y in np.linspace(YC - 0.05, off + 0.25, 3): holes.append((0.4 + off, y, g_cont)) holes.append((5.6 - off, y, g_cont)) # подошвенные — ряд вдоль подошвы for x in np.linspace(1.1, 4.9, 7): holes.append((x, 0.38, g_toe)) for x, y, c in holes: ax.plot(x, y, 'o', ms=3.4, mfc='white' if c == g_cont else c, mec=c, mew=0.9, zorder=5) # выноски групп def leader(xy, xytext, txt, ha='center'): ax.annotate(txt, xy=xy, xytext=xytext, fontsize=10, ha=ha, va='center', color=BLACK, arrowprops=dict(arrowstyle='-', color=BLACK, lw=0.8, shrinkA=2, shrinkB=1)) leader((3.0, 2.15), (1.15, 4.05), 'I') # врубовые leader((3.0 + 0.96, 2.62), (5.05, 4.05), 'II') # отбойные leader((5.27, YC + rc * np.sin(np.radians(50))), (6.85, 2.2), 'III') # контурные leader((4.9, 0.38), (1.55, -0.85), 'IV', ha='center') # подошвенные # --- низ: разрез-план заходки: забой снизу, шпуры уходят в массив --------------- y0 = -4.1 # плоскость забоя y_c, y_a, y_w = y0 + 2.0, y0 + 1.75, y0 + 2.55 # контурные, отбойные, врубовые x_l, x_r = 2.7, 6.5 # границы по ширине B ax.plot([x_l - 0.35, x_r + 0.35], [y0, y0], color=BLACK, lw=1.8) # забой (толстая) ax.plot([x_l - 0.1, x_r + 0.1], [y_c + 0.25, y_c + 0.25], color='0.4', lw=0.6, ls=(0, (4, 3))) # контур выработки над заходкой for x, dx in ((3.0, -0.3), (3.3, -0.18), (5.9, 0.18), (6.2, 0.3)): # контурные ax.plot([x, x + dx], [y0, y_c], color=g_cont, lw=0.8) for x in (3.75, 4.2, 5.0, 5.45): # отбойные ax.plot([x, x], [y0, y_a], color=g_aux, lw=0.8) for x in (4.6, 4.72, 4.84, 4.96): # врубовые: следы пар в клине ax.plot([x, x], [y0, y_w], color=g_cut, lw=0.8) for x in (2.95, 6.35): # подошвенные (вдоль подошвы забоя) ax.plot([x, x], [y0, y0 + 0.45], color=g_toe, lw=0.8) TICK, EXT = 0.07, 0.09 def tick(x, y): ax.plot([x - TICK, x + TICK], [y - TICK, y + TICK], color=BLACK, lw=1.1, solid_capstyle='butt') def vdim(x, y_from, y_to, txt, side='left'): dx = -0.16 if side == 'left' else 0.16 for yy in (y_from, y_to): ax.plot([x, x - dx * 0.5], [yy, yy], color=BLACK, lw=0.5, zorder=1) ax.plot([x, x], [y_from, y_to], color=BLACK, lw=0.7) tick(x, y_from); tick(x, y_to) ax.text(x + dx, (y_from + y_to) / 2, txt, fontsize=7.5, rotation=90, ha='center', va='center') vdim(5.6, y0, y_w, 'l$_в$', side='right') # глубина врубовых vdim(3.5, y0, y_a, 'l$_о$', side='left') # глубина отбойных vdim(6.7, y0, y_c, 'l$_зах$', side='right') # величина заходки ax.annotate('10-15 см', xy=(6.5, y_c + 0.25), xytext=(4.55, y_c + 0.85), fontsize=7, color=BLACK, va='center', arrowprops=dict(arrowstyle='->', color=BLACK, lw=0.6, shrinkA=1, shrinkB=2)) # B — ширина выработки (под разрезом) yb = y0 - 0.5 for xe in (x_l, x_r): ax.plot([xe, xe], [y0 - 0.12, yb - EXT], color=BLACK, lw=0.5, zorder=1) ax.plot([x_l, x_r], [yb, yb], color=BLACK, lw=0.7) tick(x_l, yb); tick(x_r, yb) ax.text((x_l + x_r) / 2, yb - 0.14, 'B', fontsize=9, ha='center', va='top', style='italic') fig.savefig('assets/images/laba6-gruppy-shpurov.png', dpi=300, facecolor='white') print('сохранено: assets/images/laba6-gruppy-shpurov.png')