自贡黄明儒 发表于 7 天前

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给对象着色

kozmosovia 发表于 7 天前

不需要创建,直接get-truecolor,然后修改,然后pu-truecolor

llsheng_73 发表于 7 天前

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)

llsheng_73 发表于 7 天前

TrueColor属性的奇怪在于它的属性值并不象其它简单的属性那样直接是数值或数组,而是一个TrueColor对象,具体的属性值还得通过这个对象才能处理,相当于多了一层壳。。。。感觉不是CAD自己的东西,是借用了别人的,必须多绕一个弯才能使用

xyp1964 发表于 7 天前

(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
    )
)
)

VBALISPER 发表于 6 天前

谢谢分享经验

煮茗 发表于 6 天前

跟随各位大佬脚步学习。Mark!

tangweinbs 发表于 6 天前

跟随各位大佬脚步学习,谢谢分享。

ysq101 发表于 前天 15:46

十多年了。。回来瞅瞅,还能看到这些老面孔,你们是多么热爱LISP啊。。。

gf123 发表于 昨天 14:39

谢谢分享。。。
页: [1]
查看完整版本: vla-put-TrueColor