找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: Smile cop

[求助] 求助这样一个程序?

[复制链接]
 楼主| 发表于 2013-12-8 12:18:32 | 显示全部楼层
ll_j 发表于 2013-12-8 12:08
看半天还是没看懂,这个要求和ACAD的copy命令有什么不同么?


如果我没有记错的话,单独的ACAD的copy命令是不会改变复制后图形的图层的啊,你哪里可以?奇怪了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2013-12-8 13:47:36 | 显示全部楼层
大概理解是这样,比如选择了一个源实体(不管图层),然后通过选择物体的方法确定目标层,然后在每一个目标层上复制一个源实体。
如果图层选多了,你不会觉得很累赘么?我的理解,图层不是这样用的。
就程序而言不是很难,将源实体原位复制到其它层,只要把图层组码变化一下再entmake即可,也不在乎多少,遍历即可,不过有什么实际意义就不好说了。

点评

如果图层选多了,你不会觉得很累赘么?我的理解,图层不是这样用的。 在实现这样结果的前提下,还有什么更好的方法和用法吗?  详情 回复 发表于 2013-12-8 13:52
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-8 13:52:57 | 显示全部楼层
ll_j 发表于 2013-12-8 13:47
大概理解是这样,比如选择了一个源实体(不管图层),然后通过选择物体的方法确定目标层,然后在每一个目标 ...

如果图层选多了,你不会觉得很累赘么?我的理解,图层不是这样用的。
  在实现这样结果的前提下,还有什么更好的方法和用法吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-10 09:23:53 | 显示全部楼层
怎么没有回复了啊?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-10 09:31:09 | 显示全部楼层
rxing 发表于 2013-12-10 09:23
怎么没有回复了啊?

  1. (defun c:tt (/ e lyr ss)
  2.   (while (and (setq e (car (entsel "\n指定目标图层实体: ")))
  3.               (setq lyr (cdr (assoc 8 (entget e))))
  4.               (setq ss (ssget))
  5.          )
  6.     (command ".copy" ss "" "0,0,0" "@")
  7.     (command ".chprop" ss "" "la" lyr "")
  8.     (command ".move" ss "")
  9.     (setvar "cmdecho" 1)
  10.     (while (/= 0 (getvar "cmdactive"))
  11.       (command pause)
  12.     )
  13.     (setvar "cmdecho" 0)
  14.   )
  15.   (princ)
  16. )

点评

非常感谢您的热情回复,可不可以改成可以多选图形,来单独的获取图层,复制到图层后再循环复制到图层那样,谢谢  详情 回复 发表于 2013-12-10 11:26
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-10 11:26:22 | 显示全部楼层

非常感谢您的热情回复,可不可以改成可以多选图形,来单独的获取图层,复制到图层后再循环复制到图层那样,谢谢

点评

你的表述让人很难理解  详情 回复 发表于 2013-12-10 11:35
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 0 反对 1

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-10 11:35:01 | 显示全部楼层
rxing 发表于 2013-12-10 11:26
非常感谢您的热情回复,可不可以改成可以多选图形,来单独的获取图层,复制到图层后再循环复制到图层那样 ...

你的表述让人很难理解
  1. (defun c:tt (/ e lyr ss)
  2.   (while (setq e (car (entsel "\n指定目标图层实体: ")))
  3.     (setq lyr (cdr (assoc 8 (entget e))))
  4.     (while (setq ss (ssget))
  5.       (command ".copy" ss "" "0,0,0" "@")
  6.       (command ".chprop" ss "" "la" lyr "")
  7.       (command ".move" ss "")
  8.       (setvar "cmdecho" 1)
  9.       (while (/= 0 (getvar "cmdactive"))
  10.         (command pause)
  11.       )
  12.       (setvar "cmdecho" 0)
  13.     )
  14.   )
  15.   (princ)
  16. )

点评

我是说开始的(setq e (car (entsel "\n指定目标图层实体: "))这句,可不可以用(ssget)来代替,就是改成可以多选的方式  详情 回复 发表于 2013-12-10 13:28
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2013-12-10 13:23:20 | 显示全部楼层
  1. (defun c:tt ( / i la s0 s1 ss sy)
  2.   (vl-load-com)
  3.   (vl-cmdf "undo" "be")
  4.   (redraw (setq sy (car (entsel "\n选择需要原位复制的对象:"))) 3)
  5.     (setq ss (ssget (prompt "\n选择目的图层上的对象:"))
  6.     i -1
  7.   )
  8.   (redraw sy 4)
  9.   (while (setq s1 (ssname ss (setq i (1+ i))))
  10.     (setq la (Vlax-Get (Vlax-Ename->Vla-Object s1) 'Layer ))
  11.     (entmake (entget sy))
  12.     (setq s0 (entlast))
  13.     (Vlax-Put-Property (Vlax-Ename->Vla-Object s0) 'Layer la )
  14.   )
  15. (vl-cmdf "undo" "e")
  16. )
大概是这个意思

点评

你这太绕了,弄entmake就entget就的,subst assoc 8替换后entmake  详情 回复 发表于 2013-12-10 21:10
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-10 13:28:30 | 显示全部楼层
st788796 发表于 2013-12-10 11:35
你的表述让人很难理解

我是说开始的(setq e (car (entsel "\n指定目标图层实体: "))这句,可不可以用(ssget)来代替,就是改成可以多选的方式

点评

多选后要是有多个图层实体怎么办  详情 回复 发表于 2013-12-10 13:37
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-10 13:37:03 来自手机 | 显示全部楼层
rxing 发表于 2013-12-10 13:28
我是说开始的(setq e (car (entsel "\n指定目标图层实体: "))这句,可不可以用(ssget)来代替,就是改成 ...

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

使用道具 举报

 楼主| 发表于 2013-12-10 20:07:54 | 显示全部楼层
非常感谢st788796  q3_2006 两位的热情解答,谢谢,问题已经解决!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-10 21:10:41 来自手机 | 显示全部楼层
q3_2006 发表于 2013-12-10 13:23
大概是这个意思


你这太绕了,用entmake就entget旧的,subst assoc 8替换后entmake

点评

就是呀。。但原位复制并改层,我也想不到更好的方法了  详情 回复 发表于 2013-12-11 07:11
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2013-12-11 07:11:05 | 显示全部楼层
st788796 发表于 2013-12-10 21:10
你这太绕了,用entmake就entget旧的,subst assoc 8替换后entmake

就是呀。。但原位复制并改层,我也想不到更好的方法了{:soso_e110:}

点评

方法1 用 copy 命令原地复制,chprop 修改原选择集至新图层 方法2 entmake 新图层实体 (setq i -1) (while (setq e (ssname ss (setq i (1+ i)))) (setq el (entget e) el (subst (cons 8 lyr) (  详情 回复 发表于 2013-12-11 08:32
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-11 08:32:06 | 显示全部楼层
q3_2006 发表于 2013-12-11 07:11
就是呀。。但原位复制并改层,我也想不到更好的方法了

方法1 用 copy 命令原地复制,chprop 修改原选择集至新图层
方法2 entmake 新图层实体
(setq i -1)
(while (setq e (ssname ss (setq i (1+ i))))
   (setq el (entget e)
           el (subst (cons 8 lyr) (assoc 8 el) el);_lyr 为新图层
   )
   (setq nl (cons (entmakex el) nl));_把新实体构造一个表以便后续操作
)  
方法3
(setq ss1 (xdrx_entity_transformedcopy ss))
(xdrx_entity_setlayer ss1 "Layer" newlayer)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 05:22 , Processed in 0.436514 second(s), 51 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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