乐筑天下

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

[编程交流] 将文本/多行文本更改为多重引线

[复制链接]

9

主题

25

帖子

15

银币

初来乍到

Rank: 1

铜币
48
发表于 2022-10-10 17:39:38 | 显示全部楼层 |阅读模式
将文本/多行文本更改为多重引线。
有没有这样的命令,或者我开发一个 lisp ?

回复

使用道具 举报

21

主题

356

帖子

1048

银币

管理员

Rank: 25

铜币
525
发表于 2022-10-11 20:36:43 | 显示全部楼层
不久前,我把它放在一起,将文本放入 mleader 中。它适用于单行或多行文本并从上到下排序。创建的 mleader 使用当前的 mleader 样式。
试试这个。
  1. (defun c:am (/ newleader pt1 pt2 ss txt x w rjp-getbbwdth)
  2. (vl-load-com)
  3. (defun rjp-getbbwdth (obj / out ll ur)
  4.    (vla-getboundingbox obj 'll 'ur)
  5.    (setq out (mapcar 'vlax-safearray->list (list ll ur)))
  6.    (distance (car out) (list (caadr out) (cadar out)))
  7. )
  8. (if (setq ss (ssget '((0 . "*TEXT"))))
  9.    (progn (setq txt (apply
  10.                'strcat
  11.                (mapcar
  12.                  'cdr
  13.                  (vl-sort
  14.                    (mapcar '(lambda (x)
  15.                               (cons (vlax-get x 'insertionpoint)
  16.                                     (strcat (vlax-get x 'textstring) " ")
  17.                               )
  18.                             )
  19.                            (setq
  20.                              ss        (mapcar
  21.                                   'vlax-ename->vla-object
  22.                                   (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
  23.                                 )
  24.                            )
  25.                    )
  26.                    (function (lambda (y1 y2) (< (cadr (car y2)) (cadr (car y1))))
  27.                    )
  28.                  )
  29.                )
  30.              )
  31.          w   (car (vl-sort (mapcar 'rjp-getbbwdth ss) '>))
  32.          txt (apply 'strcat
  33.                     (mapcar 'chr (reverse (cdr (reverse (vl-string->list txt)))))
  34.              )
  35.    )
  36.    (mapcar 'vla-delete ss)
  37.    )
  38. )
  39. (if (and (setq pt1 (getpoint "\nSpecify leader arrowhead location: "))
  40.    (setq pt2 (getpoint pt1 "\nSpecify landing location: "))
  41.      )
  42.    (progn (command "._MLEADER" pt1 pt2 "")
  43.    (setq newleader (vlax-ename->vla-object (entlast)))
  44.    (vla-put-textstring newleader txt)
  45.    (vla-put-textwidth newleader w)
  46.    )
  47. )
  48. (princ)
  49. )


回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2024-11-22 02:10 , Processed in 0.139102 second(s), 56 queries .

© 2020-2024 乐筑天下

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