找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1465|回复: 4

[求助] [求助]:请教高手,谁有这样一个带提示和过滤表的entsel?

[复制链接]
发表于 2009-6-11 10:40:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
请教高手,谁有这样一个带提示和过滤表的entsel?

(setq aa (X-Entsel "\n请选择文字:" nil '((0 . "*TEXT"))))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2009-6-11 14:10:13 | 显示全部楼层

  1. [FONT=courier new]
  2. ;;;I:EntSelF
  3. ;;;(entsel)和(ssget)的结合,与(entsel)不同,你可提供一个过滤器。与(ssget)不同,你可提供一个提示。
  4. ;;;参数
  5. ;;;Msg:选择提示字符串,或为空。Filter:(ssget)形式的过滤器,或为空。
  6. ;;;示例
  7. ;;;(I:EntSelF "polyline: " '((0 . "Polyline,LWPolyline")))
  8. ;;;注意
  9. ;;;以上例子将返回如下,如果多义线在选择框区域内:(<Entity name: 19bb188> (12.14 11.0767 0.0)),或者如无多义线则为空(nil)。
  10. ;;;在图形对象非常多的图形中该程序是非常有用的。
  11. ;;;作者
  12. ;;;[B][Color=Navy]R. Robert Bell[/Color][/B]

  13. (defun I:EntSelF
  14.                  (Msg                        ; selection prompt
  15.                   Filter                ; filter list
  16.                   / EntN                ; (entsel) list, or "Exit" string
  17.                   pbDist                ; pickbox size in drawing units
  18.                   PtPick                ; point of selection from (entsel)
  19.                   ssPick                ; selection set
  20. ) ;_ closes variable declare
  21.   (while (not EntN)                        ; while no selection (or no exit)
  22.     (setq
  23.       EntN (if Msg                        ; if selection prompt
  24.              (entsel Msg)                ; then (entsel) w/prompt

  25.              (entsel)                        ; else plain (entsel)
  26.            ) ;_ closes if
  27.     ) ;_ closes setq
  28.     (if        (= (getvar "ErrNo") 52)                ; if null response
  29.       (setq EntN "Exit")                ; then set flag to exit
  30.     ) ;_ closes if
  31.   ) ;_ closes while
  32.   (cond
  33.     ((/= EntN "Exit")                        ; if not exit
  34.      (setq
  35.        pbDist (abs                        ; return absolute number
  36.                 (/
  37.                   (*
  38.                     (/                        ; get pixel ratio
  39.                       (getvar "PickBox")
  40.                       (cadr (getvar "ScreenSize"))
  41.                     )
  42.                     (getvar "ViewSize")        ; apply to viewsize
  43.                   ) ;_ closes *
  44.                   (sin (* 0.25 pi))        ; at 45?
  45.                 ) ;_ closes /
  46.               ) ;_ closes abs
  47.        PtPick (cadr EntN)                ; get point of pick
  48.      ) ;_ closes setq
  49.      (if (setq ssPick (ssget "_C"        ; if entities in crossing
  50.                              (polar PtPick (* 1.25 pi) pbDist)
  51.                              (polar PtPick (* 0.25 pi) pbDist)
  52.                              Filter        ; match filter, if any
  53.                       ) ;_ closes ssget
  54.          ) ;_ closes setq
  55.        (cons                                ; then return first entity as (entsel)
  56.          (ssname ssPick 0)
  57.          (list PtPick)
  58.        ) ;_ closes cons
  59.      ) ;_ closes if
  60.     ) ;_ closes condition
  61.   ) ;_ closes cond
  62. ) ;_ closes defun I:EntSelF[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2009-6-11 14:15:59 | 显示全部楼层
谢谢 秋枫 斑竹!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-6-11 17:22:37 | 显示全部楼层
偶也来一个。


  1. ;;;(JW-ENTSEL "\n选择多段线: " '((0 . "Polyline,LWPolyline")))
  2. ;;;用ssget实现entsel过滤选择
  3. ;;;By carrot1983 6/11/09
  4. (defun JW-ENTSEL (MSG FILTER / SS LST)
  5.   (prompt MSG)
  6.   (if (setq SS (ssget ":S:E" FILTER))
  7.     (progn
  8.       (setq LST (car (ssnamex SS 0)))
  9.       (list (cadr LST) (cadr (last LST)))
  10.     )
  11.   )
  12. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-6-14 23:48:36 | 显示全部楼层
我试了二楼和四楼的程序,达不到我的要求.
这是shlisp的一个函数:
增强型entsel
语法
(gps->entsel msg keyword filter_list)

功能及参数
变量 [类型]:
msg         = 注释 [STR]
keyword     = initget的keyword [STR]
filter_list = 过滤字符表.参见ssget [LIST]

范例
1.(gps->entsel "\n选择直线或圆/Undo/Option/eXit"

  "Undo Option eXit" '((0 . "*LINE,CIRCLE,ARC")))

2.

(while   (= (type  (setq ent (gps->entsel
                "\n提示:" "X H Y N" '((0 . "*LINE,CIRCLE,ARC")))))
         'STR)

    (cond ((= ent "X")())
          ((= ent "H")())
    )
)

 

 

blog | 网络U盘 | 意见

--------------------------------------------------------------------------------

;只选择半径为1的圆.
1. (ssget  '((-4 . "<AND")(0 . "CIRCLE")(40 . 1.0) (-4 . "AND>")))  


2. (gps->entsel "\n圆/Undo/Option/eXit"  "Undo Option eXit"
'((-4 . "<AND")(0 . "CIRCLE")(40 . 1.0) (-4 . "AND>")))

3. (gps->nentsel "\n圆/Undo/Option/eXit"  "Undo Option eXit"
'((-4 . "<AND")(0 . "CIRCLE")(40 . 1.0) (-4 . "AND>")))
  gps->nentsel建议不要使用-4的组码过滤.有-4组码时.过滤块中物体时采用entmak生成子体再过滤.

  对于非统一比例的块可能不对.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 06:58 , Processed in 0.193100 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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