明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1256|回复: 4

[提问] 求教,如何选取炸开后尺寸文本?

[复制链接]
发表于 2017-12-18 23:32:57 | 显示全部楼层 |阅读模式
(defun c:tt ()
  (setq ent (entsel))
  (if (= (cdr (assoc 0 (entget (car ent)))) "dimension")
    (progn
      (command "undo" "be")
      (command "explode" ent)
      (setq ss (ssget "p" '((0 . "*TEXT")))) ;选取炸开后尺寸文本
      (setq ent (entget (ssname ss 0)))
      (command "undo" "e")
      (command "u")  ;undo退反上面操作
    )
ent ;试图保持变量 ent的值,不知是否这么搞,但未成功
  )
  (setq obj (vlax-ename->vla-object (car ent)))
  (vla-GetBoundingBox obj 'pta 'ptb)
  (setq pt1 (vlax-safearray->list pta))
  (setq pt3 (vlax-safearray->list ptb))
  (setq pt2 (list (car pt3) (cadr pt1)))
  (setq pt4 (list (car pt1) (cadr pt3)))
  (command "pline" "none" pt1 "none" pt2 "none" pt3 "none" pt4 "c")

  (setq thh (cdr (assoc 1 (entget (car ent))))) ;测试,验证undo退反操作后,ent的值还在不在。
  (princ thh) ;经测试,点选文字 thh有值,点选尺寸实体, thh无值

  (princ)
)

请教各位大神,上面,undo退反操作后,如何保持作为文字选取的值?谢谢各位。
发表于 2017-12-19 14:19:43 | 显示全部楼层
  1. (defun c:tt (/ ENT OBJ PT1 PT2 PT3 PT4 PTA PTB SS THH)
  2.   (setq ent (entsel))
  3.   (if (= (cdr (assoc 0 (entget (car ent)))) "DIMENSION")
  4.     (progn
  5.       (command "explode" ent)
  6.       (setq ss (ssget "p" '((0 . "*TEXT"))))
  7.       (setq ent (ssname ss 0))
  8.       (setq thh (cdr (assoc 1 (entget ent))))
  9.       (setq obj (vlax-ename->vla-object ent))
  10.       (vla-GetBoundingBox obj 'pta 'ptb)
  11.       (setq pt1 (vlax-safearray->list pta))
  12.       (setq pt3 (vlax-safearray->list ptb))
  13.       (setq pt2 (list (car pt3) (cadr pt1)))
  14.       (setq pt4 (list (car pt1) (cadr pt3)))
  15.       (command "undo" "1")
  16.       (command "pline" "none" pt1 "none" pt2 "none" pt3        "none" pt4 "c")      
  17.       (princ thh)
  18.       (princ)
  19.     )
  20.   )
  21. )
 楼主| 发表于 2017-12-19 20:57:33 | 显示全部楼层

谢谢你,把功能部分放里面好是好,不过,针对“text" "mtext"实体,又要搞多一组功能部分的代码,这样一来显得有点长,我原想炸开后,选了文字,让它与“text" "mtext"共用那部分功能代码,我知道这样有点钻牛角尖,只是奇怪,即便undo做了退反操作,但程序未结束,变量ss 和 ent应该还在内存上,很难理解它们的值怎就没了。一点疑问,,,说了出来,有点啰嗦,,
谢谢你
发表于 2017-12-19 23:53:40 | 显示全部楼层


本帖子中包含更多资源

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

x
发表于 2017-12-20 08:22:38 | 显示全部楼层
AutoCAD的标注样式里,就有标注文字加边框的功能,无需进行编程的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-19 19:42 , Processed in 0.188170 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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