乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 66|回复: 10

[编程交流] 中的实体图案填充颜色更改

[复制链接]

22

主题

78

帖子

59

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
114
发表于 2022-7-5 16:06:00 | 显示全部楼层 |阅读模式
大家早上好
我正在寻找如何让这段代码工作,我需要它。现在,它只是在块外选择实体图案填充,并寻找更多选择。
 
我想要它做的是自动选择模型空间中的所有实体图案填充,无论其是否在块中,并将颜色更改为True color 255255
 
我对编码很陌生,但我认为我的思路是对的,尽管我不知道如何调用truecolor,而且代码目前还不起作用。
 
我已经做了一些相当广泛的搜索,这就是我到目前为止所做的。下面的代码最初是用来更改模式类型的,恐怕我的修改没有达到我想要的效果。它也不包括任何设置其仅搜索模型空间的内容。
 
提前谢谢你的帮助,我真的很感激。
 
  1. (defun c:sol2white ( / doc )
  2.    (vlax-for blk (vla-get-blocks (setq doc (vla-get-activedocument (vlax-get-acad-object))))
  3.        (if (= :vlax-false (vla-get-isxref blk))
  4.            (vlax-for obj blk
  5.                (if
  6.                    (and
  7.                        (= "AcDbHatch" (vla-get-objectname obj))
  8.                        (= "SOLID" (strcase (vla-get-patternname obj)))
  9.                        (vlax-write-enabled-p obj)
  10.                    )
  11.                    (progn
  12.                        ((vla-put-color obj 255,255,255))
  13.                        ;(vla-put-patternscale obj 1000.0)
  14.                    )
  15.                )
  16.            )
  17.        )
  18.    )
  19.    (vla-regen doc acallviewports)
  20.    (princ)
  21. )
  22. (vl-load-com) (princ)
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 16:17:28 | 显示全部楼层
 
根据文件,
对象颜色属性aci索引0-256整数
  1. (vla-put-color obj [color="blue"]AcWhite[/color])
  2. [color="green"];1=red 2=yellow 3=green 4=cyan 5=blue 6=magenta 7=white[/color]

 
有用的链接颜色转换
回复

使用道具 举报

22

主题

78

帖子

