Add APIs to get\set demand categories names

This commit is contained in:
Elad Salomons
2018-09-26 11:15:37 +03:00
parent 1e42b7f70d
commit c1c80da667
4 changed files with 88 additions and 3 deletions

View File

@@ -226,6 +226,9 @@ Public Const EN_G_CURVE = 4 ' General\default curve
Declare Function ENgetbasedemand Lib "epanet2.dll" (ByVal index As Long, ByVal DemandIndex As Long, value As Single) As Long
Declare Function ENgetdemandpattern Lib "epanet2.dll" (ByVal index As Long, ByVal DemandIndex As Long, PatIndex As Long) As Long
Declare Function ENgetdemandname Lib "epanet2.dll" (ByVal index As Long, ByVal DemandIndex As Long, ByVal demandName As String) As Long
Declare Function ENsetdemandname Lib "epanet2.dll" (ByVal nodeIndex As Long, ByVal DemandIndex As Long, ByVal demandName As String) As Long
Declare Function ENgetlinkindex Lib "epanet2.dll" (ByVal id As String, index As Long) As Long
Declare Function ENgetlinkid Lib "epanet2.dll" (ByVal index As Long, ByVal id As String) As Long
Declare Function ENgetlinktype Lib "epanet2.dll" (ByVal index As Long, code As Long) As Long

View File

@@ -936,6 +936,26 @@ extern "C" {
@see EN_QualityType
*/
int DLLEXPORT ENgetqualinfo(int *qualcode, char *chemname, char *chemunits, int *tracenode);
/**
@brief Sets the node's demand name for a category.
@param nodeIndex The index of a node.
@param demandIdx The index of a demand category.
@param demandName The demand name for the selected category.
@return Error code.
@see ENgetdemandname
*/
int DLLEXPORT ENsetdemandname(int nodeIndex, int demandIdx, char *demandName);
/**
@brief Retrieves the node's demand name for a category.
@param nodeIndex The index of a node.
@param demandIdx The index of a demand category.
@param demandName The demand name for the selected category.
@return Error code.
@see ENsetdemandname
*/
int DLLEXPORT ENgetdemandname(int nodeIndex, int demandIdx, char *demandName);
/**
@brief Sets the node's base demand for a category.
@@ -1287,12 +1307,14 @@ extern "C" {
int DLLEXPORT EN_getdemandmodel(EN_ProjectHandle ph, int *type, EN_API_FLOAT_TYPE *pmin,
EN_API_FLOAT_TYPE *preq, EN_API_FLOAT_TYPE *pexp);
int DLLEXPORT EN_setdemandmodel(EN_ProjectHandle ph, int type, EN_API_FLOAT_TYPE pmin,
int DLLEXPORT EN_setdemandmodel(EN_ProjectHandle ph, int type, EN_API_FLOAT_TYPE pmin,
EN_API_FLOAT_TYPE preq, EN_API_FLOAT_TYPE pexp);
int DLLEXPORT EN_setdemandname(EN_ProjectHandle ph, int nodeIndex, int demandIdx, char *demandName);
int DLLEXPORT EN_getdemandname(EN_ProjectHandle ph, int nodeIndex, int demandIdx, char *demandName);
int DLLEXPORT EN_getqualinfo(EN_ProjectHandle ph, int *qualcode, char *chemname, char *chemunits, int *tracenode);
int DLLEXPORT EN_setbasedemand(EN_ProjectHandle ph, int nodeIndex, int demandIdx, EN_API_FLOAT_TYPE baseDemand);
int DLLEXPORT EN_setdemandpattern(EN_ProjectHandle ph, int nodeIndex, int demandIdx, int patIndex);
int DLLEXPORT EN_setdemandpattern(EN_ProjectHandle ph, int nodeIndex, int demandIdx, int patIndex);
int DLLEXPORT EN_getcurveindex(EN_ProjectHandle ph, char *id, int *index);
int DLLEXPORT EN_getcurveid(EN_ProjectHandle ph, int index, char *id);
int DLLEXPORT EN_getcurvelen(EN_ProjectHandle ph, int index, int *len);

View File

@@ -530,6 +530,15 @@ int DLLEXPORT ENgetaveragepatternvalue(int index, EN_API_FLOAT_TYPE *value) {
return EN_getaveragepatternvalue(_defaultModel, index, value);
}
int DLLEXPORT ENgetdemandname(int nodeIndex, int demandIdx,
char *demandName) {
return EN_getdemandname(_defaultModel, nodeIndex, demandIdx, demandName);
}
int DLLEXPORT ENsetdemandname(int nodeIndex, int demandIdx,
char *demandName) {
return EN_setdemandname(_defaultModel, nodeIndex, demandIdx, demandName);
}
int DLLEXPORT ENgetrule(int index, int *nPremises, int *nTrueActions,
int *nFalseActions, EN_API_FLOAT_TYPE *priority) {
@@ -4762,6 +4771,55 @@ int DLLEXPORT EN_setbasedemand(EN_ProjectHandle ph, int nodeIndex, int demandIdx
return set_error(pr->error_handle, 0);
}
int DLLEXPORT EN_getdemandname(EN_ProjectHandle ph, int nodeIndex, int demandIdx, char *demandName) {
Pdemand d;
int n = 1;
EN_Project *p = (EN_Project*)ph;
strcpy(demandName, "");
/* Check for valid arguments */
if (!p->Openflag)
return set_error(p->error_handle, 102);
if (nodeIndex <= 0 || nodeIndex > p->network.Njuncs)
return set_error(p->error_handle, 203);
for (d = p->network.Node[nodeIndex].D; n < demandIdx && d->next != NULL; d = d->next) {
n++;
}
if (n != demandIdx) {
return set_error(p->error_handle, 253);
}
strcpy(demandName, d->Name);
return set_error(p->error_handle, 0);
}
int DLLEXPORT EN_setdemandname(EN_ProjectHandle ph, int nodeIndex, int demandIdx, char *demandName) {
EN_Project *pr = (EN_Project*)ph;
EN_Network *net = &pr->network;
Snode *Node = net->Node;
const int Nnodes = net->Nnodes;
const int Njuncs = net->Njuncs;
double *Ucf = pr->Ucf;
Pdemand d;
int n = 1;
/* Check for valid arguments */
if (!pr->Openflag)
return set_error(pr->error_handle, 102);
if (nodeIndex <= 0 || nodeIndex > Njuncs)
return set_error(pr->error_handle, 203);
for (d = Node[nodeIndex].D; n < demandIdx && d->next != NULL; d = d->next)
n++;
if (n != demandIdx)
return set_error(pr->error_handle, 253);
strncpy(d->Name, demandName, MAXMSG);
return set_error(pr->error_handle, 0);
}
int DLLEXPORT EN_setdemandpattern(EN_ProjectHandle ph, int nodeIndex, int demandIdx, int patIndex) {
EN_Project *pr = (EN_Project*)ph;

View File

@@ -99,4 +99,6 @@ EXPORTS
ENgetdemandmodel = _ENgetdemandmodel@16
ENsetdemandmodel = _ENsetdemandmodel@16
ENgetcurvetype = _ENgetcurvetype@8
ENinit = _ENinit@16
ENinit = _ENinit@16
ENgetdemandname = _ENgetdemandname@12
ENsetdemandname = _ENsetdemandname@12