乐筑天下

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

[编程交流] 文本编辑

[复制链接]
pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 10:46:58 | 显示全部楼层
 
你说得对,这就是为什么我在处理文本(任何文本)时不使用entmod函数的原因
 
看看这个:
  1. (defun CS  (st / a dat)
  2. (setq a (ssget  '((0 . "TEXT,MTEXT"))))
  3. (repeat (sslength a)
  4.    (setq dat (entget (ssname a 0))
  5.          dat (subst (cons 7 st) (assoc 7 dat) dat))
  6.    (entmod dat)
  7.    (ssdel (ssname a 0) a)
  8. )
  9. )

当它遇到注释性多行文字(Boom)
 
使用VL可以避免这种情况
  1. (defun CS ( st / a)
  2. (vl-load-com)
  3. (if (setq a (ssget  '((0 . "TEXT,MTEXT"))))
  4. (mapcar '(lambda (j)
  5.                   (vla-put-stylename (vlax-ename->vla-object j) st))
  6.                   (vl-remove-if 'listp (mapcar 'cadr (ssnamex a))))
  7.    )
  8. (princ)
  9. )

 
用法:
命令:(CS“ROMANS”)
 
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 23:30 , Processed in 0.411055 second(s), 63 queries .

© 2020-2025 乐筑天下

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