marting 发表于 2017-4-4 11:33:34

获取图层列表的三种方法和效率比较

本帖最后由 marting 于 2017-4-4 11:35 编辑


;方法1
(defun GetLayers1 (/ lst)
(vlax-map-collection
    (vla-get-Layers
      (vla-get-ActiveDocument
      (vlax-get-acad-object)
      )
    )
    (function
      (lambda (x) (setq lst (cons (vla-get-name x) lst)))
    )
)
lst
)


;方法2
(defun GetLayers2 (/ tdef lst)
(while (setq tdef (tblnext "LAYER" (not tdef)))
    (setq lst (cons (cdr (assoc 2 tdef)) lst))
)
lst
)



方法三:


**** Hidden Message *****

效率比较:

(GETLAYERS3).....1123 / 1.40 <最快>
(GETLAYERS1).....1264 / 1.25
(GETLAYERS2).....1576 / 1.00 <最慢>

q3_2006 发表于 2017-4-4 11:55:25

第三种方法还真不知道哈..学习了..

q3_2006 发表于 2017-4-4 11:57:50

原来 1才是没用过的方法哈...{:1_12:}

newer 发表于 2017-4-4 12:08:02

方法2,慢就慢在每次都要打开图层表进行读操作,其他两个方法都是打开一次,就读出所有层信息了。

auva 发表于 2017-4-4 13:11:13

来学习第三种方法了,感谢!

pengfei2010 发表于 2017-4-4 13:33:01

看看啥子好东西,谢谢楼主

llsheng_73 发表于 2017-4-4 13:45:05

学习最高效的方法

sh_h 发表于 2017-4-4 18:09:16

回复看看第三种方法!!!

zz159504 发表于 2017-4-4 20:24:24

学习最高效的方法

xinxirong 发表于 2017-4-4 21:09:55

ffffffffffffffffffffffffffffffffffffffffff

占卜者 发表于 2017-4-4 21:31:41

谢谢楼主



cable2004 发表于 2017-4-4 21:53:26

学习了..

dnbcgrass 发表于 2017-4-4 23:43:14

回复看看!

sicky111 发表于 2017-4-5 00:03:20

啥也不说了,感谢楼主分享哇!

yoyoho 发表于 2017-4-5 08:23:28

确实是难得好帖啊,顶先
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 获取图层列表的三种方法和效率比较