明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3728|回复: 16

[已解答] 如何改造一下这个命令让它支持先选择物体,然后执行啊

[复制链接]
发表于 2014-8-8 10:20:36 | 显示全部楼层 |阅读模式
;---------- 将所选对象设置为def层 线型不变
(defun c:def()
     (PRINC "\n---将所选对象设置为defpoints层,属性随层")(PRINC)
   (command "layer" "m" "defpoints" "c" "magenta" ""   "set" "0" "c" "7" "" "")
     (while(setq a (ssget":s"))
     (setvar "cmdecho" 0)
     (command "change" a "" "p" "c" "bylayer"  "la" "defpoints" "lw" "bylayer" "")
     )
     (command "clayer" "0")
     (princ "\n所选地方-->设置所选对象设置为defpoints层,属性随层!")
     (princ)
     )

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2014-8-8 10:39:05 | 显示全部楼层
在用ssget函数前不要用command函数
或者把command函数改成vla-开头的函数
回复 支持 1 反对 0

使用道具 举报

发表于 2014-8-8 11:46:36 | 显示全部楼层
本帖最后由 luowy 于 2014-8-8 11:49 编辑

好像是,ssgetfirst,是将当前选择的实体加入选择集。注意返回值,第一个是肯定返回nil,第二个才是选择集
  1. ;---------- 将所选对象设置为def层 线型不变
  2. (defun c:def()
  3.      (PRINC "\n---将所选对象设置为defpoints层,属性随层")(PRINC)
  4.     (command "layer" "m" "defpoints" "c" "magenta" ""   "set" "0" "c" "7" "" "")
  5. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  6. ;;这里增加
  7. (SETQ SS (cadr SSGETFIRST ));;好像是cadr取得列表第二个元素
  8. ;;这里ss就是当前选择的部分,之后就好办咯,略去了
  9. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  10.      (while(setq a (ssget":s"))
  11.      (setvar "cmdecho" 0)
  12.      (command "change" a "" "p" "c" "bylayer"  "la" "defpoints" "lw" "bylayer" "")
  13.      )
  14.      (command "clayer" "0")
  15.      (princ "\n所选地方-->设置所选对象设置为defpoints层,属性随层!")
  16.      (princ)
  17.      )
 楼主| 发表于 2014-8-9 12:04:51 | 显示全部楼层
试验无效,
发表于 2014-8-9 18:10:39 | 显示全部楼层
tranney 发表于 2014-8-9 12:04
试验无效,

唉,你太懒了。。。

  1. ;---------- 将所选对象设置为def层 线型不变
  2. (defun c:222 ()
  3.   (PRINC "\n---将所选对象设置为defpoints层,属性随层")
  4.   (PRINC)
  5. (setq oldLayerName (getvar "clayer"))
  6.   (setvar "clayer" "defpoints")
  7. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;这里增加
  8.   (SETQ SS (cadr (SSGETFIRST)))
  9.   ;;好像是cadr取得列表第二个元素;;这里ss就是当前选择的部分,之后就好办咯,略去了
  10. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  11.   (while (setq a (ssget ":s"))
  12.     (setvar "cmdecho" 0)
  13.     (command "change"  a         ""           "p"             "c"
  14.              "bylayer" "la"         "defpoints"             "lw"
  15.              "bylayer" ""
  16.             )
  17.   )
  18. ;; (command "clayer" "0")
  19. (setvar "clayer" oldLayerName)
  20.   (princ
  21.     "\n所选地方-->设置所选对象设置为defpoints层,属性随层!"
  22.   )
  23.   (princ)
  24. )
发表于 2014-8-9 18:11:24 | 显示全部楼层
要不,来学arx吧,比arx好多了。。。
 楼主| 发表于 2014-8-9 21:43:08 | 显示全部楼层
还是不行啊,arx局限性太强了,cad每个版本都要重新编译,不像lsp那样通用性,r2000以上都可以用
发表于 2014-8-10 08:04:00 | 显示全部楼层
本帖最后由 ZZXXQQ 于 2014-8-10 20:59 编辑
  1. (defun c:def()
  2. (setvar "cmdecho" 0)
  3. (princ "\n---将所选对象设置为defpoints层,属性随层")
  4. (setq ss (cadr (ssgetfirst)))
  5. (command "layer" "m" "defpoints" "c" "magenta" ""   "set" "0" "c" "7" "" "")
  6. (while (or ss (setq ss (ssget ":s")))
  7.   (command "chprop" ss "" "c" "bylayer" "la" "defpoints" "lw" "bylayer" "")
  8.         (setq ss nil)
  9. )
  10. (command "clayer" "0")
  11. (setvar "CMDECHO" 1)
  12. (princ "\n所选地方-->设置所选对象设置为defpoints层,属性随层!")
  13. (princ)
  14. )
 楼主| 发表于 2014-8-10 09:02:41 | 显示全部楼层
ZZXXQQ 发表于 2014-8-10 08:04

谢谢zzxxqq出手,不过还是有点问题,先选不行哦
发表于 2014-8-10 09:28:46 | 显示全部楼层
  1. (defun c:def()
  2. (setvar "cmdecho" 0)
  3. (princ "\n---将所选对象设置为defpoints层,属性随层")
  4. (setq ss (cadr (ssgetfirst)))
  5. (command "layer" "m" "defpoints" "c" "magenta" ""   "set" "0" "c" "7" "" "")  
  6. (while (or ss (setq ss (ssget ":s")))
  7.   (command "chprop" ss "" "c" "bylayer" "la" "defpoints" "lw" "bylayer" "")
  8.         (setq ss nil)
  9. )
  10. (command "clayer" "0")
  11. (setvar "CMDECHO" 1)
  12. (princ "\n所选地方-->设置所选对象设置为defpoints层,属性随层!")
  13. (princ)
  14. )

评分

参与人数 4明经币 +3 金钱 +28 收起 理由
laorenhao999 + 5 很给力!
sibelle_hu + 1 很给力!
tranney + 1 + 5 很给力!
ZZXXQQ + 1 + 18 改的好!

查看全部评分

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

本版积分规则

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

GMT+8, 2025-5-20 11:12 , Processed in 0.337203 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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