Skip To Content

esri_featurelayer_elevatetofield (AutoLISP)

Функция esri_featurelayer_elevatetofield изменяет z-координаты элементов указанного векторного слоя и любых элементов TEXT, связанных с этими объектами.

Описание функции следующее:

  • Если набор выборки не включен, все объекты векторного слоя будут изменены.
  • Эта функция поддерживает элементы векторных слоев POINT, POLYLINE, POLYGON и ANNOTATION.

Синтаксис

(esri_featurelayer_elevatetofield flname field [elevation_settings])

Аргументы

  • flname | string | обязательный | имя существующего векторного веб-слоя чертежа.
  • field | string | обязательный | поле числового атрибута объекта.
  • elevation_settings | связанный список | дополнительный | Список дополнительных настроек в виде пар значений, разделённых точкой, позволяющих задать способ изменения значений высот, как указано ниже:

    Связанная надписьТип значенияОписание значенияОбязательные или дополнительные
    "ZFACTOR"

    double

    Умножает значение FIELD каждого объекта на эту величину, чтобы определить высоту. Этот аргумент замещает FIELDUNITS.

    Необязательно (по умолчанию 1.0)

    "FIELDUNITS"

    string

    Единицы измерения высот. Корректные значения "Feet", "USFeet" и "Meters" (регистр не учитывается).

    Дополнительно (игнорируется, если присутствует ZFACTOR)

    "SELECTIONSET"

    набор выборки

    Набор выборки AutoCAD ограничивает, какие из объектов будут изменены. Если значение не указано, все объекты векторного слоя будут изменены.

    Дополнительно (по умолчанию все объекты векторного слоя)

Пример использования 1

В этом примере изменяется высота всех объектов векторного слоя Contours на основе атрибутивного поля объекта ELEVATION, где единицами измерения значений являются метры.

(esri_featurelayer_elevatetofield "Contours" "ELEVATION")

Пример использования результата 1

В этом примере изменяется высота всех объектов векторного слоя Contours на основе значений атрибутивного поля ELEVATION и возвращается список значений true с числом измененных объектов.

(T 49)

Пример использования 2

В этом примере изменяется высота набора выборки пространственных объектов векторного слоя Spot_Elevation, и высоты, хранящиеся в поле ELEVATION, которые необходимо умножить на масштабный коэффициент для пересчета из метров в футы.

(progn
(setq ss (ssget))
(esri_featurelayer_elevatetofield "Spot_Elevation" "ELEVATION"
  (list
    (cons "ZFACTOR" 3.28084)
    (cons "SELECTIONSET" ss)
)))

Пример использования результата 2

В этом примере изменяется высота выбранного набора объектов высот на основе указанного коэффициента масштабирования и возвращается список значений true с количеством измененных объектов.

(T 20)

Возвращаемые значения

Ниже перечислены возможные возвращаемые значения:

  • В случае успеха возвращается список значений true и число измененных элементов: (T <n>).
  • В случае неудачи, возвращает список с первым значением nil, а затем связанный список, содержащий значение ключа "Error" и соответствующее сообщение об ошибке в виде строки: (nil ( "Error" . "<message>")).

Не удалось возвратить значения

Неудачное возвращение значения может произойти по любой из следующих причин:

  • (nil ("Error" . "Cannot calculate unit scale factor from current coordinate system."))

    Функция не может распознать указанные пользователем единицы или единицы системы координат карты.

  • (nil ("Error" . "Missing required argument."))

    Не указан один или несколько обязательных аргументов.

  • (nil ("Error" . "Feature layer not found."))

    Заданный векторный слой не найден в чертеже.

  • (nil ("Error" . "No supported feature layers found."))

    Слой имеет геометрический тип MULTIPATCH, который не поддерживается.

  • (nil ("Error" . "Field not found."))

    Имя поля не найдено, или указано недопустимое значение elevation_settings.