明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3633|回复: 12

用lisp编程实现layer ->state的保存与恢复

  [复制链接]
发表于 2004-1-12 17:44:00 | 显示全部楼层 |阅读模式
用lisp编程实现layer ->state的保存与恢复
在2002中可以对图层状态进行保存与恢复,但怎么用lisp实现一次要保存或收复几个图层状态呢?因为不知道怎么用lisp获取已经保存过的图层状态名称,所以用(command "-layer" "state"......)时无法预知命令序列
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2004-1-13 09:10:00 | 显示全部楼层
(command "_.layer" "A" "S" "Layer_Name" "" "" "");保存原图的图层设置
.
.
.
(command "_.layer" "A" "R" "Layer_Name" "" "" );恢复原图的图层设置
(command "_.layer" "A" "D" "Layer_Name" "" "" );删除临时的图层状态名Layer_Name
 楼主| 发表于 2004-1-13 15:28:00 | 显示全部楼层
怎样知道图中是否已经保存过"layer_name"呢?我不是想在程序中保存过,再恢复出来,而是一直保存在图中,有时还需要对这个保存的状态进行修改,这就要先知道某个名字的图层状态是否已经保存过
发表于 2004-1-14 10:01:00 | 显示全部楼层

  1. ;;BY 龙龙仔(LUCAS)
  2. ;;(CHECK_LAYERSTATE_NAME <STRING>)
  3. ;;(CHECK_LAYERSTATE_NAME "LAYERSTATE_NAME")
  4. ;;注意:LAYERSTATE_NAME大小写有别
  5. (vl-load-com)
  6. (defun CHECK_LAYERSTATE_NAME (NAME / X NAME_LIST TMP)
  7.   (if (> (vla-get-count
  8.            (setq TMP (vla-getextensiondictionary
  9.                        (vla-get-layers
  10.                          (vlax-get-property
  11.                            (vlax-get-acad-object)
  12.                            'ACTIVEDOCUMENT
  13.                          )
  14.                        )
  15.                      )
  16.            )
  17.          )
  18.          0
  19.       )
  20.     (progn
  21.       (vlax-for        X (vla-item TMP "ACAD_LAYERSTATES")
  22.         (setq NAME_LIST (cons (vla-get-name X) NAME_LIST))
  23.       )
  24.       (vlax-release-object TMP)
  25.       (if (member NAME NAME_LIST)
  26.         t
  27.         NIL
  28.       )
  29.     )
  30.   )
  31. )
 楼主| 发表于 2004-1-14 12:51:00 | 显示全部楼层
正是我想要的,谢谢!

点评

小菜兄,用注册表保存也可以啊  发表于 2012-5-23 18:21
 楼主| 发表于 2004-2-1 13:40:00 | 显示全部楼层



有点小问题,对于附件中的图,执行结果不正确

本帖子中包含更多资源

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

x
发表于 2004-2-2 11:52:00 | 显示全部楼层
  1. ;;BY 龙龙仔(LUCAS);;(CHECK_LAYERSTATE_NAME <STRING>);;(CHECK_LAYERSTATE_NAME "LAYERSTATE_NAME");;注意:LAYERSTATE_NAME大小写有别(vl-load-com)(defun CHECK_LAYERSTATE_NAME (NAME / X NAME_LIST TMP)   (if (and (setq TMP (vl-catch-all-apply                                            'vla-item                                            (list (vla-getextensiondictionary                                                            (vla-get-layers                                                                 (vlax-get-property                                                                    (vlax-get-acad-object)                                                                    'ACTIVEDOCUMENT                                                                 )                                                            )                                                        )                                                        "ACAD_LAYERSTATES"                                            )                                        )                    )                    (if (vl-catch-all-error-p TMP)                        NIL                        t                    )           )       (progn           (vlax-for             X TMP               (setq NAME_LIST (cons (vla-get-name X) NAME_LIST))           )           (vlax-release-object TMP)       )   )   (if (member NAME NAME_LIST)       t       NIL   ))  
 楼主| 发表于 2004-2-2 12:50:00 | 显示全部楼层
龙兄真是高手,多谢
发表于 2008-4-8 21:14:00 | 显示全部楼层
这段程序怎么用啊,是什么语言啊
发表于 2012-5-23 15:31:42 | 显示全部楼层
向前辈们学习。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-3 09:41 , Processed in 0.195255 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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