set_selected_element_as_current
Сделать текущим для работы с командами 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