乐筑天下

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

[编程交流] 通过LISP编辑多行文字

[复制链接]

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 10:17:42 | 显示全部楼层
  1. (defun c:test (/ new ss)(vl-load-com)
  2. ; Tharwat 24.02. 2010
  3. (if (and (setq new (getstring T "Enter New Text: "))
  4.           (setq ss (ssget "_X" '((0 . "MTEXT") (1 . "test"))))
  5.      )
  6.    ((lambda (i / ss1)
  7.       (while
  8.         (setq ss1 (ssname ss (setq i (1+ i))))
  9.          (vla-put-textstring (vlax-ename->vla-object ss1) new)
  10.       )
  11.     )
  12.      -1
  13.    )
  14.    (Alert
  15.      "\n Your replaced text is not found in the drawing....."
  16.    )
  17. )
  18. (princ)
  19. )
回复

使用道具 举报

20

主题

95

帖子

75

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 10:23:06 | 显示全部楼层
 
我只是说我把你的C:test改成了类似C:test1的东西,它成功了。。。。所以我必须在某个地方加载一个例程,该例程使用TEST作为命令。。。除此之外,您发布的最后一个代码按原样工作。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 10:24:32 | 显示全部楼层
 
是 啊就这样。
 
塔瓦特
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 10:26:54 | 显示全部楼层
请注意jmerch,如果您打算使用我已经为您发布的任何例程,您应该修改
常规。。。。。。这就是。
 
  1. (defun c:Test (/ ss str)
  2. (if (and (setq ss (ssget "_X" '((0 . "MTEXT") (1 . "TEST")))) ; select mtext
  3.           (/= "" (setq str (getstring T "\nSpecify string: "))) ; specify string & /= ""
  4.      )
  5.    (progn
  6.      ;; below steps through active selectionset
  7.      (vlax-for obj (setq ss (vla-get-activeselectionset ; active selectionset
  8.                               (vla-get-activedocument (vlax-get-acad-object))
  9.                             )
  10.                    )
  11.        (vla-put-textstring obj str)
  12.      )
  13.      (vla-delete ss) ; delete selection set (not acutal objects, just the selection set)
  14.    )
  15. )
  16. (princ)
  17. )

 
因为如果用户使用例程并按enter键而不是支持字符串,则例程会将找到的mtext替换为nil字符串(不可见)。
 
塔瓦特
回复

使用道具 举报

20

主题

95

帖子

75

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 10:30:25 | 显示全部楼层
看看谁在学习。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 10:33:32 | 显示全部楼层
 
每天我都会听到Lisp程序的怪事。
 
当做
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 10:35:46 | 显示全部楼层
要添加:
 
[列表=1]
  • 在这些情况下,我不会使用1 dxf代码查找文本。它区分大小写,只搜索前250个字符。
  • 我会避免使用vla get textstring,因为它有一个巨大的错误,它不会正确返回符号,而是给你一个“?”。
    [/列表]
  • 回复

    使用道具 举报

    54

    主题

    3755

    帖子

    3583

    银币

    后起之秀

    Rank: 20Rank: 20Rank: 20Rank: 20

    铜币
    438
    发表于 2022-7-6 10:39:17 | 显示全部楼层
    回复

    使用道具 举报

    63

    主题

    6297

    帖子

    6283

    银币

    后起之秀

    Rank: 20Rank: 20Rank: 20Rank: 20

    铜币
    358
    发表于 2022-7-6 10:44:55 | 显示全部楼层
     
    Everyday I am getting odd things with Lisp.
     
    Regards
    回复

    使用道具 举报

    54

    主题

    3755

    帖子

    3583

    银币

    后起之秀

    Rank: 20Rank: 20Rank: 20Rank: 20

    铜币
    438
    发表于 2022-7-6 10:45:59 | 显示全部楼层
    To add:
     


    • In these situations, I would stay clear of using the 1 dxf code for finding text. It's case sensitive and only searches the first 250 characters.
    • I would avoid the use of vla-get-textstring since there is a huge bug in that it will not return a symbol properly, and instead give you a "?".
    回复

    使用道具 举报

    发表回复

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

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

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

    GMT+8, 2025-3-6 23:28 , Processed in 0.333119 second(s), 70 queries .

    © 2020-2025 乐筑天下

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