Merge remote-tracking branch 'vika/эмс-тг' into эмс-тг

This commit is contained in:
sasha80
2026-03-26 15:38:45 +03:00

View File

@@ -356,36 +356,59 @@ func map_yems_info_to_table(unit_info: Dictionary, ctable: GDTable, indexes: Dic
## Находит пересечения диапазонов
func find_inters(info: Dictionary) -> Array:
# info - словарь, его структура
# {
# "устройство": # имя устройства ("эмс-ор63")
# [
# {
# cname, # имя кластера ("Кластер-0")
# wfb, # ширина диапазона, МГЦ (800.0)
# cfb, # центр диапазона, МГЦ (2000.0)
# txe, # передатчик включен
# rxe # передатчик выключен
# },
# {
# cname, # имя кластера ("Кластер-1")
# wfb, # ширина диапазона, МГЦ (200.0)
# cfb, # центр диапазона, МГЦ (1000.0)
# txe, # передатчик включен
# rxe # передатчик выключен
# },
# ]
# }
var result = []
var all_clusters = []
# Собираем все кластеры из всех устройств в один массив
for nm in info:
# nm - имя устройства
var unit_data = info[nm]
if not unit_data: continue
for cls in unit_data.mcls:
# Добавлена проверка для совместимости
var clusters = unit_data if unit_data is Array else unit_data.mcls
# cls - один кластер
#print_debug([cls.cname, cls.wfb, cls.cfb, cls.txe, cls.rxe])
pass
for cls in clusters:
var cfb = float(cls.cfb)
var wfb = float(cls.wfb)
# расчёт границ частотных диапазонов
var freq_min1 = cfb - wfb / 2.0
var freq_max1 = cfb + wfb / 2.0
all_clusters.append([nm, cls.cname, freq_min1, freq_max1, cls.txe, cls.rxe])
print([nm, cls.cname, freq_min1, freq_max1, cls.txe, cls.rxe])
for i in all_clusters.size():
var cl1 = all_clusters[i]
var dev1 = cl1[0]
var name1 = cl1[1]
var min1 = cl1[2]
var max1 = cl1[3]
var txe1 = cl1[4]
var rxe1 = cl1[5]
# Сравниваем текущий кластер со всеми последующими, чтобы избежать дублей и самопересечений
for j in range(0, all_clusters.size()):
var cl2 = all_clusters[j]
var dev2 = cl2[0]
var name2 = cl2[1]
var min2 = cl2[2]
var max2 = cl2[3]
var txe2 = cl2[4]
var rxe2 = cl2[5]
#Если нет пары TR(RT) то пропускаем эту комбинацию
if not ((txe1 and rxe2) or (rxe1 and txe2)):
continue
# Проверка на пересечение диапазонов, пересечение есть если начало одного диапазона меньше конца другого
if max1 > min2 and max2 > min1:
#Вычисляем точные границы пересечения
var inter_start = max(min1, min2)
var inter_end = min(max1, max2)
# Формируем результат в требуемом формате
result.append([dev1, dev2, name1, name2, inter_start, inter_end])
# заглушка для возвращаемых данных
return [['эмс-ор63', 'эмс-ор63', 'Кластер-0', 'Кластер-0', 1600.0, 2400.0]]
return result
## Отображает кластеры на шкале