235 lines
11 KiB
Markdown
235 lines
11 KiB
Markdown
# BSNC Syntax & Highlighting
|
||
|
||
Расширение для Visual Studio Code, добавляющее полноценную подсветку синтаксиса, автодополнение и цветовую схему для программ ЧПУ в формате **BSNC / NC‑310**.
|
||
|
||
## ✨ Возможности
|
||
|
||
- **Подсветка G/M‑кодов**
|
||
Разделение кода и числовой части, поддержка слитной и раздельной записи (`G1X0Y0F500`, `S600 M3` и т.д.).
|
||
- **Подсветка трёхбуквенных кодов в скобках**
|
||
(`UCG`, `UAO`, `URT`, `RPT`, `ERP` и др.) с разбором аргументов по типам: числа, переменные, строки.
|
||
- **Подсветка переменных E**
|
||
(`E30=0`, `ZE30`) с раздельным цветом для имени и значения.
|
||
- **Выделение начала и конца циклов**
|
||
`(RPT,...)` и `(ERP)` — яркие цвета для мгновенного поиска в коде.
|
||
- **Подсветка допустимых и недопустимых G‑кодов**
|
||
Валидные коды из документации — обычный цвет, неизвестные — выделяются как ошибка.
|
||
- **Подсветка комментариев**
|
||
Однострочные (`; ...`) и блочные в скобках.
|
||
- **Встроенная цветовая схема**
|
||
Все цвета для токенов уже встроены в расширение, интерфейс VS Code не меняется.
|
||
|
||
## 📋 Поддерживаемые G‑коды
|
||
|
||
| Код | Описание |
|
||
|------|----------|
|
||
| G00 | Быстрое позиционирование |
|
||
| G01 | Линейная интерполяция |
|
||
| G02 | Круговая интерполяция по часовой стрелке |
|
||
| G03 | Круговая интерполяция против часовой стрелки |
|
||
| G04 | Выдержка времени, заданная в кадре |
|
||
| G06 | Сплайновая интерполяция |
|
||
| G09 | Замедление в конце кадра |
|
||
| G17 | Выбор плоскости интерполяции (оси 1 и 2) |
|
||
| G18 | Выбор плоскости интерполяции (оси 3 и 1) |
|
||
| G19 | Выбор плоскости интерполяции (оси 2 и 3) |
|
||
| G20 | Закрытие среды программирования GTL |
|
||
| G21 | Открытие среды программирования GTL |
|
||
| G27 | Непрерывная обработка с замедлением на углах |
|
||
| G28 | Непрерывная обработка без замедления на углах |
|
||
| G29 | Позиционирование от точки к точке |
|
||
| G33 | Нарезание резьбы с постоянным/переменным шагом |
|
||
| G34 | Нарезание резьбы с постоянным/переменным шагом |
|
||
| G35 | Синхронизированное начало движения со шпинделем |
|
||
| G40 | Отмена корректировки на профиле |
|
||
| G41 | Корректировка на профиле (инструмент слева) |
|
||
| G42 | Корректировка на профиле (инструмент справа) |
|
||
| G70 | Программирование в дюймах |
|
||
| G71 | Программирование в миллиметрах |
|
||
| G72 | Измерение точки с компенсацией радиуса |
|
||
| G73 | Измерение параметров отверстия |
|
||
| G74 | Измерение отклонения без компенсации радиуса |
|
||
| G79 | Программирование относительно нуля станка |
|
||
| G80 | Отмена постоянных циклов |
|
||
| G81 | Цикл сверления |
|
||
| G82 | Цикл растачивания |
|
||
| G83 | Цикл глубокого сверления |
|
||
| G84 | Цикл нарезания резьбы метчиком |
|
||
| G85 | Цикл рассверливания |
|
||
| G86 | Цикл развертывания |
|
||
| G89 | Цикл развертывания с остановкой |
|
||
| G90 | Абсолютное программирование |
|
||
| G91 | Программирование по приращениям |
|
||
| G93 | Подача в виде обратного времени |
|
||
| G94 | Подача в мм/мин или дюйм/мин |
|
||
| G95 | Подача в мм/оборот |
|
||
| G96 | Скорость вращения шпинделя, м/мин |
|
||
| G97 | Скорость вращения шпинделя, об/мин |
|
||
|
||
> ❗ Любые другие G‑коды будут подсвечены как **ошибочные**.
|
||
|
||
## 📦 Установка
|
||
|
||
1. Скачайте `.vsix` или установите из [Visual Studio Marketplace](#) (ссылка после публикации).
|
||
2. В VS Code: `Ctrl+Shift+P` → **Extensions: Install from VSIX** → выберите файл.
|
||
3. Расширение активируется автоматически для файлов с кодом BSNC.
|
||
|
||
## 🚀 Использование
|
||
|
||
- Откройте файл программы ЧПУ (с расширением или без).
|
||
- Подсветка и цвета применяются автоматически.
|
||
- Недопустимые G‑коды будут выделены красным фоном.
|
||
|
||
# 🛠 BSNC Syntax & Snippets
|
||
|
||
Расширение для **Visual Studio Code**, добавляющее:
|
||
- Подсветку синтаксиса для управляющих программ BSNC / NC‑310
|
||
- Автодополнение с готовыми сниппетами для G/M‑кодов, циклов, переходов, подпрограмм, резьбы и перемещений
|
||
- Встроенную цветовую схему для токенов (интерфейс VS Code не меняется)
|
||
|
||
---
|
||
|
||
## 📦 Установка
|
||
|
||
1. Склонируйте репозиторий или скачайте `.vsix` файл.
|
||
2. В VS Code: `Ctrl+Shift+P` → **Extensions: Install from VSIX** → выберите файл.
|
||
3. Расширение активируется автоматически для файлов с кодом BSNC.
|
||
|
||
---
|
||
|
||
## ⚡️ Сниппеты
|
||
|
||
Все сниппеты вызываются по **префиксу** — достаточно ввести его и выбрать шаблон из автодополнения.
|
||
Плейсхолдеры `${1:...}` позволяют быстро вводить значения, переходя по `Tab`.
|
||
|
||
---
|
||
|
||
### 🔧 Управляющие конструкции
|
||
|
||
| Префикс | Шаблон | Назначение |
|
||
|--------|--------|------------|
|
||
| `ucg` | `(UCG,2,X-33X33,Y-33Y33,Z-15Z0,1,-3)` | Универсальный геометрический элемент |
|
||
| `urt` | `(URT,0)` | Цикл URT |
|
||
| `rpt` | `(RPT,E0)` | Начало цикла повторений |
|
||
| `erp` | `(ERP)` | Завершение цикла |
|
||
| `dis` | `(DIS,"Описание")` | Комментарий или описание кадра |
|
||
| `evar` | `E30=0` | Объявление переменной |
|
||
|
||
---
|
||
|
||
### 🔁 Переходы
|
||
|
||
| Префикс | Шаблон | Условие |
|
||
|--------|--------|---------|
|
||
| `bnc` | `(BNC,LABEL)` | Безусловный переход |
|
||
| `bgt` | `(BGT,VAR1,VAR2,LABEL)` | Если VAR1 > VAR2 |
|
||
| `blt` | `(BLT,VAR1,VAR2,LABEL)` | Если VAR1 < VAR2 |
|
||
| `beq` | `(BEQ,VAR1,VAR2,LABEL)` | Если VAR1 = VAR2 |
|
||
| `bne` | `(BNE,VAR1,VAR2,LABEL)` | Если VAR1 ≠ VAR2 |
|
||
| `bge` | `(BGE,VAR1,VAR2,LABEL)` | Если VAR1 ≥ VAR2 |
|
||
| `ble` | `(BLE,VAR1,VAR2,LABEL)` | Если VAR1 ≤ VAR2 |
|
||
|
||
---
|
||
|
||
### 🔩 Перемещения
|
||
|
||
| Префикс | Шаблон | Назначение |
|
||
|--------|--------|------------|
|
||
| `g0` | `G0X0Y0Z0` | Быстрое позиционирование |
|
||
| `g1` | `G1 X0.0 Y0.0 Z0.0 F200` | Линейное перемещение |
|
||
|
||
---
|
||
|
||
### 🧵 Резьба G33
|
||
|
||
| Префикс | Шаблон | Тип резьбы |
|
||
|--------|--------|------------|
|
||
| `g33` | `G33 Z3 K6` | Постоянный шаг |
|
||
| `g33r` | `G33 Z3 K6 R120` | Многозаходная — 2-й заход |
|
||
| `g33r3` | `G33 Z3 K6 R240` | Многозаходная — 3-й заход |
|
||
| `g33i+` | `G33 Z3 K6 I1` | Возрастающий шаг |
|
||
| `g33i-` | `G33 Z3 K6 I-1` | Убывающий шаг |
|
||
| `g33u` | `G33 U3 K6` | Коническая резьба |
|
||
| `g33ir` | `G33 Z3 K6 I1 R120` | Переменный шаг + отклонение |
|
||
|
||
---
|
||
|
||
### 🧵 Резьба G34
|
||
|
||
| Префикс | Шаблон | Тип резьбы |
|
||
|--------|--------|------------|
|
||
| `g34` | `G34 Z3 K6` | Постоянный шаг |
|
||
| `g34r` | `G34 Z3 K6 R120` | Многозаходная — 2-й заход |
|
||
| `g34r3` | `G34 Z3 K6 R240` | Многозаходная — 3-й заход |
|
||
| `g34i+` | `G34 Z3 K6 I1` | Возрастающий шаг |
|
||
| `g34i-` | `G34 Z3 K6 I-1` | Убывающий шаг |
|
||
| `g34u` | `G34 U3 K6` | Коническая резьба |
|
||
| `g34ir` | `G34 Z3 K6 I1 R120` | Переменный шаг + отклонение |
|
||
| `g34g09` | `G34 Z3 K6 G09` | С торможением в конце |
|
||
|
||
---
|
||
|
||
### 🛠️ Циклы сверления и нарезания
|
||
|
||
| Префикс | Шаблон | Назначение |
|
||
|--------|--------|------------|
|
||
| `g83` | `G83 R5 Z-15 I2 K0.8 J1.0` | Глубокое сверление с дроблением |
|
||
| `g83tmr` | `G83 R5 Z-15 I2 TMR=2` | Сверление с выдержкой времени |
|
||
| `g84` | `G84 R5 Z-15 K2` | Нарезание резьбы с датчиком |
|
||
| `g84f` | `G84 R5 Z-15 F280` | Нарезание резьбы без датчика |
|
||
|
||
---
|
||
|
||
### 📐 Плоскости интерполяции
|
||
|
||
| Префикс | Шаблон | Плоскость |
|
||
|--------|--------|-----------|
|
||
| `g17` | `G17` | XY |
|
||
| `g18` | `G18` | XZ |
|
||
| `g19` | `G19` | YZ |
|
||
|
||
---
|
||
|
||
### 📏 Координатные системы
|
||
|
||
| Префикс | Шаблон | Назначение |
|
||
|--------|--------|------------|
|
||
| `g90` | `G90` | Абсолютная система |
|
||
| `g91` | `G91` | Приращения |
|
||
| `g79` | `G79 X0 Z0` | Относительно нуля станка |
|
||
|
||
---
|
||
|
||
### 📂 Подпрограммы
|
||
|
||
| Префикс | Шаблон | Назначение |
|
||
|--------|--------|------------|
|
||
| `cls` | `(CLS,P800/MP2)` | Вызов подпрограммы из памяти MPx |
|
||
| `cls0` | `(CLS,P800)` | Вызов без указания памяти |
|
||
|
||
---
|
||
|
||
### 🔄 Шпиндель
|
||
|
||
| Префикс | Шаблон | Направление |
|
||
|--------|--------|-------------|
|
||
| `s0` | `S600,M3` | По часовой стрелке |
|
||
| `s1` | `S600,M4` | Против часовой стрелки |
|
||
|
||
---
|
||
|
||
## 📄 Лицензия
|
||
|
||
MIT — используйте, модифицируйте и делитесь.
|
||
|
||
|
||
## ⚙️ Кастомизация
|
||
|
||
Если хотите изменить цвета:
|
||
1. Откройте `settings.json`.
|
||
2. Добавьте свои правила в `editor.tokenColorCustomizations.textMateRules` — они перекроют встроенные.
|
||
|
||
## 📄 Лицензия
|
||
|
||
MIT — используйте, модифицируйте и делитесь.
|