XDRX_SSGET 异常 0817版本
命令: (xdrx_ssget "\nSelect Circle: " '((0 . "circle"))); 错误: ADS 请求错误
Windows 7 32bit + Autocad 2014
这个函数还要改写,所以手册没公布,感觉现在的用法不太符合习惯,我把现在的用法贴出来,你试试感觉舒服不。
(defun c:test (/ kwordCallback OtherCallback ss)
(defun kwordCallback (Kword /) ; 关键字回调函数
(princ (strcat "\n选择了关键字: " kword))
(cond
((= kword "XCircle")
(ssget "x" '((0 . "CIRCLE")))
)
((= kword "XLine")
(ssget "x" '((0 . "LINE")))
)
(T
(princ "\n错误的关键字。")
)
)
)
(defun OtherCallback (Kword /) ; 非关键字回调函数
(princ (strcat "\n选择了非关键字: " kword))
kword
)
(vl-acad-defun 'kwordCallback) ; 让lisp函数能被arx调用
(vl-acad-defun 'OtherCallback) ; 让lisp函数能被arx调用
(sssetfirst nil nil)
(xdrx_initGet "选择对象或[全部圆(XC)/所有直线(XL)]: " ; 选择时的提示
"XCircle XLine_XCircle XLine" ; 关键字
"kwordCallback" ; 关键字回调函数名
"OtherCallback" ; 非关键字回调函数名
"移除物体: " ; 移除选择时的提示
)
(setq ss (xdrx_SSGet)) ; 开始自定义关键字选择.
(cond
((= (type ss) 'STR)
(princ (strcat "\n你输入了关键字: " ss))
)
((= (type ss) 'PICKSET)
(princ "\n你的选择集是:")
(princ ss)
(princ ", 选择集中图元个数是: ")
(princ (sslength ss))
(sssetfirst ss ss)
(xdrx_ssFree ss) ; 释放选择集
)
)
(princ)
)
XDSoft 发表于 2013-8-18 16:35
这个函数还要改写,所以手册没公布,感觉现在的用法不太符合习惯,我把现在的用法贴出来,你试试感觉舒服不 ...
这个关键字在Getxxx类中经常用到,Ssget 的缺陷就是要配合变量才能自定义提示,至于使用关键字的情况,习惯上是先行 getkword,然后 ssget 仅完成过滤选择,把关键字直接加到 ssget 上有个习惯问题,要好好斟酌,如果这个改了,xdrx_entsel 也可以把关键字加上
eachy 发表于 2013-8-18 17:52
这个关键字在Getxxx类中经常用到,Ssget 的缺陷就是要配合变量才能自定义提示,至于使用关键字的情况,习 ...
现在的用法是提示字符,关键字,关键字回调处理函数都在 xdrx_initget 里面定义,你可以多运行下上面的程序,看看习惯不。
肯定要一个过程,alisp的就是返回string,根据这个条件直接写后面的处理代码,arx要写成callback,得改变一下 天正TS的做法是:无需设定关键字,在使用ssget函数前,先用函数对键盘输入进行监控,ssget后返回按键的代码,如代码的值等于某指定值,就可以执行特定的函数。如果没有键盘输入,不影响ssget的执行。是否可以借鉴一下? liuyj 发表于 2013-8-18 18:04
天正TS的做法是:无需设定关键字,在使用ssget函数前,先用函数对键盘输入进行监控,ssget后返回按键的代码 ...
这个还是 Initget + Getkword 符合 alisp 的多年习惯 liuyj 发表于 2013-8-18 18:04
天正TS的做法是:无需设定关键字,在使用ssget函数前,先用函数对键盘输入进行监控,ssget后返回按键的代码 ...
天正TS 相关函数是什么? ssget前,用什么函数设置的关键字?
说错了,还得设关键字。
(princ "\nS-设置 / D-单选 / 选择管线:")
(_lxa_ "S" " " "D" " ")
(setq lnss (ssget filter)
tfk(_sort1_)
)
(or lnss tfk)
) liuyj 发表于 2013-8-18 19:04
说错了,还得设关键字。
(princ "\nS-设置 / D-单选 / 选择管线:")
(_lxa_ "S" " " "D" " ")
关键字肯定要设,关键是这个 ssget 是仅返回个字符还是去调用函数
Free-Lancer 发表于 2013-8-18 19:07
关键字肯定要设,关键是这个 ssget 是仅返回个字符还是去调用函数
看了下
天正TS是用 tfk(_sort1_)
紧接着ssget的 sort1函数获得键盘输入,ssget时候,如果按键有在上面设置的立面的,ssget自动退出,返回nil
这样好吗,ssget里面也没法设置提示串。
XDSoft 发表于 2013-8-18 16:35
这个函数还要改写,所以手册没公布,感觉现在的用法不太符合习惯,我把现在的用法贴出来,你试试感觉舒服不 ...
xdrx_ssget 这个函数,对象被多次选择对象时,不能自动去重,例如,统计对象的总长,共4条对象,我2次框选这4个对象时,统计出来的总长,就是实际值的 2 倍。用了快2年才发现的 BUG。
页:
[1]