乐筑天下

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

[编程交流] 按属性v进行块选择

[复制链接]

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 00:02:37 | 显示全部楼层 |阅读模式
我对Autolisp很陌生,所以我真的不知道是否可以用lisp来实现这一点,但现在它来了。
我需要一个lisp,可以根据属性值选择一个块,例如,我有一个图形,其中有十几个块都具有相同的名称“DFUBLANK1”,这些块有几个属性,但我只需要选择属性标记为“PART”且值为“10”的块。有什么想法吗?
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 00:17:37 | 显示全部楼层
这是接近未测试
 
  1. ; simple find block
  2. ; by Alan H nov 2013
  3. (setq ans (getstring "\nEnter attribute value"))
  4. (setq oldtag1 "yourattibute") ;attribute tag name
  5. (setq ss1 (ssget "x"  '((0 . "INSERT") (2 . "yourblockname")(410 . "Model"))) ; change block name
  6. (setq inc (sslength ss1))
  7. (repeat inc      
  8. (foreach att (vlax-invoke (vlax-ename->vla-object (ssname SS1 (setq inc (1- inc))) )'getattributes)
  9. (if (= oldtag1 (strcase (vla-get-tagstring att)))
  10. (progn
  11. (if (= ans (vla-get-textstring att ))
  12. (progn  
  13. (setq pt1 (vla-get-insertionpoint att))
  14. (command "zoom" "c" pt1 100) ; zooms in on block
  15. ) ; end progn
  16. ) ; end if ans
  17. )); end if oldtag1
  18. ) ; foreach att
  19. ) ; end repeat
  20. (princ)
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 00:42:41 | 显示全部楼层
欢迎来到CADTutor
 
试试这个。
 
  1. (defun c:Test (/ ss in sn en it ad ok)
  2. (if (setq ad (ssadd)
  3.            ss (ssget "_X"
  4.                      (list '(0 . "INSERT")
  5.                            '(2 . "DFUBLANK1")
  6.                            '(66 . 1)
  7.                            (cons 410 (getvar 'CTAB))
  8.                      )
  9.               )
  10.      )
  11.    (repeat (setq in (sslength ss))
  12.      (setq sn (ssname ss (setq in (1- in)))
  13.            it sn
  14.            ok nil
  15.      )
  16.      (while
  17.        (and
  18.          (not ok)
  19.          (/= (cdr (assoc 0 (setq en (entget (setq sn (entnext sn))))))
  20.              "SEQEND"
  21.          )
  22.        )
  23.         (if (and (eq (strcase (cdr (assoc 2 en))) "PART")
  24.                  (eq (cdr (assoc 1 en)) "10")
  25.             )
  26.           (setq ok t
  27.                 ad
  28.                    (ssadd it ad)
  29.           )
  30.         )
  31.      )
  32.    )
  33. )
  34. (sssetfirst nil ad)
  35. (princ)
  36. )
回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 00:57:41 | 显示全部楼层
谢谢你们的帮助,两人都做得很好,但我会和塔尔瓦特一起去,这更是我想要的。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 01:06:22 | 显示全部楼层
 
不客气
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 21:06 , Processed in 0.420570 second(s), 62 queries .

© 2020-2025 乐筑天下

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