Skip to content

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