--- name: ewb-schematics description: Read, validate, edit, render and create Electronics Workbench 5.x (.ewb) schematics with the ewb512 MCP tools. Use whenever a task involves an .ewb file, EWB 5.12, Electronics Workbench circuits, adding or moving components and wires, building a new circuit, or producing an SVG preview. Russian triggers: "EWB", "Electronics Workbench", "схема EWB", ".ewb", "собери схему", "добавь резистор", "соедини выводы", "проверь схему". --- # Схемы EWB 5.12 Используйте MCP-сервер `ewb512`. Он сохраняет нативный контейнер `.ewb` (`EncryptionType: 2`) и формат документа `Project_5_1`, поэтому записанный файл остаётся совместимым с Electronics Workbench 5.12. Саму EWB не устанавливайте, не запускайте и не автоматизируйте. Вся работа идёт через чтение и запись файла. ## Карта инструментов | Инструмент | Для чего | |---|---| | `ewb_list_parts` | Каталог компонентов: PartNum, имена, число выводов, известные повороты. Начните здесь, если не уверены в имени компонента. | | `ewb_read_schematic` | Компоненты, абсолютные координаты выводов, провода, сети, предупреждения. | | `ewb_validate` | Проверка контейнера, структуры документа, полей элементов, индексов проводов, геометрии выводов, маршрутов и checksum. | | `ewb_render_svg` | SVG-превью для визуальной проверки. | | `ewb_create_schematic` | Создание нового `.ewb`, при необходимости сразу с компонентами и проводами. | | `ewb_add_component` | Добавление одного компонента из каталога. | | `ewb_add_wire` | Соединение двух выводов проводом. | | `ewb_update_component` | Перемещение, поворот, переименование, изменение значения или модели. | | `ewb_update_wire` | Изменение маршрута, метки сети, цвета или id провода. | | `ewb_remove_component` | Удаление компонента и, по умолчанию, связанных проводов. | | `ewb_remove_wire` | Удаление одного провода по индексу. | ## Обязательный порядок работы 1. **Сначала прочитайте схему.** Вызовите `ewb_read_schematic` с `include_pins: true` и `include_wires: true`. Используйте возвращённые индексы элементов и номера выводов. Никогда не угадывайте номер вывода по рисунку символа. 2. **Проверьте исходное состояние.** Для незнакомого файла сначала вызовите `ewb_validate`. Если `document_roundtrip_exact: false`, файл небезопасно редактировать: остановитесь и сообщите об этом. 3. **Редактируйте.** Предпочитайте индексы элементов, а не обозначения. У всех земляных символов `refid` равен `"0"`, поэтому поиск земли по `ref` неоднозначен. Строка `"2"` в `ref` означает обозначение `2`, а не индекс; индекс передавайте JSON-числом. 4. **Проверьте после каждого изменения.** Вызовите `ewb_validate` и исправьте все ошибки. Предупреждения информационны, если только они не указывают на неверный маршрут или неизвестный вывод. 5. **Отрисуйте и посмотрите.** Вызовите `ewb_render_svg` и проверьте SVG на пересечение подписей, визуально разорванные провода и смещённые элементы. Превью приблизительное, это не пиксельная копия отрисовки EWB. Изменения атомарные, рядом создаётся `<имя>.ewb.bak`. Не перезаписывайте исходный файл пользователя, если он явно не попросил редактировать именно этот путь. При исследовании сначала сделайте копию или редактируйте копию. ## Создание схемы `ewb_create_schematic` принимает компоненты каталога, позиции и провода. Концы провода — это либо индексы в массиве `components` (с нуля), либо уникальные обозначения. ```json { "path": "/absolute/path/rc_led.ewb", "overwrite": false, "description": "RC + LED", "components": [ {"part": "GROUND", "x": 400, "y": 620}, {"part": "GROUND", "x": 730, "y": 620}, {"part": "BATTERY", "ref": "V1", "x": 400, "y": 500, "value": 9}, {"part": "RESISTOR", "ref": "R1", "x": 500, "y": 460, "rotation": 1, "value": "1k"}, {"part": "CAPACITOR", "ref": "C1", "x": 600, "y": 480, "value": "1u"}, {"part": "LED", "ref": "D1", "x": 700, "y": 480, "rotation": 2} ], "wires": [ {"from": "V1", "from_pin": 1, "to": "R1", "to_pin": 0}, {"from": "R1", "from_pin": 1, "to": "C1", "to_pin": 0}, {"from": "C1", "from_pin": 1, "to": "D1", "to_pin": 1}, {"from": "D1", "from_pin": 0, "to": 1, "to_pin": 0}, {"from": "V1", "from_pin": 0, "to": 0, "to_pin": 0} ] } ``` Примечания: - Значения принимают числа или строки с суффиксами `k`, `M`, `u`, `n`, `p`. Массив задаёт все поля значения, скаляр — только основное. - `rotation` — `0..7`. Геометрия выводов известна не для всех сочетаний «компонент + поворот»; `ewb_list_parts` показывает известные варианты. Неизвестная геометрия допустима, но автоматическая маршрутизация ограничена. - `route` по умолчанию `"auto"` (ортогональный маршрут). `route: "none"` записывает провод без списка сегментов: EWB проложит его при открытии. - `node` — метка сети (по умолчанию `"0"`). Это метаданные, а не электрическое соединение: связность задаётся концами провода. - Маркер узла — компонент `NODE` (PartNum 39). ## Координаты и выводы `Position` — опорная точка элемента, а не центр корпуса. Абсолютная координата вывода: ```text pin_abs = Position + pin_offset(PartNum, rotation, pin) ``` Смещения намеренно асимметричны. Всегда используйте координаты выводов из `ewb_read_schematic` или объект `pins`, который возвращает `ewb_add_component`. При перемещении компонента сервер автоматически переразводит подключённые провода, если геометрия выводов известна. После этого проверьте результат через `ewb_read_schematic`. Сегменты провода хранятся парами `[direction, length]`: | Код | Направление | |---:|---| | 1 | +X | | 2 | +Y | | 4 | −X | | 8 | −Y | | 3, 6, 9, 12 | диагонали | ## Каталог компонентов Поддерживаются все 40 записей библиотеки EWB 5.12, PartNum `0..39`: источники напряжения и тока AC/DC, батарея, резистор, конденсатор, катушка индуктивности, диод, стабилитрон, LED, лампа, предохранитель, реле, NPN/PNP-транзисторы, JFET, MOSFET, операционный усилитель, трансформатор, амперметр, вольтметр, соединитель, земля, переключатели, переключатель с задержкой, управляемые источники и узел. Точные имена и алиасы берите из `ewb_list_parts`, а не угадывайте; полная таблица с описаниями — в `docs/CATALOG.md`. Создавать можно все 40 записей. Геометрия выводов восстановлена только для 17 из них, поэтому автоматическая маршрутизация проводов доступна не для всех компонентов и поворотов. Если геометрии нет, провод сохраняется без `segs`, а сервер выдаёт предупреждение. Блоки `Instrument` и `ExtComp` читаются, но не создаются. Земля особая: EWB хранит все земляные символы с обозначением `0`. Несколько земель в одной схеме — это нормально и ожидаемо. ## Отчёт о результате Сообщите путь к файлу, число элементов, проводов и сетей, результат проверки. Если `ewb_validate` вернул ошибки, процитируйте их и не заявляйте об успехе. Если для запрошенного компонента или поворота геометрия выводов неизвестна, скажите об этом явно, а не выдавайте возможно неверную схему за готовую. SVG — это превью. Никогда не представляйте его как скриншот EWB или как доказательство того, что схема корректно симулируется: сервер проверяет только структуру файла, а не электрическую схему и не выполняет ERC.