K Baden 发表于 2022-7-5 16:06:00

中的实体图案填充颜色更改

大家早上好
我正在寻找如何让这段代码工作,我需要它。现在,它只是在块外选择实体图案填充,并寻找更多选择。
 
我想要它做的是自动选择模型空间中的所有实体图案填充,无论其是否在块中,并将颜色更改为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)

hanhphuc 发表于 2022-7-5 16:17:28

 
根据文件,
对象颜色属性aci索引0-256整数

(vla-put-color obj AcWhite)
;1=red 2=yellow 3=green 4=cyan 5=blue 6=magenta 7=white

 
有用的链接颜色转换

K Baden 发表于 2022-7-5 16:20:07

有没有办法将这类代码与这类代码混合在一起?
(setq sset (ssget "x" '((0 . "HATCH") (2 . "SOLID"))))
(command ".chprop" sset "" "c" "T" "255,255,255" "")
 
我只是不知道如何让排序,看看内部块和外部的固体阴影块。

ronjonp 发表于 2022-7-5 16:29:18

试试这个:
(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)

K Baden 发表于 2022-7-5 16:31:40

这太棒了。非常感谢!!我不知道如何使用255255255作为颜色。不幸的是,对于团队来说,这是一个相当重要的变量,而不是白人。我真的很感激你在这方面的帮助!!!

K Baden 发表于 2022-7-5 16:36:18

我可以告诉你怎么让它只在一个选择窗口内工作吗?而不是整个图纸?(我对这种代码很不熟悉)

BIGAL 发表于 2022-7-5 16:44:20

不是块的对象只需从代码中删除“X”。“X”表示所有。ssget将等待您以通常支持的方式拾取对象。

K Baden 发表于 2022-7-5 16:53:13

好的,我今天回到这里。我发现它可以按我希望的方式工作,但我需要它只能在模型空间中运行。目前,它还将更改所有图纸空间选项卡上的实心图案填充,这会导致标题栏出现问题。有什么解决方案可以让它只在模型中运行吗?我将在下面发布我最新最棒的代码。
 

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

K Baden 发表于 2022-7-5 16:56:48

我添加了突出显示的行,出现了以下错误:
命令: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)

devitg 发表于 2022-7-5 17:01:11

块不是“生活”在模型空间中。医生现场直播。
Blocks ref现场直播模型或任何东西。
模型和所有布局都是它自己的。
如果你在块名处有公共字母,可以设置通配符来选择它,但我重复一遍,你在空格处看到的是
块参照。不阻塞自身。
 
因此,可以循环到块引用,并获取块名称。然后在块集合中检查名称,并在块内更改。
页: [1] 2
查看完整版本: 中的实体图案填充颜色更改