找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2781|回复: 20

[每日一码] 带数字后缀的文字或纯数字==>递增(减)复制

[复制链接]
发表于 2013-7-31 15:39:31 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 wowan1314 于 2013-7-31 21:15 编辑

  在XD的地盘。不用API做个程序,总是不好意思的。

无奈对API实在不了解,且限于本人水平。所以只做了个半成品。且不知道哪里不对。

先发上来。不管如何,聊表心意。
  1. ;;纯数字或带数字后缀的文字==>递增(减)复制  BY wowan1314
  2. ;;运行环境 XD_API
  3. (defun c:t1 (/ ss1 pj mat ss a m e nums ww t2)
  4.     (defun t2 (s / a lop a1 txt len a2)
  5.         (setq a '(49 50 51 52 53 54 55 56 57 48 43 45 46)
  6.             lop t
  7.             a1 0
  8.             txt (reverse(vl-string->list s))
  9.         )
  10.         (while lop
  11.             (if (member (car txt) a)
  12.                 (progn
  13.                     (if (= (car txt) 46) (setq a2 a1))
  14.                     (setq a1 (1+ a1) txt (cdr txt))
  15.                 )
  16.                 (setq lop nil)
  17.             )
  18.         )
  19.         (if (/= a1 0)
  20.             (progn
  21.                 (setq len (- (strlen s) a1))
  22.                 (list (substr s 1 len) (substr s (1+ len)) a2)
  23.             )
  24.         )
  25.     )
  26.     (if (null $buchang) (setq $buchang 1))
  27.     (setq $buchang (ureal 1 "" "\n增减值(正为增,负为减)" $buchang) m $buchang)
  28.     (xdrx_pickset_redraw ss1)
  29.     (if (and
  30.             (setq ss1 (xdrx_ssget "\n选取要拷贝的实体<退出>:"))
  31.             (setq pj (getpoint "\n拾取基点<退出>:"))
  32.             (setq mat '(wowan1314))
  33.         )
  34.         (while (= (type mat) 'list)
  35.             (setq SS (xdrx_entity_transformedcopy ss1 (xdrx_matrix_identity 3)))
  36.             (setq a -1)
  37.             (while (setq e (ssname ss (setq a(1+ a))))
  38.                 (setq e (entget e))
  39.                 (if (and (= "TEXT" (cdr(assoc 0 e)))(setq nums (t2 (cdr(assoc 1 e)))))
  40.                     (entmod(subst (cons 1 (strcat (car nums)
  41.                                     (vl-princ-to-string
  42.                                         (if (setq ww (caddr nums))
  43.                                             (rtos (+ m (atof (cadr nums)))2 ww)
  44.                                             (rtos (+ m (atof (cadr nums)))2 0)
  45.                                         )
  46.                                     )
  47.                                 )
  48.                             )
  49.                             (assoc 1 e)e))
  50.                 )
  51.             )
  52.             (xdrx_drag_initget " ")
  53.             (setq mat (xdrx_pickset_draggen "\n指定基点<退出>:" ss pj 2 T) m (+ $buchang m))
  54.             (if (= (type mat) 'list)
  55.                 (xdrx_entity_transform ss mat)
  56.                 (command ".erase" ss "")
  57.             )
  58.         )
  59.     )
  60.     (xdrx_pickset_redraw ss1 T)
  61.     (princ)
  62. )
  63. (defun ureal (bit kwd msg def / inp)
  64.     (if def
  65.         (setq msg (strcat "\n" msg "<" (rtos def 2) ">: ")
  66.             bit (* 2 (fix (/ bit 2)))
  67.         )
  68.         (setq msg (strcat "\n" msg ": "))
  69.     )
  70.     (initget bit kwd)
  71.     (setq inp (getreal msg))
  72.     (if inp
  73.         inp
  74.         def
  75.     )
  76. )
123.gif

评分

参与人数 1D豆 +5 收起 理由
Lispboy + 5 先加分再说,有人陪了。

查看全部评分

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

程序可能还有地方API没用好的。 没有亮显选择集。 且有时候复制完的选择集夹点不知道哪里去了!

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-7-31 18:59:27 | 显示全部楼层
本帖最后由 Lispboy 于 2013-7-31 19:03 编辑

看到哪算哪,先点评下

1、 xdrx_entity_transformedCopy 前后不用 xdrx_setmark  xdrx_getss 获得选择集了, 函数本身就返回选择集了,现在。
2、 你这种只移动的情况,用 xdrx_drag_move 就行了, 不必要那个灵活多变的 xdrx_pickset_draggen
3、 拷贝完一个后,循环再回来的时候,要用 (xdrx_drag_setmartix t) 清空上次的变换矩阵,否则又和你上次的变换矩阵组合运算了。这个应该是你跑别的地方的原因。
我看下也写个你这个功能的程序,想请教下你的规则, 只是变末尾是数字的文字实体吗?


点评

(xdrx_drag_setmartix t)CAD2004的API没这个函数?!  发表于 2013-7-31 21:21
1、没注意 。 如果函数本身就返回转换后的选择集最好了。 2、move不能移动本体吧? 我要求把本体移走的。 3、这个程序就是对 选择集中 带数字后缀的字符串 进行递增 或递减的复制。 我随便写的。所以处理  详情 回复 发表于 2013-7-31 19:07
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-31 19:07:49 | 显示全部楼层
本帖最后由 wowan1314 于 2013-7-31 21:22 编辑
Lispboy 发表于 2013-7-31 18:59
看到哪算哪,先点评下

1、 xdrx_entity_transformedCopy 前后不用 xdrx_setmark  xdrx_getss 获得选择集 ...

1、没注意 。  如果函数本身就返回转换后的选择集最好了。

2、move不能移动本体吧?  我要求把本体移走的。    另外物体没跑,只是夹点跑别的地方了?

3、这个程序就是对 选择集中 带数字后缀的字符串 进行递增 或递减的复制。
我随便写的。所以处理不是很完善。
应该是  纯数字就要求 负数也要算。

而数字后缀的往往不需要负数。-号只是连接符.  对于这些文字不仅复制还要递增


而对于选择集其他 后缀不是数字  或 不是文字的 东西一概 仅仅是复制 处理。

点评

那 abc-1 是按1考虑, 还是-1考虑, 应该是1吧?  详情 回复 发表于 2013-7-31 19:21
拖动只是个显示过程,返回的结果是变换矩阵,至于你想COPY还是MOVE,分别用不同的变换函数xdrx_entity_transformedCopy 和 xdrx_entity_transform 来决定。  详情 回复 发表于 2013-7-31 19:19
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-7-31 19:19:07 | 显示全部楼层
wowan1314 发表于 2013-7-31 19:07
1、没注意 。  如果函数本身就返回转换后的选择集最好了。

2、move不能移动本体吧?  我要求把本体移 ...
2、move不能移动本体吧?  我要求把本体移 .



拖动只是个显示过程,返回的结果是变换矩阵,至于你想COPY还是MOVE,分别用不同的变换函数xdrx_entity_transformedCopy 和 xdrx_entity_transform 来决定。

点评

因为 要求显示的是处理后的选择集。 所以要求把本体一起移动走了 不然原选择集就重出现重影。  详情 回复 发表于 2013-7-31 19:21
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-7-31 19:21:07 | 显示全部楼层
wowan1314 发表于 2013-7-31 19:07
1、没注意 。  如果函数本身就返回转换后的选择集最好了。

2、move不能移动本体吧?  我要求把本体移 ...

那  abc-1 是按1考虑, 还是-1考虑, 应该是1吧?

点评

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

使用道具 举报

 楼主| 发表于 2013-7-31 19:21:50 | 显示全部楼层
Lispboy 发表于 2013-7-31 19:19
拖动只是个显示过程,返回的结果是变换矩阵,至于你想COPY还是MOVE,分别用不同的变换函数xdrx_ent ...

因为 要求显示的是处理后的选择集。 所以要求把本体一起移动走了
不然原选择集就重出现重影。

点评

你要是开始就拷贝个备份,对备份操作,那么: (xdrx_pickset_draggen "\n指定基点:" ss pj 2 t) 最后的t 改NIL试试? 你自己也可以把原来的选择集不可见的,也可以删除,随你了。  详情 回复 发表于 2013-7-31 19:36
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-7-31 19:36:48 | 显示全部楼层
wowan1314 发表于 2013-7-31 19:21
因为 要求显示的是处理后的选择集。 所以要求把本体一起移动走了
不然原选择集就重出现重影。

你要是开始就拷贝个备份,对备份操作,那么:

(xdrx_pickset_draggen "\n指定基点<退出>:" ss pj 2 t) 最后的t 改NIL试试?


你自己也可以把原来的选择集不可见的,也可以删除,随你了。

点评

我的程序就是对原选择集进行了备份。 然后对备份的选择集进行修改拖动。 改为NIL,就会有重影。还是这样好些。  详情 回复 发表于 2013-7-31 21:04
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-7-31 19:43:22 来自手机 | 显示全部楼层
ureal 可以用 xdrx_entsel 带过滤器的来自: Android客户端

点评

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

使用道具 举报

 楼主| 发表于 2013-7-31 21:04:50 | 显示全部楼层
本帖最后由 wowan1314 于 2013-7-31 21:24 编辑
Lispboy 发表于 2013-7-31 19:36
你要是开始就拷贝个备份,对备份操作,那么:

(xdrx_pickset_draggen "\n指定基点:" ss pj 2 t) 最后 ...

我的程序就是对原选择集进行了备份。 然后对备份的选择集进行修改然后再拖动。
改为NIL,就会有重影。还是这样好些。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 24个

财富等级: 恭喜发财

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

使用道具 举报

已领礼包: 202个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 418个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 25个

财富等级: 恭喜发财

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 08:24 , Processed in 0.341463 second(s), 68 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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