马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
- ;;;=============================================================
- ;;;可定义提示、关键字的SSGET
- ;;;(xdrx_InitSSGet prompt1 kword kwordCallback OtherCallback prompt2)
- ;;;输入:
- ;;; <prompt1>
- ;;; 选择提示字符串。
- ;;; <kword>
- ;;; 关键字.ARX选择关键字定义和一般的关键字有所不同,下划线前
- ;;; 定义的是关键字下划线后定义的是输入关键字后返回的字符串。
- ;;; <kwordCallback>
- ;;; 回调函数字符串,如何不指定,选择关键字后将中断选择直接返
- ;;; 回关键字字符串。
- ;;; <OtherCallback>
- ;;; 过滤表,与SSGET相同
- ;;; <prompt2> 移除提示字符串
- ;;;说明:
- ;;; 所有参数均为可选,但如果指定关键字就必须指定提示字符串.
- ;;; 选择集使用完,要使用ssFree(由于我没定义储存列队,记得使
- ;;; 用完选择集后用ssfree释放选择集,否则超过128个选择集后将
- ;;; 无法创建)。
- ;;;输出:
- ;;; 如何成功返回选择集或定义的关键字字符串,否则返回nil.
- ;;;-------------------------------------------------------------
- ;;;示例:
- ;;; 命令:(xdrx_ssget)
- ;;; 选择对象:
- ;;;
- ;;; 命令:(xdrx_ssget "我喜欢的:")
- ;;; 我喜欢的:
- ;;;
- ;;; 命令:(xdrx_ssget "[是(Y)否(N)]:" "Yes No _ Yes No")
- ;;; [是(Y)否(N)]:Y "Yes"
- ;;;=============================================================
- (defun c:test (/ kwordCallback OtherCallback ss)
- (defun kwordCallback (Kword /) ;SSGET选择关键字回调函数
- (princ (strcat "\n选择了关键字: " kword))
- (cond
- ( (= kword "Xcircle")
- (ssget "x" '((0 . "CIRCLE")))
- )
- ( (= kword "Xline")
- (ssget "x" '((0 . "LINE")))
- )
- (T (princ "\n错误的关键字。"))
- )
- )
- (defun OtherCallback (Kword /) ;SSGET选择关键字回调函数
- (princ (strcat "\n选择了非关键字: " kword))
- kword
- )
- (vl-acad-defun 'kwordCallback) ;让lisp函数能被arx调用
- (vl-acad-defun 'OtherCallback) ;让lisp函数能被arx调用
- (xdrx_initssget "选择对象或[全部圆(XC)/所有直线(XL)]: " ;选择时的提示
- "XC XL _ Xcircle Xline" ;关键字
- "kwordCallback" ;关键字回调函数名
- "OtherCallback" ;非关键字回调函数名
- ""
- )
- (setq ss (xdrx_ssget '((0 . "LINE")))) ;开始自定义关键字选择.
- (if ss
- (progn
- (cond
- ((= (type ss) 'STR)
- (princ "\n输入了关键字:")
- (princ ss)
- )
- ((= (type ss) 'PICKSET)
- (princ "\n创建了选择集.")
- (xdrx_ssFree ss) ;释放选择集
- )
- )
- )
- )
- (princ)
- )
|