明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 217|回复: 2

[基础] 怎么判断对象是引线?

[复制链接]
发表于 2024-1-19 21:44 | 显示全部楼层 |阅读模式
本帖最后由 Nico 于 2024-1-19 22:31 编辑

怎么判断对象是引线?

引线+多行文字组成了引线,
怎么判断这个多行文字是与引线捆绑的?


哪位大神帮写个代码,我想把甩有标注对象 (含引线)转到  dim 图层上



  1. (defun c:gtz1 ();得到块内对象,第一层级;要
  2.   (vl-load-com)
  3.   (princ "\n速度有点慢慢  请稍等")
  4.   (if (setq ss (ssget (list '(0 . "INSERT"))))
  5.     (repeat (setq sslen (sslength ss))
  6.       (setq ename (ssname ss (setq sslen (1- sslen))))
  7.       (setq enlast1 (tblobjname "block" (cdr (assoc 2 (entget ename)))))
  8.       (setq tz_dim "dim")
  9.       (setq tz_txt "A文字")
  10.       (while (setq enlast1 (entnext enlast1))
  11.   
  12.       
  13.     ;改单行文字到文字层
  14.   (if (or (= nema1 "AcDbMText") (= nema1 "AcDbText") );
  15.     (progn
  16.       (if (= nema1 "AcDbText")
  17.         (princ "\n单行文字")
  18. ;;;      (princ (Vlax-Get (Vlax-Ename->Vla-Object enlast1) 'TextString));为什么会错  'TextString
  19.             
  20.         )
  21.   
  22.     (Vlax-Put-Property (Vlax-Ename->Vla-Object enlast1) 'Layer tz_txt);放到指定图层
  23. ;;;            (command "REGEN")         ;重画一下
  24.     )
  25.     )
  26.   ;改对象到标注层
  27.   (setq nema1 (Vlax-Get (Vlax-Ename->Vla-Object enlast1) 'ObjectName ))
  28.   (if (or (= nema1 "AcDbRotatedDimension") (= nema1 "AcDbAlignedDimension") (= nema1 "AcDbRadialDimension"));
  29.     (progn
  30.   
  31.     (Vlax-Put-Property (Vlax-Ename->Vla-Object enlast1) 'Layer tz_dim);放到指定图层
  32.            
  33.     )
  34.     )
  35. ;;;  (princ (car (entget enlast1)))
  36. ;;;  (princ "\n")
  37.       )
  38.       )
  39.     )
  40.    (command "REGEN")         ;重画一下
  41.   (princ)
  42.   )


哪里写的不对,单行文字有时也不转换,

发表于 2024-1-19 22:58 | 显示全部楼层
;;;关联的前提下,根据引线找注释对象
;;;一个引线只关联一个注释对象
(defun C:TT1 (/ LDR ANN)
  (if (and (setq LDR (entsel "\n选择引线: "))
           (or (setq ANN (vla-get-Annotation (vlax-ename->vla-object (car LDR))))
               (progn (princ "\n未发现注释对象: ") nil)
           )
      )
    (sssetfirst nil (ssadd (vlax-vla-object->ename ANN) (ssadd)))
  )
)

;;;关联的前提下,根据注释对象找引线
;;;一个注释对象可能关联多个引线
(defun C:TT2 (/ ANN ENX SS)
  (if (setq ANN (entsel "\n选择注释对象: "))
    (progn
      (setq ENX (entget (car ANN))
            ENX (member (assoc 330 ENX) ENX)
            SS  (ssadd)
      )
      (while (= (car (setq LDR (car ENX))) 330)
        (if (= (cdr (assoc 0 (entget (setq LDR (cdr LDR))))) "LEADER")
          (ssadd LDR SS)
        )
        (setq ENX (cdr ENX))
      )
      (if (zerop (sslength SS))
        (princ "\n注释对象没有相关联的引线!")
        (sssetfirst nil SS)
      )
    )
  )
)
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2024-1-20 08:34 | 显示全部楼层
caoyin 发表于 2024-1-19 22:58
;;;关联的前提下,根据引线找注释对象
;;;一个引线只关联一个注释对象
(defun C:TT1 (/ LDR ANN)

感谢  感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-17 12:19 , Processed in 0.171516 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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