找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1841|回复: 8

[LISP函数]:用什么函数可以查看图层的状态?

[复制链接]
发表于 2005-11-23 09:41:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
用什么函数可以查看图层的状态?如某层是打开或关闭,是否冻结等......
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 2个

财富等级: 恭喜发财

发表于 2005-11-23 11:58:04 | 显示全部楼层
List layers according to state
;;;
;;; By Jimmy Bergmark
;;; Copyright (C) 1997-2005 JTB World, All Rights Reserved
;;; Website: www.jtbworld.com
;;; E-mail: info@jtbworld.com
;;; 2000-05-15
;;;
;;; Argument: state
;;;             1  frozen
;;;             2  thawed
;;;             3  on
;;;             4  off
;;;             5  lock
;;;             6  not locked
;;;             7  plottable
;;;             8  not plottable
;;; Example: (layer-state 1)
;;; Return values: list of layers

[php](defun layer-state (state / typ names tf skip)
  (setq names nil)
  (vlax-for layer (vla-get-Layers
                    (vla-get-ActiveDocument
                      (vlax-get-acad-object)
                    )
                  )
    (setq skip nil)
    (cond
      ((= 1 state) (setq typ (vla-get-freeze layer) tf :vlax-true))
      ((= 2 state) (setq typ (vla-get-freeze layer) tf :vlax-false))
      ((= 3 state) (setq typ (vla-get-layeron layer) tf :vlax-true))
      ((= 4 state) (setq typ (vla-get-layeron layer) tf :vlax-false))
      ((= 5 state) (setq typ (vla-get-lock layer) tf :vlax-true))
      ((= 6 state) (setq typ (vla-get-lock layer) tf :vlax-false))
      ((= 7 state) (setq typ (vla-get-plottable layer) tf :vlax-true))
      ((= 8 state) (setq typ (vla-get-plottable layer) tf :vlax-false))
      (t (setq skip T))
    )
    (if (and (null skip) (eq typ tf))
      (setq names (cons (vla-get-name layer) names))
    )
  )
  (reverse names)
)[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2005-11-23 21:59:31 | 显示全部楼层
看dxf帮助
70:

  1. 标准标记(按位编码值):
  2. 1 = 冻结图层,否则解冻图层
  3. 2 = 默认情况下在新视口中冻结图层
  4. 4 = 锁定图层
  5. 16 = 如果设置了此位,则表条目外部依赖于外部参照
  6. 32 = 如果同时设置了此位和位 16,则表明已成功融入了外部依赖的外部参照
  7. 64 = 如果设置了此位,则表明在上次编辑图形时,图形中至少有一
  8. 个图元参照了表条目。(此标志适用于 AutoCAD 命令。大多数读
  9. 取 DXF 文件的程序都可以忽略它,并且无需由写入 DXF 文件的程
  10. 序对其进行设置)
复制代码

62:颜色编号(如果为负值,则表明图层处于关闭状态)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-24 08:04:14 | 显示全部楼层
明白了,谢谢二位!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-29 15:28:55 | 显示全部楼层
用et的lman
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2005-11-29 21:23:11 | 显示全部楼层

詳細的層狀態列表

y Jimmy Bergmark
;;; Copyright (C) 1997-2005 JTB World, All Rights Reserved
;;; Website: www.jtbworld.com
;;; E-mail: info@jtbworld.com
;;; 2000-03-15
;;; Example: (ax:layer-list)
;;; Return values: list of layers and all layerstates
;;;    (<Layer Name> <On/Off> <Frozen/Thawed> <Locked/Not locked> <Color> <Linetype>
;;;        <Lineweight> <Plotstylename> <Plottable/Not plottable> <Viewportdefault=Frozen/Not frozen>)
[php]
(defun ax:layer-list (/ lst layer colors color lw)
  (setq colors '("Red" "Yellow" "Green" "Cyan" "Blue" "Magenta" "White"))
  (vlax-for layer (vla-get-Layers
                    (vla-get-ActiveDocument
                      (vlax-get-acad-object)
                    )
                  )
    (setq color (vla-get-color layer))
    (if (< color 8) (setq color (nth (1- color) colors)) (setq color (itoa color)))
    (setq lw (vla-get-lineweight layer))
    (if (= lw -3) (setq lw "Default") (setq lw (rtos (/ lw 100.0) 2 2)))
    (setq lst (cons
                (list
                  (vla-get-name layer)
                  (if (= (vla-get-layeron layer) :vlax-true) "On" "Off")
                  (if (= (vla-get-freeze layer) :vlax-true) "Frozen" "Thawed")
                  (if (= (vla-get-lock layer) :vlax-true) "Locked" "Not locked")
                  color
                  (vla-get-linetype layer)
                  lw
                  (vla-get-plotstylename layer)
                  (if (= (vla-get-plottable layer) :vlax-true) "Plottable" "Not plottable")
                  (if (= (vla-get-viewportdefault layer) :vlax-true) "Frozen" "Not frozen")
                ) lst))
  )
  (vl-sort lst
           (function (lambda (e1 e2)
                       (< (strcase (car e1)) (strcase (car e2)))
                     )
           )
  )
)[/php]

命令: (AX:LAYER-LIST) (("0" "On" "Thawed" "Not locked" "White" "Continuous"
"Default" "Color_7" "Plottable" "Not frozen") ("com" "On" "Thawed" "Not locked"
"Green" "Continuous" "Default" "Color_3" "Plottable" "Not frozen") ("comd" "On"
"Thawed" "Not locked" "31" "Continuous" "Default" "Color_31" "Plottable" "Not
frozen") ("glass" "On" "Thawed" "Not locked" "White" "Continuous" "Default"
"Color_7" "Plottable" "Not frozen") ("pi" "On" "Thawed" "Not locked" "Yellow"
"Continuous" "Default" "Color_2" "Plottable" "Not frozen") ("point" "On"
"Thawed" "Not locked" "Magenta" "Continuous" "Default" "Color_6" "Plottable"
"Not frozen") ("seal" "On" "Thawed" "Not locked" "Cyan" "Continuous" "Default"
"Color_4" "Plottable" "Not frozen") ("seg" "On" "Thawed" "Not locked" "Red"
"Continuous" "Default" "Color_1" "Plottable" "Not frozen") ("segd" "On"
"Thawed" "Not locked" "193" "Continuous" "Default" "Color_193" "Plottable" "Not
frozen") ("top" "On" "Thawed" "Not locked" "Blue" "Continuous" "Default"
"Color_5" "Plottable" "Not frozen"))

獲取所有圖層列表.
[php]
(defun c:tst (/ d lst)
  (while (setq d (tblnext "layer" (null d)))
    (setq lst (cons (cdr (assoc 2 d)) lst))
  )
  (setq lst (reverse lst))
)
[/php]
;参考XYP1964所得
[php](defun ListLayer (/ AcadDocument LayerSel n i LayerItem LayerNames)
     (setq AcadDocument (vla-get-activedocument (vlax-get-acad-object)))
     (setq LayerSel (vla-get-layers AcadDocument))
     (setq n (vla-get-count LayerSel))
     (setq i 0)
     (repeat n
       (setq LayerItem (vla-item LayerSel i))
       (setq LayerNames (append LayerNames (list (vla-get-name LayerItem))))
       (setq i (1+ i))
     )
     LayerNames
   )
[/php]
摘自明經通道
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-11-27 14:59:14 | 显示全部楼层
多谢楼上提供的信息,支持了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-9-3 00:13:38 | 显示全部楼层
搞不明白.
我想知道判断某个指定的图层(如“0”层)当前是否冻结的函数
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2017-11-16 13:02:54 | 显示全部楼层
谢谢,正在找这些
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-19 14:35 , Processed in 0.431405 second(s), 47 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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