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