Как выбрать объекты одного слоя только с подписями вынесенными на карту ?
Стандартной команды нет, но, если мне не изменяет память, можн опопробовать найти такие объекты через Систему контроля карт. Почитайте тему и растущие из нее темы, а также поройтесь по форуму. К сожалению подробнее не расскажу, сам с этой системой знаком шапочно.
Функція дасть перелік об’єктів шару 1 для яких винесено підпис з параметра 3. Але разово позначити всі такі об’єкти не вдасться, хіба що попорядку перебрати.
[Captions] Ошибки выноса подписей
1: 3 ; У объекта %L1 недопустимый вынос подписи %P
Інша справа перебрати всі об’єкти карти в скрипті, проаналізувавши наявність підпису (якщо є така функція).
Ага
Ось знайшов:
@Map.SelectAll
$Count=@Map.SelCount
@If $Count<1 then @Break Карта не містить об’єктів
$Obg=0
$NObg=1
@Progress.Start $Count Виконую
@Map.BeginUpdate
%Start
@Progress.StepBy
$Obg=@Map.NextSelected $Obg
$Capt=@Map.Object[$Obg].Caption[13];підпис для параметра 13
@If $Capt= then @Map.DeselectObject $Obg
$NObg=$NObg+1
@If $NObg<=$Count then @Goto %Start
@Progress.Stop
@Map.EndUpdate
Скрипт помечает объекты слоя ID20000, у которых есть подпись параметра ID106.
$LayerID=20000
$ParamID=ID106
@Map.DeselectAll
$I=0
$N=@Map.Count
%Loop
$I=$I+1
$L=@Map.Object[$I].LayerID
@if $L<>$LayerID then @Goto %Skip
$S=@Map.Object[$I].Caption[$ParamID]
@if $S<> then @Map.SelectObject $I
%Skip
@if $I<$N then @Goto %Loop
Але чомусь команда $S=@Map.Object[$I].Caption[$ParamID] зміщує підпис не геометричний центр об’єкта. Може треба окрему функцію, щоб аналізувати винесення підпису ![]()