58 lines
1.8 KiB
Python
58 lines
1.8 KiB
Python
# Used in operations.
|
|
# Sample script that will set a wait value for all cars in a specific train.
|
|
# Useful if you want the cars set out by the train to remain unavailable for
|
|
# other trains. A wait value of 1, means the next train built will not use
|
|
# cars from this train.
|
|
#
|
|
# Use this script after the train has been built.
|
|
#
|
|
# Author: Daniel Boudreau, copyright 2011, 2012, 2024
|
|
#
|
|
# To use this script you must assign the train that you want the cars waited,
|
|
# and the wait value.
|
|
#
|
|
|
|
import jmri
|
|
|
|
class WaitCars(jmri.jmrit.automat.AbstractAutomaton):
|
|
def init(self):
|
|
|
|
# train (use train name)
|
|
self.trainName = "Green Bay Hauler"
|
|
|
|
# wait value
|
|
self.wait = 3
|
|
|
|
return
|
|
|
|
def handle(self):
|
|
|
|
# get the train and car managers
|
|
tm = jmri.InstanceManager.getDefault(jmri.jmrit.operations.trains.TrainManager)
|
|
cm = jmri.InstanceManager.getDefault(jmri.jmrit.operations.rollingstock.cars.CarManager)
|
|
|
|
# the following code checks the values entered
|
|
train = tm.getTrainByName(self.trainName)
|
|
if (train == None):
|
|
print ('Train ({}) does not exist!'.format(self.trainName))
|
|
return False
|
|
if not (train.isBuilt()):
|
|
print ('Train ({}) not built!'.format(self.trainName))
|
|
return False
|
|
|
|
# get a list of cars in this train
|
|
carList = cm.getByTrainDestinationList(train)
|
|
print ('Train ({}) has {} cars assigned to it'.format(self.trainName, carList.size()))
|
|
|
|
for car in carList:
|
|
if (car.getWait() == 0):
|
|
car.setWait(self.wait)
|
|
print ('Setting wait to {} for car {}'.format( self.wait, car.toString()))
|
|
else:
|
|
print ('Car {} has wait value {}'.format(car.toString(), car.getWait()))
|
|
|
|
print ('Done')
|
|
return False # all done, don't repeat again
|
|
|
|
WaitCars().start() # create one of these, and start it running
|