get_layer_by_substring
Получить полное имя слоя по частичному фрагменту.
Требуется, когда пользователи договариваются именовать слои в ARCHICAD с числовыми или текстовыми префиксами.
Например слой "Квартиры" можно написать как "01 Квартиры" или "20 Квартиры". Такой подход встречается когда пользователь хочет установить удобный ему порядок следования слоев в проекте.
Однако с точки зрения программы - это совершенно разные слои.
Чтобы избежать ошибки, удобно пользоваться данной функцией.
Вызов:
int ires = ac_request("get_layer_by_substring",string slayernamefragment, int from);
int ires = ac_request("get_layer_by_substring",string slayernamefragment, int from, int range);
Здесь:
slayernamefragment - фрагмент в имени, который точно определяет слой (например "Квартиры").
from - порядковый номер символа от начала полного имени слоя в проекте, с которого начать сравнение на соответствие.
range - количество символов, которые нужно проверить.
ires - 0, если слой найден.
Полное наименование найденного слоя считывается командой ac_getstrvalue();
Пример.
Получить полное имя слоя "Квартиры" в проекте, если известно, что в организации принято для сортировки слоев пользоваться префиксом типа "01 ".
string smalllayername="Квартиры";
string longlayername;
ires = ac_request("get_layer_by_substring",smalllayername,3); // начать сравнение с 3-й позиции
if(ires != 0) {
tsalert(-1,"Ошибка во время выполнения","Не обнаружен слой",smalllayername);
cout << "Ошибка: Не обнаружен слой - "<< smalllayername << "\n";
}
longlayername = ac_getstrvalue(); // считать полное имя слоя