找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1506|回复: 4

[下载]:属性与文本批量互转!

[复制链接]
发表于 2007-6-13 10:38:34 | 显示全部楼层 |阅读模式

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

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

×
1.TAG2TXT属性转文本 
[php]
;; TAG2TXT属性转文本 
(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)
)
[/php]

2.TXT2TAG文本转属性
[php]
;; TXT2TAG文本转属性 
(defun C:TXT2TAG (/ sset num itm hnd ent new dolst grp addto)
  (setq sset (ssget '((0 . "TEXT"))))
  (setq        num (sslength sset)
        itm 0
  )
  (while (< itm num)
    (setq hnd (ssname sset itm))
    (setq ent (entget hnd))
    (setq new '((0 . "ATTDEF")))
    (setq new (append new
                      (list (cons 1 (cdr (assoc 1 ent)))
                            (cons 2 (cdr (assoc 1 ent)))
                            (cons 3 (cdr (assoc 1 ent)))
                            (cons 70 0)
                      )
              )
    )
    (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)
)

[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2007-7-7 22:33:45 | 显示全部楼层
“TXT2TAG文本转属性”程序中:
1. 如果被编辑的文本图元的文本内容含有小写字母则会自动转为大写;
2. 如果被编辑的文本图元的文本内容含有空格,则会与程序的初衷不符,会丢失。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-7-8 00:16:47 | 显示全部楼层
最初由 marcoyuwen 发布
[B]“TXT2TAG文本转属性”程序中:
1. 如果被编辑的文本图元的文本内容含有小写字母则会自动转为大写;
2. 如果被编辑的文本图元的文本内容含有空格,则会与程序的初衷不符,会丢失。 [/B]


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

使用道具 举报

 楼主| 发表于 2007-7-8 08:18:20 | 显示全部楼层
谢谢二楼的提醒!
首先,抱歉。
其次,第一个程序是MJTD上面的!
      第二个当然是我根据上面的想法做的修改。
最后,希望哪位把二个程序修正完整一下!感谢!
第二个程序感觉没什么意义!用下面这个吧!
[php]
;;把text转为属性图块
;;By LUCAS
(defun C:C_DEF (/ HOLDECHO HOLDBLIP HOLDREQ SS SSS N A AA A1 A73 HH
                LST_210        LST_10
               )  (defun DXF (A1 A2 /)
    (setq ENT (cdr (assoc A1 A2)))
  )  (defun GETATT        (E ATTNAME / N ATT E1 EN EN1 RSLT)
    (setq EN (entget E)
          E1 E
    )
    (if        (and (= (DXF 0 EN) "INSERT")
             (= (DXF 66 EN) 1)
        )
      (progn
        (setq E1  (entnext E1)
              ATT (strcase ATTNAME)
        )
        (while (and E1
                    (setq EN1 (entget E1))
                    (= (DXF 0 EN1) "ATTRIB")
               )
          (setq RSLT (append RSLT (list (DXF -1 EN1))))
          (setq E1 (entnext E1))
        )
      )
    )
    (setq N 0)
    (repeat (length RSLT)
      (entmod (subst (nth N LST_210)
                     (assoc 210 (entget (nth N RSLT)))
                     (entget (nth N RSLT))
              )
      )
      (entmod (subst (nth N LST_10)
                     (assoc 10 (entget (nth N RSLT)))
                     (entget (nth N RSLT))
              )
      )
      (setq N (1+ N))
    )
    (entupd (entlast))
  )  (command "_.undo" "_group")
  (setq HOLDECHO (getvar "cmdecho"))
  (setq HOLDBLIP (getvar "blipmode"))
  (setq HOLDREQ (getvar "attreq"))
  (setvar "cmdecho" 0)
  (setvar "blipmode" 0)
  (while (or (= SSS NIL) (= SS NIL))
    (setq SSS (ssget))
    (setq SS (ssget "P" '((0 . "TEXT"))))
  )
  (command "_.UCS" "")
  (setq N 0)
  (setq HH (ssadd))
  (repeat (sslength SS)
    (setq A (ssname SS N))
    (setq LST_210 (append LST_210 (list (assoc 210 (entget A)))))
    (setq LST_10 (append LST_10 (list (assoc 10 (entget A)))))
    (setq AA (member '(100 . "AcDbEntity") (entget A)))
    (setq A73 (cdr (assoc 73 AA)))
    (setq A1 (cdr (assoc 1 AA)))
    (entmake (append '((0 . "ATTDEF"))
                     (reverse (cddr (reverse AA)))
                     '((100 . "AcDbAttributeDefinition")
                       (70 . 8)
                       ;;(73 . 0)
                      )
                     (list (cons 74 A73)
                           (cons 3 A1)
                           (cons 2 A1)
                     )
             )
    )
    (ssadd (entlast) HH)
    (setq N (1+ N))
  )
  (command "_.erase" SS "")
  (setq A (rtos (* (getvar "CDATE") 1E8)))
  (command "_.BLOCK" A "0,0" HH SSS "")
  (setvar "attreq" 0)
  (command "_.INSERT" A "0,0" "" "" "")
  (setvar "attreq" HOLDREQ)
  (GETATT (entlast) A)                        ;处理text对象不在X-Y平面
  (command "_.UCS" "P")
  (setvar "blipmode" HOLDBLIP)
  (setvar "cmdecho" HOLDECHO)
  (command "_.undo" "_end")
  (princ)
)
(prompt "\nType C_DEF")
(princ)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 104个

财富等级: 日进斗金

发表于 2020-9-22 12:42:35 | 显示全部楼层
找了很久了
终于找到你!!!!
感谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 18:38 , Processed in 0.409245 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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