找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 849|回复: 7

[编程申请] 查数量代码修改

[复制链接]
发表于 2019-3-10 10:13:41 | 显示全部楼层 |阅读模式

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

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

×
有哪位大哥能帮我修改一下下面的代码呢?
下面的代码是一个成熟的非常好用的代码,还可以模糊搜索,
要是这个代码在《请输入要匹配的字符》这个环节能,修改成《请输入要匹配的字符或点击屏幕上的字符》,这样就好了呢

  1. (defun c:csl (/ callback str ss txt key pts el s)
  2. (defun callback (dynpt /)
  3. (xdrx_entity_move txt (trans p 1 0) (trans dynpt 1 0))
  4. (if el
  5. (mapcar '(lambda (x)
  6. (xdrx_setpropertyvalue x "EndPoint" (trans dynpt 1 0))
  7. )
  8. el
  9. )
  10. )
  11. (setq p dynpt)
  12. )
  13. (princ "\n前后输入 * 可以匹配更多字符....")
  14.   (if
  15. (and (setq str (getstring "\n请输入要匹配的字符: "))
  16. (setq ss (ssget (list '(0 . "*text") (cons 1 str))))
  17. (setq key (xdrx_yesorno "连线" "N"))
  18. )
  19. (progn
  20. (xd::begin)
  21. (xdrx_layer_make "XD_Line_Mark" 1)
  22. (setq txt (xdrx_text_make
  23. (setq p (trans (cadr (grread t 15)) 1 0))
  24. (strcat str "共 " (itoa (sslength ss)) " 个")
  25. (getvar "textsize")
  26. 0.
  27. )
  28. )
  29. (xdrx_entity_setlayer txt "XD_Line_Mark")
  30. (if (= key 1)
  31. (progn
  32. (setq pts
  33. (mapcar '(lambda (x) (xdrx_getpropertyvalue x "Position")
  34. )
  35. (xdrx_pickset->ents ss)
  36. )
  37. )
  38. (xdrx_setmark)
  39. (mapcar '(lambda (x)
  40. (xdrx_line_make x p)
  41. )
  42. pts
  43. )
  44. (setq s (xdrx_getss))
  45. (xdrx_entity_setlayer s "XD_Line_Mark")
  46. (setq el (xdrx_pickset->ents s))
  47. )
  48. )
  49. (xdrx_document_redraw)
  50. ;ARX太快,要更新下数据库
  51. (xdrx_pointmonitor "Callback" txt)
  52. (getpoint (trans p 0 1))
  53. (xdrx_pointmonitor)
  54. (xd::end)
  55. )
  56. )
  57. (princ)
  58. )

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

已领礼包: 40个

财富等级: 招财进宝

发表于 2019-3-10 17:00:28 | 显示全部楼层
hphkjz 发表于 2019-3-10 16:46
解决了,非常感谢大哥你啊,怎么赠送你D豆呢

帖子右下角,评分
解决了,请编辑下主题,标题前面粘贴上【已解决】

点评

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

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2019-3-10 11:59:35 | 显示全部楼层
数字字符串和屏幕拾取没有一个函数同时做,你要用IF分开
比如:
(setq txt nil)
(or (/= "" (setq txt (getstring "\n输入字符<屏幕拾取>")))
    (and (setq e (car (xdrx_entsel "\n拾取字符串<退出>:")))
            (setq txt (xdrx_getpropertyvalue e "textstring"))
    )
)
(if txt
   ...
)

点评

大哥,小弟对LISP不太懂,你能不能把编码写完全了粘贴上来看一下效果呢,谢谢  详情 回复 发表于 2019-3-10 13:06
大哥,小弟对LISP不太懂,你能不能把编码写完全了粘贴上来看一下效果呢,谢谢  详情 回复 发表于 2019-3-10 13:05
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-10 13:05:07 | 显示全部楼层
marting 发表于 2019-3-10 11:59
数字字符串和屏幕拾取没有一个函数同时做,你要用IF分开
比如:
(setq txt nil)

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

