cad字体批量打断lisp_怎么将CAD里的文字打断成单个单个的

手动的话就不说了,用程序来解决是最好的办法:

(defun C:tes ( / #g1 &k1 &kw1 &ob1 &ss1 c1 c10 c40 c41 c50 c51 c7 c8 cd1 cd2 i n n1) (if (null vlax-dump-object) (vl-load-com) ) (princ "\n请选择要变为单词的文字");如果选择了,那么就把文字分开了。 (if (setq &kw1 (ssget '((0 . "TEXT")))) (progn (while (setq &k1 (ssname &kw1 0)) (setq &kw1 (ssdel &k1 &kw1) #g1 (entget &k1) cd1 (caadr (textbox #g1))) (setq &ob1 (vlax-ename->vla-object &k1)) (setq c1 (vla-get-TextString &ob1) n (strlen c1) &ss1 (lsp201510027 c1)) (setq c8 (vla-get-layer &ob1) c40 (vla-get-Height &ob1)) (setq c10 (Vlax-SafeArray->List (Vlax-Variant-Value (vla-get-InsertionPoint &ob1)))) (setq c50 (vla-get-Rotation &ob1) c7 (vla-get-StyleName &ob1) c41 (vla-get-ScaleFactor &ob1)) (setq c51 (vla-get-ObliqueAngle &ob1)) (if (> n 0) (progn;;1 (setq cd1 (/ cd1 n) i 0) (repeat (length &ss1) (setq c1 (nth i &ss1) i (1+ i) n1 (car c1) c1 (cadr c1) cd2 (* n1 cd1)) (entmake (list '(0 . "TEXT") (cons 1 c1) (cons 40 c40) (cons 41 c41) (cons 10 c10) (cons 7 c7) (cons 8 c8) (cons 50 c50) (cons 51 c51))) (setq c10 (polar c10 c50 cd2)) );repeat (vla-delete &ob1) );progn;1 );if;1 );while ) ) (princ));;文字内容拆开(defun lsp201510027 (c1 / ac2 n1 ss1) (setq ss1 '()) (while (/= c1 "") (setq ac2 (substr c1 1 1) n1 (ascii ac2)) (cond ((< n1 128) (setq c1 (substr c1 2) ac2 (list 1 ac2)) ) ((>= n1 128) (setq ac2 (substr c1 1 2) c1 (substr c1 3) ac2 (list 2 ac2))) ) (setq ss1 (cons ac2 ss1)) );while (reverse ss1));复制到记事本,以【.lsp】为后缀命名,打开CAD,autolisp加载,命令【TES】;文字分为单词

取消

评论

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值