Biblioteca de scripts¶
Usando a documentação de Scripting¶
A documentação de todas as classes e métodos do Aimsun Next disponíveis para scripting está acessível online aqui.

Clique na aba Classes para listar as classes disponíveis.

A aba Class Hierarchy mostra a relação de herança entre as classes.

Aqui podemos ver que um Experimento de Ajuste Macro herda de um Experimento Macro, que por sua vez herda de um Experimento Genérico GK, que herda de um GKObject e finalmente do objeto Base GK.
A documentação de classe de uma classe pode ser exibida clicando nela, conforme mostrado abaixo para a classe Experimento de Ajuste Macro. Isso mostra a hierarquia de classes e os métodos específicos desta classe.

Em Public Member Functions, são mostrados os métodos específicos desta classe. Por exemplo, para executar o experimento, chame:
success=myMacroAdjExperiment.Execute("1001")
e para definir o número de iterações de descida do gradiente (para 5), chame:
myMacroAdjExperiment.setGradientDescentIterations(5)
Clicar no nome do método rola para baixo até uma descrição mais detalhada do método, descrevendo sua finalidade, a ordem dos parâmetros etc.
Restrições de idioma¶
Como a documentação de Scripting do Aimsun Next é um subconjunto da documentação do microSDK do Aimsun Next, que mostra métodos e classes C++ e usa C++ em todos os exemplos, há algumas alterações ao usá-la com Python:
- Os métodos em uma classe são mostrados como CLASS_NAME::METHOD_NAME. Por exemplo, para o método getSystem encontrado na classe GKSystem, a documentação mostrará GKSystem::getSystem. Em Python, os dois-pontos duplos são substituídos por um único ponto; portanto, para chamar o método, use GKSystem.getSystem().
- Exemplos em C++ podem mostrar métodos de objeto acessados por meio de ponteiros no formato "objectName->method(argument list)". Em Python, o formato deve ser objectName.method(argument list).
- O valor NULL em C/C++ é o valor None em Python. O valor NULL é equivalente ao valor inteiro 0, embora seja recomendado usar None.
- Valores booleanos em C++ são true e false. Em Python, são True e False.
- QList e QVector são convertidos internamente em listas Python, enquanto QMap é convertido em um dicionário.
- QString é convertido internamente em string Python Unicode.
Herança¶
As classes "leaf" na árvore de hierarquia de classes especificam apenas os métodos específicos daquele tipo de objeto. No exemplo do Macro Adjustment Experiment, há funções para obter e definir as Gradient Descent Iterations, pois este é um conceito exclusivo desse tipo de experimento, mas não há método getName() nessa classe nem qualquer opção para definir o mecanismo Macro ( i.e AoN, MSA, Frank Wolfe..) para esse experimento.
Esses atributos são definidos no nível mais apropriado mais acima na hierarquia de classes. Clicar na classe Macro Experiment mostra que ela possui os métodos para obter e definir o mecanismo Macro, pois essa é uma função necessária para todos os tipos de Macro Experiment. Os métodos para obter e definir o nome do objeto (e seu ID externo e descrição) são definidos na classe de nível superior GKBaseObject - todos os GKObjects terão esses atributos. Portanto, é lógico procurar um atributo genérico nas classes de nível mais alto e, mais abaixo na hierarquia de classes, atributos e métodos com especialização crescente.