乐筑天下

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

[编程交流] 标题栏属性颜色L

[复制链接]

48

主题

657

帖子

33

银币

限制会员

铜币
-1
发表于 2022-7-5 16:45:25 | 显示全部楼层 |阅读模式
下午好
 
 
我正在编写一个简单的LISP例程,我可以运行它,并根据客户的要求检查/更改绘图层、颜色等。省去了我在浏览图纸时遗漏的一些东西。
 
 
对于标题栏,他们希望所有内容都在“标题”层上,但不同的文本有不同的颜色。所以标题描述可能是黄色的,图纸编号可能是红色的。
 
 
我的想法是将块属性修改为所需的颜色。
 
 
我正在考虑添加一行或2到我的LISP修改文本的颜色。
 
 
我试过使用-attedit,这很好,但我希望用户输入来选择要修改的块属性。
 
 
任何帮助都会很好。
所有标题栏都是相同的,我知道块名和属性名(MyBlock,title\u 1,title\u 2…Number,Project)
 
 
理想的情况是寻找
 
 
(命令(MyBlock,Title\u 1,Color,“1”))
 
将Title_1设置为红色。
 
 
 
 
 
 
听起来很简单,我很确定我只是需要一点帮助。谢谢
回复

使用道具 举报

20

主题

338

帖子

323

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-5 16:53:25 | 显示全部楼层
我可能会这样做。
 
  1. (setq blk (vlax-ename->vla-object (car (entsel "\nSelect Block: "))))
  2. (setq atts (vlax-safearray->list (vlax-variant-value (vlax-invoke-method blk 'GetAttributes)) ))
  3. (setq cnt 0)
  4. (repeat (length atts)
  5. (setq att (nth cnt atts))
  6. (cond
  7.    ((= (vlax-get-property att 'TagString) "TITLE_1")(vlax-put-property att 'Color acred))
  8.    ((= (vlax-get-property att 'TagString) "TITLE_2")(vlax-put-property att 'Color acgreen))
  9.    ((= (vlax-get-property att 'TagString) "TITLE_3")(vlax-put-property att 'Color acblue))
  10.    )
  11. (setq cnt (+ cnt 1))
  12. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 16:55:00 | 显示全部楼层
我可能会建议:
  1. (defun c:attcol ( / col lst sel )
  2.    ;; Tags/Colours
  3.    (setq lst '(("TITLE_1" . 1) ("TITLE_2" . 2) ("NUMBER" . 3) ("TAG1" . 4) ("TAG2" . 5)))
  4.    
  5.    (if (setq sel (ssget "_+.:E:S:L" '((0 . "INSERT") (66 . 1))))
  6.        (foreach att (vlax-invoke (vlax-ename->vla-object (ssname sel 0)) 'getattributes)
  7.            (if (setq col (cdr (assoc (strcase (vla-get-tagstring att)) lst)))
  8.                (if (vlax-write-enabled-p att) (vla-put-color att col))
  9.            )
  10.        )
  11.    )
  12.    (princ)
  13. )
  14. (vl-load-com) (princ)
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 17:00:02 | 显示全部楼层
李,最后两个IF函数需要什么,只要你能用一个和函数替换它们?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 17:07:41 | 显示全部楼层
 
给猫剥皮的方法很多。
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 17:10:41 | 显示全部楼层
这是我的尝试,Phtephen:
 
  1. (defun C:test ( / Lst SS e grp enx )
  2. (setq Lst ; adjust for personal needs
  3.    '( ; assoc list of (<TagName> . <Index Color>) ; note: <TagName> is case sensitive
  4.      ("AttTag1" . 1)
  5.      ("AttTag2" . 2)
  6.      ("AttTag3" . 3)
  7.      ("AttTag3" . 4)
  8.    )
  9. )
  10. (and
  11.    (not (prompt "\nPick the titleblock: "))
  12.    (setq SS (ssget "_+.:E:S:L" '((0 . "INSERT") (66 . 1))))
  13.    (setq e (ssname SS 0))
  14.    (while (/= "SEQEND" (cdr (assoc 0 (entget (setq e (entnext e))))))
  15.      (and
  16.        (setq grp (assoc (cdr (assoc 2 (setq enx (entget e)))) Lst))
  17.        (entmod (append (vl-remove-if '(lambda (x) (member (car x) '(62 420 430))) enx) (list (cons 62 (cdr grp)))))
  18.      )
  19.    )
  20. )
  21. (princ)
  22. )

编辑:该死,李跑得更快!
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 17:16:40 | 显示全部楼层
它一定太可爱了。
回复

使用道具 举报

48

主题

657

帖子

33

银币

限制会员

铜币
-1
发表于 2022-7-5 17:21:52 | 显示全部楼层
谢谢,在周末下班之前,我只有机会尝试第一种方法——效果很好,尽管如此,我将在周一尝试其他两种方法。
 
我可以看出,如果有很多属性需要更改(我想我必须更新11),那么Lees’中的数组将更加整洁,
 
 
如果我预计需要经常或在大型项目中使用此功能,我将研究如何指定要在LISP例程中使用的块(保存一些secomd)-可能会让它修改文件夹中的所有图形。
 
非常感谢
回复

使用道具 举报

48

主题

657

帖子

33

银币

限制会员

铜币
-1
发表于 2022-7-5 17:26:12 | 显示全部楼层
星期一早上,我尝试了另外两种解决方案——它们效果很好。
 
 
早上很安静,所以我找到了:
(ssget“x”'((0。“INSERT”)(2。“MyBlock”))
替换
(ssget“_+:E:S:L”'((0。“插入”)(66.1)))
因为我只更新每个图形中具有相同名称的1个块。
 
 
现在有了一个命令,我知道所有层都正确设置了,这个块中的颜色都是应该的,使用其他几个LISP,页面设置等都是正确的,完全如我所愿。
 
 
下次见,谢谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 17:29:18 | 显示全部楼层
不客气!
 
除此之外,请小心将(2.“MyBlock”)用于动态块,因为块引用是匿名的。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 14:00 , Processed in 0.392401 second(s), 72 queries .

© 2020-2025 乐筑天下

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