Сделать текущим для работы с командами ac_reauest(...) элемент, выделенный в проекте.


Вызов:

int ires = ac_request("set_selected_element_as_current");


Здесь ires - если 0, то операция выполнена без ошибок, в противном случае ires = -1.



Пример.

Рассчитать откосы у выбранного окна. Результат посмотреть в отладчике LABPP BIM Master.


Открыть панель BIM Master и вписать 3331 и "Окна" в поля реакции на breakpoint. 

Внизу программы см. инструкцию 


breakpoint(3331, "Окна");



Записать программу в раздел "Программа" или в файл.

Выделяем элемент окна в проекте.

Если запускаем через окно программы:

Затем выполнить запуск программы.

Или записать в файл и выбрать этот файл в диалоге:



Чтобы повторно запустить программу из файла - нажимаем кнопку 4.

Далее - текст программы.


int main()

{

       //ac_request("set_element_by_guidstr_as_current", "F261B748-93F7-4BD7-B037-94E81A909671");

       if (ac_request("set_selected_element_as_current") == 0) {

               pies_from_elem_WINDOW();

       }

       else {

               cout << "Выберите элемент окна";

       }

}



//********************************************************************* Окна *****************************************


//reflected

//   True if mirrored to Y axis.

//oSide

//   True if mirrored to X axis.

//refSide

//   True if mirrored to X axis(same as oSide).



double dPies_from_elem_WINDOW_s_otkosov_ulich_stor;        // площадь откосов окна с уличной стороны

string sPies_from_elem_WINDOW_pie_otkosov_ulich_stor;      // пирог откосов окна с уличной стороны

double dPies_from_elem_WINDOW_s_verh_otkosov_ulich_stor;   // площадь верха откосов окна с уличной стороны

string sPies_from_elem_WINDOW_pie_verh_otkosov_ulich_stor; // пирог верха откосов окна с уличной стороны

double dPies_from_elem_WINDOW_s_otkosov_stor_pomesh;       // площадь откосов окна со стороны помещения

string sPies_from_elem_WINDOW_pie_otkosov_stor_pomesh;     // пирог откосов окна со стороны помещения

double dPies_from_elem_WINDOW_s_verh_otkosov_stor_pomesh;  // площадь верха откосов окна со стороны помещения

string sPies_from_elem_WINDOW_pie_verh_otkosov_stor_pomesh;// пирог верха откосов окна со стороны помещения

double dProperty_from_elem_WINDOW_s_okonnogo_bloka;        // площадь оконного блока

double dProperty_from_elem_WINDOW_s_okonnogo_proyema;      // площадь оконного проема

int pies_from_elem_WINDOW()

