找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2679|回复: 25

[研讨] 尺寸不炸开,如何得标注包围盒?

[复制链接]

已领礼包: 604个

财富等级: 财运亨通

发表于 2014-10-27 11:41:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 /db_自贡黄明儒_ 于 2014-10-27 12:09 编辑

尺寸不炸开,得标注文字包围盒,有什么好方法?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 264个

财富等级: 日进斗金

发表于 2014-10-27 11:46:09 来自手机 | 显示全部楼层
标注可以直接用boundingbox

点评

有这个函数吗?  详情 回复 发表于 2014-10-27 11:53
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2014-10-27 11:53:05 | 显示全部楼层
iLisp 发表于 2014-10-27 11:46
标注可以直接用boundingbox

有这个函数吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2014-10-27 11:53:19 来自手机 | 显示全部楼层
非要倾斜的就用10 11 12 13 组码加出头变量文字大小角度等构造点表,按倾斜坐标系计算box
vla-getboundingbox
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2014-10-27 12:21:25 来自手机 | 显示全部楼层
文字可以取得插入点,用nentselp获取并转换object再求box

另外标注也是块,由块定义内的文字求box,然后用矩阵转换到实际位置也可以
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2014-10-27 13:24:12 | 显示全部楼层
本帖最后由 /db_自贡黄明儒_ 于 2014-10-27 14:13 编辑
iLisp 发表于 2014-10-27 12:21
文字可以取得插入点,用nentselp获取并转换object再求box

