找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 606|回复: 0

[每日一码] 支持关键字和设置提示字符串的SSGET

[复制链接]

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-9-2 12:27:31 | 显示全部楼层 |阅读模式

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

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

×

forum.php?mod=attachment&aid=NTQ3Mjd8N2VmZWZmYWR8MTQ3Mjc5MDI3MXw1MjgwfDcwNTI3NQ%3D%3D&noupdate=yes.gif

  1. ;;;=============================================================
  2. ;;;可定义提示、关键字的SSGET                                       
  3. ;;;(xdrx_InitSSGet prompt1 kword kwordCallback OtherCallback prompt2)               
  4. ;;;输入:                                                        
  5. ;;;        <prompt1>                                                
  6. ;;;        选择提示字符串。                                                
  7. ;;;        <kword>                                                        
  8. ;;;        关键字.ARX选择关键字定义和一般的关键字有所不同,下划线前
  9. ;;;        定义的是关键字下划线后定义的是输入关键字后返回的字符串。
  10. ;;;        <kwordCallback>                                                
  11. ;;;        回调函数字符串,如何不指定,选择关键字后将中断选择直接返
  12. ;;;        回关键字字符串。                                       
  13. ;;;        <OtherCallback>                                                
  14. ;;;        过滤表,与SSGET相同               
  15. ;;;     <prompt2> 移除提示字符串
  16. ;;;说明:                                                         
  17. ;;;        所有参数均为可选,但如果指定关键字就必须指定提示字符串.
  18. ;;;     选择集使用完,要使用ssFree(由于我没定义储存列队,记得使
  19. ;;;        用完选择集后用ssfree释放选择集,否则超过128个选择集后将
  20. ;;;     无法创建)。                                                
  21. ;;;输出:                                                        
  22. ;;;        如何成功返回选择集或定义的关键字字符串,否则返回nil.        
  23. ;;;-------------------------------------------------------------
  24. ;;;示例:                                                        
  25. ;;;        命令:(xdrx_ssget)                                                
  26. ;;;             选择对象:                                                
  27. ;;;                                                            
  28. ;;;        命令:(xdrx_ssget "我喜欢的:")                                
  29. ;;;                 我喜欢的:                                                
  30. ;;;                                                               
  31. ;;;        命令:(xdrx_ssget "[是(Y)否(N)]:" "Yes No _ Yes No")        
  32. ;;;          [是(Y)否(N)]:Y "Yes"                                
  33. ;;;=============================================================

  34. (defun c:test (/ kwordCallback OtherCallback ss)
  35.   (defun kwordCallback (Kword /)                                ;SSGET选择关键字回调函数
  36.     (princ (strcat "\n选择了关键字: " kword))
  37.     (cond
  38.       ( (= kword "Xcircle")
  39.         (ssget "x" '((0 . "CIRCLE")))
  40.       )
  41.       ( (= kword "Xline")
  42.         (ssget "x" '((0 . "LINE")))
  43.       )
  44.       (T (princ "\n错误的关键字。"))
  45.     )
  46.   )
  47.   (defun OtherCallback (Kword /)                                ;SSGET选择关键字回调函数
  48.     (princ (strcat "\n选择了非关键字: " kword))
  49.     kword
  50.   )
  51.   (vl-acad-defun 'kwordCallback)                                ;让lisp函数能被arx调用
  52.   (vl-acad-defun 'OtherCallback)                                ;让lisp函数能被arx调用

  53.   (xdrx_initssget  "选择对象或[全部圆(XC)/所有直线(XL)]: "                ;选择时的提示
  54.                   "XC XL _ Xcircle Xline"                                ;关键字        
  55.               "kwordCallback"                                        ;关键字回调函数名
  56.               "OtherCallback"                                        ;非关键字回调函数名
  57.               ""
  58.   )                                       

  59.   (setq        ss (xdrx_ssget  '((0 . "LINE"))))                        ;开始自定义关键字选择.

  60.   (if ss
  61.     (progn
  62.       (cond
  63.         ((= (type ss) 'STR)
  64.            (princ "\n输入了关键字:")
  65.            (princ ss)
  66.         )
  67.         ((= (type ss) 'PICKSET)
  68.          (princ "\n创建了选择集.")
  69.          (xdrx_ssFree ss)                                                ;释放选择集
  70.         )
  71.       )
  72.     )
  73.   )               
  74.   (princ)
  75. )


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

本版积分规则

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

GMT+8, 2024-3-29 17:12 , Processed in 0.272005 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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