明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2968|回复: 2

[讨论] 再说 带关键字的ssget

[复制链接]
发表于 2013-11-22 09:25:02 | 显示全部楼层 |阅读模式
;|下面看格式刷
'_matchprop
Select source object:
Select destination object(s) or [Settings]:
最后一行时,我们可以直接选取目标,也可以输入"S"来进行设置,这就是特别之处。ll_j为我指点了一下,

说飞诗的[带关键字的ssget]http://bbs.mjtd.com/thread-71545-1-1.html是他见过的最好的。昨天静心研

读了一下,希望站在巨人的肩上看得更远,结果未如愿,看下面的程序Myssget,比较接近matchprop的用法了

。Myssget可以输入一次S来进行设置,而matchprop可以任何时候输入S进行设置

initget之后,只有entsel起作用,ssget不起作用,飞诗还是开始打的entsel的主意
.各位有没有更好的办法呢?

|;

  1. ;;带关键字的ssget
  2. ;;(sslength(Myssget "\n 选择目标对象或 [设置(S)]:" "S " '((0 . "line"))))
  3. (defun Myssget (Msg Kwd Fil)
  4.   ;;带过滤器的entsel
  5.   (defun MyEntsel (msg fil / ENP)
  6.     (princ "\n")
  7.     (setq enp (entsel msg))
  8.     (cond ((equal (type enp) 'STR) (DoSth enp))
  9.           (T (and enp (ssget (cadr enp) fil)))
  10.     )
  11.     enp
  12.   )
  13.   ;;initget时do
  14.   (defun DoSth (enp)
  15.     (princ enp)
  16.   )
  17.   ;;点化字串
  18.   (defun Pt2Str        (pt)
  19.     (strcat (rtos (car pt) 2 3)
  20.             ","
  21.             (rtos (cadr pt) 2 3)
  22.             ","
  23.             (rtos (caddr pt) 2 3)
  24.             "\n"
  25.     )
  26.   )

  27.   (or *DOC*
  28.       (setq *DOC* (vla-get-ActiveDocument (vlax-get-acad-object)))
  29.   )
  30.   (cond        ((cadr (ssgetfirst)) (ssget "_P" fil))
  31.         (t
  32.          (initget Kwd)                                            ;随后调用entsel时
  33.          (cond ((and (listp (MyEntsel Msg Fil))
  34.                      (/= 52 (getvar "errno"))
  35.                 )
  36.                 (vla-sendcommand *doc* (Pt2Str (cadr (grread t))))
  37.                 (ssget Fil)
  38.                )
  39.                (T (ssget Fil))
  40.          )
  41.         )
  42.   )
  43. )

  1. ;;调用系统格式刷,主要是显示那把刷子,do nothing
  2. (defun C:test (/ E)
  3.   (setq e (car (entsel)))
  4.   (COMMAND "MATCHPROP" E)
  5.   (sslength
  6.     (Myssget "\n 选择目标对象或 [设置(S)]:" "S " '((0 . "line")))
  7.   )
  8.   (while (not (equal (getvar "cmdnames") "")) (command nil))
  9. )

点评

(entsel)不支持默认的关键字"W L C BOX ALL F WP CP G A R M P U AU SI" 会提示“无效的选择" 如果自定义的关键字是P1 P2 P3 P4,输入P还会提示"有歧义的响应,请澄清"  发表于 2016-3-14 10:21
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2014-8-27 22:56:00 | 显示全部楼层
支持shift反选最好!!
发表于 2014-8-28 05:12:00 | 显示全部楼层
带关键字的ssget
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-29 01:52 , Processed in 0.181118 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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