明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1524|回复: 9

请教:如何根据图元表创建这个图元?

[复制链接]
发表于 2008-3-31 18:49 | 显示全部楼层 |阅读模式

印象中MJTD有这个的例子,刚才又没有搜到。

比如Text,我从别的Text里获取了图元表,稍稍修改其中一两项之后,就需要将其创建成另一个Text,不想再调用Command等命令,直接从由这个图元表生成。

发表于 2008-3-31 21:45 | 显示全部楼层
是可以的,用ASSOC和SUBST配合ENTMAKE函数就可以做到了.
 楼主| 发表于 2008-4-1 08:15 | 显示全部楼层
看来就是ENTMAKE了,谢谢提醒!我回去查查。
 楼主| 发表于 2008-4-10 21:35 | 显示全部楼层
看来entmake还是没有学会,
下面这段程序的目的是将TEXT改为ATTDEF,但entmake总是nil,不知道是哪里的问题?请高人指点。
  1. (defun c:atdef ()
  2.   (setq ss (ssget '((0 . "TEXT"))))
  3.   (repeat (setq n (sslength ss))
  4.     (setq ent1 (entget (setq name (ssname ss (setq n (1- n))))))
  5.     (setq newat '((0 . "ATTDEF")))
  6.     (setq lst '(67 410 8 10 40 50 41 51 7 71 72 11 210 73))
  7.     (foreach xh lst
  8.       (setq dd (assoc xh ent1))
  9.       (if (/= dd nil)
  10. (setq newat (append newat (list dd)))
  11.       ) ;_ 结束if
  12.     ) ;_ 结束foreach
  13.     (setq dd (cons 2 (get 1 ent1)))
  14.     (setq newat (append newat (list dd)))
  15.     (setq dd (cons 3 (get 1 ent1)))
  16. ;|    (setq newat (append newat (list dd)))
  17.     (setq dd (cons 70 0))
  18.     (setq newat (append newat (list dd)))
  19.     (setq dd (cons 74 0))
  20.     (setq newat (append newat (list dd)))
  21.     (setq dd (cons 280 0))
  22.     (setq newat (append newat (list dd)))|;
  23.   ) ;_ 结束repeat
  24.   (entmake newat)
  25. ) ;_ 结束defun
  26. (defun get (aaaaa bbbbb /)
  27.    (cdr (assoc aaaaa bbbbb))
  28. )
发表于 2008-4-11 08:08 | 显示全部楼层
发表于 2008-4-11 13:46 | 显示全部楼层
dinosaurhxe发表于2008-4-10 21:35:00看来entmake还是没有学会,下面这段程序的目的是将TEXT改为ATTDEF,但entmake总是nil,不知道是哪里的问题?请高人指点。(defun c:atdef ()  (setq ss (ssget '((0 . \"TEXT\")))) 

组码   100?
 楼主| 发表于 2008-4-12 10:02 | 显示全部楼层
无痕发表于2008-4-11 13:46:00组码   100?

里头两个100啊,怎么区别这个?组码这个东西有没有相应教材什么的?我一直对这个比较迷惑。

另:谢谢龙龙仔,您的大作我正在学习中。

发表于 2008-4-12 22:53 | 显示全部楼层
龙龙仔发表于2008-4-11 8:08:00我2002年寫的,現在應有更簡單的寫法http://www.xdcad.net/forum/showthread.php?s=&threadid=22453&perpage=15&display=&pagenumber=1
感谢龙龙仔,我参考您的程序,问题得以顺利解决。至于更简单的方法,我就想不出来了。
  1. ;TEXT转ATTDEF
  2. ;改自LUCAAS@XDCAD
  3. ;参考http://www.xdcad.net/forum/showthread.php?s=aa9beae0d44d80471f8c672d59d1133b&threadid=22453&perpage=15&display=&pagenumber=1
  4. ;By Dinosaur Deng 2008.4.12
  5. (defun text2attdef (/ name ent newent ent73 ent1)
  6.   (setq ss (ssget '((0 . "TEXT"))))
  7.   (repeat (setq n (sslength ss))
  8.     (setq ent (entget (setq name (ssname ss (setq n (1- n))))))
  9.     (setq newent (member '(100 . "AcDbEntity") ent))
  10.     (setq ent73 (cdr (assoc 73 newent)))
  11.     (setq ent1 (cdr (assoc 1 newent)))
  12.     (setq newent (append '((0 . "ATTDEF"))
  13.     (reverse (cddr (reverse newent)))
  14.     '((100 . "AcDbAttributeDefinition")
  15.       (70 . 0)
  16.      )
  17.     (list (cons 74 ent73)
  18.           (cons 3 ent1)
  19.           (cons 2 ent1)
  20.     )
  21.    )
  22.     )
  23.     (entmake newent)
  24.     (command "_.erase" name "")
  25.   )
  26. )
发表于 2008-4-13 23:01 | 显示全部楼层
dinosaurhxe发表于2008-4-12 10:02:00里头两个100啊,怎么区别这个?组码这个东西有没有相应教材什么的?我一直对这个比较迷惑。另:谢谢龙龙仔,您的大作我正在学习中。

AutoCAD帮助里开发者文档有很详细的说明.

 楼主| 发表于 2008-4-14 21:27 | 显示全部楼层
谢谢楼上的兄弟,我已经发现这个帮助文档了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-13 06:28 , Processed in 0.145027 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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