{

       dPies_from_elem_WINDOW_s_otkosov_ulich_stor = 0;         // площадь откосов окна с уличной стороны

       sPies_from_elem_WINDOW_pie_otkosov_ulich_stor = "";      // пирог откосов окна с уличной стороны

       dPies_from_elem_WINDOW_s_verh_otkosov_ulich_stor = 0;    // площадь верха откосов окна с уличной стороны

       sPies_from_elem_WINDOW_pie_verh_otkosov_ulich_stor = ""; // пирог верха откосов окна с уличной стороны

       dPies_from_elem_WINDOW_s_otkosov_stor_pomesh = 0;        // площадь откосов окна со стороны помещения

       sPies_from_elem_WINDOW_pie_otkosov_stor_pomesh = "";     // пирог откосов окна со стороны помещения

       dPies_from_elem_WINDOW_s_verh_otkosov_stor_pomesh = 0;   // площадь верха откосов окна со стороны помещения

       sPies_from_elem_WINDOW_pie_verh_otkosov_stor_pomesh = "";// пирог верха откосов окна со стороны помещения


       dProperty_from_elem_WINDOW_s_okonnogo_bloka = 0;

       ac_request_special("get_element_value", "GDL", "ac_unit_width"); // "Ширина дверной коробки, мм"

       double dvalue = ac_getnumvalue();

       ac_request_special("get_element_value", "GDL", "ac_unit_height"); //"Высота дверной коробки, мм"

       dProperty_from_elem_WINDOW_s_okonnogo_bloka = dvalue * ac_getnumvalue();


       ac_request_special("get_element_value", "GDL", "ac_wallhole_width"); // "Ширина оконного проема, мм"

       dvalue = ac_getnumvalue();

       ac_request_special("get_element_value", "GDL", "ac_wallhole_height"); //"Высота оконного проема, мм"

       dProperty_from_elem_WINDOW_s_okonnogo_proyema = dvalue * ac_getnumvalue();


       int ires = ac_request("get_element_value", "reflected");

       int reflected = ac_getnumvalue();

       ires = ac_request("get_element_value", "refSide"); // - окнодверь вставлено кликом на refSide стены

       int refside = ac_getnumvalue();

       ires = ac_request("get_element_value", "oSide"); // ?

       int oSide = ac_getnumvalue();

       ires = ac_request("get_element_value", "revealDepthFromSide");

       double revealDepthFromSide = ac_getnumvalue();

       ires = ac_request("get_element_value", "width");

       double doorwidth = ac_getnumvalue();

       ires = ac_request("get_element_value", "height");

       double doorheight = ac_getnumvalue();

       ires = ac_request("get_element_value", "gs_frame_thk");

       double doorkorobkathickness = ac_getnumvalue();


       ires = ac_request("get_element_value", "GuidAsText");

       string swindowguid = ac_getstrvalue();


       // найти толщину стены

       ires = ac_request("get_element_value", "OwnerGuidAsText"); // запрашиваем guid стены

       string swallguid = ac_getstrvalue();

       ac_request("set_element_by_guidstr_as_current", swallguid);

       ires = ac_request("get_element_value", "thickness");

       double dwallthickness = ac_getnumvalue();


       ac_request("set_element_by_guidstr_as_current", swindowguid);


       double square11 = revealDepthFromSide * doorwidth;

       double square12 = revealDepthFromSide * 2 * doorheight;

       double square21 = (dwallthickness - revealDepthFromSide - doorkorobkathickness) * doorwidth;

       double square22 = (dwallthickness - revealDepthFromSide - doorkorobkathickness) * 2 * doorheight;


       bool bward = refSide;

       if (oSide != true)

       {

               if (bward == true) {

                       bward = false;

               }

               else {

                       bward = true;

               }

       }

       ires = ac_request("elem_user_property", "get", "Отделка откосов окна с уличной стороны");

       string piename = ac_getstrvalue();

       if (str_regex_match(piename, "_.*") == true)

       {

               piename = strreplace(piename, "_", "", 1, 0, 1);

       }

       double square;

       if (bward != true)

       {

               square = square12;

       }

       else

       {

               square = square22;

       }

       dPies_from_elem_WINDOW_s_otkosov_ulich_stor = square; // площадь откосов окна с уличной стороны

       sPies_from_elem_WINDOW_pie_otkosov_ulich_stor = piename; // пирог откосов окна с уличной стороны


       ires = ac_request("elem_user_property", "get", "Отделка верхего откоса окна с уличной стороны");

       piename = ac_getstrvalue();

       if (str_regex_match(piename, "_.*") == true)

       {

               piename = strreplace(piename, "_", "", 1, 0, 1);

       }

       if (bward != true)

       {

               square = square11;

       }

       else

       {

               square = square21;

       }

       dPies_from_elem_WINDOW_s_verh_otkosov_ulich_stor = square;    // площадь верха откосов окна с уличной стороны

       sPies_from_elem_WINDOW_pie_verh_otkosov_ulich_stor = piename; // пирог верха откосов окна с уличной стороны


       ires = ac_request("elem_user_property", "get", "Отделка откосов окна со стороны помещения");

       piename = ac_getstrvalue();

       if (str_regex_match(piename, "_.*") == true)

       {

               piename = strreplace(piename, "_", "", 1, 0, 1);

       }

       if (bward != true)

       {

               square = square22;

       }

       else

       {

               square = square12;

       }

       dPies_from_elem_WINDOW_s_otkosov_stor_pomesh = square;        // площадь откосов окна со стороны помещения

       sPies_from_elem_WINDOW_pie_otkosov_stor_pomesh = piename;     // пирог откосов окна со стороны помещения


       ires = ac_request("elem_user_property", "get", "Отделка верхего откоса окна со стороны помещения");

       piename = ac_getstrvalue();

       if (str_regex_match(piename, "_.*") == true)

       {

               piename = strreplace(piename, "_", "", 1, 0, 1);

       }

       if (bward != true)

       {

               square = square21;

       }

       else

       {

               square = square11;

       }

       dPies_from_elem_WINDOW_s_verh_otkosov_stor_pomesh = square;   // площадь верха откосов окна со стороны помещения

       sPies_from_elem_WINDOW_pie_verh_otkosov_stor_pomesh = piename;// пирог верха откосов окна со стороны помещения


       breakpoint(3331, "Окна");

       return 0;

}

Created with the Personal Edition of HelpNDoc: Easily create Qt Help files