Skip To Content

esri_featurelayer_elevatetofield (AutoLISP)

(esri_featurelayer_elevatetofield) 函数用于修改指定要素图层的实体的 z 坐标,以及链接到这些要素的任何 TEXT 实体。

函数详细信息:

  • 如果未包含任何选择集,将修改要素图层的所有要素。
  • 该函数支持 POINT、POLYLINE、POLYGON 和 ANNOTATION 要素图层中的实体。

语法

(esri_featurelayer_elevatetofield flname field [elevation_settings])

参数

该函数的参数列表:

  • flname | 字符串 | 必填 | 工程图中的现有要素图层名称。
  • field | 字符串 | 必填 | 数值要素属性字段。
  • elevation_settings | 关联列表 | 可选 | 点对形式的可选设置列表,用于修改高程的修改方式。

    相关标注值类型值描述必填或可选
    "FIELDUNITS"

    string

    "Feet""USFeet""Meters" (不区分大小写)。

    可选(默认 "Meters"

    "ZFACTOR"

    双精度

    将每个要素的 FIELD 值乘以此数量确定高程。 覆盖 FIELDUNITS

    可选(默认值为 1.0)

    "SELECTIONSET"

    选择集

    AutoCAD 选择集,用于限制将修改的要素。 如果忽略,将修改要素图层的所有要素。

    可选(默认为要素图层的所有要素)

示例用法 1

在此示例中,将根据名为 ELEVATION 的要素属性字段(值单位为米)修改 Contours 要素图层的所有要素的高程。

(esri_featurelayer_elevatetofield "Contours" "ELEVATION")

结果示例用法 1

将根据 ELEVATION 属性字段的值修改 Contours 要素图层所有要素的高程,并返回一个 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 无效。