明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: lz123456

怎样把TEXT文字转换成ATTDEF定义的属性

[复制链接]
发表于 2022-8-27 12:29 | 显示全部楼层
psdcdr 发表于 2012-6-4 09:28
忘记在哪里找到的,一起分享下,

祝愿所有找LSP的朋友,都能得到答案!

这个程序有效,感谢分享
发表于 2022-8-29 07:57 | 显示全部楼层
lxl217114 发表于 2022-8-27 12:29
这个程序有效,感谢分享

(DEFUN C:TEXT2ATT (/ SS1 N TXTENT AA A1 A73 LST_210 LST_10)
  (VL-CMDF "_.undo" "_group")
  (SETVAR "blipmode" 0)
  (PRINC "\n选择TEXT文本对象: ")
  (setq SS1 (SSGET '((0 . "TEXT"))))
  (VL-CMDF "_.UCS" "W")
  (setq N 0)
  (REPEAT (SSLENGTH SS1)
    (setq TXTENT (SSNAME SS1 N))
    (setq LST_210 (APPEND LST_210 (LIST (ASSOC 210 (ENTGET TXTENT)))))
    (setq LST_10 (APPEND LST_10 (LIST (ASSOC 10 (ENTGET TXTENT)))))
    (setq AA (MEMBER '(100 . "AcDbEntity") (ENTGET TXTENT)))
    (setq A73 (CDR (ASSOC 73 AA)))
    (setq A1 (CDR (ASSOC 1 AA)))
    (ENTMAKE
      (APPEND '((0 . "ATTDEF"))
              (REVERSE (CDDR (REVERSE AA)))
              '((100 . "AcDbAttributeDefinition") (70 . 8))
              (LIST (CONS 74 A73) (CONS 3 A1) (CONS 2 A1))
      )
    )
    (setq N (1+ N))
  )
  (VL-CMDF "_.erase" SS1 "")
  (VL-CMDF "_.UCS" "P")
)

发表于 2022-8-29 09:37 | 显示全部楼层
baitang36 发表于 2022-8-29 07:57
(DEFUN C:TEXT2ATT (/ SS1 N TXTENT AA A1 A73 LST_210 LST_10)
  (VL-CMDF "_.undo" "_group")
  (SET ...

谢谢盛老师
发表于 2022-12-8 07:32 | 显示全部楼层
psdcdr 发表于 2012-6-4 09:28
忘记在哪里找到的,一起分享下,

祝愿所有找LSP的朋友,都能得到答案!

非常感谢你的分享
发表于 2022-12-8 11:24 | 显示全部楼层
试试这个
  1. (DEFUN C:TXT2ATT (/ SS1 N TXTENT AA A1 A73 LST_210 LST_10)
  2.   (VL-CMDF "_.undo" "_group")
  3.   (SETVAR "blipmode" 0)
  4.   (PRINC "\n选择TEXT文本对象: ")
  5.   (setq SS1 (SSGET '((0 . "TEXT"))))
  6.   (VL-CMDF "_.UCS" "W")
  7.   (setq N 0)
  8.   (REPEAT (SSLENGTH SS1)
  9.     (setq TXTENT (SSNAME SS1 N))
  10.     (setq LST_210 (APPEND LST_210 (LIST (ASSOC 210 (ENTGET TXTENT)))))
  11.     (setq LST_10 (APPEND LST_10 (LIST (ASSOC 10 (ENTGET TXTENT)))))
  12.     (setq AA (MEMBER '(100 . "AcDbEntity") (ENTGET TXTENT)))
  13.     (setq A73 (CDR (ASSOC 73 AA)))
  14.     (setq A1 (CDR (ASSOC 1 AA)))
  15.     (ENTMAKE
  16.       (APPEND '((0 . "ATTDEF"))
  17.               (REVERSE (CDDR (REVERSE AA)))
  18.               '((100 . "AcDbAttributeDefinition") (70 . 8))
  19.               (LIST (CONS 74 A73) (CONS 3 A1) (CONS 2 A1))
  20.       )
  21.     )
  22.     (setq N (1+ N))
  23.   )
  24.   (VL-CMDF "_.erase" SS1 "")
  25.   (VL-CMDF "_.UCS" "P")
  26. )
回复 支持 1 反对 0

使用道具 举报

发表于 2023-6-6 11:06 | 显示全部楼层
psdcdr 发表于 2012-6-4 09:28
忘记在哪里找到的,一起分享下,

祝愿所有找LSP的朋友,都能得到答案!

感谢分享,刚好有这方面的需求。
发表于 2023-6-11 15:52 | 显示全部楼层
baitang36 发表于 2022-8-29 07:57
(DEFUN C:TEXT2ATT (/ SS1 N TXTENT AA A1 A73 LST_210 LST_10)
  (VL-CMDF "_.undo" "_group")
  (SET ...

普通字转属性字程序有了,但属性字转普通字还没有
目前在论坛只找到一个如下    但这个没处理好文字对正问题,希望有高手改成保留原有校正等属性,只转换就好了
;; 属性转文字 
(defun C:TAG2TXT ()
   (setq sset (ssget '((0 . "ATTDEF"))))
   (setq num (sslength sset) itm 0)
   (while (< itm num)
     (setq hnd (ssname sset itm))
     (setq ent (entget hnd))
     (setq new '((0 . "TEXT")))
     (setq new (append new (list (cons 1 (cdr (assoc 2 ent))))))
     (setq dolst (list 7 8 10 11 39 40 41 50 51 62 71 72 73))
     (foreach grp dolst
       (setq addto (assoc grp ent))
       (if (/= addto nil)
         (setq new (append new (list (assoc grp ent))))
       )
     )
     (entdel hnd)
     (entmake new)
     (setq itm (1+ itm))
   )
   (princ)
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-5 05:58 , Processed in 0.332282 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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