xzd716 发表于 2021-8-21 12:06:25

请帮诊断程序循环问题在哪?

当选中text文字时, (princ (cdr (assoc 0 (entget aaa))))能显示出“text”,但一直提示“重新点选text文字:”,是循环条件“ (/= (cdr (assoc 0 (entget aaa))) "text")”有问题吗?请各位大侠指点!
(defun c:tt(/ aaa )
    (while (setq aaa (car (entsel "\n 点选text文字:")))
                      (princ "\n")
                      (princ (cdr (assoc 0 (entget aaa))))
                      (while (/= (cdr (assoc 0 (entget aaa))) "text")
                       (setq aaa (car (entsel "\n 重新点选text文字:")))
          )
                          (princ "ok")
    )
)       

kkq0305 发表于 2021-8-21 13:35:10

不就是想点选文字么用ssget 过滤 (ssname (ssget ":S:E" '((0 . "TEXT"))) 0)

xzd716 发表于 2021-8-21 13:56:04

我的实际用途是一次选一个text文字,选中后自动修改,再选下一个text文字,如此循环;当未选中text文字时,能接着重选,而不是退出。

kkq0305 发表于 2021-8-21 14:08:25

xzd716 发表于 2021-8-21 13:56
我的实际用途是一次选一个text文字,选中后自动修改,再选下一个text文字,如此循环;当未选中text文字时, ...

......你在这个基础上结合你原来的 代码 修改一下

yshf 发表于 2021-8-21 14:15:17

(defun c:tt(/ aaa )
    (while (and (setq aaa (car (entsel "\n 点选text文字<回车结束>:")))
                (= (setq name (cdr (assoc 0 (entget aaa)))) "TEXT")
           )
         (princ "\n    点选text文字")
         ;下面进行修改
   
    )
    (princ)
)      

xzd716 发表于 2021-8-21 14:19:55

本帖最后由 xzd716 于 2021-8-21 14:24 编辑

解决了,是大小写问题,谢谢各位指点!
页: [1]
查看完整版本: 请帮诊断程序循环问题在哪?