Skip to main content
Glama
enable-disable-stops-simple.py•7.15 kB
# -*- coding: ascii -*- """ Script per abilitare/disabilitare fermate in un LineRoute Versione SEMPLICE: modifica solo IsRoutePoint, senza toccare i TimeProfileItems FUNZIONALITA: 1. Disabilita fermata: IsRoutePoint=False (TimeProfileItem rimosso automaticamente) 2. Abilita fermata: IsRoutePoint=True (TimeProfileItem creato automaticamente da Visum) IMPORTANTE: Modifica solo le fermate intermedie (non prima/ultima) """ # ============================================================================ # CONFIGURAZIONE # ============================================================================ TARGET_LINEROUTE_NAME = "R17_2" # Operazioni da eseguire # Formato: {StopPointNo: "enable" o "disable"} OPERATIONS = { 370: "enable", # 328: "disable", } # ============================================================================ # FUNZIONI HELPER # ============================================================================ def get_lr_stop_sequence(lr_items): """Ottieni sequenza fermate dal LineRoute""" stops = [] for item in lr_items: try: stop_point_no = item.AttValue("StopPointNo") if stop_point_no and stop_point_no > 0: stops.append({ 'item': item, 'stop_point_no': stop_point_no, 'is_route': item.AttValue("IsRoutePoint"), 'index': item.AttValue("Index") }) except: pass # Ordina per index stops.sort(key=lambda x: x['index']) return stops def configure_timeprofile_items(tp, stops, operations): """ FUNZIONE DISABILITATA - Non usata per ora Configura manualmente i TimeProfileItems con tempi personalizzati. Per il futuro, se serve modificare anche i tempi oltre a IsRoutePoint. """ pass # Codice commentato per uso futuro: # for stop_no, config in operations.items(): # # Trova TimeProfileItem # # Configura Arr/Dep/StopTime # pass # ============================================================================ # MAIN # ============================================================================ try: print("=" * 80) print("SCRIPT ABILITAZIONE/DISABILITAZIONE FERMATE - VERSIONE SEMPLICE") print("=" * 80) print("\nModifica solo IsRoutePoint su LineRouteItems") print("TimeProfileItems gestiti automaticamente da Visum\n") # Trova il LineRoute print("Ricerca LineRoute '%s'..." % TARGET_LINEROUTE_NAME) target_lr = None for lr in Visum.Net.LineRoutes: if lr.AttValue("Name") == TARGET_LINEROUTE_NAME: target_lr = lr break if target_lr is None: print("ERRORE: LineRoute '%s' non trovato!" % TARGET_LINEROUTE_NAME) else: print("OK - LineRoute trovato") print(" Name: %s" % target_lr.AttValue("Name")) print(" LineName: %s" % target_lr.AttValue("LineName")) print("") # Ottieni sequenza fermate lr_items = target_lr.LineRouteItems stops = get_lr_stop_sequence(lr_items) print("Fermate totali: %d" % len(stops)) print("Fermate abilitate (IsRoutePoint=True): %d" % sum(1 for s in stops if s['is_route'])) print("") print("=" * 80) # Elabora ogni operazione for stop_no, operation in OPERATIONS.items(): print("\nOperazione: %s fermata %d" % (operation.upper(), stop_no)) print("-" * 80) # Trova la fermata nella sequenza stop_idx = None for i, s in enumerate(stops): if s['stop_point_no'] == stop_no: stop_idx = i break if stop_idx is None: print(" ERRORE: Fermata %d non trovata!" % stop_no) continue # Verifica che non sia prima/ultima if stop_idx == 0: print(" ERRORE: Non puoi modificare la prima fermata!") continue if stop_idx == len(stops) - 1: print(" ERRORE: Non puoi modificare l'ultima fermata!") continue current = stops[stop_idx] current_is_route = current['is_route'] print(" Fermata %d - IsRoutePoint attuale: %s" % (stop_no, current_is_route)) if operation == "disable": # DISABILITA FERMATA if not current_is_route: print(" Fermata gia' disabilitata, skip.") continue print(" Disabilitazione...") try: current['item'].SetAttValue("IsRoutePoint", False) print(" OK - IsRoutePoint = False") print(" TimeProfileItem sara' rimosso automaticamente da Visum") except Exception as e: print(" ERRORE: %s" % str(e)) continue elif operation == "enable": # ABILITA FERMATA if current_is_route: print(" Fermata gia' abilitata") print(" Forzo ricreazione (False -> True)...") try: current['item'].SetAttValue("IsRoutePoint", False) print(" Step 1: IsRoutePoint = False") except Exception as e: print(" ERRORE step 1: %s" % str(e)) continue print(" Abilitazione...") try: current['item'].SetAttValue("IsRoutePoint", True) print(" OK - IsRoutePoint = True") print(" TimeProfileItem sara' creato automaticamente da Visum") print(" con tempi interpolati tra le fermate adiacenti") except Exception as e: print(" ERRORE: %s" % str(e)) continue else: print(" ERRORE: Operazione '%s' non valida (usa 'enable' o 'disable')" % operation) continue print(" Completato!") print("\n" + "=" * 80) print("OPERAZIONI COMPLETATE!") print("=" * 80) print("\nModifiche applicate:") print(" - IsRoutePoint aggiornato sui LineRouteItems") print(" - TimeProfileItems gestiti automaticamente da Visum") print("\nPer vedere le modifiche:") print(" 1. Apri Edit > Time Profiles") print(" 2. Seleziona LineRoute '%s'" % TARGET_LINEROUTE_NAME) print(" 3. Le fermate modificate appariranno/scompariranno") print("\nNOTA: Se la finestra Time Profile era gia' aperta,") print(" chiudila e riaprila per vedere le modifiche.") print("=" * 80) except Exception as e: print("\nERRORE GENERALE: %s" % str(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