| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- # -*- 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')
|