vla-put-TrueColor
本帖最后由 自贡黄明儒 于 2024-12-20 11:43 编辑总觉得vla-put-TrueColor的使用很奇怪,搜了半天,才明白
先给颜色,然后再用于对象,记录一下
(setq obj (vlax-ename->vla-object(car(entsel))));多行文字
(setq acmCol (vla-getinterfaceobject(vlax-get-acad-object) (strcat "AutoCAD.AcCmColor." (substr (getvar "ACADVER") 1 2))))
(vla-setrgb acmCol 200 200 200)
(vla-put-TrueColor obj acmCol)
acmCol彩笔,vla-setrgb蘸墨,vla-put-TrueColor给对象着色
不需要创建,直接get-truecolor,然后修改,然后pu-truecolor kozmosovia 发表于 2024-12-19 17:20
不需要创建,直接get-truecolor,然后修改,然后pu-truecolor
确实直接获取truecolor属性比创建TrueColor对象更简单
(setq o(vlax-ename->vla-object(car(entsel)))
(setq Tcolor(vlax-get-property o 'truecolor))
(vlax-invoke-method Tcolor'setrgb 200 200 200)
(vlax-put-property o 'truecolor Tcolor)
TrueColor属性的奇怪在于它的属性值并不象其它简单的属性那样直接是数值或数组,而是一个TrueColor对象,具体的属性值还得通过这个对象才能处理,相当于多了一层壳。。。。感觉不是CAD自己的东西,是借用了别人的,必须多绕一个弯才能使用 (defun Put-TrueColor (s1 rgb / o tc)
"Put-TrueColor 实体赋值RGB颜色 (Put-TrueColor s1 rgb)"
(if s1
(progn
(setq o(vlax-ename->vla-object s1)
tc (vlax-get-property o 'TrueColor)
)
(vla-SetRGB tc (car rgb) (cadr rgb) (caddr rgb))
(vla-put-trueColor o tc)
s1
)
)
) 谢谢分享经验 跟随各位大佬脚步学习。Mark! 跟随各位大佬脚步学习,谢谢分享。 十多年了。。回来瞅瞅,还能看到这些老面孔,你们是多么热爱LISP啊。。。 谢谢分享。。。
页:
[1]