明经CAD社区

 找回密码
 注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 353|回复: 5

[基础] 选择的时候还可以输入关键字符

[复制链接]
发表于 2021-6-8 20:48 | 显示全部楼层 |阅读模式
大侠们,我想在ssget选择的时候可以输入字符或数字。
发表于 2021-6-8 22:06 | 显示全部楼层
  ;;带关键字的ssget
  ;;Msg=提示信息,Kwd=关键字,Fil=条件
        ;示例:(PEACE:Fsxm-ssget "\n请选择一个圆:" "F" '((0 . "circle")))
  (defun PEACE:Fsxm-ssget (Msg Kwd Fil / Kwd0 pt var *acad* *doc*)
    (setq *acad* (vlax-get-acad-object))
    (setq *doc* (vla-get-ActiveDocument *acad*))
                ;===内部函数开始===
    ;;带过滤器的entsel
    (defun Fsxm-entsel (msg filter)
      (setq enp (entsel msg))
      (if (or (= (type enp) 'str)
                                                (and enp (ssget (cadr enp) filter))
                                        )
                                enp
      )
    )
                ;;;用分隔符解释字符串成表
    (defun Fsxm-Split (string strkey / po strlst xlen)
      (setq xlen (1+ (strlen strkey)))
      (while (setq po (vl-string-search strkey string))
                                (setq strlst (cons (substr string 1 po) strlst))
                                (setq string (substr string (+ po xlen)))
      )
      (reverse (cons string strlst))
    )
    ;;点化字串
    (defun Fsxm-Pt2Str (pt)
      (strcat (rtos (car pt) 2 2)
              ","
              (rtos (cadr pt) 2 2)
              ","
              (rtos (caddr pt) 2 2)
              "\n"
      )
    )
                ;===内部函数结束===
    (cond
      ((cadr (ssgetfirst)))
      (T
                                (setq Kwd0 "W")
                                (initget (strcat Kwd0 " " kwd))
                                (cond ((and (listp (setq var (Fsxm-entsel Msg Fil)))
                                                                 (/= 52 (getvar "errno"))
                                                         )
                                                                (vla-sendcommand *doc* (Fsxm-Pt2Str (cadr (grread t))))
                                                                (ssget Fil)
                                                        )
                                        ((member var (Fsxm-Split Kwd0 " "))
                                                (vla-sendcommand *doc* (strcat var "\n"))
                                                (ssget Fil)
                                        )
                                        (t var)
                                )
      )
    )
  )
       
发表于 2021-6-8 22:06 | 显示全部楼层
(initget [bits] [string])
能够接受关键字输入的函数有 getint、getreal、getdist、getangle、getorient、getpoint、getcorner、getkword、entsel、nentsel 和 nentselp。getstring 函数是唯一不接受关键字的用户输入函数。

 楼主| 发表于 2021-6-9 09:38 | 显示全部楼层
xj6019 发表于 2021-6-8 22:06
;;带关键字的ssget
  ;;Msg=提示信息,Kwd=关键字,Fil=条件
        ;示例:(PEACE:Fsxm-ssget "\n请选择一个 ...

好的,我先试试,感谢大神!!!
发表于 2021-6-9 15:34 | 显示全部楼层
具体干什么用 为什么要输入关键字符
 楼主| 发表于 2021-6-10 01:52 | 显示全部楼层
树櫴希德 发表于 2021-6-9 15:34
具体干什么用 为什么要输入关键字符

因为我们做的命令有一些参数需要设置。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2021-6-16 05:30 , Processed in 0.761945 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

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