另外标注也是块,由块定义内的文字求box,然后 ...
(defun C:w1 (/ B E EN MAXPT MINPT OBJ)
  (setq e (car (entsel)))
  (setq B (cdr (assoc 2 (entget e))))
  (setq e (TBLOBJNAME "Block" b))
  (while e
    (setq en (entget e))
    (cond ((equal (assoc 0 en) '(0 . "MTEXT")) (setq obj e) (setq e nil))
          (T (setq e (entnext e)))
    )
  )
  ;|(setq en (entget obj))
  (setq
    box        (textbox
          (vl-remove-if-not '(lambda (x) (or (= (car x) 1) (= (car x) 7) (= (car x) 40)))
                            en
          )
        )
  )
  (setq p (cdr (assoc 10 en)))
  (setq box (mapcar '(lambda (x) (mapcar '+ x p)) box))
  (command "_.rectang" "non" (car box) "non" (cadr box))
  |;
  (setq obj (vlax-ename->vla-object obj))
  (vla-GetBoundingBox obj 'minPt 'maxPt)                    ;得到包围框
  (setq minPt (vlax-safearray->list minPt))
  (setq maxPt (vlax-safearray->list maxPt))
  (command "_.rectang" "non" minPt "non" maxPt)
)
行不通的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2014-10-27 21:03:47 来自手机 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2014-10-27 13:24
(defun C:w1 (/ B E EN MAXPT MINPT OBJ)
  (setq e (car (entsel)))
  (setq B (cdr (assoc 2 (entget e ...

你没有转换到实际位置
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2014-10-27 21:28:11 来自手机 | 显示全部楼层
关键是出错了,运行不下去
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-10-27 23:24:36 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2014-10-27 13:24
(defun C:w1 (/ B E EN MAXPT MINPT OBJ)
  (setq e (car (entsel)))
  (setq B (cdr (assoc 2 (entget e ...

用你的代码运行下,有结果啊。

QQ截图20141027232329.png
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-10-28 07:56:46 | 显示全部楼层
本帖最后由 Free-Lancer 于 2014-10-28 07:58 编辑
/db_自贡黄明儒_ 发表于 2014-10-27 13:24
(defun C:w1 (/ B E EN MAXPT MINPT OBJ)
  (setq e (car (entsel)))
  (setq B (cdr (assoc 2 (entget e ...



  1. (defun DmTxtBox        (e             /                 _pnts:box   _pnts:rotate
  2.                  bn             textstring         height             stylename
  3.                  insertionpoint                 rotation    box
  4.                  v
  5.                 )
  6.   (defun _pnts:box (box /)
  7.     (list (car box)
  8.           (list (caadr box) (cadar box) (last (car box)))
  9.           (cadr box)
  10.           (list (caar box) (cadadr box) (last (car box)))
  11.     )
  12.   )
  13.   (defun _pnts:rotate (pts pb an)
  14.     (mapcar '(lambda (p)
  15.                (polar pb (+ (angle p pb) an) (distance p pb))
  16.              )
  17.             pts
  18.     )
  19.   )
  20.   (setq bn (cdr (assoc 2 (entget e))))
  21.   (vlax-for obj        (vla-item (fy:acblocks) bn)
  22.     (if        (= (vla-get-objectname obj) "AcDbMText")
  23.       (progn
  24.         (mapcar
  25.           'set
  26.           '(textstring height stylename InsertionPoint rotation)
  27.           (fy:get obj
  28.                   '(textstring height stylename InsertionPoint rotation)
  29.           )
  30.         )
  31.         (setq box
  32.                   (textbox
  33.                     (mapcar
  34.                       '(lambda (x y)
  35.                          (cons x y)
  36.                        )
  37.                       '(1 40 7)
  38.                       (list textstring height stylename)
  39.                     )
  40.                   )
  41.               v          (mapcar '- insertionpoint (apply 'fy:midp box))
  42.               box (mapcar '(lambda (p)
  43.                              (mapcar '+ v p)
  44.                            )
  45.                           (_pnts:box box)
  46.                   )
  47.               box (_pnts:rotate box InsertionPoint rotation)
  48.         )
  49.       )
  50.     )
  51.   )
  52.   box
  53. )
  54. (defun c:tt (/ _pline:make ss sl e box)
  55.   (defun _pline:make (pts)
  56.     (entmake
  57.       (append '((0 . "LWPOLYLINE")
  58.                 (100 . "AcDbEntity")
  59.                 (100 . "AcDbPolyline")
  60.                )
  61.               (list (cons 90 (length pts))
  62.                     '(70 . 1)
  63.               )
  64.               (mapcar '(lambda (x)
  65.                          (cons 10 (list (car x) (cadr x)))
  66.                        )
  67.                       pts
  68.               )
  69.       )
  70.     )
  71.   )
  72.   (if (setq ss (ssget '((0 . "dimension"))))
  73.     (progn
  74.       (setq sl (sslength ss))
  75.       (while (setq e (ssname ss (setq sl (1- sl))))
  76.         (setq box (DmTxtBox e))
  77.         (_pline:make box)
  78.       )
  79.     )
  80.   )
  81.   (princ)
  82. )



评分

参与人数 1D豆 +5 收起 理由
/db_自贡黄明儒_ + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1742个

财富等级: 堆金积玉

发表于 2014-10-28 09:05:36 | 显示全部楼层

(= (vla-get-objectname obj) "AcDbMText")  测试返回NIL

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1742个

财富等级: 堆金积玉

发表于 2014-10-28 09:08:16 | 显示全部楼层
  1. (defun DmTxtBox        (e             /                 _pnts:box   _pnts:rotate
  2.                  bn             textstring         height             stylename
  3.                  insertionpoint                 rotation    box
  4.                  v
  5.                 )
  6.   (defun _pnts:box (box /)
  7.     (list (car box)
  8.           (list (caadr box) (cadar box) (last (car box)))
  9.           (cadr box)
  10.           (list (caar box) (cadadr box) (last (car box)))
  11.     )
  12.   )
  13.   (defun _pnts:rotate (pts pb an)
  14.     (mapcar '(lambda (p)
  15.                (polar pb (+ (angle p pb) an) (distance p pb))
  16.              )
  17.             pts
  18.     )
  19.   )
  20.   (setq bn (cdr (assoc 2 (entget e))))
  21.   (vlax-for obj (vla-item (xx-blks) bn)
  22.     (if        (= (vla-get-objectname obj) "AcDbMText")
  23.       (progn
  24.         (mapcar
  25.           'set
  26.           '(textstring height stylename InsertionPoint rotation)
  27.           (mapcar(function(lambda(x)
  28.               (vlax-get-property obj x)))
  29.              '(textstring height stylename InsertionPoint rotation)
  30.           )
  31.         )
  32.         (setq box
  33.                   (textbox
  34.                     (mapcar
  35.                       '(lambda (x y)
  36.                          (cons x y)
  37.                        )
  38.                       '(1 40 7)
  39.                       (list textstring height stylename)
  40.                     )
  41.                   )
  42.               v          (mapcar '- insertionpoint (apply 'fy:midp box))
  43.               box (mapcar '(lambda (p)
  44.                              (mapcar '+ v p)
  45.                            )
  46.                           (_pnts:box box)
  47.                   )
  48.               box (_pnts:rotate box InsertionPoint rotation)
  49.         )
  50.       )
  51.     )
  52.   )
  53.   box
  54. )
  55. (defun c:XX (/ _pline:make ss sl e box)
  56.   (defun _pline:make (pts)
  57.     (entmake
  58.       (append '((0 . "LWPOLYLINE")
  59.                 (100 . "AcDbEntity")
  60.                 (100 . "AcDbPolyline")
  61.                )
  62.               (list (cons 90 (length pts))
  63.                     '(70 . 1)
  64.               )
  65.               (mapcar '(lambda (x)
  66.                          (cons 10 (list (car x) (cadr x)))
  67.                        )
  68.                       pts
  69.               )
  70.       )
  71.     )
  72.   )
  73.   (if (setq ss (ssget '((0 . "dimension"))))
  74.     (progn
  75.       (setq sl (sslength ss))
  76.       (while (setq e (ssname ss (setq sl (1- sl))))
  77.         (setq box (DmTxtBox e))
  78.         (_pline:make box)
  79.       )
  80.     )
  81.   )
  82.   (princ)
  83. )

  84. (setq xx-acad (vlax-get-acad-object)
  85.        xx-doc (vla-get-activedocument xx-acad);激活的文档
  86. )
  87. (defun xx-blks nil(vla-get-blocks xx-doc));块



04版本测试的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-10-28 10:00:30 | 显示全部楼层

那就无能为力了,最低只有 2005 测试 Ok,08 12 14 15 Ok
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2014-10-28 16:08:14 | 显示全部楼层

textstring要去掉前面的控制符才行,不然包围盒太大了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 79个

财富等级: 招财进宝

发表于 2014-11-15 16:42:09 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2014-10-28 16:08
textstring要去掉前面的控制符才行,不然包围盒太大了。

怎么获取的是很大的外框?就是会超出很多
请大师详说,谢谢

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 05:24 , Processed in 0.408943 second(s), 63 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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