你好,不知道能不能在赋扩展属性的同时改变图层的颜色呢,比如把图层 “JMD”的颜色改为品红。因为现在的 ...
当然可以,只要把颜色62群码值替换相应的值就行了! zyhandw 发表于 2012-5-24 16:14 static/image/common/back.gif
当然可以,只要把颜色62群码值替换相应的值就行了!
嗯,这个我知道,关键是根据 “颜色62群码值替换相应的值”的时候,这个“相应的 值”好像只能是个定值,而我希望的是程序能在赋扩展属性的同时,颜色能够同时的改变成相应的图层的颜色。我的疑问在于 我能不能根据对象的实体编码找到 图层相应的颜色信息,这个颜色作为变量 来进行程序的编写。不好意思,我说得很凌乱 筱筝 发表于 2012-5-26 11:15 static/image/common/back.gif
嗯,这个我知道,关键是根据 “颜色62群码值替换相应的值”的时候,这个“相应的 值”好像只能是个定值, ...
“根据对象的实体编码找到 图层相应的颜色信息”需要将编码和相应的图层做一个对照表;然后可以不用62群码,改用vl函数,用形如:(vla-put-color ename acbylayer)语句改颜色为随层即可! zyhandw 发表于 2012-5-26 15:15 static/image/common/back.gif
“根据对象的实体编码找到 图层相应的颜色信息”需要将编码和相应的图层做一个对照表;然后可以不用62群码 ...
谢谢你,我 在你原来写的程序上做了些修改,但是还是有点问题
(defun c:test()
(regapp "south")
(setq sscnt 0)
(vl-load-com)
(prompt "\n请选择要赋属性的块:")
(if (setq ins_all (ssget (list '(0 . "insert"))))
(repeat (sslength ins_all)
(setq ss_ins_name (ssname ins_all sscnt))
(setq ss_ins_att (entget ss_ins_name (list "*")))
(setq ins_name (cdr (assoc '2 ss_ins_att)))
(setq ins_code (substr ins_name 1 (vl-string-position (ascii "_") ins_name)))
(setq ins_code_lst (list '-3 (list "south" (cons 1000 ins_code))))
(setq ss_ins_att (reverse (append (list ins_code_lst) (reverse ss_ins_att))))
(setq layers (vla-get-layers
(vla-get-ActiveDocument (vlax-get-acad-object))
)
)
(vlax-for layer layers
(vla-put-color layer acBlayer) ;如果这里是acBlayer,程序有错误,但是如果该成定值,如1 ,就能成功修改颜色,但是不是根据图层修改成不同的颜色,而是整幅图都是同一颜色。能不能有什么方法,让它根据不同的图层,赋上不同的颜色呢。
)
(princ)
(entmod ss_ins_att)
(setq sscnt (1+ sscnt))
)
)
) 冒昧地加工了一下:(defun c:tt ()
(regapp "south")
(setq i 0)
(princ "\n请选择要赋属性的块: ")
(if (setq ss (ssget '((0 . "insert"))))
(progn
(repeat (sslength ss)
(setq att (entget (ssname ss i) (list "*"))
bname (cdr (assoc 2 att))
code(substr bname 1 (vl-string-position (ascii "_") bname))
lst (list -3 (list "south" (cons 1000 code)))
att (reverse (append (list lst) (reverse att)))
i (1+ i)
)
(entmod att)
)
(setq i 1)
(vlax-for la (vla-get-layers
(vla-get-ActiveDocument (vlax-get-acad-object))
)
(vla-put-color la i)
(setq i (1+ i))
)
)
)
) xyp1964 发表于 2012-5-27 10:13 static/image/common/back.gif
冒昧地加工了一下:
谢谢你,不过我想修改的颜色不是随机的,是根据图层改的,就像我们直接用CASS画图的时候,它本身的颜色,如J居民地 MD是 品红 道路BLSS 是青色 等。 筱筝 发表于 2012-5-27 09:39 static/image/common/back.gif
谢谢你,我 在你原来写的程序上做了些修改,但是还是有点问题
(defun c:test()
(regapp "south")
嗯,是写错了。不过改了之后出现了“选择对象:
; 错误: AutoCAD.Application: 参数 Color (位于 IAcadLayer::put_Color 中) 无效”这个错误。我查了一下函数说明,里面是这样说的 筱筝 发表于 2012-5-27 22:57 static/image/common/back.gif
嗯,是写错了。不过改了之后出现了“选择对象:
; 错误: AutoCAD.Application: 参数 Color (位于 IAcadLa ...
函数说明是这样的 zyhandw 发表于 2012-5-8 14:06 static/image/common/back.gif
看来又是一测绘同行,建议还是直接把你的dwg附件上来,大家再帮你!
http://bbs.mjtd.com/thread-170232-1-1.html大神帮我看看这个问题
页:
1
[2]