找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: 陌生人

[讨论]:如何做带提示和过滤表的entsel ?

[复制链接]
发表于 2003-12-31 08:07:54 | 显示全部楼层

  1. ;;这是简化ll_j的程序,还可再简化...
  2. ;;(XENTSEL "\n选择直线或圆"  "Two One" '((0 . "*LINE,CIRCLE")))
  3. (defun XENTSEL (MSG KEYWORD FILTER_LIST / $S0 $S01)
  4.   ;;keyword是一个关键词串,无关键词,输入""""。如果回车表示退出,可以将字符串以两个半角空格结束。
  5.   ;;filter_list是特征关联表,目前只支持并联关系,无特征关联表输入"nil"。
  6.   (initget KEYWORD)
  7.   (setq $S0 (entsel MSG))
  8.   (cond
  9.     ((and (= $S0 NIL) (= 52 (getvar "ErrNo"))) NIL) ;回车结束,返回nil

  10.     ((= $S0 NIL) (XENTSEL MSG KEYWORD FILTER_LIST)) ;空选重复

  11.     ;;关键词是一定的,这样即可
  12.     ((= (type $S0) 'STR)                ;返回关键词
  13.      $S0
  14.     )

  15.     ;|
  16.     ((and (= (type $S0) 'STR)                ;返回关键词
  17.           (member (read $S0) (read (strcat "(" KEYWORD ")")))
  18.      )
  19.      $S0
  20.     )|;

  21.     ;;
  22.     ((= (type $S0) 'list)
  23.      (if (setq $S01 (ssget (cadr $S0) FILTER_LIST))
  24.        (setq
  25.          $S0 (list (ssname $S01 0) (cadr $S0))
  26.        )
  27.        (XENTSEL MSG KEYWORD FILTER_LIST)
  28.      )
  29.     )

  30.     ;|   
  31.     ((= (type $S0) 'list)                ;返回实体与点表,与entsel相同
  32.      (if FILTER_LIST                        ;存在特征关联表
  33.        (if
  34.          (not
  35.            (member                        ;判断特征关联表全为"真"
  36.              'NIL
  37.              (mapcar
  38.                '(lambda        ($X)
  39.                   (if (= (type (cdr $X)) 'STR)
  40.                     (wcmatch (cdr (assoc (car $X) (entget (car $S0))))
  41.                              (cdr $X)
  42.                     )                        ;字符串关联表项
  43.                     (equal (cdr (assoc (car $X) (entget (car $S0))))
  44.                            (cdr $X)
  45.                     )                        ;其它关联表项
  46.                   )
  47.                 )
  48.                FILTER_LIST
  49.              )
  50.            )
  51.          )
  52.           $S0                                ;真,返回实体与点表
  53.           (XENTSEL MSG KEYWORD FILTER_LIST) ;假,循环拾取
  54.        )
  55.        $S0
  56.      )
  57.     )
  58.     |;
  59.     (t (XENTSEL MSG KEYWORD FILTER_LIST)) ;其它拾取及输入情况,循环拾取
  60.   )
  61.   $S0
  62. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2003-12-31 09:39:22 | 显示全部楼层

  1. 谢谢LUCAS。
  2. 关于特征关联表段代码应该是这样的:
  3. ;;
  4.     ((= (type $s0) 'LIST)                       ;返回实体与点表,与entsel相同
  5.      (if filter_list                                                 ;存在特征关联表
  6.        (if (ssmemb (car $s0) (ssget (osnap (cadr $s0) "nea") filter_list))
  7.          $s0                                    ;真,返回实体与点表
  8.          (xentsel msg keyword filter_list)      ;假,循环拾取
  9.        )
  10.        $s0
  11.      )
  12.     )
  13. ;;
  14. 此段代码在特殊情况下是不能判别的,这是ssget函数的缺陷,实际上“(ssget pt filter_list)”虽然
  15. 满足ssget函数用法的解释,但在捕捉点在一个交点,也就是通过pt的实体不止一个时,使用此语句得到
  16. 的选择集只包括一个实体,此时应理解为错误。事实上,在ssget函数的例句中也没有此种用法。
  17. 因而此段代码应另寻方法。
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-12-31 12:10:15 | 显示全部楼层
我是这样做

  1. ((setq ss (ssget (cadr el) filter))                                                     ;;选中实体;
  2.          (if e (if (not(equal e   (ssname ss 0)))
  3.                    (setq draw (redraw e 4)
  4.                          e    (ssname ss 0)
  5.                          draw (redraw e 3))
  6.                 )
  7.                (setq e (ssname ss 0) draw (redraw e 3))
  8.          )
  9.          (if (= 3 (car el))
  10.              (setq roop nil
  11.                    draw (redraw e 4)
  12.                    entl (cons e (list (osnap (cadr el) "nea")))
  13.          )   )
  14.       )

(member                                                 ;判断特征关联表全为“真”
               'nil
               (mapcar
                 '(lambda ($x)
                    (if        (= (type (cdr $x)) 'STR)
                      (wcmatch (cdr (assoc (car $x) (entget (car $s0)))) (cdr $x))  ;字串关联表项
                      (equal (cdr (assoc (car $x) (entget (car $s0)))) (cdr $x))    ;其它关联表项
                    )
                  )
                 filter_list
               )
             )
;关于特征关联表:

我觉得可以考虑用(setq  e (entsel))后在用(ssget (cadr e)“关联表”)来取得实体,因为如果(entsel )取得物体成功,那么ssget 也应可以。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-12-31 14:48:57 | 显示全部楼层

  1. ;;(ssmemb (car (entsel)) nil)会出错
  2. ;;
  3. ((= (type $S0) 'list)                ;返回实体与点表,与entsel相同
  4.      (if FILTER_LIST                        ;存在特征关联表
  5.        (if (and (setq $S01 (ssget (osnap (cadr $S0) "nea") FILTER_LIST))
  6.                   (ssmemb (car $S0) $S01)
  7.          )
  8.           $S0                                ;真,返回实体与点表
  9.           (XENTSEL MSG KEYWORD FILTER_LIST) ;假,循环拾取
  10.        )
  11.        $S0
  12.      )
  13.     )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2003-12-31 18:21:46 | 显示全部楼层
再次谢谢LUCAS,将函数重新整理一下,贴出如下:

  1. ;;;支持特征关联表的单选实体,格式:(xentsel msg keyword filter_list)
  2. ;;;未选中符合条件实体重复选择,回车退出。
  3. ;;;返回值:关键字、图元名与拾取点构成的表,空(nil,回车)。
  4. ;;;msg运行输入提示字符,无提示,输入“""”;
  5. ;;;keyword是一个关键字串,无关键字,输入“""”;
  6. ;;;filter_list是特征关联表,无特征关联表输入“nil”。
  7. ;;;由于ssget函数限制,拾取实体时应避免在多个实体重复点。
  8. ;;;输入“Last”时将返回由最后实体与点“'(0 0 0)”构成的表。

  9. (defun xentsel(msg keyword filter_list / $s0 $s01)
  10.   (initget keyword)
  11.   (setq $s0 (entsel msg))
  12.   (cond
  13.     ((and (= $s0 nil) (= (getvar "ERRNO") 52)) nil)     ;回车结束,返回nil
  14.     ((= $s0 nil) (xentsel msg keyword filter_list))            ;空选重复
  15.     ((= (type $s0) 'STR) $s0)                                  ;返回关键字
  16.     ((= (type $s0) 'LIST)                               ;返回实体与点表,与entsel相同
  17.      (if filter_list                                    ;存在特征关联表
  18.        (if (and (setq $s01 (ssget (cadr $s0) filter_list))
  19.                 (ssmemb (car $s0) $s01)
  20.            )
  21.          $s0                                            ;真,返回实体与点表
  22.          (xentsel msg keyword filter_list)              ;假,循环拾取
  23.        )
  24.        $s0
  25.      )
  26.     )
  27.     (t (xentsel msg keyword filter_list))               ;其它拾取及输入情况,循环拾取
  28.   )
  29. )

需要说明的两个问题:
1.[B](osnap pt "nea")[/B]对文字多数情况下不能作用,而ssget函数中的点已经考虑拾取框影响,可以使用[B](ssget (cadr $s0) filter_list)[/B]。
2.亮显问题个人认为可以不在函数中考虑,作为独立函数,选择结束后就不再对实体作用,以后恢复仍是问题,一般说来,只在极少的情况下(如“源”实体)需要亮显,而多数情况下只追求拾取正确,需要的话,可以在程序中操作。与[B]ssget[/B]不同,ssget是连续选择,亮显是可以分辨当前已选择对象,选择结束后仍然恢复,这是[B]entsel[/B]所不需要的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-12-31 19:44:06 | 显示全部楼层
关键字可以在外部用 initget 定义,没有必要作为参数,只要在其中加入 ((= (type $s0) 'STR) $s0)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-12-31 21:28:14 | 显示全部楼层
凑个热闹,把我前面贴的代码加入支持关键字。上次eachy回贴建议加入关键字,我后来研究用grread写,所以那个版本一直没有继续下去,今天看到长老的帖子,就顺便做个收尾工作。
和上面的程序效果一样。是另外一种写法,仅供参考。

  1. ;| 带提示和过滤表的xentsel ------------------------------陌生人 2003.12
  2.   v1.0 2003.12完成.
  3.   v2.0a 2003.12 加入支持关键字;
  4.   函数: (xentsel 提示信息 过滤表 关键字串)
  5.   返回值: nil 或者 (实体名 . 点位)点对表.  
  6.   功能: 1.带提示和过滤表的entsel;
  7.         2.循环直到选中有效实体或选择退出为止;
  8.         3.返回的点对表中的 点位为实体上的点;
  9.         4.支持关键字串。
  10.   实例: (xentsel "\n选择直线或圆/Undo/Option/Exit" '((0 . "*LINE,CIRCLE,ARC")) "Undo Option Exit")
  11. |;

  12. (defun xentsel (msg filter keys /  keyini el  ss  pt )
  13.   (while (= nil (setq keyini (initget keys)
  14.                       el (entsel (strcat msg "/<退出选择>:"))
  15.                       ss (cond ((= 'STR (type el)) el)
  16.                         ((= 'LIST (type el))(setq pt  (osnap (cadr el) "nea")
  17.                                                ss (cons (ssname (ssget "c" pt pt filter) 0) (list pt))))       
  18.                         ((and (= nil el)(= 52 (getvar "errno"))) T)
  19.                             )
  20.          )    )         
  21.          (princ "\n未选中实体!")
  22.   )(if (= 'T ss) nil ss)
  23. )


另外,回eachy,对关键字,只能对get* 函数使用一次,所以,需先(setq keys "...") 再调用函数(xentsel 提示信息 过滤表 keys),或者直接将关键字串写入函数,否则,只是在外面用(getinit "...") ,对循环内部只能第一次选择有效,上贴的程序也是这样。只要每次调用get* 函数,就要在其前面加 initget 才有效。

再,对于上贴
。。。   
    (if (and (setq $s01 (ssget (cadr $s0) filter_list))
                (ssmemb (car $s0) $s01)
。。。
我觉得不是很有必有 加ssmemb ,因为:
如果 ssget取得两个以上符合要求的实体(一般是点中符合要求的多个实体有相交处),你并不知道你选中的是不是你要的实体,由此可见,此程序在这种情况下返回实体具有不确定性。只有在选择的时候点中单一物体,才是正确的选择方法。不加这个ssmemb,效果和对选择的要求也是一样。可能还会好些,因为对于有点中多个实体(其中只有一个符合要求)相交处,entsel得到的实体 1)可能是符合要求的,这个时候ssget和ssname ss 0 都返回正常;2)如果不是符合要求的,继续选择。然而实际情况是:你所点的地方确实有一个实体是符合要求的,而你并没有把它选出来。如果不加ssmemb,你反而可以正常选出。  

而用grread就可很好解决这个问题。它让你知道你正在选的是哪个物体,即便选点在有多个物体的相交处。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-12-31 22:08:49 | 显示全部楼层
最初由 ll_j 发布
[B]再次谢谢LUCAS,将函数重新整理一下,贴出如下:
[code]
;;;支持特征关联表的单选实体,格式:(xentsel msg keyword filter_list)
;;;未选中符合条件实体重复选择,回车退出。
;;;返回值:关键字、图元名与拾取?.. [/B]


(ssget point)
只能选到一个实体,而我们写这个的目的是为了从一堆乱七八糟的东西中选出我们想要的.

ea的就可以(比如几个实体重了,我们只选某一个层上的实体)
其实区别只是你是点选(POINT)而ea是框选("C"),而这个框就是entsel"框"的大小


至于陌生人说的"亮显",grread能行,entsel是同样的方法.
建议陌生人仔细看一下ea的程序,到底它是不是用的“entsel”
entsel只提供的点,而选东西,还是和grread是一样的.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-12-31 22:33:34 | 显示全部楼层
ssget “c” 加框确实能增加选中的机率,恩。我打算也加上。
我看了,也试了ea的程序,他不是走亮显(grread)这条路。选择过程中也没有亮显实体。另外对于我上面所述在一个点处有多个符合要求的实体相交的时候,用entsel+ssget理论上同样不能返回你想要的实体,具有不确定性。
"entsel只提供的点,而选东西,还是和grread是一样的"这个我当然明白,我的37贴版本不就是这样的么?只是没有扩大“c”的范围
也请你好好看看我的演示,什么是亮显。
不过,对于是否亮显,我认为是个人喜好问题。没有必有说哪个更好(就本人而言是喜欢grread,直观一点)。也因此。我写了两个xentsel的版本。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-12-31 23:44:02 | 显示全部楼层
最初由 陌生人 发布
[B]ssget “c” 加框确实能增加选中的机率,恩。我打算也加上。
我看了,也试了ea的程序,他不是走亮显(grread)这条路。选择过程中也没有亮显实体。另外对于我上面所述在一个点处有多个符合要求的实体相交的时候,用... [/B]


要亮显还不简单,把你的亮显那一段,放进ea的里面就行了.

要亮显其实可以放在函数外面,看需不需要了.

至于机率,不是有过滤吗?一大堆里有特性相同的也没办法,机器又不是人脑.
就是不要在一大堆有我们要的东东,还是选不到,写这个就是为了解决这个问题的.(ssget point)就是这个缺点!

举个例子:(我搞建筑)
画有墙线,旁边一大堆标注(比墙线后画)
你要选墙线时,随便选,肯定选中标注,要不断放大才能选中,
有重叠时更不可能了,用了ssget"C"后,就解决了
我们的目的是:entsel的方法,但能用到ssget的过滤.
用(ssget point)还不如直接用entsel,不管你怎么选,肯定是选不到的.(过滤失去了作用,你可以试:选了--不是--选--不是,就是不退出而已)

这就是写这个的目的,不是你演示的那样,没重叠,那样直接用entsel再判断循环也能办到.




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

使用道具 举报

 楼主| 发表于 2004-1-1 00:23:23 | 显示全部楼层
更新一下

  1. (defun xentsel (msg filter keys / );(/ keyini pt ss lst)
  2.   (while (= nil (setq keyini (initget keys)
  3.                        el (entsel (strcat msg "/<退出选择>:"))
  4.                        ss (cond ((= 'STR (type el)) el)
  5.                                 ((= 'LIST (type el))(setq pt  (osnap (cadr el) "nea")
  6.                                                           pkbox (xpkboxlst pt)
  7.                                                           ss (ssget "c" (car pkbox) (cadr pkbox) filter))
  8.                                                     (if ss (cons (ssname ss 0) (list pt)) nil))       
  9.                                 ((and (= nil el)(= 52 (getvar "errno"))) T)
  10.                           )
  11.          )    )         
  12.          (princ "\n未选中过滤实体!")
  13.   )
  14.   (if (= 'T ss) nil ss)
  15. )
  16. ;(xpkboxlst 点位) 取得取点所在处拾取框pickbox的(左上角点 右下角点)点表
  17. ;(xpkboxlst (getpoint))
  18. (defun xpkboxlst (pt / pkhigh pkrad)
  19.   (setq pkhigh (* (getvar "viewsize") (/ (getvar "pickbox") (cadr (getvar "screensize"))))
  20.         pkrad  (* 1.4144 pkhigh))
  21.   (list (polar pt (* 0.75 PI) pkrad) (polar pt (* 1.75 PI) pkrad))
  22. )


前面帖子已经说过,不用grread是无法在点选前亮显的,我说grread亮显的优势并不是可否亮显,而是可以在点选前就亮显。这个只是用entsel+ssget是做不到的,因此就算把我亮显的那段放到ea程序里面,也不能达到预先亮显的效果。我个人认为,如果不在点选前亮显,亮显就没有太大意义,如果认为这个不需要,那就干脆不用grread了,也就是我这贴的效果。还是一句话,个人喜好问题。
至于在程序外面写,那我认为没有必有,选已经选了,亮不亮显有什么必要?又不是求选择集。
另外,我的程序是(ssget “c”pt pt ‘((...))) ,不是(ssget pt) (见最近两贴),请不要继续就(ssget pt)的缺点展开论述(这个我早已很清楚, 我怎么老觉得说这个跑题了?这个关于(ssget pt)的问题根本就是无中生有--你是在和我说还是和ll长老说?我是不是表错情了?)在pt点求nea后,再加上过滤后是可以选到合要求的物体的(有多个实体重合/交点处)。对于这样的交点处有多个符合过滤的实体,一样具有选择的不确定性,哪怕“c”的范围再大。只有当这一堆东西里面只有一个符合过滤的实体,返回的结果才真正“准确”。
不过,我承认模拟pickbox选择的成功率是更有保障。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2004-1-1 03:01:06 | 显示全部楼层

  1. (defun xentsel (msg filter keys / e ss high pt)
  2.   (setvar "ErrNo" 0)
  3.   (while (and(not ss)(/= 52 (getvar "errno"))(progn(if keys(initget keys))t))
  4.           (setq e (entsel(if msg msg "\n选择对象:"))
  5.                 ss (cond ((not e) nil)
  6.                          ((= 'STR (type e)) e)
  7.                          ((listp e)
  8.                            (if (setq high(* 1.414(/(getvar"pickbox")(last(getvar "screensize")))(getvar"viewsize"))
  9.                                      pt(cadr e)
  10.                                      ss (ssget "c"(polar pt(* 0.25 pi)high)(polar pt(* 1.25 pi)high) filter)
  11.                                )
  12.                             (cons (ssname ss 0) (list pt)) nil)
  13.                          )               
  14.           ))
  15. ))


"errno"清0
msg可能为空
keys也可能为空








写了个比较怪异的:

  1. (defun EntSelF (Msg Filter init /  pbDist PtPick ssPick a b)
  2.   (setvar "ErrNo" 0)
  3.   (if init(setq a(apply 'strcat(mapcar '(lambda(x)(strcat" "(car x)))init))
  4.                 a(substr a 2)
  5.                 b(mapcar '(lambda(x)(list(list '= (car x) 'entn)(cadr x)))init)
  6.     ))
  7.   (setq is t)
  8.   (while is
  9.        (if(and (progn(if init(initget a)) t)
  10.               (setq EntN (if Msg(entsel Msg)(entsel)))                       
  11.               (/= 52 (getvar "ErrNo"))
  12.          )
  13.   (eval(cons 'cond                                       
  14.    (cons
  15.     '((= (type EntN) 'LIST)               
  16.      (setq pbDist(abs(/(*(/(getvar "PickBox")(cadr(getvar "ScreenSize")))(getvar "ViewSize"))
  17.             (sin (* 0.25 pi))))                       
  18.            PtPick (cadr EntN)
  19.      )                                       
  20.      (if (setq ssPick (ssget "_C"(polar PtPick (* 1.25 pi) pbDist)
  21.                                  (polar PtPick (* 0.25 pi) pbDist)
  22.                                  Filter
  23.                       )
  24.          )
  25.        (progn(setq is nil)                               
  26.              (cons (ssname ssPick 0) (list PtPick))
  27.        )
  28.      ))
  29.      b
  30. ))))))

示例:关键字就不退出,在内部处理.
(EntSelF "\nABC:" '((8 . "0")) '(("A" (princ"\n选了A"))("B"(princ(entlast)))))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-1-1 05:08:33 | 显示全部楼层
msg可能为空
keys也可能为空
原来倒是没考虑到这写,可以加上。另外filter也让可以为nil吧
不过"errno"清0 我觉得没必要。可以讨论
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2004-1-1 21:26:00 | 显示全部楼层
filter是nil是不要紧的,不象另外两个要出错.

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 02:03 , Processed in 0.306815 second(s), 54 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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