Biblioteca de Script¶
Usando a documentação de Scripting¶
A documentação de todas as classes e métodos do Aimsun Next disponíveis para scripting é fornecida como um conjunto de arquivos HTML: Abra estes com um navegador de internet
Program Files/Aimsun/Aimsun Next X.X/programming/Scripting/docs/index.md.
Clique na aba Classes para listar as classes disponíveis.
A aba Hierarquia da Classe 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 da classe para uma classe pode ser exibida clicando nela, como mostrado abaixo para a classe de Experimento de Ajuste Macro. Isso mostra a hierarquia da classe e os métodos específicos para esta classe.
Em Funções Públicas Membro, os métodos específicos para esta classe são mostrados. Por exemplo, para executar o experimento, chame:
success=myMacroAdjExperiment.Execute("1001")
e para definir o número de iterações de descenso do gradiente (para 5) chame:
myMacroAdjExperiment.setGradientDescentIterations(5)
Clicar no nome do método rola para baixo para uma descrição mais detalhada do método, descrevendo seu propósito, a ordem dos parâmetros, etc.
Restrições de Linguagem¶
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 em C++ e usa C++ para todos os exemplos, há algumas mudanças ao usá-la com Python:
- 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. No Python, os dois pontos são substituídos por um único ponto, então para chamar o método use GKSystem.getSystem().
- Exemplos em C++ podem mostrar métodos de objeto acessados através de ponteiros na forma "objectName->method(argument list)". No 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, eles são True e False.
- QList e QVector são convertidos internamente em listas do Python, enquanto QMap é convertido em um dicionário.
- QString é convertido internamente em string Unicode do Python.
Herança¶
As classes "folha" na árvore de hierarquia de classes especificam apenas os métodos específicos para aquele tipo de objeto. No exemplo do Experimento de Ajuste Macro, há funções para obter e definir as iterações de descenso do gradiente, pois este é um conceito exclusivo para esse tipo de experimento, mas não há um método getName() nessa classe ou qualquer opção para definir o motor Macro (ou seja, 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 de Experimento Macro mostra que ela tem os métodos para obter e definir o motor Macro, pois esta é uma função requerida para todos os tipos de Experimento Macro. Os métodos para obter e definir o nome do objeto (e seu ID externo e descrição) são definidos na classe GKBaseObject de nível superior - todos os GKObjects terão esses atributos. Portanto, é lógico procurar nas classes de nível superior por um atributo genérico e mais abaixo na hierarquia de classes por atributos e métodos com especialização crescente.