Подскажите можно ли реализовать в макросе выборку объектов слоя в группу попадающих (полностью или частично) на экран монитора (без участия человека)
Выборка объектов попадающиъх на экран
17.09.2015 10:35:40
|
|
|
|
17.09.2015 13:04:03
Можно. Получаете координаты местности размеров экрана IMapView.GetBoundsRectangle. Создаете контур, а затем IntersectByContour (http://politerm.com/zuludoc/zuluax/Layer_IntersectByContour.htm)
|
|
|
|
17.09.2015 15:25:59
по поводу IMapView.GetBoundsRectangle какие координаты (сколько,какие он возвращает в справке этого нет)
|
|
|
|
18.09.2015 10:20:57
Зависит от проекции карты. Если MapDoc.GetCRS.ProjectionType = eProjPlan (0) то в сантиметрах Если eProjLatLon (1) то в градусах, остальное в метрах
|
|
|
|
19.09.2015 09:49:47
Не дописано, но тоже что и у MapDoc http://www.politerm.com.ru/zuludoc/zuluax/MapDoc_GetBoundsRectangle.htm
|
|||
|
|
29.09.2015 17:19:46
а из директории куда устанавливали программу "E:Program Filesulu 7.0ExamplesBuildingFLOORFLOOR.ZMP"
|
|
|
|
30.09.2015 10:41:02
Вопрос по Function IntersectByContour(Contour As Contour, Crit As eCrossCriteria, Reserved As Long) As ElementKeys
Crit As eCrossCriteria - как указывать в VbScript? |
|
|
|
30.09.2015 11:48:34
указывается числом вот что получилось:
|
|||
|
|
30.09.2015 11:50:07
спасибо
|
|
|
|
30.09.2015 13:23:40
Еще вопрос необходимо обыграть сообщение об ошибке открытия слоя если этот слой ответствует по указанному пути
Layer.Open "путь". В документации написано что "Если указанного слоя не существует, то возникает ошибка с кодом 260. " Как эту ошибку использовать чтобы программа в VbScript не вываливалась, а выводила к примеру сообщение "Слой "Путь" на найден" |
|
|
|
30.09.2015 13:58:24
разобралась через On Error GoTo 0 - по умолчанию прерывает выполнение программы при возникновении ошибки
On Error Resume Next - При включенном режиме On Error Resume Next, ошибка не приводит к прерыванию выполнения кода и программист имеет возможность самостоятельно разобраться с ней. On Error Resume Next Layer2.Open PUT_Plan if Err.Number <>0 then MSGBOX "Не найден слой" else MSGBOX "Загружаем слой" end if On Error GoTo 0 |
|
|
|
06.10.2015 14:27:00
IntersectByContour - прекрасно работает и получает список ключей объектов слоя пересекаемый контуром , но до тех пор пока слой не ограничен пространственным объектом в ZULU сервер, т.е. пересекаемый с контуром слой изначально отображается не полностью, а в усечёном виде.
В этом случае пересечение = 0. Как это обойти? |
|
|
|
06.10.2015 15:04:55
А пересекается слой с контуром в той части слоя, которая отображается или за пределами видимой области?
|
|
|
|
06.10.2015 15:38:41
и в пределах видимой области не дает пересечения в том то и дело
|
|
|
|
06.10.2015 16:40:11
Это связано наверно не столько с объектом ограничивающим видимость слоя но и накладываемой проекцией. Сейчас изменила проекцию карты на проекцию пересекаемого слоя и пересечение случилось даже при наложенных пространственных ограничениях, что то не так видимо с координатами экрана, проекций карты и проекции слоя какой то конфликт
|
|
|
|
06.10.2015 16:52:31
Проверил. У меня все работает. Пространственное ограничение никак не влияет.
|
||||
|
|
|||