Skip to main content
Glama

Visum Thinker MCP Server

MIT License
test-persistence-v2.pyβ€’5.3 kB
import sys import time sys.path.append(r"H:\Program Files\PTV Vision\PTV Visum 2025\Exe") try: import win32com.client print("=== TEST PERSISTENZA ISTANZA COM VISUM (v2) ===") print("Creazione istanza COM...") # Crea istanza e carica progetto visum = win32com.client.DispatchEx("Visum.Visum") print("βœ… Istanza COM creata") # Carica progetto campoleone_path = r"H:\go\italferr2025\Campoleone\100625_Versione_base_v0.3_sub_ok_priv.ver" print("πŸ“‚ Caricamento progetto...") visum.LoadVersion(campoleone_path) print("βœ… Progetto caricato") # ANALISI 1: Statistiche base print("\n" + "="*50) print("ANALISI 1 - STATISTICHE BASE (t=0s)") print("="*50) start_time = time.time() nodes = visum.Net.Nodes.Count links = visum.Net.Links.Count zones = visum.Net.Zones.Count end_time = time.time() print(f"Nodi: {nodes:,}") print(f"Link: {links:,}") print(f"Zone: {zones:,}") print(f"⏱️ Tempo: {end_time - start_time:.3f} secondi") # Pausa simulata print("\n⏳ Pausa di 5 secondi (simulazione lavoro diverso)...") time.sleep(5) # ANALISI 2: Dettagli link con attributi sicuri print("\n" + "="*50) print("ANALISI 2 - DETTAGLI LINK (t=5s, stessa istanza)") print("="*50) start_time = time.time() # Test accesso agli attributi dei link (solo attributi base) link_set = visum.Net.Links print(f"Collezione link: {type(link_set)}") # Usa solo attributi sicuri attrs = link_set.GetMultipleAttributes(['No', 'Length', 'NumLanes']) sample_size = min(5, len(attrs)) print(f"\nCampione primi {sample_size} link:") total_length = 0 for i in range(sample_size): link_no, length, lanes = attrs[i] total_length += length print(f" Link {int(link_no):>6}: {length:>8.3f} km, {int(lanes)} corsie") avg_length = total_length / sample_size if sample_size > 0 else 0 end_time = time.time() print(f"\nπŸ“Š Lunghezza media campione: {avg_length:.3f} km") print(f"⏱️ Tempo: {end_time - start_time:.3f} secondi") # Pausa piΓΉ lunga per testare persistenza print("\n⏳ Pausa di 10 secondi (simulazione pausa lunga)...") time.sleep(10) # ANALISI 3: Nodi (t=15s, stessa istanza) print("\n" + "="*50) print("ANALISI 3 - ANALISI NODI (t=15s, stessa istanza)") print("="*50) start_time = time.time() # Analisi nodi node_set = visum.Net.Nodes node_attrs = node_set.GetMultipleAttributes(['No', 'XCoord', 'YCoord']) # Calcola statistiche coordinate (primi 100 nodi) sample_nodes = node_attrs[:100] x_coords = [attr[1] for attr in sample_nodes] y_coords = [attr[2] for attr in sample_nodes] min_x, max_x = min(x_coords), max(x_coords) min_y, max_y = min(y_coords), max(y_coords) print(f"πŸ“ Area rete (primi 100 nodi):") print(f" X: {min_x:.0f} - {max_x:.0f}") print(f" Y: {min_y:.0f} - {max_y:.0f}") end_time = time.time() print(f"⏱️ Tempo: {end_time - start_time:.3f} secondi") # Pausa molto lunga per test estremo print("\n⏳ Pausa di 15 secondi (test persistenza estrema)...") time.sleep(15) # ANALISI 4: Test finale persistenza (t=30s) print("\n" + "="*50) print("ANALISI 4 - TEST PERSISTENZA (t=30s)") print("="*50) try: start_time = time.time() # Test multipli accessi final_nodes = visum.Net.Nodes.Count final_links = visum.Net.Links.Count final_zones = visum.Net.Zones.Count # Test accesso dati complessi zone_set = visum.Net.Zones zone_attrs = zone_set.GetMultipleAttributes(['No', 'XCoord', 'YCoord']) end_time = time.time() print(f"βœ… ECCELLENTE! Istanza ancora perfettamente attiva!") print(f" Nodi: {final_nodes:,}") print(f" Link: {final_links:,}") print(f" Zone: {final_zones:,} (con {len(zone_attrs)} zone analizzate)") print(f"⏱️ Tempo accesso finale: {end_time - start_time:.3f} secondi") # Info versione try: version_info = visum.GetVersionString() print(f"πŸ“‹ Versione: {version_info}") except: print("πŸ“‹ Versione: Non disponibile via COM") except Exception as final_error: print(f"❌ ERRORE: Istanza persa dopo 30s: {final_error}") print("\n" + "="*60) print("🎯 CONCLUSIONI PERSISTENZA ISTANZA COM") print("="*60) print("βœ… Istanza COM rimane attiva per ALMENO 30+ secondi") print("βœ… Performance consistente tra chiamate multiple") print("βœ… Accesso dati mantiene velocitΓ  e accuratezza") print("βœ… Progetto rimane caricato in memoria") print("πŸ“ˆ RACCOMANDAZIONE: Riutilizza istanza per efficienza!") print("\nπŸ’‘ STRATEGIA MCP:") print(" - Crea istanza COM all'avvio server") print(" - Carica progetto una volta") print(" - Riutilizza per tutte le analisi") print(" - Chiudi solo al termine sessione") except Exception as e: print(f"ERRORE GENERALE: {e}") import traceback traceback.print_exc()

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/multiluca2020/visum-thinker-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server