print1985 发表于 2014-9-21 20:02:05

单独使用
比如:(vl-load-com)
(defun c:GS()
(GL:LayCol "0" 7)
(GL:LayCol "厨卫设备" 252)
(GL:LayCol "家具" 252)
(GL:LayCol "空调洞" 252)
(GL:LayCol "预留孔洞" 252)
(GL:LayCol "空调" 252)
(GL:LayCol "WALL" 140)
(GL:LayCol "PUB_DIM" 3)
(GL:LayCol "PUB_TEXT" 255)
(GL:LayCol "STAIR" 2)
(PRINC)
)

;改图层颜色子程序。参数:图层、颜色 例:(GL:LayCol "PUB_DIM" 3)
(defun GL:LayCol (lay col / acaddoc acadobj layobj vlay)
(setq AcadObj (vlax-get-Acad-object)
        AcadDoc (vla-get-ActiveDocument AcadObj)
        LayObj (vla-get-layers AcadDoc)
)
(setq vlay (vla-item LayObj lay))    ; 转为VL图层名
(vla-put-color vlay col)             ; 改图层颜色
)

theisland 发表于 2014-9-21 20:52:13

print1985 发表于 2014-9-21 20:02 static/image/common/back.gif
单独使用
比如:

太好了!要的就是这个效果,目前美中不足的是,如果图中缺乏一些预先设置颜色的图层,CAD会提示:
命令:GS ; 错误: Automation 错误。 未找到主键 ,如果能够解决这个就更好了(如果不能通过程序解决,每次在需要改色的图中插入各种图层也能解决,只是稍微麻烦点),这功能能整合到您的改色面板里去吗?

theisland 发表于 2014-9-21 20:55:28

【KAIXIN】 发表于 2014-9-21 09:08 static/image/common/back.gif
天正很多都是自定义实体,LISP办不打

一直在用您的改色程序,非常好用,只是现在改用天正比较多,您的程序就有点不够用了

print1985 发表于 2014-9-22 13:58:49

加个判断就行了 比如:
(if (tblsearch "layer" "0") (GL:LayCol "0" 7))
我发的都是源码 你自己试着改改就能加到面板里面(添加一个按钮就行了) 自己去折腾吧 然后你也会了 发现如此简单

theisland 发表于 2014-9-22 14:13:01

print1985 发表于 2014-9-22 13:58 static/image/common/back.gif
加个判断就行了 比如:
(if (tblsearch "layer" "0") (GL:LayCol "0" 7))
我发的都是源码 你自己试着改改 ...

GS ; 错误: Automation 错误。 未找到主键 这个能不能解决呢?如果缺乏预设图层,让程序直接忽略行吗?

print1985 发表于 2014-9-22 17:49:18

上面代码就是解决这个的啊

theisland 发表于 2014-9-23 08:28:11

print1985 发表于 2014-9-22 17:49 static/image/common/back.gif
上面代码就是解决这个的啊

嘿嘿,搞定了,非常感谢!

theisland 发表于 2014-9-23 09:46:48

print1985 发表于 2014-9-22 17:49 static/image/common/back.gif
上面代码就是解决这个的啊

朋友,我尝试着加了一下按钮,界面效果是出来了,但是程序貌似没有引用对,还麻烦你再看看

print1985 发表于 2014-9-23 10:34:59

theisland 发表于 2014-9-23 09:46 static/image/common/back.gif
朋友,我尝试着加了一下按钮,界面效果是出来了,但是程序貌似没有引用对,还麻烦你再看看

里面写了注释 你看下
你问的很多内容论坛都能搜索到 善用搜索
lisp语法很简单 先用几天把语法搞懂 然后就是运用各种函数 函数不需要记忆 知道大概功能 用的时候查询一下就行了

theisland 发表于 2014-9-23 19:07:22

print1985 发表于 2014-9-23 10:34 static/image/common/back.gif
里面写了注释 你看下
你问的很多内容论坛都能搜索到 善用搜索
lisp语法很简单 先用几天把语法搞懂 然后 ...

(if (tblsearch "PUB_HATCH" "0")(GL:LayCol "PUB_HATCH" 8)) ;每句改色之前都要判断,后面的自己加

老大,上面这句什么意思?怎么感觉更复杂了呢?其实之前已经好了,目前只是想把那个预设的改色程序加进面板里面,如果不好加,还不如就把您那两个程序分开用,刚试了您改了之后的,有这个提示:
; 错误: AutoCAD 拒绝函数: 表函数参数无效:"PUB_HATCH" "0"

因为我发给您的程序中只是预设了几个图层作为举例,实际上要添加的图层数量很多,之前的就蛮好了,如果再“每句加判断”,感觉很麻烦哦
页: 1 [2] 3
查看完整版本: 开心版主的改图层颜色程序,对天正图元不管用,求助~