明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2793|回复: 15

[已解答] 求代码 点击一下数字 就变成 此数字加上固定数字的运算结果!

[复制链接]
发表于 2015-12-26 13:40:56 | 显示全部楼层 |阅读模式
本帖最后由 wayne_myles 于 2015-12-29 15:22 编辑

求助各位大大!!!  
点击一下数字 就变成 此数字加上固定数字的运算结果!

表达不好 我就举个例子!
cad中 不同位置 有不同的数字    我想得到 每个数字+78 的结果   

想要的效果是 我先定义+78 然后我单击2  2就变成80   我单击23  就变成101     我单击100就变成178.。。。。。。
假如可以的话  +78这个数字可以自定义(比如+!  比如+8)   最好改变后的数字变成红色 ---方便区别是否单击过!!

麻烦各位大大了!!!!呵呵  先谢谢了

补充 !已解决  方案见7# 龙哥代码  完美运行   谢谢龙哥了!
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2015-12-26 13:44:10 | 显示全部楼层
本帖最后由 wayne_myles 于 2015-12-26 13:52 编辑

发张美女镇楼!!哈

本帖子中包含更多资源

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

x
发表于 2015-12-26 13:58:52 | 显示全部楼层
(+ (atof(cdr(assoc 1(entget(car(entsel)))))) 78)

评分

参与人数 1明经币 +1 金钱 +5 收起 理由
wayne_myles + 1 + 5 赞一个!

查看全部评分

 楼主| 发表于 2015-12-26 14:23:12 | 显示全部楼层
本帖最后由 wayne_myles 于 2015-12-26 14:42 编辑
wzg356 发表于 2015-12-26 13:58
(+ (atof(cdr(assoc 1(entget(car(entsel)))))) 78)

可行谢谢  就是结果显示在命令行之中稍有不便
是否可以把原来的数字变成运算结果?!!!!谢谢大侠
发表于 2015-12-26 15:36:56 | 显示全部楼层
本帖最后由 wzg356 于 2015-12-26 21:49 编辑
  1. (defun c:adnum ( / ss i val1 val2 ent newstr)
  2. (setvar "dimzin" 1)
  3. (if (setq ss (ssget '((0 . "TEXT") (1 . "~*[~`--9]*"))));只选取数字文本
  4.   (progn
  5.     (setq i 0 )
  6.     (setq val1 (getreal "\n输入要加的数:"))
  7.     (setq val2 (getint "\n输入保留小数位:"))
  8.     (repeat (sslength ss)
  9.       (setq ent (entget(ssname ss i))
  10.            newstr(rtos (+ (atof(cdr(assoc 1 ent))) val1) 2 val2)
  11.       )
  12.       (entmod (setq ent (subst (cons 1 newstr) (assoc 1 ent) ent)))
  13.       ;(if (assoc 62 ent)
  14.       ;  (entmod (subst (cons 62 1) (assoc 62 ent) ent))
  15.       ;  (entmod (cons (cons 62 1)ent))        
  16.       ;)
  17.       (setq i (+ 1 i))      
  18.     )
  19.   )
  20.   (alert "\n没有选中数字!")
  21. )
  22. (princ)
  23. )

点评

再次谢谢WZG356大侠帮忙!!!  发表于 2015-12-28 07:54
(ssget '((1 . "*#*")))无法保证选中的只有数字。。。比如"A123"也会被选中  发表于 2015-12-26 21:13

评分

参与人数 1明经币 +1 收起 理由
wayne_myles + 1 不好意思没分了!!!聊表心意!!!

查看全部评分

 楼主| 发表于 2015-12-26 17:01:31 | 显示全部楼层
wzg356 发表于 2015-12-26 15:36

已经运行很好!!!!谢谢
  希望您有空的话 帮忙改进下已经改变的数字变成红色 再次谢谢大神!!!

点评

5楼,获取选择集应为(setq ss (ssget '((0 . "TEXT") (1 . "~*[~`--9]*"))));只选取数字文本  发表于 2015-12-26 21:47
6楼已改好,去掉那几句的注释就行了  发表于 2015-12-26 19:46
发表于 2015-12-26 18:40:42 | 显示全部楼层
本帖最后由 llsheng_73 于 2015-12-26 19:51 编辑
wayne_myles 发表于 2015-12-26 17:01
已经运行很好!!!!谢谢
  希望您有空的话 帮忙改进下已经改变的数字变成红色 再次谢谢大神!!!


  1. (defun c:tt(/ ss e)
  2.   (setvar "dimzin" 1)
  3.   (setq *a*(if(setq b(getint(strcat"保留小数位["(if *a*(itoa *a*)"0")"]")))b(if *a* *a* 0)))
  4.   (if(setq ss (ssget '((1 . "*#*"))))
  5.     (foreach e(mapcar'(lambda(x / e a)(if(and(=(type(setq e(cadr x)))'ename)
  6.           (setq a(distof(cdr(assoc 1(entget e))))))
  7.             (list e a)))(ssnamex ss))
  8.       (if e(entmod(mapcar'cons'(-1 1 62)(list(car e)(rtos(+ 78(last e))2 *a*)1)))))))

点评

完美运行 !!! 小白注意下 数字需要是单行文字 !无法运行看看是否是多行文字 分解下就可以了!!!  发表于 2015-12-29 15:24

评分

参与人数 1明经币 +1 收起 理由
wayne_myles + 1 谢谢龙哥指点 很给力!

查看全部评分

发表于 2015-12-26 20:35:30 | 显示全部楼层
到我的网络U盘中下载一个ce.lsp,通用文本计算。

评分

参与人数 1明经币 +1 收起 理由
wayne_myles + 1 赞一个!

查看全部评分

发表于 2015-12-26 21:45:14 | 显示全部楼层
llsheng_73 发表于 2015-12-26 18:40

谢谢大咖指点
(setq ss (ssget '((0 . "TEXT") (1 . "~*[~`--9]*"))));只选取数字文本

点评

"1.1.2"也会被(ssget '((0 . "TEXT") (1 . "~*[~`--9]*")))选中。。。实际上,无法直接通过过滤表来实现  发表于 2015-12-26 22:39
发表于 2015-12-26 22:45:53 | 显示全部楼层
本帖最后由 llsheng_73 于 2015-12-26 22:48 编辑
wzg356 发表于 2015-12-26 21:45
谢谢大咖指点
(setq ss (ssget '((0 . "TEXT") (1 . "~*[~`--9]*"))));只选取数字文本


"1.2.3"或者"1-2"都会被 (ssget '((0 . "TEXT") (1 . "~*[~`--9]*")))选中,而类似1e-8这种实实在在的数字却被过滤掉了
个人认为,无法直接通过过滤表来选择数字文本。。。只能大致过滤然后对文本进行测试后进行剔除
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-19 07:34 , Processed in 0.188288 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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