找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 872|回复: 7

[编程申请]:拷贝物体到当前层

[复制链接]
发表于 2002-11-11 14:17:39 | 显示全部楼层 |阅读模式

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

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

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

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-11-11 14:18:46 | 显示全部楼层
已经写过了,搜索下本论坛。

http://www.xdcad.net/forum/showthread.php?postid=72209#post72209

再贴一次吧。

该工具可以把一个层上的所有实体转移到另外一个层上,如果选输入层名,目标图层不存在新建。


  1. [FONT=courier new]
  2. (defun c:XDTB_LayerCopy (/ ss sLyr dLyr e)
  3.   (if (xdrx_entsel "\n请选取要处理的一个层上的实体<退出>:")
  4.     (progn
  5.       (setq sLyr (xdrx_getentdxf 8))
  6.       (xdrx_begin)
  7.       (setq ss (ssget "x" (list (cons 8 sLyr))))
  8.       (xdrx_Pickset_redraw ss)
  9.       (if (xdrx_entsel "\n请选取目标图层上的实体<输入>:")
  10.         (setq dLyr (xdrx_getentdxf 8))
  11.         (progn
  12.           (if (= "" (setq dLyr (getstring "\n请输入目标层名:")))
  13.             (if (= 1 (xdrx_yesorno "\n是否使用当前层" 1))
  14.               (setq dLyr (getvar "clayer"))
  15.             (setq dLyr nil)
  16.             )
  17.           )
  18.         )
  19.       )
  20.       (if dLyr
  21.         (progn
  22.           (xdrx_entity_setlayer ss dLyr)
  23.           (prompt (strcat "\n已经成功的将图层"" sLyr
  24.                           ""上的所有实体转换到图层"" dLyr """
  25.                   )
  26.           )
  27.         )
  28.       )
  29.       (xdrx_Pickset_redraw ss t)
  30.       (xdrx_end)
  31.     )
  32.   )
  33.   (princ)
  34. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-11-11 14:38:25 | 显示全部楼层
这个帖子我已经下载试用过了,我现在的目的是想把多个不同层上的物体拷到了个层上,因为是做园林的,常常要把不同的灌木做成不同的填充形式,而且常常把这个不同的灌木放在不同的层上,以方便统计。当我们出别的图(如树平面布置)时,这些灌木又上做一种简略,都用一种填充方式代替,这样,我还得重新填充一遍(对于不规则的多义线的围成的图形做填充也是一个很麻烦而且很费时间的事,所以我想把不同层的填充烤到(不是移动)一个层上,位置也是不变的(这样就和原来的填充完全重合了),也只有当这两个完全重合的填充在不同的层上,我才能改动一个填充图案(组合成笼统的灌木层)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-11-11 14:44:58 | 显示全部楼层
最初由 doongs 发布
[B]这个帖子我已经下载试用过了,我现在的目的是想把多个不同层上的物体拷到了个层上,因为是做园林的,常常要把不同的灌木做成不同的填充形式,而且常常把这个不同的灌木放在不同的层上,以方便统计。当我们出别的图(... [/B]


不想整个层实体都变,自己交互选择需要的实体,那么你去用“图层匹配”:

http://www.xdcad.net/forum/showthread.php?postid=72336#post72336

关于图层操作的,还有“图层合并”:

http://www.xdcad.net/forum/showthread.php?postid=73440#post73440

图层删除、图层孤立、孤立恢复...等等。这些工具组合,应该能满足大多数关于图层方面的需要了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-11-11 17:59:15 | 显示全部楼层
非常感谢!这里问题的回答速度让我惊讶!
不过上面那两样都不是我想要的东西,我要原本的复制一份到指定的层,原来实体的那个也要原样保留
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-11-11 18:03:29 | 显示全部楼层
最初由 doongs 发布
[B]非常感谢!这里问题的回答速度让我惊讶!
不过上面那两样都不是我想要的东西,我要原本的复制一份到指定的层,原来实体的那个也要原样保留 [/B]


你可以变通啊,工具可以组合的。

你先拷贝选择的实体,然后把这些实体在转换到指定层。

用工具箱的“标记”,可以很方便的获得拷贝后的实体选择集。再把这个选择集,应用到“图层转换”等程序上。

大家应该灵活使用ACAD的构筑选择集功能,灵活的去交给程序处理。

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

使用道具 举报

发表于 2004-4-1 16:13:40 | 显示全部楼层
[program]; 复制到当前层(copy_to_layer)。
;本程序将复制一个实体到当前层。

(defun C:text ()
    (setvar "cmdecho" 0)
    (setq c_layer (getvar "clayer")
          sset (ssget)
          pt1 (getpoint "\n基点: ")
          count 0)
   (prompt "\n位移的第二点: ")
      (setq  len (sslength sset))
      (while (< count len)
       (setq name (ssname sset count)
             ptlst (entget name)
             b (assoc 8 ptlst)
             b1 (cdr (assoc 8 ptlst))
             c (cons 8 c_layer)
             d (subst c b ptlst)
             count (1+ count))
            (entmod d)
     )
    (command "_copy" sset "" pt1 pause)
    (setq count 0)
    (while (< count len)
    (setq name (ssname sset count)
             ptlst (entget name)
             b (assoc 8 ptlst)
             c (cons 8 b1)
             d (subst c b ptlst)
             count (1+ count))
            (entmod d)
     )
     (princ)
   )[/program]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-1 17:57:21 | 显示全部楼层
最初由 conn 发布
[B]; 复制到当前层(copy_to_layer)。
;本程序将复制一个实体到当前层。

(defun C:text ()
    (setvar "cmdecho" 0)
    (setq c_layer (getvar "clayer")
          sset (ssget)
          pt1 (getpoint ... [/B]

简单一点,不用那么复杂,掌握好基本命令一样解决问题
[php]
(defun c:cs (/ ss)
(setvar "cmdecho" 1)
(command ".copybase" '(0 0)(setq ss(ssget)) "")
(command ".pasteclip" '(0 0))(command ".move" ss "" pause pause)
(command ".change" ss "" "p" "la" (getvar "clayer") "")
(princ)
  )
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-21 02:47 , Processed in 0.185305 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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