Exemplo 6 da Micro API do Aimsun Next¶
Exemplo de Conexão ANG (Criando um novo atributo)¶
Este exemplo mostra como criar um novo atributo "Occupied" (como inteiro) no objeto de seção e, em seguida, definir um valor dependendo do valor de um atributo já definido (nesse 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>
// Procedures could be modified by the user
int AAPILoad()
{
return 0;
}
int AAPIInit()
{
//getting the attributes by name. A UNICODE conversion is required by using AKIConvertFromAsciiString method
void * roadTypeAtt = ANGConnGetAttribute(
AKIConvertFromAsciiString("GKSection::roadTypeAtt") );
void * Occupied = ANGConnGetAttribute( AKIConvertFromAsciiString("GKSection::Occupied" ));
if (Occupied == NULL){
Occupied = ANGConnCreateAttribute( AKIConvertFromAsciiString("GKSection"),
AKIConvertFromAsciiString("GKSection::Occupied"),
AKIConvertFromAsciiString("Occupied"), INTEGER_TYPE, EXTERNAL);
}
int NbSections=AKIInfNetNbSectionsANG();
for(int i=0; i<NbSections;i++)
{
bool anyNonAsciiChar;
int SecId = AKIInfNetGetSectionANGId(i);
//getting the value
int roadTypeId = ANGConnGetAttributeValueInt( roadTypeAtt, SecId );
bool nonChar;
char* roadTypeName = AKIConvertToAsciiString( ANGConnGetObjectName(roadTypeId), false, &nonChar );
if (roadTypeName == "Parking" ){
ANGConnSetAttributeValueInt( Occupied, SecId, 1 );
}else{
ANGConnSetAttributeValueInt( Occupied, 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:
Occupied = ANGConnGetAttribute( AKIConvertFromAsciiString("GKSection::Occupied" ))
if Occupied == None:
Occupied = ANGConnCreateAttribute( AKIConvertFromAsciiString("GKSection"), AKIConvertFromAsciiString("GKSection::Occupied"), AKIConvertFromAsciiString("Occupied"), 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 == "Parking" :
ANGConnSetAttributeValueInt( Occupied, SecId, 1 )
else:
ANGConnSetAttributeValueInt( Occupied, 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