明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1378|回复: 8

[源码] 属性与单行文本互转

[复制链接]
发表于 2014-10-16 22:28 | 显示全部楼层 |阅读模式
本帖最后由 77077 于 2014-10-16 22:40 编辑

新手上路,求大师帮忙优化~~~

  1. ;;; 属性字与单行文字互转
  2. (defun c:tt (/ ss1 n m str)
  3.   (setq ss1 (mj:ss->list (ssget '((0 . "ATTDEF,TEXT"))))
  4.         n 0
  5.         m 0
  6.   )
  7.   (foreach ent ss1
  8.     (cond
  9.       ((= "ATTDEF" (cdr (assoc 0 (entget ent))))
  10.         (setq n (1+ n))
  11.         (att2txt ent)
  12.       )
  13.       ((= "TEXT" (cdr (assoc 0 (entget ent))))
  14.         (setq m (1+ m))
  15.         (txt2att ent)
  16.       )
  17.     )
  18.   )
  19.   (setq str (strcat "转化完成,共转化出<" (rtos n 2 0) ">个文字和<" (rtos m 2 0) ">个属性字"))
  20.   (princ str)
  21.   (princ)
  22. )
  23. ;;; 选择集转图元列表
  24. (defun mj:ss->list (ss1 / is-ename ss)
  25.   (defun is-ename (arg)
  26.     (equal (type arg) 'ename)
  27.   )
  28.   (vl-remove-if-not 'is-ename (mapcar
  29.                                 'cadr
  30.                                 (ssnamex ss1)
  31.                               )
  32.   )
  33. )
  34. ;;; 属性转文本
  35. (defun att2txt (ent / entdxf newdxf malst tem)
  36.   (setq entdxf (entget ent)
  37.         newdxf (list (cons 0 "text") (cons 1 (cdr (assoc 2 entdxf))))
  38.         malst (list 7 8 10 11 39 40 41 50 51 62 71 72 73)
  39.   )
  40.   (foreach mai malst
  41.     (setq tem (assoc mai entdxf))
  42.     (if (/= tem nil)
  43.       (setq newdxf (append
  44.                      newdxf
  45.                      (list (assoc mai entdxf))
  46.                    )
  47.       )
  48.     )
  49.   )
  50.   (entdel ent)
  51.   (entmake newdxf)
  52. )

  53. ;;; 文本转属性 
  54. (defun txt2att (ent / entdxf newdxf malst tem)
  55.   (setq entdxf (entget ent)
  56.         newdxf '((0 . "ATTDEF"))
  57.         newdxf (append
  58.                  newdxf
  59.                  (list
  60.                    (cons 1 (cdr (assoc 1 entdxf)))
  61.                    (cons 2 (cdr (assoc 1 entdxf)))
  62.                    (cons 3 (cdr (assoc 1 entdxf))
  63.                    (cons 70 0)
  64.                  )
  65.                )
  66.         malst (list 7 8 10 11 39 40 41 50 51 62 71 72 73)
  67.   )
  68.   (foreach mai malst
  69.     (setq tem (assoc mai entdxf))
  70.     (if (/= tem nil)
  71.       (setq newdxf (append
  72.                      newdxf
  73.                      (list (assoc mai entdxf))
  74.                    )
  75.       )
  76.     )
  77.   )
  78.   (entdel ent)
  79.   (entmake newdxf)
  80. )
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2014-10-16 22:38 | 显示全部楼层
不错,感谢分享,不知道怎么优化。
发表于 2014-10-17 00:13 | 显示全部楼层
感谢楼主分享程序!
发表于 2014-10-17 06:39 | 显示全部楼层
程序无法运行,错误 : no function definition: TXT2ATT
 楼主| 发表于 2014-10-17 10:25 | 显示全部楼层
香田里浪人 发表于 2014-10-17 06:39
程序无法运行,错误 : no function definition: TXT2ATT

不可能。肯定是你没复制完全~
发表于 2014-10-17 10:54 | 显示全部楼层
属性一般是用在属性块中的,单独用是很低效率的用法,如果互转,应该是针对text文本、块中文本及块中属性(attrib)。
发表于 2014-10-26 10:54 | 显示全部楼层
语法错误!!!!!!!!!
发表于 2016-1-12 19:26 | 显示全部楼层
txt2att函数错误
发表于 2022-3-27 19:10 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-25 01:54 , Processed in 0.271355 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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