明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1231|回复: 1

[已解答] 如何选择块内和Bylayer的各种非连续线型

[复制链接]
发表于 2013-7-1 03:38 | 显示全部楼层 |阅读模式
5明经币
本帖最后由 yangist 于 2013-7-3 08:42 编辑

(setq ss (ssget  '((0 . "arc,circle,ellipse,line,*polyline"))))    ;最好只选择下面四种线型
(setq ss1(ssget ss (       ;选取center线型和Bylayer为center的线型,包含块
(setq ss2(ssget ss (       ;选取dashed线型和Bylayer为dashed的线型,包含块
(setq ss3(ssget ss (       ;选取phantom线型和Bylayer为phantom的线型,包含块
(setq ss3(ssget ss (       ;选取divide线型和Bylayer为divide的线型,包含块
谢谢!

下面附上按颜色选对象的程序,供您参考
(defun hy_leachcolorlist(en / eno color layer ccolor cord_laye layerlist
             layerlist1 layername layercolor needlis);;;;参照物体颜色
(SETQ  needlis NIL)
  (if (= (type en) 'ENAME)
  (progn
  (setq eno (vlax-ename->vla-object en))
  (setq color (vla-get-color eno))
  (setq layer (vla-get-layer eno))
  (setq ccolor (cdr(assoc 62 (entget(tblobjname "layer" layer)))))
  (setq cord_layer (tblnext "layer" t))
  (setq layerlist nil layerlist1 nil)
  (while cord_layer
    (setq layername (cdr(assoc 2 cord_layer)))
    (setq layercolor (cdr(assoc 62 cord_layer)))
    (if (= layercolor color)(setq layerlist (cons (cons 8 layername) layerlist)))
    (if (= layercolor ccolor)(setq layerlist1 (cons (cons 8 layername) layerlist1)))
    (setq cord_layer (tblnext "layer"))
    )
  (if (/= color 256)
      (setq needlis (append '((-4 . "<or"))
            (list(cons 62 color))
            '((-4 . "<and")(62 . 256)(-4 . "<or"))
            (append layerlist  (list(cons 62 color)) )
            '((-4 . "or>")(-4 . "and>")(-4 . "or>"))))
      (setq needlis (append '((-4 . "<or"))
                    (list '(-4 . "<and")(cons 8 layer)'(62 . 256)'(-4 . "and>"))
                 (list(cons 62 ccolor))
                '((-4 . "<and")(62 . 256)(-4 . "<or"))
                layerlist1
                '((-4 . "or>")(-4 . "and>")(-4 . "or>"))
                ))
        )
  ))
  (if (= (type en) 'INT) (progn
  (setq color EN)
  (setq cord_layer (tblnext "layer" t))
  (setq layerlist nil)
  (while cord_layer
    (setq layername (cdr(assoc 2 cord_layer)))
    (setq layercolor (cdr(assoc 62 cord_layer)))
    (if (= layercolor color)(setq layerlist (cons (cons 8 layername) layerlist)))
    (setq cord_layer (tblnext "layer"))
    )
  (if (/= color 256)
      (setq needlis (append '((-4 . "<or"))
            (list(cons 62 color))
            '((-4 . "<and")(62 . 256)(-4 . "<or"))
            (append layerlist  (list(cons 62 color)) )
            '((-4 . "or>")(-4 . "and>")(-4 . "or>"))))
        )
  ))
  needlis
  )

 楼主| 发表于 2013-7-5 15:58 | 显示全部楼层
已经好了~~~~~~~~~~
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-8 19:31 , Processed in 0.490819 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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