59

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
114
发表于 2022-7-5 16:20:07 | 显示全部楼层
有没有办法将这类代码与这类代码混合在一起?
  1. (setq sset (ssget "x" '((0 . "HATCH") (2 . "SOLID"))))
  2. (command ".chprop" sset "" "c" "T" "255,255,255" "")

 
我只是不知道如何让排序,看看内部块和外部的固体阴影块。
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:29:18 | 显示全部楼层
试试这个:
  1. (defun c:sol2white (/ doc)
  2. (or *colorobject*
  3.      (setq *colorobject*
  4.      (vla-getinterfaceobject
  5.        (vlax-get-acad-object)
  6.        (strcat "AutoCAD.AcCmColor." (substr (getvar "acadver") 1 2))
  7.      )
  8.      )
  9. )
  10. (if
  11.    (null (vl-catch-all-error-p (vl-catch-all-apply 'vla-setrgb (list *colorobject* 255 255 255))))
  12.     (progn (vlax-for blk (vla-get-blocks (setq doc (vla-get-activedocument (vlax-get-acad-object))))
  13.       (if (= :vlax-false (vla-get-isxref blk))
  14.         (vlax-for obj blk
  15.           (if (and (= "AcDbHatch" (vla-get-objectname obj))
  16.                    (= "SOLID" (strcase (vla-get-patternname obj)))
  17.                    (vlax-write-enabled-p obj)
  18.               )
  19.             (vl-catch-all-apply 'vla-put-truecolor (list obj *colorobject*))
  20.           )
  21.         )
  22.       )
  23.     )
  24.     (vla-regen doc acallviewports)
  25.     )
  26. )
  27. (princ)
  28. )
  29. (vl-load-com)
  30. (princ)
回复

使用道具 举报

22

主题

78

帖子

59

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
114
发表于 2022-7-5 16:31:40 | 显示全部楼层
这太棒了。非常感谢!!我不知道如何使用255255255作为颜色。不幸的是,对于团队来说,这是一个相当重要的变量,而不是白人。我真的很感激你在这方面的帮助!!!
回复

使用道具 举报

22

主题

78

帖子

59

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
114
发表于 2022-7-5 16:36:18 | 显示全部楼层
我可以告诉你怎么让它只在一个选择窗口内工作吗?而不是整个图纸?(我对这种代码很不熟悉)
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:44:20 | 显示全部楼层
不是块的对象只需从代码中删除“X”。“X”表示所有。ssget将等待您以通常支持的方式拾取对象。
回复

使用道具 举报

22

主题

78

帖子

59

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
114
发表于 2022-7-5 16:53:13 | 显示全部楼层
好的,我今天回到这里。我发现它可以按我希望的方式工作,但我需要它只能在模型空间中运行。目前,它还将更改所有图纸空间选项卡上的实心图案填充,这会导致标题栏出现问题。有什么解决方案可以让它只在模型中运行吗?我将在下面发布我最新最棒的代码。
 
  1. (defun c:hw (/ doc)
  2. (or *colorobject*
  3.      (setq *colorobject*
  4.      (vla-getinterfaceobject
  5.        (vlax-get-acad-object)
  6.        (strcat "AutoCAD.AcCmColor." (substr (getvar "acadver") 1 2))
  7.      )
  8.      )
  9. )
  10. (if
  11.    (null (vl-catch-all-error-p (vl-catch-all-apply 'vla-setrgb (list *colorobject* 255 255 255))))
  12.     (progn (vlax-for blk (vla-get-blocks (setq doc (vla-get-activedocument (vlax-get-acad-object))))
  13.       (if (= :vlax-false (vla-get-isxref blk))
  14.         (vlax-for obj blk
  15.           (if (and (= "AcDbHatch" (vla-get-objectname obj))
  16.                    (= "SOLID" (strcase (vla-get-patternname obj)))
  17.                    (vlax-write-enabled-p obj)
  18.               )
  19.             (vl-catch-all-apply 'vla-put-truecolor (list obj *colorobject*))
  20.           )
  21.         )
  22.       )
  23.     )
  24.     (vla-regen doc acallviewports)
  25.     )
  26. )
  27. (princ)
  28. )
  29. (vl-load-com)
  30. (princ)
回复

使用道具 举报

22

主题

78

帖子

59

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
114
发表于 2022-7-5 16:56:48 | 显示全部楼层
我添加了突出显示的行,出现了以下错误:
命令:HW;错误:ActiveX服务器返回错误:未知名称:块
 
  1. (defun c:hw (/ doc)
  2. (or *colorobject*
  3.      (setq *colorobject*
  4.      (vla-getinterfaceobject
  5.        (vlax-get-acad-object)
  6.        (strcat "AutoCAD.AcCmColor." (substr (getvar "acadver") 1 2))
  7.      )
  8.      )
  9. )
  10. (if
  11.    (null (vl-catch-all-error-p (vl-catch-all-apply 'vla-setrgb (list *colorobject* 255 255 255))))
  12.     (progn (vlax-for blk (vla-get-blocks (setq doc [color="red"](vla-get-ModelSpace[/color] (vla-get-ActiveDocument (vlax-get-acad-object)))))
  13.       (if (= :vlax-false (vla-get-isxref blk))
  14.         (vlax-for obj blk
  15.           (if (and (= "AcDbHatch" (vla-get-objectname obj))
  16.                    (= "SOLID" (strcase (vla-get-patternname obj)))
  17.                    (vlax-write-enabled-p obj)
  18.               )
  19.             (vl-catch-all-apply 'vla-put-truecolor (list obj *colorobject*))
  20.           )
  21.         )
  22.       )
  23.     )
  24.     (vla-regen doc acallviewports)
  25.     )
  26. )
  27. (princ)
  28. )
  29. (vl-load-com)
  30. (princ)
回复

使用道具 举报

32

主题

430

帖子

423

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
150
发表于 2022-7-5 17:01:11 | 显示全部楼层
块不是“生活”在模型空间中。医生现场直播。
Blocks ref现场直播模型或任何东西。
模型和所有布局都是它自己的。
如果你在块名处有公共字母,可以设置通配符来选择它,但我重复一遍,你在空格处看到的是
块参照。不阻塞自身。
 
因此,可以循环到块引用,并获取块名称。然后在块集合中检查名称,并在块内更改。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-13 21:17 , Processed in 0.541248 second(s), 83 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表