明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: blue123

[LISP]如何获取图元的颜色索引号

  [复制链接]
 楼主| 发表于 2005-11-21 19:40 | 显示全部楼层

其实我想编一个专门用来删同一色图元的程式,现在搞定了,谢谢二位,ZZXXQQ和飞哥。程式如下:

(DEFUN C:GETCL(/ S1)
 (SETQ S1 (ENTSEL "\nSelect a object 选择一个实体 :"))
 (if (not (ASSOC 62 (ENTGET (CAR S1)))) (setq ss (ssget "x" '((62 . 256))))
 (setq ss (ssget "x"(list (ASSOC 62 (ENTGET (CAR S1))))))
 )
 (command "erase" ss "")
)

发表于 2005-11-21 21:41 | 显示全部楼层
(SSGET "X" '((62 . 256)))只是选择了全部颜色随图层的实体,有可能误删除不同颜色的实体。
 楼主| 发表于 2005-11-22 21:11 | 显示全部楼层

请教该如何解决呢?

发表于 2005-11-23 21:39 | 显示全部楼层
  1. (DEFUN C:GETCL(/ S1)
  2. (SETQ S1 (ENTSEL "\nSelect a object 选择一个实体 :"))
  3. (if (not (ASSOC 62 (ENTGET (CAR S1))))
  4.   (setq ss (ssget "x" (LIST (ASSOC 8 (ENTGET (CAR S1))) (CONS 62 256))))
  5.   (setq ss (ssget "x" (list (ASSOC 62 (ENTGET (CAR S1))))))
  6. )
  7. (command "erase" ss "")
  8. )
发表于 2005-11-25 09:06 | 显示全部楼层

;以前和大家讨论的结果

;;; 图层的颜色
;;; 返回层的颜色
(defun th1-get-color (laname / la1 la col)
  (setq la (cdr (assoc 2 (tblnext "layer" t))))
  (while (/= la laname)
    (setq la1 (tblnext "layer" nil)
   la (cdr (assoc 2 la1))
   col (cdr (assoc 62 la1))
    )
  )
  (princ "\n颜色为 : ")
  col
)
;;; ==================================================================
;;; 返回实体颜色
(defun th2-get-color (ename / ent col)
  (setq ent (entget ename))
  (or
    (setq col (cdr (assoc 62 ent)))
    (setq col (cdr (assoc 62 (tblsearch "layer" (cdr (assoc 8 ent))))))
  )
  col
)
(defun th3-get-color (ename / ent col)
  (setq ent (entget ename))
  (cond
    ((setq col (cdr (assoc 62 ent))))
    ((setq col (cdr (assoc 62 (tblsearch "layer" (cdr (assoc 8 ent)))))))
  )
)
;;; ==================================================================
;;; 求实体所在层和颜色,返回(层名  颜色)
(defun th1-get-layandcol (ename / b col doc lay layobj)
  (vl-load-com)
  (setq b (vlax-ename->vla-object ename))
  (setq lay (vla-get-layer b))
  (setq col (vla-get-color b))
  (if (= col 256)
    (progn
      (setq doc (vla-get-activedocument (vlax-get-acad-object)))
      (setq layobj (vla-item (vla-get-layers doc) lay))
      (setq col (vla-get-color layobj))
    )
  )
  (list lay col)
)
(defun th2-get-layandcol (ename / ent col)
  (setq ent (entget ename))
  (setq lay (cdr (assoc 8 ent)))
  (cond
    ((setq col (cdr (assoc 62 ent))))
    ((setq col (cdr (assoc 62 (tblsearch "layer" (cdr (assoc 8 ent)))))))
  )
  (list lay col)
)
(defun th3-get-layandcol (ename / ent col)
  (setq ent (entget ename))
  (setq lay (cdr (assoc 8 ent)))
  (cond
    ((setq col (cdr (assoc 62 ent))))
    ((setq col (cdr (assoc 62 (tblsearch "layer" (cdr (assoc 8 ent)))))))
  )
  (if (cdr (assoc 62 ent))
    (list lay col)
    (list lay col "bylayer")
  )
)

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

本版积分规则

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

GMT+8, 2024-5-3 13:13 , Processed in 0.257178 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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