明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1387|回复: 9

[已解答] 求助:粘切的图元置为当前层---属性随层

[复制链接]
发表于 2015-7-6 20:24 | 显示全部楼层 |阅读模式
本帖最后由 冒个烟圈 于 2015-7-6 20:30 编辑

瞎折腾了几行代码,主要是应付从其它图复制(ctrl+c)过来的图形,在当前图形中粘切(ctrl+v)后
反复置为当前层并属性随层的操作,但现在有一个问题解决不了,就是如何才能取得粘切后的图元实体(即:选择集)
请问前辈们:entlast只能取得最后一个图形实体,有什么办法能取得粘切的全部实体???

(defun c:b1 ()
  (setvar "cmdecho" 0)
  (setvar "setbylayermode" 253)
  (setq po (getpoint))
  (command "PASTECLIP" po)
  (setq ss (entlast));;;用entlast函数只能取得最后一个实体,属性只更新一个实体
  (command "laycur" ss "")
  (command "_setbylayer" ss "" "y" "y")
  (alert "    OK 已置为当前层属性随层!!!   ")
  (princ)
)
        

该贴已经同步到 冒个烟圈的微博
"觉得好,就打赏"
还没有人打赏,支持一下

本帖被以下淘专辑推荐:

  • · 学习|主题: 95, 订阅: 7
发表于 2015-7-7 08:14 | 显示全部楼层
entlast取得最后一个图形实体 ==>eh
粘切
entnext 取得 eh 之后图形实体
有前例...

点评

搞定了,,谢谢长老提示,。 (defun c:b1 () (setvar "cmdecho" 0) (setq oe (getvar "setbylayermode")) (setvar "setbylayermode" 253) (setq s1 (entlast) ss1 (ssadd)) (setq po (g   发表于 2015-7-7 09:16
 楼主| 发表于 2015-7-7 08:57 | 显示全部楼层
Andyhon 发表于 2015-7-7 08:14
entlast取得最后一个图形实体 ==>eh
粘切
entnext 取得 eh 之后图形实体

长老!!!小生愚钝,按你说的试了,结果还是只能取得一个图元
代码如下,帮我诊断一下哪里有问题,谢谢
(defun c:b1 ()
  (setvar "cmdecho" 0)
  (setq oe (getvar "setbylayermode"))
  (setvar "setbylayermode" 253)
  (setq po (getpoint "\n指定插入点:"))
  (setq eh (entlast))                  ;;;取得最后一个对象
  (command "PASTECLIP" po)
  (setq ss (entnext eh))             ;;;取得eh之后的对象
  (command "laycur" ss "")
  (command "_setbylayer" ss "" "y" "y")
  (setvar "setbylayermode" oe)
  (alert "    OK 插入到当前层,属性Bylayer   ")
  (princ)
)
发表于 2015-7-7 09:15 | 显示全部楼层
 楼主| 发表于 2015-7-7 09:18 | 显示全部楼层
Andyhon 发表于 2015-7-7 09:15
http://bbs.mjtd.com/thread-12657-1-1.html
more...

长老真及时,。。谢谢。搞定了
(defun c:b1 ()
  (setvar "cmdecho" 0)
  (setq oe (getvar "setbylayermode"))
  (setvar "setbylayermode" 253)
  (setq s1 (entlast) ss1 (ssadd))
  (setq po (getpoint "\n指定插入点:"))
  (command "PASTECLIP" po)
  (while (setq s1 (entnext s1)) (ssadd s1 ss1))
  (command "laycur" ss1 "")
  (command "_setbylayer" ss1 "" "y" "y")
  (setvar "setbylayermode" oe)
  (alert "    OK 插入到当前层,属性Bylayer   ")
  (princ)
)
发表于 2015-7-7 14:11 | 显示全部楼层
冒个烟圈 发表于 2015-7-7 09:18
长老真及时,。。谢谢。搞定了
(defun c:b1 ()
  (setvar "cmdecho" 0)

我用2006使用提示函数取消
 楼主| 发表于 2015-7-8 08:27 | 显示全部楼层
长风(尚品) 发表于 2015-7-7 14:11
我用2006使用提示函数取消

不记得2006的CAD是否有setbylayer这个命令,如果有的话,你就删除(setq oe (getvar "setbylayermode"))和(setvar "setbylayermode" oe)这两行试试,我用的2013
 楼主| 发表于 2015-7-8 08:33 | 显示全部楼层
;;;经 Andyhon提示之后,完整的命令如下:
;;;因个人用法不一样,这个是增加了旋转的,
(defun c:V ();;;粘切实体到当前层属性随层
  (setvar "cmdecho" 0)
  (setvar "setbylayermode" 253)
  (setq s1 (entlast) ss1 (ssadd))
  (setq po (getpoint "\n指定插入点:"))
  (command "PASTECLIP" po)
  (while (setq s1 (entnext s1)) (ssadd s1 ss1))
  (command "ROTATE" ss1 "" po pause)
  (command "laycur" ss1 "")
  (command "_setbylayer" ss1 "" "y" "y")
  (alert "    OK 插入到当前层,属性Bylayer   ")
  (princ)
)
发表于 2018-8-30 18:52 | 显示全部楼层
谢谢大神,牛牛牛牛!!!
发表于 2023-10-26 14:41 | 显示全部楼层
冒个烟圈 发表于 2015-7-7 09:18
长老真及时,。。谢谢。搞定了
(defun c:b1 ()
  (setvar "cmdecho" 0)

能否改为复制后为一个块
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-25 22:10 , Processed in 0.228337 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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