明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4774|回复: 18

【一个想法】修改图形里Bylayer的图元为指定颜色,线型

  [复制链接]
发表于 2011-3-12 20:30:24 | 显示全部楼层 |阅读模式
例如 "Line_11" 图层,颜色:绿;线型:虚线,
能不能通过程序把里面的所有Bylayer的图元颜色改为绿色,线型改为虚线,包括块里面的,
这样就可以很方便的合并和删除多余图层了,谢谢~~~
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2011-3-12 20:41:01 | 显示全部楼层
很好的一个想法啊,这样把一个杂乱的图形修改为标准图层就方便多了。
希望大家能给点意见,谢谢了~~~
 楼主| 发表于 2011-3-12 20:42:56 | 显示全部楼层
不然的话,合并修改图层的话bylayer的图层会跟新的图层一个颜色和线型,这样图形就变了,所以有了这个想法,希望大虾们给点建议谢谢~~~
发表于 2011-3-12 20:46:47 | 显示全部楼层
颜色和线型都可以bylayer要怎么改呢?
发表于 2011-3-12 21:08:57 | 显示全部楼层
回复 tm20038175 的帖子

  1. (defun c:tt(/ laydata doc ms blocks)
  2.   (setq layers (vla-get-Layers (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))))
  3.   (setq blocks (vla-get-blocks doc))
  4.   
  5.   (vlax-for lay layers
  6.     (setq laydata (cons (list (vla-get-name lay) (vla-get-color lay) (vla-get-linetype lay)) laydata))
  7.     )
  8.   (vlax-for block blocks
  9.     (vlax-for obj block
  10.     (if (and (= 256 (vla-get-color obj)) (/= "0" (vla-get-layer obj)))
  11.         (vla-put-color obj (cadr (assoc (vla-get-layer obj) laydata)))
  12.       )
  13.     (if (and(= "ByLayer" (vla-get-linetype obj))(/= "0" (vla-get-layer obj)))
  14.         (vla-put-linetype obj (caddr (assoc (vla-get-layer obj) laydata)))
  15.       )
  16.       
  17.       )
  18.     )
  19.   (setq ms (vla-get-ModelSpace doc))
  20.   (vlax-for obj ms
  21.     (if (= 256 (vla-get-color obj))
  22.         (vla-put-color obj (cadr (assoc (vla-get-layer obj) laydata)))
  23.       )
  24.     (if (= "ByLayer" (vla-get-linetype obj))
  25.         (vla-put-linetype obj (caddr (assoc (vla-get-layer obj) laydata)))
  26.       )
  27.     )
  28.   (princ)
  29.   
  30.   )
 楼主| 发表于 2011-3-12 21:13:34 | 显示全部楼层
回复 ZZXXQQ 的帖子

就是不要bylayer,每条线最好指定颜色,线型,不然合并的时候变成其他图层的颜色和线型了
 楼主| 发表于 2011-3-12 21:22:42 | 显示全部楼层
回复 Gu_xl 的帖子

就是这个,十分感谢啦,可惜只有修改颜色的,线型也能修改吗?
发表于 2011-3-12 21:25:36 | 显示全部楼层
回复 tm20038175 的帖子

程序已经包括线型和颜色了
 楼主| 发表于 2011-3-12 21:34:56 | 显示全部楼层
回复 Gu_xl 的帖子

十分感谢您的回复,我拷贝了您的tt程序,执行后,发现颜色改为指定颜色了,线型全部是Bylayer,不是指定的线型(如实线,虚线,点化线……),奇怪了,难道是我的电脑出问题了吗?
发表于 2011-3-12 21:55:53 | 显示全部楼层
回复 tm20038175 的帖子

我测试没问题!你把下面的代码修改一下试试:
(= "ByLayer" (vla-get-linetype obj))
===>
(= "BYLAYER" (strcase (vla-get-linetype obj)))

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

本版积分规则

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

GMT+8, 2025-5-26 00:51 , Processed in 0.189838 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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