找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 726|回复: 7

[求助] [求助]:怎么将单行文字转换为属性文字?

[复制链接]
发表于 2004-8-20 17:39:52 | 显示全部楼层 |阅读模式

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

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

×
欲将单行文字转换为属性文字,我写了个小LISP,
但是测试时却提示:
Command: zu
please select single text:AutoCAD Error: bad argument type*Cancel*
Command:
请帮助看看错在哪里?急!

(defun c:zu(/ en1 data txt tag promp default high width layer coord ang style lst)
  (setq old (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (setq en1 (entsel "\nplease select single text:"))
  (setq data (entget (car en1)))
  (setq txt (cons 0 "ATTDEF")  
        tag (cons 1 (cadr(assoc 1 data )))
        promp (cons 2 (cadr(assoc 1 data )))
        default (cons 3 (cadr(assoc 1 data )))
        high (assoc 40 data)
        width (assoc 41 data)
        layer (assoc 8 data)
        coord (assoc 10 data)
        ang (assoc 50 data)
        style (assoc 7 data))   
  (setq lst (list txt tag promp default high width layer coord ang style))
  (entmake lst)
  (setvar "cmdecho" old)
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-8-20 19:10:17 | 显示全部楼层
cadr换成cdr,不用那么复杂吧

  1. 参考:
  2. (defun zm (obj x /)
  3.   (cdr(assoc x(entget obj)))
  4.   )
  5. (defun c:test (/ b)
  6. (setq b(car(entsel)))
  7. (command "attdef" "" (zm b 1) "" "" (zm b 10) (zm b 40) (zm b 50))
  8. (command "erase" b "")
  9.   )
  10. ;;;vla方法
  11. (defun c:test (/ a)
  12. (setq a (vlax-ename->vla-object(car(entsel"\nSelect the object:"))))
  13. (vla-addattribute (vla-get-modelspace(vla-get-ActiveDocument(vlax-get-acad-object)))
  14.                     (vla-get-height a) acAttributeModePreset (vla-get-textstring a)
  15.   (vla-get-InsertionPoint a) (vla-get-textstring a) (vla-get-textstring a)
  16.   )(vla-erase a)
  17. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-8-20 19:51:46 | 显示全部楼层
(defun c:zu  (/ old en1 data)
  (setq old (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (setq en1 (car (entsel "\nplease select single text:")))
  (setq data (entget en1))
  (ENTMAKE (LIST
        (cons 0 "ATTDEF")
        (cons 1 (cdr (assoc 1 data)))
        (cons 2 (cdr (assoc 1 data)))
        (cons 3 (cdr (assoc 1 data)))
        (assoc 40 data)
        (assoc 41 data)
        (assoc 8 data)
        (assoc 10 data)
        (assoc 50 data)
        (assoc 7 data)
        (CONS 70 0)
       )
  )
  (entdel en1)
  (setvar "cmdecho" old)
  (princ)
  )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-8-21 14:50:08 | 显示全部楼层
SNSJ兄,别来无恙。
谢谢SNSJ兄及AIDRAFT两位的帮助,困难已排除。只是我不明白我的LISP到底错在哪里?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-8-21 20:04:42 | 显示全部楼层
tag (cons 1 (cadr(assoc 1 data )))
promp (cons 2 (cadr(assoc 1 data )))
default (cons 3 (cadr(assoc 1 data )))
这里cadr应该为cdr
另外组码70好像是必须的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2004-8-22 11:00:21 | 显示全部楼层
应该用取代法比较全面
(setq e(car(entsel)))
(setq en(entget e))
(setq en(vl-remove-if '(lambda(x)(member(car x) '(-1 100 0))) en) )  ;去掉不要的
(加入 (0 2 3 70) )
(73 变74)
(entmake ..)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2004-8-22 11:18:50 | 显示全部楼层
[php]
(defun mkatt(en)
(entmake (apply 'append
  (mapcar
    '(lambda(x)(setq y(car x))
       (cond((= y 0) '((0 . "ATTDEF")(70 . 0)) )
            ((= y 100) nil)
            ((= y 1)(list x (cons 2(cdr x))(cons 3(cdr x))))
            ((= y 73)(list(cons 74(cdr x))))
            (t (list x))
       )
   )en)
))
)
[/php]

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

使用道具 举报

发表于 2004-8-22 14:58:01 | 显示全部楼层
最初由 aeo 发布
[B]
(defun mkatt(en)
(entmake (apply 'append
  (mapcar
    '(lambda(x)(setq y(car x))
       (cond((= y 0) '((0 . "ATTDEF")(70 . 0)) )
            ((= y 100) nil)
            ((= y 1)(list ... [/B]


这个是我前两天写的:)和aeo的挺象的,呵呵
[php]
;; (txt2def e) = 文本改为属性.
;; e = text 实体名.
(defun txt2def (e / a b)
  (entmake
    (apply
      'append
      (mapcar '(lambda (x)
                 (setq a (car x))
                 (cond
                   ((member a '(-1 5 100)) nil)
                   ((= 0 a) (list (cons 0 "ATTDEF")))
                   ((= 1 a)
                    (setq b (cdr x))
                    (list (cons 1 b) (cons 2 b) (cons 3 b) (cons 70 0)))
                   (T (list x))
                 )
               )
              (entget e)
      )
    )
  )
  (entdel e)
)[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 08:24 , Processed in 0.228645 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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