找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 595|回复: 11

[求助] xdrx_initgetss用法

[复制链接]

已领礼包: 58个

财富等级: 招财进宝

发表于 2017-8-19 19:33:55 | 显示全部楼层 |阅读模式

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

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

×
如下,当按下M键时应该回调函数setprecision,设b值为1000,可是查看后b仍为nil
是我的用法不对么

  1. (defun c:tt ()
  2.   (vl-acad-defun 'setprecision)
  3.   (defun setprecision ()
  4.     (setq b 1000)
  5.     (princ "\nthis is test")
  6.   )
  7.   (xdrx_initget "m")
  8.   (xdrx_initSSGet
  9.     "选择曲线[改精度(s)]" "m" "remove object" "setprecision" "")
  10.   (setq ss (xdrx_ssget))
  11. )

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

已领礼包: 40个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 58个

财富等级: 招财进宝

 楼主| 发表于 2017-8-19 22:17:25 | 显示全部楼层
明白了
另外(xdrx_setsstodb (ssget) 0)后如何清空0重新设置
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-8-19 22:52:16 | 显示全部楼层

不用清,需要在用0就行,API自动释放之前的选择集

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

使用道具 举报

已领礼包: 48个

财富等级: 招财进宝

发表于 2017-8-25 00:21:30 来自手机 | 显示全部楼层
SSGET保留的关键字,很多。这样initssget的关键字,可选择的字母,少了很多。有时候不方便记忆。例如:[全选(A)],用A作为关键字比较方便,但是冲突了,实在可惜
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-8-25 00:36:26 | 显示全部楼层

这是符合逻辑的,不能让SSGET本身的关键字没用啊。

不过你说的,和这个无关, 一键回车和关键字不冲突,本来SSGET的A就是全选。

你想要的是一键回车吧?

你用 (xdrx_initget "A")

你用SSGET的时候,输入A时候就自动回车了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-8-25 00:42:21 | 显示全部楼层

你理会错了,SSGET自身的关键字不设也是一样保留用的。

xdrx_ssget就是ssget, 只不过可以处理额外的xdrx_initssget设置的关键字和修改提示选择对象的字符串,可以不再是默认的"选择对象:"
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 48个

财富等级: 招财进宝

发表于 2017-8-25 13:51:19 | 显示全部楼层
例如下面的代码,A L R三个关键字,方便记忆,但是不能用。很多情况下(例如下面这段代码),ssget不需要用到“A L R三个关键字”呀
(defun c:t ()
  ;;============================== begin while is
  (setq is t)
  (while is
    (setq note (strcat
                 "\n图层上的对象[全部(A)/设置(S)/梁线(L)/人防(R)] <A>:,"
                 "测试关键字[关键字(A-Z)] <退出>:"
               )
    )
    ;;*******************************   
    ;;不能使用的关键字 A C F G L M P R U W
    (Xdrx_initget "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z")
    (Xdrx_initssget Note "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z" "" "" "")
    (Setq Ss (Xdrx_ssget))
    (if        (not ss)
      (SETQ is NIL)
    )
    (princ ss)
    ;;*******************************
    ;|
    (cond
      ((null ss) (SETQ is NIL))
      ((= "H" SS) (setq is_hx_t1 (not is_hx_t1)))
      (T
       (setq is nil)
       (progn
         (princ)
       )
      ) ;_T
    ) ;_COND
    ;;|;
  )
  ;;============================== end while is
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-8-25 14:17:43 | 显示全部楼层
本帖最后由 newer 于 2017-8-25 14:35 编辑

A L R 怎么就不能用了? 你设置不设置外部关键字,xdrx_ssget, A,L,R都正常用。

命令: tt
选择玩耍的伙伴[演示(Z)/抛弃(R)]:r
你要把我无情的抛弃吗?a
选择玩耍的伙伴[演示(Z)/抛弃(R)]:


你还是没有理解

比如R本身就是SSGET的关键字,你输入R,SSGET就问你 移除对象。不是关键字,就不会接受你输入R,你输入Z试试。


  1. 命令: (ssget)
  2. 选择对象: z
  3. *无效选择*
  4. 需要点或窗口(W)/上一个(L)/窗交(C)/框(BOX)/全部(ALL)/栏选(F)/圈围(WP)/圈交(CP)/编组(G)/添加(A)/删除(R)/多个(M
  5. )/前一个(P)/放弃(U)/自动(AU)/单个(SI)

复制代码
Z不是关键字时候的提示。

1.
你把R写到提示符里面,只是告诉用户R的作用,和设不设R为关键字没关系。
  1. (xdrx_initssget "\n选择要玩耍的对象[无情抛弃(R)]:")
  2. (setq ss (xdrx_ssget))


上面没设关键字,但是R还是起作用,因为xdrx_ssget 调用的就是SSGET.

测试结果:

  1. 命令: (xdrx_initssget "\n选择要玩耍的对象[无情抛弃(R)]:")
  2. T

  3. 命令: (setq ss (xdrx_ssget))
  4. 选择要玩耍的对象[无情抛弃(R)]:指定对角点: 找到 2 个
  5. 选择要玩耍的对象[无情抛弃(R)]:r
  6. 移除对象: 找到 1 个,删除 1 个,总计 1 个
  7. 移除对象: a
  8. 选择要玩耍的对象[无情抛弃(R)]:
  9. <Selection set: 92>



2. xdrx_initssget设置关键字(除去SSGET内部使用的)的目的,是让你比如输入Z,SSGET响应并去执行Z关键字对应的回调函数。
内部的关键字SSGET处理,外部的关键字,你的回调函数处理。


下面是测试代码,关键字里面并没有设置R,但是R还是一样起作用(它是内部关键字),Z是外部关键字
  1. (defun c:tt ()
  2.   (defun callback (key)
  3.     (cond ((= key "Z")
  4.            (princ "\n--->你输入了Z")
  5.            (princ "\n你想让我为你做什么呢?")
  6.            (princ "\n")
  7.           )
  8.           ((= key "A") (princ "\n能看到小A吗?")) ;;即使设置了A,也不会进到这里来
  9.     )
  10.     (princ)
  11.   )
  12.   (xdrx_initssget
  13.     "选择玩耍的伙伴[演示(Z)/抛弃(R)]:"
  14.     "Z A L"                         "你要把我无情的抛弃吗?"
  15.     "callback"                         ""
  16.    )
  17.   (if (setq ss (xdrx_ssget))
  18.     (progn (princ "\n执行了ssget"))
  19.   )
  20.   (princ)
  21. )




命令: tt
选择玩耍的伙伴[演示(Z)/抛弃(R)]:z

--->你输入了Z
你想让我为你做什么呢?

选择玩耍的伙伴[演示(Z)/抛弃(R)]:r

你要把我无情的抛弃吗?找到 1 个

你要把我无情的抛弃吗?找到 1 个,总计 0 个

你要把我无情的抛弃吗?

只有外部的关键字,回调函数才会得到并处理,内部的关键字你即使设置到xdrx_initssget里面,回调里面也不处理,ssget处理。你试试上面的代码,设置了关键字A,但是不会进到回调函数里面。SSGET自身去执行A的操作。







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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-8-25 14:34:34 | 显示全部楼层

还有一个,SSGET 输入 A ,不是代表全部,是对应R,是添加,R是移除。
ALL才是全部。

你自己执行下 (ssget),你看看输入a时候提示你是什么,(你要在输入R后,输入A才能看到效果)

所以你的代码,不能告诉用户输入 A是全部,应该是 ALL(全部)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 48个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 48个

财富等级: 招财进宝

发表于 2017-8-27 13:05:32 | 显示全部楼层
本帖最后由 pxt2015 于 2017-8-27 13:08 编辑

(DEFUN C:T ()
  ;;ssget内部关键字 A C F G L M P R U W
  (Xdrx_initssget
    "测试关键字,输入A-Z:"
    "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"
    ""
    ""
    ""
   )
  (Setq Ss (Xdrx_ssget '((0 . "Text"))))
)

Xdrx_initssget 能否临时借用下"ssget内部的关键字",例如A C F G L M P R U W,让ss能够返回上述关键字?如果借用了,ssget临时不用“已经被借用的关键字”。况且也比较少用。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-19 18:19 , Processed in 0.235932 second(s), 50 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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