angel066499 发表于 2021-8-13 17:56:41

如何选择最后画出来的图形?


用(command "_.qdim" )画完的快速标注,有什么办法自动选择刚标注完的标注吗?

qijun0818 发表于 2021-8-14 18:29:06

(setq en(entlast)这个en就是最后一个生成的图元了

sunny_8848 发表于 2021-8-13 19:35:55

帮顶一次,我想标注最后画的圆直径,经常选不上

lxw320 发表于 2021-8-13 23:46:56

entlast      

angel066499 发表于 2021-8-15 11:26:02

lxw320 发表于 2021-8-13 23:46
entlast

entlast只是最后一个标注,想要的是qdim标出来的一整排哦

angel066499 发表于 2021-8-15 11:26:25

qijun0818 发表于 2021-8-14 18:29
(setq en(entlast)这个en就是最后一个生成的图元了

entlast只是最后一个标注,想要的是qdim标出来的一整排哦

qijun0818 发表于 2021-8-15 16:04:03

(defun xyp-SSelEntnext (en / ss);;本子函数by院长
        (setq ss (ssadd))
        (while (setq en (entnext en))
                (ssadd en ss)
        )
        (if (zerop (sslength ss))
                nil
                ss
        )
)
;qdim之前先获取最后一个图元
(setq en(entlast))
;然后qdim(vl-cmdf "qdim"......)......
(setq s1(xyp-SSelEntnext en))
;这个s1就是qdim以后的所有标注了

angel066499 发表于 2021-8-15 17:07:31

qijun0818 发表于 2021-8-15 16:04
(defun xyp-SSelEntnext (en / ss);;本子函数by院长
        (setq ss (ssadd))
        (while (setq en (entnext en)) ...

感谢指导!之前也是这样弄的,但是qdim完成后,下面的代码就不跑了,很奇怪!
;;125.1 [功能] 获取在图元 en 之后产生的图元列表
(defun MJ:EntNextAll (EN / LST)
(if EN
    (while (setq EN (entnext EN))
      (if (not (member (cdr (assoc 0 (entget EN)))
                     '("ATTRIB" "VERTEX" "SEQEND")
             )
          )
        (setq LST (cons EN LST))
      )
    )
)
(reverse LST)
)

(setq 0t (entlast))
(command "qdim")
(setq enlst (MJ:EntNextAll 0t))

这里,(command "qdim")执行完后,下一句程序就不跑了,手动跑一次(setq enlst (MJ:EntNextAll 0t)),它就可以,不知道为什么:dizzy:

hd654 发表于 2023-11-5 00:52:33

解决了吗??
页: [1]
查看完整版本: 如何选择最后画出来的图形?