中的实体图案填充颜色更改
大家早上好我正在寻找如何让这段代码工作,我需要它。现在,它只是在块外选择实体图案填充,并寻找更多选择。
我想要它做的是自动选择模型空间中的所有实体图案填充,无论其是否在块中,并将颜色更改为True color 255255
我对编码很陌生,但我认为我的思路是对的,尽管我不知道如何调用truecolor,而且代码目前还不起作用。
我已经做了一些相当广泛的搜索,这就是我到目前为止所做的。下面的代码最初是用来更改模式类型的,恐怕我的修改没有达到我想要的效果。它也不包括任何设置其仅搜索模型空间的内容。
提前谢谢你的帮助,我真的很感激。
(defun c:sol2white ( / doc )
(vlax-for blk (vla-get-blocks (setq doc (vla-get-activedocument (vlax-get-acad-object))))
(if (= :vlax-false (vla-get-isxref blk))
(vlax-for obj blk
(if
(and
(= "AcDbHatch" (vla-get-objectname obj))
(= "SOLID" (strcase (vla-get-patternname obj)))
(vlax-write-enabled-p obj)
)
(progn
((vla-put-color obj 255,255,255))
;(vla-put-patternscale obj 1000.0)
)
)
)
)
)
(vla-regen doc acallviewports)
(princ)
)
(vl-load-com) (princ)
根据文件,
对象颜色属性aci索引0-256整数
(vla-put-color obj AcWhite)
;1=red 2=yellow 3=green 4=cyan 5=blue 6=magenta 7=white
有用的链接颜色转换 有没有办法将这类代码与这类代码混合在一起?
(setq sset (ssget "x" '((0 . "HATCH") (2 . "SOLID"))))
(command ".chprop" sset "" "c" "T" "255,255,255" "")
我只是不知道如何让排序,看看内部块和外部的固体阴影块。 试试这个:
(defun c:sol2white (/ doc)
(or *colorobject*
(setq *colorobject*
(vla-getinterfaceobject
(vlax-get-acad-object)
(strcat "AutoCAD.AcCmColor." (substr (getvar "acadver") 1 2))
)
)
)
(if
(null (vl-catch-all-error-p (vl-catch-all-apply 'vla-setrgb (list *colorobject* 255 255 255))))
(progn (vlax-for blk (vla-get-blocks (setq doc (vla-get-activedocument (vlax-get-acad-object))))
(if (= :vlax-false (vla-get-isxref blk))
(vlax-for obj blk
(if (and (= "AcDbHatch" (vla-get-objectname obj))
(= "SOLID" (strcase (vla-get-patternname obj)))
(vlax-write-enabled-p obj)
)
(vl-catch-all-apply 'vla-put-truecolor (list obj *colorobject*))
)
)
)
)
(vla-regen doc acallviewports)
)
)
(princ)
)
(vl-load-com)
(princ) 这太棒了。非常感谢!!我不知道如何使用255255255作为颜色。不幸的是,对于团队来说,这是一个相当重要的变量,而不是白人。我真的很感激你在这方面的帮助!!! 我可以告诉你怎么让它只在一个选择窗口内工作吗?而不是整个图纸?(我对这种代码很不熟悉) 不是块的对象只需从代码中删除“X”。“X”表示所有。ssget将等待您以通常支持的方式拾取对象。 好的,我今天回到这里。我发现它可以按我希望的方式工作,但我需要它只能在模型空间中运行。目前,它还将更改所有图纸空间选项卡上的实心图案填充,这会导致标题栏出现问题。有什么解决方案可以让它只在模型中运行吗?我将在下面发布我最新最棒的代码。
(defun c:hw (/ doc)
(or *colorobject*
(setq *colorobject*
(vla-getinterfaceobject
(vlax-get-acad-object)
(strcat "AutoCAD.AcCmColor." (substr (getvar "acadver") 1 2))
)
)
)
(if
(null (vl-catch-all-error-p (vl-catch-all-apply 'vla-setrgb (list *colorobject* 255 255 255))))
(progn (vlax-for blk (vla-get-blocks (setq doc (vla-get-activedocument (vlax-get-acad-object))))
(if (= :vlax-false (vla-get-isxref blk))
(vlax-for obj blk
(if (and (= "AcDbHatch" (vla-get-objectname obj))
(= "SOLID" (strcase (vla-get-patternname obj)))
(vlax-write-enabled-p obj)
)
(vl-catch-all-apply 'vla-put-truecolor (list obj *colorobject*))
)
)
)
)
(vla-regen doc acallviewports)
)
)
(princ)
)
(vl-load-com)
(princ) 我添加了突出显示的行,出现了以下错误:
命令:HW;错误:ActiveX服务器返回错误:未知名称:块
(defun c:hw (/ doc)
(or *colorobject*
(setq *colorobject*
(vla-getinterfaceobject
(vlax-get-acad-object)
(strcat "AutoCAD.AcCmColor." (substr (getvar "acadver") 1 2))
)
)
)
(if
(null (vl-catch-all-error-p (vl-catch-all-apply 'vla-setrgb (list *colorobject* 255 255 255))))
(progn (vlax-for blk (vla-get-blocks (setq doc (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object)))))
(if (= :vlax-false (vla-get-isxref blk))
(vlax-for obj blk
(if (and (= "AcDbHatch" (vla-get-objectname obj))
(= "SOLID" (strcase (vla-get-patternname obj)))
(vlax-write-enabled-p obj)
)
(vl-catch-all-apply 'vla-put-truecolor (list obj *colorobject*))
)
)
)
)
(vla-regen doc acallviewports)
)
)
(princ)
)
(vl-load-com)
(princ) 块不是“生活”在模型空间中。医生现场直播。
Blocks ref现场直播模型或任何东西。
模型和所有布局都是它自己的。
如果你在块名处有公共字母,可以设置通配符来选择它,但我重复一遍,你在空格处看到的是
块参照。不阻塞自身。
因此,可以循环到块引用,并获取块名称。然后在块集合中检查名称,并在块内更改。
页:
[1]
2