Данный репозиторий содержит коллекцию специализированных скриптов (DelphiScript / Pascal) для системы автоматизированного проектирования Altium Designer, ориентированных на решение задач автоматизации топологического проектирования, геометрической оптимизации и подготовки высокочастотных (СВЧ/RF) печатных плат.
Основной фокус текущих решений направлен на автоматическое объединение дискретных геометрических сегментов (Fills, Tracks) и синтез согласованных микрополосковых переходов (ступенчатых и гладко-конусных трансформаторов импеданса) в монолитные полигональные объекты типа Solid Region (IPCB_Region) с сохранением электрических цепей (Nets) и сигнальных слоев (Layers).
├── .gitignore
├── LICENSE
├── README.de.md
├── README.en.md
├── README.md
├── docs/
│ └── images/
│ ├── rf_taper_discrete_slices_selected.png # Выделение исходных дискретных сегментов в PCBDoc
│ ├── rf_taper_stepped_solid_region.png # Результат точного ступенчатого слияния (1:1)
│ ├── rf_taper_smooth_solid_region.png # Результат гладкого конусного перехода (Taper)
│ └── rf_taper_pcb_full_view.png # Общий вид топологии печатной платы с переходом
└── scripts/
└── rf_transitions/
├── merge_slices_to_exact_region.pas # Слияние ступеней в точный ступенчатый Solid Region
└── merge_slices_to_smooth_region.pas # Преобразование ступеней в плавный конусный Solid Region
При проектировании СВЧ-устройств ступенчатые и конусные переходы часто рассчитываются в аналитических пакетах (Mathcad, MATLAB) или электродинамических симуляторах (CST Studio Suite, HFSS) и импортируются в САПР в виде набора дискретных полос и прямоугольников. Ручное объединение и редактирование таких сегментов в Altium Designer трудоемко и может приводить к ошибкам DRC и паразитным фасеточным разрывам.
Скрипты модуля rf_transitions автоматизируют этот процесс на уровне объектной модели Altium API (PCBServer).
Скрипт выполняет слияние выделенных примитивов (eFillObject, eTrackObject) в единый полигон с точным сохранением всех промежуточных координат и ступенчатых границ 1:1.
-
Алгоритм работы:
- Обход выделенных объектов через
IPCB_BoardIteratorи извлечение граничных координат$[X_1, X_2, Y_1, Y_2]$ с учетом толщины проводников дляeTrackObject. - Сортировка сегментов слева направо вдоль продольной оси
$X$ . - Формирование замкнутого математического контура
IPCB_Contourс помощью фабрикиPCBServer.PCBContourFactory:- Фиксация левого торца
$(X_{1,0}, Y_{1,0}) \rightarrow (X_{1,0}, Y_{2,0})$ . - Построение верхней ступенчатой кромки с добавлением угловых точек перепада ширины.
- Фиксация правого торца
$(X_{2,N}, Y_{1,N})$ . - Построение нижней ступенчатой кромки в обратном направлении.
- Фиксация левого торца
- Генерация объекта
IPCB_Region(eRegionObject), перенос атрибутов цепи (TargetNet) и слоя (TargetLayer), удаление исходных кусочков и регенерация отображения.
- Обход выделенных объектов через
Скрипт преобразует дискретный ступенчатый переход в монолитный гладкий конусный согласующий трансформатор (Taper transition), устраняющий паразитные емкостные и индуктивные скачки на ступенях.
-
Алгоритм работы:
- Извлечение и сортировка геометрии исходных ступеней по оси
$X$ . - Построение сглаженного контура без ортогональных уступов: при обнаружении перепада ширины между смежными сегментами строятся прямые диагональные линии, соединяющие крайние точки соседних ступеней.
- Сохранение плоских торцевых участков на входе и выходе для корректной стыковки с подводящими микрополосковыми линиями передачи.
- Формирование полигона
eRegionObject, перенос электрических связей и очистка исходных примитивов.
- Извлечение и сортировка геометрии исходных ступеней по оси
- Клонируйте репозиторий локально:
git clone https://github.com/AiuRat/altium-designer-scripts.git
- Откройте проект платы (
*.PcbDoc) в Altium Designer.
- В редакторе PCB выделите группу стыкующихся объектов (
FillsилиTracks), образующих переход: - В главном меню Altium Designer выберите File
$\rightarrow$ Run Script... (или нажмите сочетание клавишAlt + F11/DXP -> Run Script). - Нажмите Browse... и выберите требуемый файл скрипта (
merge_slices_to_exact_region.pasилиmerge_slices_to_smooth_region.pas). - В окне списка процедур выберите соответствующую процедуру:
-
MergeSelectedSlicesToRegion— для точного ступенчатого контура. -
MergeSelectedSlicesToSmoothRegion— для сглаженного конусного перехода.
-
- Нажмите OK. Скрипт сформирует монолитный полигон, назначит ему исходную цепь и автоматически обновит рабочую область.
Copyright (c) 2026 Айрат Ялалетдинов
Этот исходный документ описывает открытое аппаратное обеспечение (Open Hardware) и распространяется под лицензией CERN-OHL-P v2. Вы можете распространять и изменять этот исходный документ, а также производить на его основе продукты в соответствии с условиями лицензии CERN-OHL-P v2 (https://cern.ch/cern-ohl).
Этот исходный документ распространяется БЕЗ КАКИХ-ЛИБО ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ ГАРАНТИЙ, ВКЛЮЧАЯ ГАРАНТИИ ТОВАРНОЙ ПРИГОДНОСТИ, УДОВЛЕТВОРИТЕЛЬНОГО КАЧЕСТВА ИЛИ СООТВЕТСТВИЯ КОНКРЕТНЫМ ЦЕЛЯМ. Пожалуйста, ознакомьтесь с условиями CERN-OHL-P v2 для получения подробной информации.



