# Rivet Via Converter для Altium Designer

Скрипт анализирует все отверстия активного `PcbDoc` и преобразует в размеры
имеющихся заклёпок как сквозные Via, так и все сверлёные Pad. Обрабатываются
свободные объекты на плате и примитивы внутри футпринтов:

| Исходный Hole Size | Новый Hole Size | Диаметр меди | Диаметр зоны изоляции |
|---:|---:|---:|---:|
| `<= 0,3 мм` | `0,9 мм` | `1,7 мм` | `2,2 мм` |
| `<= 1,1 мм` | `1,3 мм` | `2,1 мм` | `2,7 мм` |
| `> 1,1 мм` | `2,0 мм` | `2,8 мм` | `3,7 мм` |

Дополнительный запас к внешнему диаметру не добавляется. Глухие и скрытые Via
не изменяются. Также игнорируются неплакированные Pad и отверстия, у которых
внешний размер площадки равен диаметру отверстия, то есть отсутствует медное
кольцо. SMD Pad с нулевым размером отверстия не изменяются. Диаметр меди всегда
равен `Hole Size + 0,8 мм`. У сверлёных Pad задаются одинаковые X/Y-размеры меди
на Top, Mid и Bottom, но исходная форма площадки сохраняется. Готовые размеры распознаются
отдельно, поэтому скрипт можно запускать повторно без дальнейшего увеличения.

Скрипт проверяет активное общее правило Clearance со Scope `All / All`. Для
каждой группы отдельное правило создаётся или обновляется только тогда, когда
общий clearance меньше требуемого зазора от края меди. Если общий clearance уже
достаточен, правило группы не создаётся, а ранее созданное скриптом правило
удаляется.

Возможные отдельные правила:

- `RIVET_03_RoutingIsolation` — зазор от края меди `0,25 мм`;
- `RIVET_11_RoutingIsolation` — зазор от края меди `0,30 мм`;
- `RIVET_GT11_RoutingIsolation` — зазор от края меди `0,45 мм`.

Область действия первой стороны каждого правила автоматически выбирает Via и
plated Pad с соответствующей парой Hole Size/диаметр. Вторая сторона выбирает
только дорожки, дуги трассировки, медные Fill/Region и Polygon. Поэтому другие
Pad и Via могут располагаться ближе и продолжают использовать обычное правило
clearance платы, например `0,5 мм`.

Например, при общем clearance `0,5 мм` он уже превышает все три требуемых
значения (`0,25 / 0,30 / 0,45 мм`), поэтому ни одно дополнительное правило не
понадобится.

## Запуск

1. Откройте `RivetViaConverter.PrjScr` в Altium Designer.
2. Откройте и сделайте активным нужный `PcbDoc`.
3. Выберите `File -> Run Script`.
4. Для проверки без изменений запустите `AnalyzeVias` — несмотря на историческое
   имя процедуры, она проверяет и Via, и сверлёные Pad.
5. Для преобразования и синхронизации правил запустите `ConvertViasToRivets` —
   она изменяет оба типа объектов.
6. Проверьте показанную сводку и нажмите `OK`.

Все изменения формируются как одна операция Undo. Скрипт не сохраняет файл
автоматически.

## После преобразования

Запустите DRC: увеличенные площадки могут нарушить Clearance или выйти слишком
близко к контуру платы. Также проверьте настройки Solder Mask Expansion: медь
вокруг заклёпки должна быть открыта с обеих сторон платы. Сам скрипт настройки
паяльной маски и правила PCB не меняет.
