明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2182|回复: 6

[提问] 如何获得多行文字实际内容的最小包围框

[复制链接]
发表于 2016-5-10 10:53:20 | 显示全部楼层 |阅读模式
vla-getboundingbox获得的是控制点,不是实际内容的最小包围框,如果控制点范围很大,内容很少,得到的包围框就偏差较大。
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2016-5-10 13:09:00 | 显示全部楼层
;;;;;;;;;;;;;;;;;;;;;;; KozMos AnnoQuarX Functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Name:                AQX:GETMTEXTBOX(2)                                                        ;;;
;;; Descryption:        Get the boundary rectangle box of the MTEXT/TEXT                        ;;;
;;; Argu(1):                The annotation object selectionset                        ENAME                ;;;
;;; Argu(2):                Offset distance, nil for 0.0                                REAL                ;;;
;;; ------------------------------------------------------------------------------------------- ;;;
;;; RetValue(OK)        4-Points-list (LL, LR, UR, UL)                                LIST                ;;;
;;; RetValue(FAIL)        NIL                                                        BOOLEAN                ;;;
;;; ------------------------------------------------------------------------------------------- ;;;
;;; Example                (AQX:GETMTEXTBOX (car(entsel)) 0.0)                                        ;;;
;;;                ====>        ((97346.9 291.883) (61132.6 20869.7) (56983.4 13567.6) (93197.6 -7010.23));
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 2014/11/28 (Koz Jono Yeoh) ;;;;;;;;
(Defun AQX:GETMTEXTBOX (obj off / MXV B ENX H J L M N O P R W)
  (Defun mxv (m v)
    (mapcar '(lambda (r) (apply '+ (mapcar '* r v))) m)
  )
  (setq enx (entget obj))
  (if (null off)
    (setq off 0.0)
  )
  (if
    (setq l
           (cond
             ((= "TEXT" (cdr (assoc 0 enx)))
              (setq b (cdr (assoc 10 enx))
                    r (cdr (assoc 50 enx))
                    l (textbox enx)
              )
              (list
                (list (- (caar l) off) (- (cadar l) off))
                (list (+ (caadr l) off) (- (cadar l) off))
                (list (+ (caadr l) off) (+ (cadadr l) off))
                (list (- (caar l) off) (+ (cadadr l) off))
              )
             )
             ((= "MTEXT" (cdr (assoc 0 enx)))
              (setq n (cdr (assoc 210 enx))
                    b (trans (cdr (assoc 10 enx)) 0 n)
                    r (angle '(0.0 0.0 0.0) (trans (cdr (assoc 11 enx)) 0 n))
                    w (cdr (assoc 42 enx))
                    h (cdr (assoc 43 enx))
                    j (cdr (assoc 71 enx))
                    o (list
                        (cond
                          ((member j '(2 5 8)) (/ w -2.0))
                          ((member j '(3 6 9)) (- w))
                          (0.0)
                        )
                        (cond
                          ((member j '(1 2 3)) (- h))
                          ((member j '(4 5 6)) (/ h -2.0))
                          (0.0)
                        )
                      )
              )
              (list
                (list (- (car o) off) (- (cadr o) off))
                (list (+ (car o) w off) (- (cadr o) off))
                (list (+ (car o) w off) (+ (cadr o) h off))
                (list (- (car o) off) (+ (cadr o) h off))
              )
             )
           )
    )
     ((lambda (m)
        (mapcar '(lambda (p) (mapcar '+ (mxv m p) b)) l)
      )
       (list
         (list (cos r) (sin (- r)) 0.0)
         (list (sin r) (cos r) 0.0)
         '(0.0 0.0 1.0)
       )
     )
  )
)

点评

谢谢  发表于 2016-5-10 14:08

评分

参与人数 2明经币 +2 收起 理由
自贡黄明儒 + 1 很给力!
USER2128 + 1 很给力!

查看全部评分

回复 支持 1 反对 1

使用道具 举报

发表于 2016-5-10 12:02:05 | 显示全部楼层
参考textbox
回复 支持 1 反对 1

使用道具 举报

发表于 2016-5-10 11:10:29 | 显示全部楼层
copy、explode、vla-getboundingbox、erase
发表于 2016-5-10 11:18:22 | 显示全部楼层
mtext 炸开后字体可能会发生变化,因此楼上这个方法可能不准。
 楼主| 发表于 2018-5-3 08:39:47 来自手机 | 显示全部楼层
ros字体不对
发表于 2024-5-28 23:57:06 来自手机 | 显示全部楼层
多行文字有专门的方法,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 16:25 , Processed in 0.197009 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表