乐筑天下

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

[编程交流] 删除具有相同属性的块

[复制链接]

25

主题

106

帖子

85

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
121
发表于 2022-7-5 17:40:04 | 显示全部楼层 |阅读模式
我再次需要你的帮助!!!
可以帮我找一个可以删除相同属性块的芸香碱;
谢谢你的建议,每次都能帮上忙
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:53:01 | 显示全部楼层
需要更多信息,比如它只是一个块名,哪个属性需要标记名。发布dwg。
回复

使用道具 举报

25

主题

106

帖子

85

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
121
发表于 2022-7-5 18:04:22 | 显示全部楼层
下面是块的示例
删除DUP。图纸
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 18:07:43 | 显示全部楼层
你好
 
尝试此程序:
 
  1. (defun c:Test (/ sel all _atts lst del)
  2. ;;----------------------------------------------------;;
  3. ;;        ----==={ Tharwat - Date: 21.May.2016 }===----        ;;
  4. ;;         Select / Highlight all matched text strings        ;;
  5. ;;         as per the contents of the first one picked        ;;
  6. ;;----------------------------------------------------;;
  7. (princ "\nPick on Attribute Block to highlight all matched blocks with similar attributes:")
  8. (if (and (setq sel (ssget "_+.:S:E" '((0 . "INSERT") (66 . 1))))
  9.           (setq all (ssget  "_X" (list '(0 . "INSERT") '(66 . 1) (cons 410 (getvar 'CTAB)))))
  10.      )
  11.    (progn
  12.      (defun _atts (ent / str mtch)
  13.        (mapcar '(lambda (v)
  14.                   (if (/= (setq str (vla-get-textstring v)) "")
  15.                     (setq mtch (cons str mtch))
  16.                   )
  17.                 )
  18.                (vlax-invoke (vlax-ename->vla-object ent) 'GetAttributes)
  19.        )
  20.        mtch
  21.      )
  22.      (setq lst (_atts (ssname sel 0))
  23.            del (ssadd)
  24.      )
  25.      ((lambda (r / obj tmp atts)
  26.         (while (setq obj (ssname all (setq r (1+ r))))
  27.           (and (setq tmp lst)
  28.                (setq atts (_atts obj))
  29.                (vl-every '(lambda (a)
  30.                             (if (member a tmp)
  31.                               (progn
  32.                                 (setq tmp (vl-remove a tmp)) t
  33.                               )
  34.                             )
  35.                           )
  36.                          atts
  37.                )
  38.                (ssadd obj del)
  39.           )
  40.         )
  41.       )
  42.        -1
  43.      )
  44.      (sssetfirst nil del)
  45.    )
  46. )
  47. (princ)
  48. ) (vl-load-com)
回复

使用道具 举报

25

主题

106

帖子

85

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
121
发表于 2022-7-5 18:19:24 | 显示全部楼层
你好,塔瓦!!!
谢谢你总是遇到急救问题!!!
这是可行的,但单独选择每个属性需要花费很多时间,是否可以自动选择和删除具有相同属性“Pozitia”的块,但不能删除所有块,而只能删除其中一个
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 18:23:10 | 显示全部楼层
 
你好
 
像这样的?
 
  1. (defun c:Test (/ all _atts str fnd lst)
  2. ;;----------------------------------------------------;;
  3. ;;        ---==={ Tharwat - Date: 21.May.2016 }===---        ;;
  4. ;;         Select and delete all matched text strings        ;;
  5. ;;   as per the contents of the tag name POZITIA        ;;
  6. ;;----------------------------------------------------;;
  7. (if (setq all (ssget "_X" (list '(0 . "INSERT") '(66 . 1) (cons 410 (getvar 'CTAB)))))
  8.    (progn
  9.      (defun _atts (ent / str)
  10.        (vl-some
  11.          '(lambda (v)
  12.             (if (= (strcase (vla-get-tagstring v)) "POZITIA")
  13.               (setq str (vla-get-textstring v))
  14.             )
  15.           )
  16.          (vlax-invoke (vlax-ename->vla-object ent) 'GetAttributes)
  17.        )
  18.        str
  19.      )
  20.      ((lambda (r / obj tmp atts)
  21.         (while (setq obj (ssname all (setq r (1+ r))))
  22.           (if (setq str (_atts obj))
  23.             (if (setq fnd (assoc str lst))
  24.               (setq lst (subst (list str (append (list obj) (cadr fnd)))
  25.                            fnd
  26.                            lst
  27.                     )
  28.               )
  29.               (setq lst (cons (list str (list obj)) lst))
  30.             )
  31.           )
  32.         )
  33.       )
  34.        -1
  35.      )
  36.      (if lst (mapcar '(lambda (e) (mapcar 'entdel (cdr (cadr e)))) lst))
  37.    )
  38. )
  39. (princ)
  40. )(vl-load-com)
回复

使用道具 举报

25

主题

106

帖子

85

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
121
发表于 2022-7-5 18:31:46 | 显示全部楼层
Yuhaaaaa!!!!!!!!!
非常感谢Tharwat!!!
现在它工作得很好!!!
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 18:42:16 | 显示全部楼层
非常欢迎你。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 04:02 , Processed in 0.405200 second(s), 68 queries .

© 2020-2025 乐筑天下

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