CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 文档中心

关于处理列表元素 (DCL)

2023-1-8 08:57| 发布者: admin| 查看: 1780| 评论: 0|来自: AutoCAD

摘要: 因为一个 list_box磁贴可以包含前导空格(尤其是在检索多个项目时),请不要将值作为字符串比较进行测试。

由于 atile 的值可以包含前导空格(尤其是在检索多个项目时),因此不要将该值作为字符串比较进行测试。list_box

在处理列表框之前,先使用函数将值转换为整数。您还可以使用 read 函数,该功能会自动将令牌转换为整数。例如,对于仅接受单个选择的名为的列表,以下代码段将检查是否选择了列表中的第三项:list_boxatoijustone

(setq index ( get_tile "justone"))
(cond
  ((/= index "")                   ;See if string is empty.
    (= 2 (atoi index))
    .                              ; Process the third entry.
    .
    .
  )
)

有必要首先检查字符串是否为空,因为函数为空字符串和字符串返回 0。atoi"0"

弹出列表的值永远不会有前导空格,因此您不必转换该值。弹出列表不允许多项选择。

如果列表框支持多项选择,则程序必须执行转换并单步执行值字符串中的多个值。以下定义返回一个列表,该列表仅包含用户从原始项目中选择的项目。(在此示例中,显示列表作为全局变量进行维护。该函数希望使用列表框的当前$value进行调用:MK_LISTdisplistdisplistMK_LIST

(defun MK_LIST (readlist / count item retlist)
  (setq count 1)
  (while (setq item (read readlist))
    (setq retlist (cons (nth item displist) retlist))
    (while (and (/= " " (substr readlist count 1))
                       (/= "" (substr readlist count 1)))
      (setq count (1+ count))
    )
    (setq readlist (substr readlist count))
  )
  (reverse retlist)
)

前面的两个示例也适用于单个选择的情况。


路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-5-19 12:22

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部