找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3412|回复: 8

[他山之石] 让LISP也能使用ARX的acedSSGet自定义提示和关键字

[复制链接]
发表于 2013-5-12 21:57:06 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 Gdlprfcu 于 2013-5-12 22:15 编辑

一直都不喜欢lisp的SSGET不能自定义提示和关键字,最近学习ObjectARX终于能把arx的acedSSGet函数做了LISP的了,欢迎大家下载测试,也希望大家能一起来学习ObjectARX,一起进步,源码我也帖在这了:http://bbs.xdcad.net/thread-668031-1-1.html
[pcode=lisp,true];==============================================================
;可定义提示、关键字的SSGET
;(myssget prompt kword pfunction fileetlist)
;参数:
;        prompt 提示字符串。
;        kword  关键字.ARX选择关键字定义和一般的关键字有所不同,下划线前定义的是关键字下划线后定义的是输入关键字后返回的字符串。
;        pfunction 回调函数字符串,如何不指定,选择关键字后将中断选择直接返回关键字字符串。
;        fileetlist 过虑表,与SSGET相同
;说明:
;        所有参数均为可选,但如果指定关键字就必须指定提示字符串.
;返回值:
;        如何成功返回选择集或定义的关键字字符串,否则返回nil.
;示例:
;        命令:(myssget)
;                选择对象:
;        命令:(myssget "我喜欢的:")
;               我喜欢的:
;        命令:(myssget "[是(Y)否(N)]:" "Yes No _ Yes No")
;              [是(Y)否(N)]:Y "Yes"
;===============================================================
(defun c:MySSGet(/ ssgetpfunc ss)
  (defun ssgetpfunc(Kword / );SSGET选择关键字回调函数
    (princ (strcat "选择了关键字" kword))
    (cond
      ((= kword "Xcircle")
              (ssget "x" '((0 . "CIRCLE")))
       )
      ((= kword "Xline")
       (ssget "x" '((0 . "LINE")))
       )
      (T("错误的。"))
      )
    )
  
  (vl-acad-defun 'ssgetpfunc);让lisp函数能被arx调用
  (setq ss (MYssget "选择对象,或[全部圆(XC)/所有直线(XL)]" ;;选择时的提示
                    "XC XL _ Xcircle Xline" ;;关键字
                    "ssgetpfunc" ;回调函数字符串
                    ))
  (if ss(ssfree ss));由于我没定义储存列队,选择集使用完,记得使用完选择集后用ssfree释放选择集,否则超过128个选择集后将无法创建。
  )[/pcode]
请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:MySSGet.rar 
下载次数:117  文件大小:39.77 KB 
下载权限: 不限 以上  [免费赚D豆]



评分

参与人数 2威望 +3 D豆 +5 贡献 +4 收起 理由
XDSoft + 1 有始有终奖!
Highflybird + 3 + 5 + 3 好主题奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2013-5-13 18:00:53 | 显示全部楼层
ll_j 发表于 2013-5-13 15:36
楼主的函数还是使用arx的,并不是真正意义上的a/vlisp函数。
到目前为止,个人认为最好的ssget变体还是飞 ...

我是个比较追求完美的人,用LISP模仿我也做过,飞诗版主模仿的虽是不错,但模仿的就是模仿的用LISP不可能做到和acedSSGet函数一样效果的,acedSSGet关键字触发的是事件,在你选择的时候可以真正意义上的去做其它事,做完了再返回。当然如果没追求的话完全可以无视,而且我也说了是用ARX编写的呀。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

已领礼包: 8121个

财富等级: 富甲天下

发表于 2013-5-12 22:26:20 | 显示全部楼层
很好的想法,我刚想做这个研究呢。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-12 22:39:23 | 显示全部楼层
Highflybird 发表于 2013-5-12 22:26
很好的想法,我刚想做这个研究呢。

能盼到高飞大哥来捧我的帖实在真是太高兴了{:soso_e128:}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-5-13 09:17:00 | 显示全部楼层
不错的思路。学习了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2013-5-13 15:36:31 | 显示全部楼层
楼主的函数还是使用arx的,并不是真正意义上的a/vlisp函数。
到目前为止,个人认为最好的ssget变体还是飞诗版主发表在明经上的“带关键字的ssget”,虽然也有些限制,而且有一个很长的字串显示,但使用起来还是可以的。
原帖:http://bbs.mjtd.com/forum.php?mod=viewthread&tid=71545,相信大家都看过。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

发表于 2013-5-13 17:50:41 | 显示全部楼层
新的知识点。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-12-15 22:55:03 | 显示全部楼层
好...........................
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2015-2-17 12:31:54 | 显示全部楼层
请问如何使用,我测试提示错误“命令: MYSSGET
; 错误: no function definition: MYSSGET”
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-4-26 17:59 , Processed in 0.251637 second(s), 50 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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