Exemplo da Micro API Aimsun Next 6¶
Exemplo de Conexão ANG (Criando um novo atributo)¶
Este exemplo mostra como criar um novo atributo "Ocupado" (como inteiro) no objeto seção e então definir um valor dependendo do valor de um atributo já definido (neste caso, o tipo de via).
Versão C++¶
#include "AKIProxie.h"
#include "CIProxie.h"
#include "ANGConProxie.h"
#include "AAPI.h"
#include <stdio.h>
#include <string.h>
// As rotinas podem ser modificadas pelo usuário
int AAPILoad()
{   
    return 0;
}
int AAPIInit()
{   
    //obtendo os atributos pelo nome. É necessária uma conversão UNICODE usando o método AKIConvertFromAsciiString
    void * roadTypeAtt = ANGConnGetAttribute( 
AKIConvertFromAsciiString("GKSection::roadTypeAtt") );
    void * Ocupado = ANGConnGetAttribute( AKIConvertFromAsciiString("GKSection::Ocupado" ));
    if (Ocupado == NULL){
        Ocupado = ANGConnCreateAttribute( AKIConvertFromAsciiString("GKSection"), 
                    AKIConvertFromAsciiString("GKSection::Ocupado"),
                    AKIConvertFromAsciiString("Ocupado"), INTEGER_TYPE, EXTERNAL);
    }
    int NbSections=AKIInfNetNbSectionsANG();
    for(int i=0; i<NbSections;i++)
    {
        bool anyNonAsciiChar;
        int SecId = AKIInfNetGetSectionANGId(i);
        //obtendo o valor
        int roadTypeId = ANGConnGetAttributeValueInt( roadTypeAtt, SecId );
        bool nonChar;
        char* roadTypeName = AKIConvertToAsciiString( ANGConnGetObjectName(roadTypeId), false, &nonChar ); 
        if (roadTypeName == "Estacionamento" ){
            ANGConnSetAttributeValueInt( Ocupado, SecId, 1 );
        }else{
            ANGConnSetAttributeValueInt( Ocupado, SecId, 0 );
        }
    }
    return 0;
}
int AAPISimulationReady()
{
    return 0;
}
int AAPIManage(double time, double timeSta, double timeTrans, double acycle)
{
    return 0;
}
int AAPIPostManage(double time, double timeSta, double timeTrans, double acycle)
{ 
    return 0;
}
int AAPIFinish()
{
    return 0;
}
int AAPIUnLoad()
{
    return 0;
}
Versão Python¶
from AAPI import *
from PyANGKernel import *
def AAPILoad():
    return 0
def AAPIInit():
    model = GKSystem.getSystem().getActiveModel()
    roadTypeAtt = ANGConnGetAttribute( AKIConvertFromAsciiString("GKSection::roadTypeAtt" ))
    if roadTypeAtt!= None:
        Ocupado = ANGConnGetAttribute( AKIConvertFromAsciiString("GKSection::Ocupado" ))
        if Ocupado == None:
            Ocupado = ANGConnCreateAttribute( AKIConvertFromAsciiString("GKSection"), AKIConvertFromAsciiString("GKSection::Ocupado"), AKIConvertFromAsciiString("Ocupado"), INTEGER_TYPE, EXTERNAL)
        NbSections = AKIInfNetNbSectionsANG()
        for i in range(0, NbSections):
            SecId = AKIInfNetGetSectionANGId(i)
value = ANGConnGetAttributeValueInt( roadTypeAtt, SecId )
nonChar = boolp()
roadTypeName = AKIConvertToAsciiString( ANGConnGetObjectName(roadTypeId), False, nonChar )
            if roadTypeName == "Estacionamento" :
                ANGConnSetAttributeValueInt( Ocupado, SecId, 1 )
            else:
                ANGConnSetAttributeValueInt( Ocupado, SecId, 0 )
    return 0
def AAPISimulationReady():
    return 0
def AAPIManage(time,timeSta,timTrans,acicle):
    return 0
def AAPIPostManage(time,timeSta,timTrans,acicle):
    return 0
def AAPIFinish():
    return 0
def AAPIUnLoad():
    return 0