乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 62|回复: 13

[编程交流] 需要“文本更改”lisp。

[复制链接]

4

主题

15

帖子

11

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 12:22:31 | 显示全部楼层 |阅读模式
你好,
 
我需要一个关于文本更改的基本lisp。。
 
文本为:0+400.652
它变为:0+700.652
 
lisp将添加300
 
这里有一些例子:
 
0+600.000 -> 0+900.000
 
0+980.163 -> 1+280.163
 
 
有一个大的十字路口项目,我应该在KM文本中添加“300”米。。这么难做到:/
 
对不起,英语不好,谢谢你提前通知
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-6 12:29:30 | 显示全部楼层
这应该做到:
  1. (defun c:300 (/ ss)
  2. (vl-load-com)
  3. (if (setq ss (ssget '((0 . "text") (1 . "0+*"))))
  4.    (foreach str (mapcar 'vlax-ename->vla-object
  5.             (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
  6.         )
  7.      (vla-put-textstring
  8.    str
  9.    (strcat "0+" (rtos (+ 300 (atof (substr (vla-get-textstring str) 3))) 2 3))
  10.      )
  11.    )
  12. )
  13. (princ)
  14. )
回复

使用道具 举报

6

主题

249

帖子

247

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 12:34:41 | 显示全部楼层
 
 
不完全是这样:0+700不会变为1+000,而是变为0+1000
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-6 12:37:44 | 显示全部楼层
 
这就是我早上写代码@3得到的。。。
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-6 12:45:23 | 显示全部楼层
好啊我喝了咖啡,这似乎奏效了
 
  1. (defun c:incsta    (/ int isreal lst newstr pos ss string)
  2. (vl-load-com)
  3. (if (setq ss    (ssget ":L" '((0 . "text") (1 . "*+*")))
  4.        int    (getint "\nEnter increment amount: ")
  5.      )
  6.    (foreach str (mapcar 'vlax-ename->vla-object
  7.             (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
  8.         )
  9.      (setq string (vla-get-textstring str)
  10.        lst       (vl-string->list string)
  11.        newstr (rtos (+ int (atof (apply 'strcat (mapcar 'chr (vl-remove 43 lst)))))
  12.             2
  13.             (if (setq isreal (vl-string-position 46 string))
  14.               (strlen (substr string (+ 2 isreal)))
  15.               0
  16.             )
  17.           )
  18.        pos       (abs
  19.             (+ (vl-string-position 43 string) (- (1+ (strlen newstr)) (strlen string)))
  20.           )
  21.        newstr (strcat (substr newstr 1 pos) "+" (substr newstr (1+ pos)))
  22.        newstr (strcat (if (wcmatch newstr "+*")
  23.                 "0"
  24.                 ""
  25.               )
  26.               newstr
  27.           )
  28.      )
  29.      (vla-put-textstring str newstr)
  30.    )
  31. )
  32. (princ)
  33. )
回复

使用道具 举报

4

主题

15

帖子

11

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 12:47:08 | 显示全部楼层
你把我从“三天工作”中解救出来。非常感谢你帮助我!你让我高兴极了,兄弟!
 

                               
登录/注册后可看大图

 
给你的电子啤酒
 
干杯,兄弟!
 
编辑:
 
伙计,有个问题。。如何使用此lisp?
 
输入命令,选择文本,输入金额,然后?
 
我现在正在使用2010,命令栏对我说:
 
  1. Command: incsta
  2. Select objects: Specify opposite corner: 2 found
  3. Select objects:
  4. Enter increment amount: 500
  5. Pick a point to increment selected text: ; error: bad argument value:
  6. non-negative: -2

 
文本为:60+380.000
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-6 12:54:07 | 显示全部楼层
 
谢谢你的电子啤酒。。。你能把你正在画的画贴出来吗?我试过那个文本字符串,效果很好?
 
*编辑。。。。我想我可能已经修好了。。。我转发了上面的代码。试试看,让我知道。
回复

使用道具 举报

4

主题

15

帖子

11

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 12:56:39 | 显示全部楼层
我现在就试过了伙计。。
 
60+380.000至60+480
 
60+380.001至60+480.001
 
我想问题是“.000”。。
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-6 13:02:19 | 显示全部楼层
 
我不能重复你的问题。。。。把你的画贴出来,我会把它整理好的。
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-6 13:06:15 | 显示全部楼层
我想这一切都好吧?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-5 06:19 , Processed in 0.567620 second(s), 83 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表