明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3989|回复: 8

如何遍历图层表

[复制链接]
发表于 2009-10-5 00:31:00 | 显示全部楼层 |阅读模式

下面的程序目的找出图层内所有含EC*为开头的图层,并将所有以EC为开头的图层按日期先后将其本来颜色改成41#~50#颜色(如将EC20091003换成41#色,EC20090929换成42#色),也有些图层可能是年份2009省略为09,比较麻烦的事! 遍历完后再依据当前时间新建图层

简言之,程序想要的结果是,避免新日期图层与老日期图层的颜色重叠!

在写下面的程序,想要遍历图层表,发现tblsearch "layer" "ec*" 返回的值是nil,该如何写这段代码,求教!

(defun c:ECN ()
 (setvar "CMDECHO" 0)
 (if (setq ss (ssget "X" '((8 . "EC*"))))        ;;;此段代码有误,应将查找物体改为遍历图层
  (command ".chprop" ss "" "C" "61" "")
 )
 (setq date1 (rtos (getvar "cdate")2 0))
 (setq ecn (strcat "EC" date1))
 (if (not(tblsearch "layer" ecn))
     (command "layer" "new" ecn "set" ecn "c" "5" ecn "")
     (command "layer" "set" ecn "")
 )
 (setvar "CMDECHO" 1)
 (princ)
)

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2009-10-5 09:38:00 | 显示全部楼层
发表于 2009-10-5 11:05:00 | 显示全部楼层
本帖最后由 作者 于 2009-10-6 9:10:24 编辑

(defun c:ECN (/ LAYS COL NEW)
  (setq LAYS (vla-get-layers (vla-get-ActiveDocument (vlax-get-acad-object)))
        COL  40)
  (vlax-for N LAYS
    (if (wcmatch (vla-get-name N) "EC*")
      (vla-put-color N (setq COL (1+ COL)))
    )
  )
  (setq NEW (strcat "EC" (rtos (getvar "cdate")2 0)))
  (vl-catch-all-apply 'vla-add (list LAYS NEW))
  (vla-put-color (vla-item LAYS NEW) 200)
  (princ)
)

如果要按照层名顺序更改,需要先遍历统一层名

明经网友  发表于 2009-10-5 18:21:00

謝謝caoyin版主﹐我不懂vlisp語法﹐COL 40這里出錯了﹐不知道怎么處理了

  (setq LAYS (vla-get-layers (vla-get-ActiveDocument (vlax-get-acad-object))
        COL  40))

結果:
; error: Too many actual parameters

回复 支持 反对

使用道具

 楼主| 发表于 2009-10-5 18:25:00 | 显示全部楼层

謝謝2樓和caoyin版主﹐我不懂vlisp語法﹐在3樓的程序中,COL 40即出錯了﹐不曉得錯在哪了﹐該如何處理?

(setq LAYS (vla-get-layers (vla-get-ActiveDocument (vlax-get-acad-object))
        COL  40)  )

; error: Too many actual parameters

发表于 2009-10-5 21:06:00 | 显示全部楼层

可能是整形转换字符串的问题?不好意思,忘了。请提供测试文件。

 (setq COL (itoa ((1+ COL))))

明经网友  发表于 2009-10-5 23:47:00
提供dwg测试图,程序就在一楼,后面的写不下去了
回复 支持 反对

使用道具

 楼主| 发表于 2009-10-5 23:48:00 | 显示全部楼层
程序都在一楼了,后面的写不下去了,提供dwg档供测试,麻烦caoyin版主了!

本帖子中包含更多资源

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

x
发表于 2009-10-6 09:05:00 | 显示全部楼层
3楼修正了一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-6 07:11 , Processed in 0.184863 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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