明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2615|回复: 15

求助!!!

  [复制链接]
发表于 2004-4-7 08:35:00 | 显示全部楼层 |阅读模式
(defun c:h_copy ()
;;;_______________________________________________________
(setq plate '("PH_W" "PPS_W"))
(setq plate_wc '("0" "1"))
(setq ss (ssget))
(if ss
(progn
(setq n 0)
(while (> (sslength ss) n)
(setq en (ssname ss n))
(setq ed (entget en))
(setq n@ 0)
(while (> (length plate) n@)
(setq lay (nth n@ plate))
(setq ed (subst (cons 8 lay) (assoc 8 ed) ed))
(setq lay_wc (nth n@ plate_wc))
;;(setq ff (cons 1000 lay_wc))
(regapp "MY_TAG")
(setq exdata (list (list -3
(list "MY_TAG"
(cons 1000 "h")
(cons 1000 lay_wc)
)
)
)
)
(setq ed (append ed exdata))
(entmake ed)
;;(setq lay_wc nil)
(setq n@ (1+ n@))
)
(setq n (1+ n))
)
(setq plate nil)
(setq plate_wc nil)
)
)
(princ)
) 这段程序不能正常运行,但是如果把 (regapp "MY_TAG")
(setq exdata (list (list -3
(list "MY_TAG"
(cons 1000 "h")
(cons 1000 lay_wc)
)
)
)
)
(setq ed (append ed exdata)) 这段删掉就可以正常运行了,如果没删掉它只复制到 PH_W 层去,我百思不得其解,不知道问题出在哪.
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2004-4-7 09:56:00 | 显示全部楼层
我这里可以正常运行,不过你使用了ENTMAKE,就新建了一个对象,不知你是否只是需要添加扩展数据,这样就应该用ENTMOD
 楼主| 发表于 2004-4-7 10:30:00 | 显示全部楼层
不会吧,我这里不行啊,只能升成一个 我是要新建一个并显需要添加扩展数据,不动原来的 我改成这样子了还是不行 (while (> (length plate) n@)
(setq lay (nth n@ plate))
(setq ed (subst (cons 8 lay) (assoc 8 ed) ed))
(setq lay_wc (nth n@ plate_wc))
(if (= (regapp "MY_TAG") NULL)
(regapp "MY_TAG")
)
(setq exdata (list (list -3
(list "MY_TAG"
(cons 1000 "h")
(cons 1000 lay_wc)
)
)
)
)
(setq ed (append ed exdata))
(entmake ed)
;;(setq lay_wc nil)
(setq n@ (1+ n@))
)
发表于 2004-4-7 10:39:00 | 显示全部楼层
原来你是要生成新的啊,我是在2005里测试的,不知道是不是会自动过滤无效DXF组码...因为你要用ENTMAKE,你应该仔细看看帮助文件中ENTMAKE的介绍,哪些是不可以的,比如组码(-1 . 对象名)就是不可以的
 楼主| 发表于 2004-4-7 11:23:00 | 显示全部楼层
程序一 :在 PH_W         PPS_W图层上建立新图元(不加扩展数据),程序没问题






程序二 :在 PH_W         PPS_W图层上建立新图元增加扩展数据,程序有问题






本帖子中包含更多资源

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

x
发表于 2004-4-7 11:57:00 | 显示全部楼层
那就搞不明白了,我拷贝你的程序,一个字都没有改过,直接运行,随便画了几条线来测试的,完全没有问题,即新建了对象,又在新建的对象上添加了扩展数据...


如果你还是不行,你可以这样试试,先新建对象,然后再在新建的对象上添加扩展数据,两者分开做
 楼主| 发表于 2004-4-7 12:54:00 | 显示全部楼层
好的,我试试看


程序二我执行的结果是,在 PH_W 层上生成了图元并显也有扩展数据(只生成了一个图元)


我要的结果是在 PH_W         PPS_W 层上生成了图元并显也有扩展数据(生成两个图元)


我用的是简体版的 AutoCAD2002
发表于 2004-4-7 13:12:00 | 显示全部楼层
才搞明白你的意思...改这里,应该明白原因了吧... ;(setq ed (append ed exdata)) ;增加扩展数据
(setq ed (subst exdata (assoc -3 ed) ed))
 楼主| 发表于 2004-4-7 13:25:00 | 显示全部楼层
还是不行,改成那样字图元就没有扩展数据了 如果我选择的物体有扩展数据的话那应该改成这样 (if (= (assoc -3 ed) nil)
(setq ed (append ed exdata))
(setq ed (subst exdata (assoc -3 ed) ed)) ;增加扩展数据
)
发表于 2004-4-7 13:26:00 | 显示全部楼层
呵呵,对了...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-1 15:48 , Processed in 0.195917 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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