明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1909|回复: 6

[求助] 如何获取当前已有的所有图层?

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

从没想过这个!!但现在偏偏要用到它了!!

我想要在程序中获取当前的所有已出现的图层,并将它加入到对话框中的列表!!

我要怎样获取所有图层!!各位帮帮忙!!

 楼主| 发表于 2005-11-27 10:47 | 显示全部楼层

多谢了!!

问题已解决!!

发表于 2005-11-27 22:11 | 显示全部楼层

http://www.xdcad.net/forum/showthread.php?s=&threadid=486574&perpage=15&display=&pagenumber=2

 

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


(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)
)
 楼主| 发表于 2005-11-28 12:12 | 显示全部楼层

呵~~谢谢楼上的!!

不过这个程序太长了!我在以前的贴子里找到一个更短的!!我也贴出来让大家看看!!

 

;列出当前所有图层
(defun c:vva(/ adoc ltps n i ltp1 ltp2)
  (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
  (setq ltps (vla-get-layers adoc))
  (setq n (vla-get-count ltps))
  (setq i 0)
  (setq ltp2 "")
  (repeat (- n 0)
    (setq ltp1 (vla-get-name (vla-item ltps i)))
    (setq ltp1 (STRCAT ltp1 "\n"))
    (setq ltp2 (strcat ltp2 ltp1))
;    (princ "\n")
;    (print ltp1)
;    (princ "\n")
    (setq i (1+ i))
  )
  (princ ltp2)

 

说明:以上程序不是我写的!但我也忘了是谁的作品了!!!

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

(defun c:tst ()
  (while (setq d (tblnext "layer" (null d)))
    (setq lst (cons (cdr (assoc 2 d)) lst))
  )
  (setq lst (reverse lst))
)

;参考XYP1964所得

 楼主| 发表于 2005-11-29 16:48 | 显示全部楼层

谢谢!!收藏了……功能已完成!!

正在处理下一功能中……

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

http://www.xdcad.net/forum/showthread.php?s=&threadid=492022


(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)))
                     )
           )
  )
)

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

本版积分规则

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

GMT+8, 2024-5-21 05:26 , Processed in 0.239804 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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