Nota Técnica #17
Agosto de 2016
por Grant MacKinnon
A maioria dos usuários está familiarizada com a criação de seus próprios atributos dentro de objetos de um modelo Aimsun. Estes serão normalmente números ou strings, mas também é possível adicionar uma coluna a um objeto onde um valor é retornado com base em algum Código Python, permitindo que um valor seja calculado em tempo real.
Um exemplo simples é aquele que coloca uma etiqueta em um movimento para dizer se é Esquerda, Em Frente, Direita ou Retorno em U.
def eval_attr(object):
que retorna um valor com o resultado. Aqui está o código que armazenamos dentro da coluna
def determineTurningLetterForAngle(angle):
dirString = ""
if abs(angle)<30.0: dirString+="T" elif abs(angle)>150.0:< dirString+="U" elif angle>0.0:
dirString+="L"
else:
dirString+="R"
return dirString
def retrieveTurningLetterForTurning(turning):
angle = turning.calcAngleSections()
directionString = determineTurningLetterForAngle(angle)
return directionString
def eval_attr(object):
res = retrieveTurningLetterForTurning(object)
return res
No entanto, podemos criar tudo isso a partir de um script que cria a coluna e preenche o código. O código para criar a coluna diretamente a partir de um script Python é o seguinte:
def main():
turnLetterAttr = model.getColumn("GKTurning::TurnLetter")
if turnLetterAttr == None:
turningType = model.getType("GKTurning")
turnLetterAttr =
turningType.addColumn("GKTurning::TurnLetter","TurnLetter",
GKColumn.String, GKColumn.ePython)
turnLetterAttr.setPythonCode(PYTHON_CODE_STRING)
main()
PYTHON_CODE_STRING contém a definição da função.