冒个烟圈 发表于 2015-7-6 20:24:14

求助:粘切的图元置为当前层---属性随层

本帖最后由 冒个烟圈 于 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)
)
      

http://bbs.mjtd.com/xwb/images/bgimg/icon_logo.png 该贴已经同步到 冒个烟圈的微博

Andyhon 发表于 2015-7-7 08:14:17

entlast取得最后一个图形实体 ==>eh
粘切
entnext 取得 eh 之后图形实体
有前例...

冒个烟圈 发表于 2015-7-7 08:57:05

Andyhon 发表于 2015-7-7 08:14 static/image/common/back.gif
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)
)

Andyhon 发表于 2015-7-7 09:15:56


http://bbs.mjtd.com/thread-12657-1-1.html
more...

冒个烟圈 发表于 2015-7-7 09:18:21

Andyhon 发表于 2015-7-7 09:15 static/image/common/back.gif
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:07

冒个烟圈 发表于 2015-7-7 09:18 static/image/common/back.gif
长老真及时,。。谢谢。搞定了
(defun c:b1 ()
(setvar "cmdecho" 0)


我用2006使用提示函数取消

冒个烟圈 发表于 2015-7-8 08:27:19

长风(尚品) 发表于 2015-7-7 14:11 static/image/common/back.gif
我用2006使用提示函数取消

不记得2006的CAD是否有setbylayer这个命令,如果有的话,你就删除(setq oe (getvar "setbylayermode"))和(setvar "setbylayermode" oe)这两行试试,我用的2013

冒个烟圈 发表于 2015-7-8 08:33:44

;;;经 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)
)

oistre 发表于 2018-8-30 18:52:02

谢谢大神,牛牛牛牛!!!

ferious 发表于 2023-10-26 14:41:51

冒个烟圈 发表于 2015-7-7 09:18
长老真及时,。。谢谢。搞定了
(defun c:b1 ()
(setvar "cmdecho" 0)


能否改为复制后为一个块
页: [1]
查看完整版本: 求助:粘切的图元置为当前层---属性随层