使用道具 举报

 楼主| 发表于 2019-3-10 13:06:37 | 显示全部楼层
marting 发表于 2019-3-10 11:59
数字字符串和屏幕拾取没有一个函数同时做,你要用IF分开
比如:
(setq txt nil)

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

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2019-3-10 14:20:34 | 显示全部楼层
本帖最后由 marting 于 2019-3-10 14:26 编辑
hphkjz 发表于 2019-3-10 13:06
大哥,小弟对LISP不太懂,你能不能把编码写完全了粘贴上来看一下效果呢,谢谢

  1. (defun c:csl (/ callback str ss txt key pts el s)
  2.   (defun callback (dynpt /)
  3.     (xdrx_entity_move txt (trans p 1 0) (trans dynpt 1 0))
  4.     (if el
  5.       (mapcar '(lambda (x)
  6.                  (xdrx_setpropertyvalue x "EndPoint" (trans dynpt 1 0))
  7.                )
  8.               el
  9.       )
  10.     )
  11.     (setq p dynpt)
  12.   )
  13.   (princ "\n前后输入 * 可以匹配更多字符....")
  14.   (if (and (or (/= ""
  15.                    (setq str (getstring "\n请输入要匹配的字符<拾取>: "))
  16.                )
  17.                (and (setq str nil
  18.                           e   (car (xdrx_entsel "\n拾取文字<退出>" '((0 . "text"))))
  19.                     )
  20.                     (setq str (xdrx_getpropertyvalue e "textstring"))
  21.                )
  22.            )
  23.            str
  24.            (xdrx_initssget "\n选择要处理的文字<退出>")
  25.            (setq ss (xdrx_ssget (list '(0 . "*text") (cons 1 str))))
  26.            (setq key (xdrx_yesorno "\n是否连线" "N"))
  27.       )
  28.     (progn (xd::begin)
  29.            (xdrx_layer_make "XD_Line_Mark" 1)
  30.            (setq txt (xdrx_text_make
  31.                        (setq p (trans (cadr (grread t 15)) 1 0))
  32.                        (strcat str "共 " (itoa (sslength ss)) " 个")
  33.                        (getvar "textsize")
  34.                        0.
  35.                      )
  36.            )
  37.            (xdrx_entity_setlayer txt "XD_Line_Mark")
  38.            (if (= key 1)
  39.              (progn (setq pts (mapcar '(lambda (x) (xdrx_getpropertyvalue x "Position"))
  40.                                       (xdrx_pickset->ents ss)
  41.                               )
  42.                     )
  43.                     (xdrx_setmark)
  44.                     (mapcar '(lambda (x) (xdrx_line_make x p)) pts)
  45.                     (setq s (xdrx_getss))
  46.                     (xdrx_entity_setlayer s "XD_Line_Mark")
  47.                     (setq el (xdrx_pickset->ents s))
  48.              )
  49.            )
  50.            (xdrx_document_redraw)       ;ARX太快,要更新下数据库
  51.            (xdrx_pointmonitor "Callback" txt)
  52.            (getpoint (trans p 0 1))
  53.            (xdrx_pointmonitor)
  54.            (xd::end)
  55.     )
  56.   )
  57.   (princ)
  58. )


点评

解决了,非常感谢大哥你啊,怎么赠送你D豆呢  详情 回复 发表于 2019-3-10 16:46

评分

参与人数 1D豆 +3 收起 理由
hphkjz + 3 很给力!经验;技术要点;资料分享奖!

查看全部评分

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

使用道具 举报

 楼主| 发表于 2019-3-10 16:46:41 | 显示全部楼层

解决了,非常感谢大哥你啊,怎么赠送你D豆呢

点评

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

使用道具 举报

 楼主| 发表于 2019-3-13 07:11:36 | 显示全部楼层
newer 发表于 2019-3-10 17:00
帖子右下角,评分
解决了,请编辑下主题,标题前面粘贴上【已解决】

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-29 05:22 , Processed in 0.389662 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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