明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2641|回复: 12

请问怎样保存前一次选择的图层信息?

  [复制链接]
发表于 2012-3-30 14:42:31 | 显示全部楼层 |阅读模式
本帖最后由 Ccccccc 于 2012-3-31 11:40 编辑

下面一个例子是根据图层选中物体,多选的,请问怎样保存前一次选择的图层,下次执行时直接按空格就可以再次选择前一次选中的图层,谢谢!


(Defun C:tt (/ CNAME ENT SS lay n)
    (princ"\n请选择需要选择的层中的一个物体: ")
    (setq ss (ssget))
    (repeat (setq n (sslength ss))
      (setq ent (ssname ss (setq n (1- n))))
      (setq la (cdr (assoc 8 (entget ent))))
      (if (not (member la lay)) (setq lay (cons la lay)))
      )
    (setq cname (apply 'strcat (apply 'mapcar (cons 'strcat (list lay (mapcar '(lambda (x) ",") lay))))))
    (princ (strcat "\n选中了图层: \"" cname "\""))
    ;;
    (princ "\n框选范围....")
    (setq ss (ssget (list (cons 8 cname))))
    (sssetfirst NIL SS)
   )
)

 楼主| 发表于 2012-3-31 11:41:03 | 显示全部楼层
等答案,谢谢!
发表于 2012-3-31 11:58:03 | 显示全部楼层
Ccccccc 发表于 2012-3-31 11:41
等答案,谢谢!

  1. (Defun C:tt (/ CNAME ENT SS lay n)
  2.   (if *cname* (princ (strcat "\n上一次选中图层:"  *cname*)))
  3.     (princ"\n请选择需要选择的层中的一个物体: ")
  4.     (setq ss (ssget))
  5.   (if ss
  6.     (progn
  7.     (repeat (setq n (sslength ss))
  8.       (setq ent (ssname ss (setq n (1- n))))
  9.       (setq la (cdr (assoc 8 (entget ent))))
  10.       (if (not (member la lay)) (setq lay (cons la lay)))
  11.       )
  12.     (setq cname (apply 'strcat (apply 'mapcar (cons 'strcat (list lay (mapcar '(lambda (x) ",") lay))))))
  13.     (setq *cname* cname)
  14.       (if (null cname) (setq cname *cname*))
  15.   (if cname
  16.     (progn
  17.     (princ (strcat "\n选中了图层: \"" cname "\""))
  18.     (princ "\n框选范围....")
  19.     (setq ss (ssget (list (cons 8 cname))))
  20.     (sssetfirst NIL SS)
  21.     )
  22.     )

  23.     )
  24.     )
  25.   (princ)
  26. )

 楼主| 发表于 2012-3-31 16:25:40 | 显示全部楼层
Gu_xl 发表于 2012-3-31 11:58

谢谢版主,不过好像有点问题,只能显示前一次选择的图层,不能根据上次一选择的图层再进行选择
发表于 2012-3-31 16:51:26 | 显示全部楼层
Ccccccc 发表于 2012-3-31 16:25
谢谢版主,不过好像有点问题,只能显示前一次选择的图层,不能根据上次一选择的图层再进行选择

(princ "\n框选范围....")
    (setq ss (ssget (list (cons 8 cname))))
    (sssetfirst NIL SS)
==》
(while (progn
(princ "\n框选范围....")
    (setq ss (ssget (list (cons 8 cname))))
)
    (sssetfirst NIL SS)
)

发表于 2012-3-31 16:51:43 | 显示全部楼层
那样你得用外部变量或者纪录在 xdata,xrecord, 文件,注册表等途径
 楼主| 发表于 2012-3-31 17:36:32 | 显示全部楼层
Gu_xl 发表于 2012-3-31 16:51
(princ "\n框选范围....")
    (setq ss (ssget (list (cons 8 cname))))
    (sssetfirst NIL SS)

这样还是有问题
 楼主| 发表于 2012-3-31 17:40:40 | 显示全部楼层
e2002 发表于 2012-3-31 16:51
那样你得用外部变量或者纪录在 xdata,xrecord, 文件,注册表等途径

我不用那么复杂,只要本次加载过程可以保存就可以了
发表于 2012-3-31 20:59:44 | 显示全部楼层
那就外部变量保存得了。
 楼主| 发表于 2012-4-1 15:08:34 | 显示全部楼层
请问要怎样处理?我不太懂,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-21 04:28 , Processed in 0.289366 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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