明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3203|回复: 13

怎么更改图层特性

  [复制链接]
发表于 2005-6-24 10:59:00 | 显示全部楼层 |阅读模式
YH_layer0是已存在图层的图元名
我用下列程序改变的仅是YH_layer0这个表的数据,并不能改变图形中图层的颜色,请教应该怎么修改程序 (setq YH_layer0 (entget YH_layer0))
(setq YH_layer0 (subst (cons 62 YH_layercolor) (assoc 62 YH_layer0) YH_layer0))
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2005-6-24 11:35:00 | 显示全部楼层
(command "change" ......)
 楼主| 发表于 2005-6-24 11:55:00 | 显示全部楼层
我不想用command
发表于 2005-6-24 16:29:00 | 显示全部楼层
(if (assoc 62 YH_layer0)


         (setq YH_layer0 (subst (cons 62 YH_layercolor) (assoc 62 YH_layer0) YH_layer0))


         (setq        YH_layer0 (append YH_layer0 (list (cons 62 YH_layercolor))))


)
 楼主| 发表于 2005-6-25 15:21:00 | 显示全部楼层
本帖最后由 作者 于 2005-6-25 15:43:03 编辑

不行。
还是只改了 YH_layer0这个变量,实际的图层并没有改,我把全部程序贴出来大家看看怎么修改。 ;;判断指定图层是否存在,如不存在则新建,如存在则将图层颜色,线型,线宽设置为指定的数据并设为当前层
(defun YH_layermake(YH_layer YH_layerlinetype YH_layercolor YH_layerlinewith)
(setq YH_layerlinewith (fix (* YH_layerlinewith 100)))
(setq YH_layer0 (tblobjname "LAYER" YH_layer))
(if (= YH_layer0 nil)
(progn
(entmake (list
'(0 . "LAYER")
'(100 . "AcDbSymbolTableRecord")
'(100 . "AcDbLayerTableRecord")
(cons 2 YH_layer) ;图层名称
'(70 . 0) ;图层状态
(cons 62 YH_layercolor) ;图层颜色
(cons 6 YH_layerlinetype) ;图层线型
(cons 370 YH_layerlinewith) ;图层线宽
)
)
)
(progn
(setq YH_layer0 (entget YH_layer0))
(setq YH_layer0 (subst (cons 62 YH_layercolor) (assoc 62 YH_layer0) YH_layer0))
)
)
(setvar "clayer" YH_layer)
(princ)
) (defun c:JS()
(YH_layermake "S-给水" "bylayer" 131 0.18)
) 红色那段程序实现不了我想要的功能(即相当于(command "layer" "c" 131 "S-给水" "")),不知道该怎么写下去
发表于 2005-6-25 17:00:00 | 显示全部楼层
先判断数据表里组码62存不存在,没有你怎么去更新颜色呢.四楼的方法难道不行吗.
 楼主| 发表于 2005-6-26 14:01:00 | 显示全部楼层
谢谢各位帮忙,我找到答案了,就是加多一个entmod函数
发表于 2005-6-27 15:32:00 | 显示全部楼层
你这个程序有问题吧


飞哥那个程序应该代替你那两行
 楼主| 发表于 2005-6-27 19:28:00 | 显示全部楼层
没有问题
现在我把红色的改成 (progn
(setq YH_layertemp (entget YH_layertemp))
(setq YH_layertemp (subst (cons 62 YH_layercolor) (assoc 62 YH_layertemp) YH_layertemp)) ;更改图层颜色
(setq YH_layertemp (subst (cons 6 YH_layerlinetype) (assoc 6 YH_layertemp) YH_layertemp)) ;更改图层线型
(setq YH_layertemp (subst (cons 370 YH_layerlinewith) (assoc 370 YH_layertemp) YH_layertemp)) ;更改图层线宽
(ENTMOD YH_layertemp)
) YH_layertemp相当于原来的YH_layer0
发表于 2005-6-28 09:19:00 | 显示全部楼层
看来你原来的问题只是没有更新对象而已,,,


不过4楼6楼8楼的话你真的没仔细看啊,,,拿你9楼的程序对一个什么都随层的对象看看是否还有效
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 15:41 , Processed in 0.167777 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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