明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2005|回复: 8

[请教]如何用entsel有选择的选择对象?

[复制链接]
发表于 2003-11-8 18:40:00 | 显示全部楼层 |阅读模式
就象(ssget)一样有个过滤功能,那么我能否用entsel来有分别的选择一个例如是"TEXT"的对象呢?
例如在程序中我要选择文字,但是如果我选择其他类型的对象,能否程序提示错误,然后重新来选择“text"对象呢?
发表于 2003-11-8 21:15:00 | 显示全部楼层
http://www.mjtd.com/function/list.asp?id=64&ordertype=bysort&orderkey=6
发表于 2003-11-10 08:30:00 | 显示全部楼层
不是很難哦.
          我是這樣做的, 我想這樣可以吧:
(SETQ A (CDR (ASSOC 0 (ENTGET (CAR (ENTSEL))))))
(WHILE (/= A "TEXT")
  (SETQ A (CDR (ASSOC 0 (ENTGET (CAR (ENTSEL)))))))
 楼主| 发表于 2003-11-10 18:44:00 | 显示全部楼层
如果选择为空的话,即什么都不选,就出错,怎么办?
为什么这时候A为NIL,也符合(WHILE (/= A "TEXT")
  (SETQ A (CDR (ASSOC 0 (ENTGET (CAR (ENTSEL))))))),怎么就不循环执行了呢?
发表于 2003-11-10 19:06:00 | 显示全部楼层
可以这样,不过不带退出了,
(WHILE (not (and (setq a (entsel))
              (= (cdr (assoc 0 (entget (car a)))) "TEXT")))
)

我自己写了个更好的,带提示,带右键退出,以后可以用SEL代替ENTSEL函数使用了:

  1. (defun sel (/ a)
  2.   (prompt "Select the object...")
  3.   (while (or (= (car (setq a (grread 2 4 2))) 5)))
  4.   (if (= (car a) 3) (setq a (ssget (cadr a))))
  5. a
  6. )
发表于 2003-11-10 19:29:00 | 显示全部楼层
不好意思,刚才那个不带过滤,过滤用这个
_type为要选择的类型,msg为提示语


  1. (defun Sel (_type msg / gr ent m)
  2.   (prompt msg)
  3.   (setq m nil)
  4.   (while (not m)
  5.     (setq gr (grread 2 4 2))
  6.     (cond
  7.       ((= (car gr) 3)
  8.        (setq ent (ssget (cadr gr)))
  9.        (if (and ent (= (cdr (assoc 0 (entget (setq ent (ssname  ent 0))))) _type))
  10.          (setq m t)
  11.          (setq ent nil)
  12.        )
  13.       )
  14.       ((= (car gr) 25) (setq m t))
  15.     )
  16.   )
  17.   ent
  18. )

 楼主| 发表于 2003-11-11 11:24:00 | 显示全部楼层
(command "_text" "j" "mc" pt1 txt_h txt_ro txt)
(setq e2 (car (entsel))
运行上面两句,然后就有提示,输入"l"就可得到刚生成物体的代码。
在(ssget "l")可以选择刚完成的物体,可是entsel怎样才能在程序里不用输入"l",就可以获取刚生成物体的代码呢?
发表于 2003-11-11 11:30:00 | 显示全部楼层
为什么什么都想用entsel?既然不是手动选择,用什么选不一样吗?只要能得到需要的对象就可以了啊。
最后一个生成的对象用(entlast)
发表于 2003-11-12 09:04:00 | 显示全部楼层
;;(test "\n选取直线" '((0 . "LINE")))
(defun TEST (MSG FILTER / SS)
  (while (null SS)
    (prompt MSG)
    (setq SS (ssget ":S" FILTER))
  )
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-27 06:16 , Processed in 0.180833 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表