明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1584|回复: 34

[提问] 扫“黄”专贴

[复制链接]
发表于 2018-6-28 22:36 | 显示全部楼层 |阅读模式
本帖最后由 尘缘一生 于 2018-6-28 22:59 编辑

如题:
由于黄色不好打印,转PDF也显示不清楚。求两段代码:

1:所有实体颜色随层

2:把图中所有 黄色 的图层的颜色改为 红色!


    经以上处理后,图中不允许出现黄色实体。

点评

这就是打印样式的工作,而不是去修改图中的图元,图层的属性。 这样的代码写出来容易,但绝对是在助你高速公路上逆行...  发表于 2019-6-30 11:01
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2018-6-29 17:55 | 显示全部楼层
  1. (Defun MODlayers(codes / d a b c)
  2.   (setq b(car codes)c(cadr codes))
  3.   (While(SetQ a(TblNext"layer"(not d)))
  4.     (if(member b(setq a(entget(tblobjname"layer"(cdadr a)))))(entmod(subst c b A)))
  5.     (SetQ d t)))

(MODlayers'((370 . -3)(370 . 50)));;线宽为默认的的改为0.5
(MODlayers'((62 . 2)(62 . 1)));;颜色为2的改成1
(MODlayers'((70 . 4)(70 . 0)));;锁定图层解锁
....

点评

程序写的确实好啊,  发表于 2018-7-5 07:46
完美啊,完美。。  发表于 2018-6-30 07:13
回复 支持 1 反对 1

使用道具 举报

发表于 2018-6-29 09:50 | 显示全部楼层
设置一下打印样式不就完了

点评

打印样式的解决方式也可以。最好传资料,图纸里面不出现黄色。  发表于 2018-6-29 11:06
回复 支持 0 反对 1

使用道具 举报

发表于 2018-6-29 09:19 | 显示全部楼层
我有一个 选择相对属性  用法:命令qw 输入c 选择 你要选择的颜色(比如黄色)之后框选 只选择黄色

(defun c:qw (/ kw Myqselect)
(defun My_qselect (code typ / ss en lst styp)
(princ "\n請選擇種類")
(princ typ)
(if (setq en (entsel "的一個對象"))
(progn (setq en (car en))
(setq lst (entget en))
(setq styp (assoc code lst))
(if styp (progn (setq ss (ssget (list styp))))
(progn (if (= 62 code)
(setq ss (ssget (list ;|'(-4 . "<not")'(-4 . "<")|;(cons code 256) ;|'(-4 . "not>")|;
)))
(setq ss (ssget (list ;|'(-4 . "<not")'(-4 . "<")|;(cons code "bylayer") ;|'(-4 . "not>")|;
))))))
(if ss (progn (sssetfirst nil ss))
(alert "該類型的圖元不存在")
)))
(princ)
)
(initget "C L X W K T")
(setq kw (getkword "\n請選擇需要的類型,線型<X>,文字<W>,塊名<K>,顏色<C>,圖層<L>,圖元類型<T>:" )
)
(cond
((= "X" kw)  (My_qselect 6 "線型"))
((= "W" kw) (My_qselect 1 "文字"))
((= "C" kw)  (My_qselect 62 "顏色"))
((= "K" kw)  (My_qselect 2 "塊名"))
((= "L" kw)  (My_qselect 8 "圖層"))
((= "T" kw)  (My_qselect 0 "圖元類型"))
)
(princ"\n過濾選擇程序")
(princ)
)


这个解决不了你要的要求 但是 在你没找到办法的时候 可以用这个过度
这段码 是在明经里面找到的 但是我忘记作者是谁了 很抱歉

点评

是过滤图层,如果图层颜色是黄色,就变成红色,这样子,图元按黄色过滤是另一个问题。,对图层操作,这是一个。  发表于 2018-6-29 09:47
回复 支持 0 反对 1

使用道具 举报

发表于 2018-6-29 08:59 | 显示全部楼层
龙龙仔有一个程序,就是作这个的,你可以找找看!

点评

找不到  发表于 2018-6-29 09:14
回复 支持 0 反对 1

使用道具 举报

发表于 2018-6-29 09:54 | 显示全部楼层
理解错了~~~嘿嘿

点评

希望你帮忙啊,看看能出手弄下吧?  发表于 2018-6-29 10:38
发表于 2018-6-29 10:52 | 显示全部楼层
本帖最后由 panliang9 于 2018-6-29 11:13 编辑

http://bbs.xdcad.net/forum.php?mod=viewthread&tid=2474&page=2

明经的贴已经消失了,找到的如下:

本帖子中包含更多资源

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

x

点评

我怎么看,这个还是对实体操作的?  发表于 2018-6-29 11:08
发表于 2018-6-29 11:18 | 显示全部楼层


这个命令也可以选定对象改颜色为“随层”!

点评

嗯,我目的是,不要选实体,自动搜索整图的所有图层,发现黄色,就改成红色,这样子。  发表于 2018-6-29 15:49
发表于 2018-6-29 11:29 | 显示全部楼层
本帖最后由 panliang9 于 2018-6-29 11:31 编辑

改图层颜色的代码:
(defun VxChgLayCol (Old New / AcdDoc)
(vla-load-com)
(setq AcdDoc (vla-get-ActiveDocument (vlax-get-acad-object)))
(vlax-for Obj (vla-get-Layers AcdDoc)
(if (= (vla-get-Color Obj) Old)
(vla-put-Color Obj New)
)
(vlax-release-object Obj)
)
(vlax-release-object AcdDoc)
(princ)
)

命令执行:
(VxChgLayCol 2 1)

网上刨到的,亲测可行!

点评

CAD2018版,测试:通不过的。  发表于 2018-6-29 15:52
发表于 2018-6-29 11:37 | 显示全部楼层
本帖最后由 llsheng_73 于 2018-6-29 13:07 编辑

  1. (Defun STB(TAB / d a)
  2.   (While(SetQ a(TblNext TAB(not d)))
  3.     (SetQ d(Cons a d)))
  4.   d)
  5. (defun Selectbylayer(dxf code f / ly)
  6.   (setq ly(mapcar'(lambda(x)(cons(assoc 370(entget(tblobjname"layer"(cdadr x))))x))(STB"Layer")))
  7.   (ssget"X"(if code(append dxf(list(cons -4(strcat"<"f)))
  8.                           (vl-remove'nil(apply'append(mapcar'(lambda(x)(list'(-4 . "<or")x
  9.                                                               '(-4 . "<and")(assoc(car x)'((62 . 256)(6 . "Bylayer")))
  10.                                                               (cons 8(apply'strcat(mapcar'(lambda(x)(strcat(cdaddr x)","))
  11.                                                                                          (vl-remove-if-not'(lambda(y)(member x y))ly))))
  12.                                                               '(-4 . "and>")'(-4 . "or>")))code)))
  13.                           (list(cons -4(strcat f">"))))
  14.             dxf)))

(command"chprop"(SELECTBYLAYER'((0 . "*")) '((62 . 2))"AND")"""c"1"")

点评

这段代码经使用,在ACAD2011版出错,不知道大师有办法修改吗?  发表于 2019-3-24 00:20
不对,折断代码还是改实体的,我得目标是,所有黄色图层改红色,不是对实体操作的!  发表于 2018-6-29 16:13
OK,太棒了,我就说吗,必定成功,代码完美,就这个问题!  发表于 2018-6-29 15:57
发表于 2018-6-29 13:36 | 显示全部楼层
有一个一劳永逸的办法,修改打印样式表
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-19 13:52 , Processed in 0.468275 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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