明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4241|回复: 18

属性块中某个属性转成文字

  [复制链接]
发表于 2012-5-5 21:26 | 显示全部楼层 |阅读模式
1明经币
本帖最后由 hhhlike 于 2012-5-5 21:47 编辑

拿出我所有的币,想把属性块中某个属性转成单行文字
菜鸟研究了半天都没搞定,请哪位高手伸出援助之手

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

最佳答案

查看完整内容

怎么不在标题里说清楚啊 看看这个对你吗?
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2012-5-5 21:26 | 显示全部楼层
怎么不在标题里说清楚啊 看看这个对你吗?
  1. (defun C:gai (/ ss p0 h i ent ent1 str )  (command "undo" "be")  (if (setq SS (ssget ":E" '((0 . "INSERT") (66 . 1))))    (progn      (setq p0 (getpoint "\n指定书写文字的基点:"))      (setq h (getreal "\n指定文字的高度:"))      (setvar "cmdecho" 0)      (setvar "osmode" 0)      (setq I -1)      (repeat (sslength SS)        (setq ENT  (entget (ssname SS (setq I (1+ I))))              ENT1 ENT        )        (while          (=            (cdr              (assoc 0                     (setq ENT1 (entget (entnext (cdr (assoc -1 ENT1)))))              )            )            "ATTRIB"          )           (if (= (cdr (assoc 2 ENT1)) "LENGTH")             (progn               (setq str (cdr (assoc 1 ENT1)))               (Command "_.TEXT" "_S" "standard" "j" "mc" p0 h 0 str)             )           )        )      )    )  )  (setvar "osmode" 15359)  (command "undo" "e")  (prin1))
回复

使用道具 举报

发表于 2012-5-5 21:55 | 显示全部楼层
本帖最后由 caoyin 于 2012-5-5 22:01 编辑

这个不是针对块的属性,因为实现对块属性的转换会有很多问题,涉及到块重定义

;;将属性定义(ATTDEF)转化为文字----by caoyin
(defun C:ATT2TEXT (/ SS N1 N2 I EN ENT)
  (setvar 'NOMUTT 1)
  (vl-catch-all-apply
    '(lambda ()
       (princ "\n选择属性定义对象 <选择全部>: ")
       (if (or (setq SS (ssget '((0 . "ATTDEF"))))
               (setq SS (ssget "X" '((0 . "ATTDEF"))))
           )
         (repeat (progn (setq N1 0 N2 0 I 0) (sslength SS))
           (setq EN  (ssname SS I)
                 ENT (entget EN)
                 ENT (subst '(0 . "TEXT") '(0 . "ATTDEF") ENT)
                 ENT (subst (cons 1 (cdr (assoc 2 ENT))) (assoc 1 ENT) ENT)
                 ENT (subst (cons 73 (cdr (assoc 74 ENT))) (assoc 73 ENT) ENT)
                 ENT (vl-remove-if
                       '(lambda (X) (member (car X) '(100 280 3 2 70 74)))
                       ENT
                     )
                 I   (1+ I)
           )
           (if (and (entdel EN) (entmake ENT))
             (setq N1 (1+ N1))
             (setq N2 (1+ N2))
           )
           (princ (strcat "\r发现 "
                          (itoa (+ N1 N2))
                          " 个对象: "
                          (itoa N1)
                          " 个处理成功,"
                          (itoa N2)
                          " 个处理失败。"
                  )
           )
         )
         (princ "未发现任何属性定义对象。")
       )
     )
  )
  (setvar 'NOMUTT 0)
  (princ)
)
回复

使用道具 举报

 楼主| 发表于 2012-5-5 22:12 | 显示全部楼层
caoyin 发表于 2012-5-5 21:55
这个不是针对块的属性,因为实现对块属性的转换会有很多问题,涉及到块重定义

;;将属性定义(ATTDEF)转化 ...

曹版,这个也处理不了
提示“未发现任何属性定义对象”
回复

使用道具 举报

发表于 2012-5-5 22:20 | 显示全部楼层
这个不是针对块的属性,因为实现对块属性的转换会有很多问题,涉及到块重定义
回复

使用道具 举报

发表于 2012-5-5 22:20 | 显示全部楼层
  1. [code=lisp](defun C:gai (/ ss p0 h i str ent ent1)
  2.   (command "undo" "be")
  3.   (if (setq SS (ssget ":E" '((0 . "INSERT") (66 . 1))))
  4.     (progn
  5.       (setq p0 (getpoint "\n指定书写文字的基点:"))
  6.       (setq h (getreal "\n指定文字的高度:"))
  7.       (setvar "cmdecho" 0)
  8.       (setvar "osmode"0)
  9.       (setq I -1)
  10.       (repeat (sslength SS)
  11.         (setq ENT  (entget (ssname SS (setq I (1+ I))))
  12.               ENT1 ENT
  13.         )
  14.         (while
  15.           (=
  16.             (cdr
  17.               (assoc 0
  18.                      (setq ENT1 (entget (entnext (cdr (assoc -1 ENT1)))))
  19.               )
  20.             )
  21.             "ATTRIB"
  22.           )
  23.           (setq str (cdr (assoc 1 ENT1)))
  24.           (Command "_.TEXT" "_S" "standard" "j" "mc" p0 h 0 str)
  25.           (setq p0 (list (car p0)(-(cadr p0) (* h 1.2))));1.2是控制行间距的数越大间距越大
  26.         )
  27.       )
  28.     )
  29.   )
  30.   (setvar "osmode"15359)
  31.   (command "undo" "e")
  32.   (prin1)
  33. )
[/code]
回复

使用道具 举报

发表于 2012-5-5 22:22 | 显示全部楼层
wwwbxd 发表于 2012-5-5 22:20
[/code]

看看我这个行不行
回复

使用道具 举报

 楼主| 发表于 2012-5-5 22:36 | 显示全部楼层
wwwbxd 发表于 2012-5-5 22:22
看看我这个行不行

很好了,不过我只想要一个“length"
就是那个数字
回复

使用道具 举报

 楼主| 发表于 2012-5-5 23:02 | 显示全部楼层
wwwbxd 发表于 2012-5-5 22:48
怎么不在标题里说清楚啊 看看这个对你吗?

太感谢了,已经很接近完美了,
不过批量选择的话,生成的文字位置就不对了
最佳答案非你莫属
回复

使用道具 举报

发表于 2012-5-6 13:51 | 显示全部楼层
可以参考一下ET中burst.lsp
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 00:15 , Processed in 0.944487 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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