test-gui-live.pyโข4.35 kB
import sys
import time
sys.path.append(r"H:\Program Files\PTV Vision\PTV Visum 2025\Exe")
print("=== TEST CONNESSIONE A VISUM GUI APERTO ===")
print(f"Timestamp: {time.strftime('%H:%M:%S')}")
try:
import win32com.client
print("\n๐ TENTATIVO 1: GetActiveObject('Visum.Visum')")
try:
visum = win32com.client.GetActiveObject("Visum.Visum")
print("โ
CONNESSIONE RIUSCITA!")
# Test accesso immediato alla rete
nodes = visum.Net.Nodes.Count
links = visum.Net.Links.Count
zones = visum.Net.Zones.Count
print(f"๐ DATI RETE:")
print(f" Nodi: {nodes:,}")
print(f" Link: {links:,}")
print(f" Zone: {zones:,}")
if nodes > 0:
print("๐ฏ SUCCESSO COMPLETO! GUI Visum accessibile con progetto caricato")
# Test analisi veloce
print("\n๐ TEST ANALISI SU ISTANZA GUI:")
start_time = time.time()
# Analisi link
link_set = visum.Net.Links
attrs = link_set.GetMultipleAttributes(['No', 'Length', 'NumLanes'])
sample = attrs[:5]
total_length = sum([attr[1] for attr in sample])
avg_length = total_length / len(sample)
end_time = time.time()
print(f" Campione 5 link analizzati in {end_time - start_time:.3f}s")
print(f" Lunghezza media: {avg_length:.3f} km")
# Test disconnessione e riconnessione
print("\n๐ TEST DISCONNESSIONE/RICONNESSIONE:")
# "Disconnessione" (elimina riferimento)
del visum
print(" โ
Riferimento COM eliminato")
time.sleep(2)
# Riconnessione
visum2 = win32com.client.GetActiveObject("Visum.Visum")
nodes2 = visum2.Net.Nodes.Count
print(f" โ
Riconnesso! Nodi: {nodes2:,}")
if nodes2 == nodes:
print(" ๐ฏ PERFETTO! Stessa istanza, stessi dati")
print("\n" + "="*50)
print("๐ WORKFLOW CONFERMATO FUNZIONANTE!")
print("="*50)
print("โ
1. Utente apre Visum GUI โ")
print("โ
2. Progetto caricato visibile โ")
print("โ
3. MCP si connette via GetActiveObject โ")
print("โ
4. Analisi completata โ")
print("โ
5. Disconnessione pulita โ")
print("โ
6. Riconnessione immediata โ")
print("\n๐ก IL WORKFLOW RICHIESTO ร POSSIBILE!")
else:
print(" โ ๏ธ Dati diversi dopo riconnessione")
else:
print("โ ๏ธ Connesso ma progetto non caricato nell'istanza GUI")
except Exception as e:
print(f"โ GetActiveObject fallito: {e}")
print(" Possibili cause:")
print(" - Visum non ancora completamente avviato")
print(" - Problema registrazione COM")
print(" - Visum 2025 non supporta GetActiveObject")
print("\n๐ TENTATIVO 2: Verifica processo Visum")
try:
import psutil
visum_processes = []
for proc in psutil.process_iter(['pid', 'name', 'cmdline']):
if 'visum' in proc.info['name'].lower():
visum_processes.append(proc.info)
if visum_processes:
print(f"โ
Trovati {len(visum_processes)} processi Visum:")
for proc in visum_processes:
print(f" PID: {proc['pid']}, Nome: {proc['name']}")
print(" โ Visum รจ in esecuzione ma non accessibile via COM")
else:
print("โ Nessun processo Visum trovato")
except ImportError:
print(" (psutil non disponibile per verifica processi)")
except Exception as proc_error:
print(f" Errore verifica processi: {proc_error}")
except Exception as e:
print(f"โ ERRORE GENERALE: {e}")
import traceback
traceback.print_exc()
print(f"\n=== TEST COMPLETATO {time.strftime('%H:%M:%S')} ===")