Пример модуля для расчета по маркерам квартир
Эта расчетная позиция помимо своей позиции расчитывает и другие показатели.
Обратите внимание, что в памяти при этом создаются для каждого другого показателя сразу две переменных.
Число - для суммирования показателя.
Текстовая переменная - для сбора туда уникальных ID (GUID) элементов, которые опрошены в ходе расчета.
#include "tep_items_config.h"
string sProjInfoParameter = "LABPP ТЭП Площадь квартир, м2"; // имя параметра в информации о проекте
string sEdIzm = "м"+ iif(iHighLevelNumbersInEdIzm==1;smallnums("2");"2");
double dCalcResult;
string sCalcResult;
string sListGUID;
string sVersion = "1.01";
//<--
int main()
{
cout << sProjInfoParameter << " " << sVersion << "\n";
cout << "Слой маркеров квартир: " << GLOBAL_flat_markers_layer << "\n";
int iarg1; double darg2; string sarg3;
run_cpp("get_args", iarg1, darg2, sarg3);
if (sarg3 == "Get sProjInfoParameter, sEdIzm and Help")
{
var_extern_set("sProjInfoParameter", sProjInfoParameter);
var_extern_set("sEdIzm", sEdIzm);
string sHelp = "Суммируем свойства из маркеров квартир на слое= \"" + GLOBAL_flat_markers_layer + "\"";
var_extern_set("sHelp", sHelp);
return 0;
}
if (sarg3 == "Get sCalcResult")
{
ac_request_special("load_elements_list", 1, "ObjectType", 2,
"", "EP", "Layer", "=", GLOBAL_flat_markers_layer, "", ""
);
int i, icount;
ac_request("get_loaded_elements_list_count", 1);
icount = ac_getnumvalue();
coutvar << icount;
double dvalue = 0;
string sGUID;
double s_flat_coeff, s_flat_without_logii, s_flat_living;
for (i = 0; i < icount; i++)
{
if (ac_process_window("SetPhase", "Площади квартир ТЭП", icount) == true)
{
ac_process_window("Close");
return -1;
}
ac_request("set_current_element_from_list", 1, i);
ac_request("get_object_property_value", GLOBAL_flat_markers_var_COMMONAREA);
dvalue = ac_getnumvalue();
dCalcResult += tsround(dvalue,1);
ac_request("get_object_property_value", GLOBAL_flat_markers_var_COMMONAREACOEF);
dvalue = ac_getnumvalue();
s_flat_coeff += tsround(dvalue,1);
ac_request("get_object_property_value", GLOBAL_flat_markers_var_WITHOUTBALK);
dvalue = ac_getnumvalue();
s_flat_without_logii += tsround(dvalue,1);
ac_request("get_object_property_value", GLOBAL_flat_markers_var_LIVING_AREA);
dvalue = ac_getnumvalue();
s_flat_living += tsround(dvalue,1);
ac_request_special("get_element_value", "EP", "GuidAsText");
sGUID = ac_getstrvalue();
sListGUID += sGUID + "\n";
}
var_extern_set("s_flat_coeff", s_flat_coeff);
var_extern_set("s_flat_without_logii", s_flat_without_logii);
var_extern_set("s_flat_living", s_flat_living);
sCalcResult = number_to_string_TEP(dCalcResult);
var_extern_set("dCalcResult", dCalcResult);
var_extern_set("sCalcResult", sCalcResult);
var_extern_set("sListGuid", sListGUID);
return 0;
}
return 0;
}
Created with the Personal Edition of HelpNDoc: Make your documentation accessible on any device with HelpNDoc