# 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 — используйте, модифицируйте и делитесь.