newer 发表于 2025-5-12 08:35:00

XD::ELIST:ADD-DEFAULTS


;; ------------------------------------------------------------------------
;;; 函数名称 / Function Name: XD::ELIST:ADD-DEFAULTS
;;;
;;; 【功能说明 / Description】
;;;   为实体属性列表 E1 添加默认属性项(如果缺失),确保关键属性存在。
;;;   默认插入属性包括:6="BYLAYER",39=0.0,48=1.0,62=256,370=-1。
;;;   插入位置紧跟在图层属性(代码8)之后。
;;;
;;; 【参数说明 / Parameters】
;;;   e1 - (list) 实体属性列表,格式为 ((code . value) ...)
;;;
;;; 【返回值 / Return Value】
;;;   (list) 添加默认属性后的实体属性列表
;;;
;;; 【依赖函数 / Dependencies】
;;;   - assoc          : 查找属性代码对应的属性对
;;;   - vl-position    : 获取属性代码在列表中的位置
;;;   - xd::list:insert-nth : 在指定位置插入元素
;;;
;;; 【备注 / Notes】
;;;   - 该函数保证实体属性列表中关键属性存在,方便后续处理。
;;;   - 插入顺序依次递增,保持属性列表结构合理。
;;;
(defun XD::ELIST:ADD-DEFAULTS (e1 / n)
;; 获取图层属性(代码8)在列表中的位置
(setq n (vl-position (assoc 8 e1) e1))
(setq n (+ n 1)) ;; 插入位置紧跟图层属性之后
;; 如果缺少代码6(线型),插入默认值 "BYLAYER"
(if (not (assoc 6 e1))
    (progn
      (setq e1 (XD::LIST:INSERT-NTH (cons 6 "BYLAYER") e1 n))
      (setq n (+ n 1))
    )
)
;; 如果缺少代码39(透明度),插入默认值 0.0
(if (not (assoc 39 e1))
    (progn
      (setq e1 (XD::LIST:INSERT-NTH (cons 39 0.0) e1 n))
      (setq n (+ n 1))
    )
)
;; 如果缺少代码48(线宽),插入默认值 1.0
(if (not (assoc 48 e1))
    (progn
      (setq e1 (XD::LIST:INSERT-NTH (cons 48 1.0) e1 n))
      (setq n (+ n 1))
    )
)
;; 如果缺少代码62(颜色),插入默认值 256(BYLAYER)
(if (not (assoc 62 e1))
    (progn
      (setq e1 (XD::LIST:INSERT-NTH (cons 62 256) e1 n))
      (setq n (+ n 1))
    )
)
;; 如果缺少代码370(线型标识符),插入默认值 -1
(if (not (assoc 370 e1))
    (progn
      (setq e1 (XD::LIST:INSERT-NTH (cons 370 -1) e1 n))
      (setq n (+ n 1))
    )
)
;; 返回添加默认属性后的实体属性列表
e1
)
页: [1]
查看完整版本: XD::ELIST:ADD-DEFAULTS