
Componentes de función macro
Marzo 2016: Marga Delgado explica cómo usar los componentes de función macro para crear elementos de salida adicionales a la hora de llevar a cabo una asignación.
August 2016
By Grant MacKinnon
Most users are familiar with creating their own attributes within objects within an Aimsun model. These will typically be numbers or strings but it is also possible to add a column to an object where a value is returned based on some Python Code, allowing a value to be calculated on the fly.
A simple example is one that places a label letter on a turn to say whether it is Left, Through, Right or U-Turn.
Click to enlarge: Showing the attribute in the network
Firstly we could create this column using the Types Editor (by selecting the relevant object type from the Types window), then adding a new column of Column Type Function, in this case one that returns a string as a result.
Click to enlarge: Create the column using the Types Editor
The function needs to contain a Python function with signature of the form:
def eval_attr(object):
which returns a value with the result.
Here is the code we store inside the column
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
However we can create all this from a script which creates the column, and populates the code.
The code to set up the column directly from a Python script is as follows:
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 contains the definition of the function.
Download Python script for creating a turning classification label
Marzo 2016: Marga Delgado explica cómo usar los componentes de función macro para crear elementos de salida adicionales a la hora de llevar a cabo una asignación.
Marzo de 2021: Tessa Hayman te guía a través de la complejidad del manejo de las series temporales mediante scripts de Python y te explica cómo crear tus series temporales personalizadas de forma que puedan visualizarse en la interfaz de usuario.
SHARE
Aimsun Next 20
Aimsun Next 8.4
Aimsun Next 20
@manual {AimsunManual,
title = {Aimsun Next 20 User's Manual},
author = {Aimsun},
edition = {Aimsun Next 20.0.3},
address = {Barcelona, Spain},
year = {2021. [In software]},
month = {Accessed on: Month, Day, Year},
url = {qthelp://aimsun.com.aimsun.20.0/doc/UsersManual/Intro.html},
}
Aimsun Next 8.4
@manual {AimsunManual,
title = {Aimsun Next 8.4 User's Manual},
author = {Aimsun},
edition = {Aimsun Next 8.4.4},
address = {Barcelona, Spain},
year = {2021. [In software]},
month = {Accessed on: Month, Day, Year},
url = {qthelp://aimsun.com.aimsun.8.4/doc/UsersManual/Intro.html},
}
Aimsun Next 20
TY - COMP
T1 - Aimsun Next 20 User's Manual
A1 - Aimsun
ET - Aimsun Next Version 20.0.3
Y1 - 2021
Y2 - Accessed on: Month, Day, Year
CY - Barcelona, Spain
PB - Aimsun
UR - [In software]. Available: qthelp://aimsun.com.aimsun.20.0/doc/UsersManual/Intro.html
Aimsun Next 8.4
TY - COMP
T1 - Aimsun Next 8.4 User's Manual
A1 - Aimsun
ET - Aimsun Next Version 8.4.4
Y1 - 2021
Y2 - Accessed on: Month, Day, Year
CY - Barcelona, Spain
PB - Aimsun
UR - [In software]. Available: qthelp://aimsun.com.aimsun.8.4/doc/UsersManual/Intro.html