Skip to content

Perguntas Frequentes sobre a API Aimsun Next

Introdução

A API Aimsun Next é um conjunto de métodos que permite aos programadores ler e modificar informações usadas durante uma simulação microscópica Aimsun Next relacionadas a veículos, demanda, controle, dados de detecção, etc.

A API Aimsun Next está disponível em C++ e Python. O usuário deve decidir qual linguagem usar.

Os arquivos para construir uma API Aimsun Next em C++ estão localizados na pasta de instalação do Aimsun Next (programming/Aimsun Next API/cpp). Esta pasta também contém um projeto do Visual Studio que inclui todos os arquivos necessários para construir uma AAPI em C++. Os únicos arquivos que devem ser modificados são AAPI.cxx e AAPI.h

Os arquivos Micro/Meso para construir uma API Aimsun Next em Python estão localizados na pasta de instalação do Aimsun Next (programming/Aimsun Next API/python/samples). O único arquivo que deve ser modificado é sample.py

A API Aimsun Next requer uma licença especial?

Não, está incluída em todas as licenças de assinatura anual, que são: Edições Lite, Pro, Avançada e Especialista.

Perguntas Frequentes para APIs Aimsun Next em C++

Qual versão do Visual Studio eu devo usar?**

Com a versão para Windows, há um projeto do Visual Studio 2019 em C pronto para compilar e construir a DLL. O projeto do Visual Studio 2019 tem duas configurações disponíveis: a configuração de Depuração que constrói a AAPI_D.dll por padrão e as configurações de Liberação que constroem a AAPI_R.dll por padrão.

Para construir uma AAPI em 64 bits, selecione o menu Build / Configuration Manager do Visual Studio 2019 (x64). Em seguida, selecione x64 na caixa suspensa da plataforma de solução ativa.

Como depurar uma extensão da API

Inicie o depurador e anexe-o ao Aimsun Next (Ferramentas/Anexar... menu). Coloque os pontos de interrupção onde necessário e inicie a simulação. Observe que pode não reconhecer que a DLL está lá até que a simulação seja iniciada pela primeira vez. Se as funções AAPIInit ou AAPILoad forem depuradas, os pontos de interrupção colocados nesses métodos podem não ser alcançados, a menos que o depurador seja reiniciado usando (Ctrl+Shift+F5), após o que será possível depurar AAPILoad e AAPIInit.

Como usar strings

Existem dois métodos na AAPI que permitem conversões de ascii para unicode:

  • const unsigned short AKIConvertFromAsciiString(const char ascii): Este método converte qualquer string ascii em unicode.

  • const char AKIConvertToAsciiString(const unsigned short string, bool deleteUshortString, bool *anyNonAsciiChar): Este método converte qualquer string unicode em ascii. Observe que a string unicode pode conter caracteres não convertíveis, nesse caso, anyNonAsciiChar será definido como verdadeiro.

    00 const unsigned short* name = AKIConvertFromAsciiString("GKSection::nblanesAtt");
    01 bool anyNonAsciiChar;
    02 const char* ascii = AKIConvertToAsciiString( name, false, &anyNonAsciiChar );
    03 AKIPrintString( ascii );
    04 AKIPrintAsUNICODEString( name );
    
  • Linha 00: Conversão de Ascii para Unicode

  • Linha 02: Conversão de Unicode para Ascii
  • Linha 03, 04: imprimir em ambos os modos. Neste caso, imprime exatamente a mesma string

Perguntas Frequentes para a API Python Aimsun Next

A mensagem "Arquivo myScript.py não encontrado ou Sintaxe Incorreta" implica que myScript.py não é uma extensão válida.

A mensagem "Erro Python (): Nenhum módulo chamado novo" surge quando o Python não foi instalado no computador. Ele pode ser baixado de www.python.org.

Como usar parâmetros de entrada/saída

Ponteiros de tipos básicos são fornecidos. Os tipos disponíveis são: boolp, intp, floatp e doublep.

00 min_x = doublep()
01 min_y = doublep()
02 max_x = doublep()
03 max_y = doublep()
04 AKIInfNetGetWorldCoordinates( min_x, min_y, max_x, max_y )
05 print "min(%f, %f) max(%f, %f)"%(min_x.value(), min_y.value(), max_x.value(), max_y.value() )
  • Linha 00, 03: declaração de ponteiros duplos.
  • Linha 04: Chamada de método que inicializa as coordenadas mínimas e máximas do mundo.
  • Linha 05: Imprimindo o conteúdo das variáveis ponteiro.

Funções com int * representando um array de int como parâmetros de entrada são suportadas pela classe intArray. Um pequeno exemplo segue:

nextSections = intArray( 3 )
nextSections [0] = 182
nextSections [1] = 183
nextSections [2] = 184
AKIActionAddNextSubPathODAction(182, 3, nextSections, 286, 285, 0, 110, 100, 100)

Erro Python

(<type 'exceptions.AttributeError'>): 'módulo' objeto não tem atributo 'AAPIExitPedestrian'**

Esse erro ocorre quando algumas das treze funções de alto nível não estão definidas no arquivo com o código da API (neste caso, a função AAPIExitPedestrian). As funções que devem ser incluídas são: AAPILoad(), AAPIInit(), AAPISimulationReady(), AAPIManage(…), AAPIPostManage(…), AAPIFinish(), AAPIUnLoad(), AAPIPreRouteChoiceCalculation(...), AAPIVehicleStartParking(...), AAPIEnterVehicle(...), AAPIExitVehicle(...), AAPIEnterPedestrian(...), AAPIExitPedestrian(...), AAPIEnterVehicleSection(...), e AAPIExitVehicleSection(...).