乐筑天下

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

[编程交流] 命名块的Bcount lisp

[复制链接]

6

主题

10

帖子

4

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 07:38:20 | 显示全部楼层 |阅读模式
是否有方法将bcount命令合并到lisp中,以仅计算名为“E”的块。在运行bcount命令之前,我需要以某种方式选择所有名为“E”的块。有什么建议吗?谢谢
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 07:55:05 | 显示全部楼层
  1. (if (setq ss (ssget "_x" '((2 . "E"))))
  2. (sssetfirst nil ss)
  3. )
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:09:23 | 显示全部楼层
此外,内置命令QSELECT和FILTER也可以帮您完成这项工作。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 08:18:47 | 显示全部楼层
Tharwat I被支持该代码只使用2的一个dxf代码。还有许多其他对象也使用2,是否最好添加仅搜索块(0。“插入”)作为使用ssget的更一般示例。
 
  1. '((0 . "INSERT")(2 . "E"))
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 08:36:16 | 显示全部楼层
这是可能的,尽管可能性很小。AttDefs(2=标记名)、图案填充(2=图案)、形状(2=形状名称)、维度(2=匿名块名-*D前缀)、表格(2=匿名块名-*T前缀)等在代码2项中可能有类似的内容。不过要确保你的方式更加完整和明确。
回复

使用道具 举报

22

主题

326

帖子

185

银币

后起之秀

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

铜币
243
发表于 2022-7-6 08:39:28 | 显示全部楼层
或者可能:(它也适用于动态块-使用一些acet函数快速且脏)
 
  1. (defun c:bcc (/ table dcl lsblk nm ss tol)
  2. ;Ketxu 2012
  3. (vl-load-com)
  4.    (defun table (s / d r)
  5.    (while (setq d (tblnext s (null d)))
  6.    (setq r (cons (cdr (assoc 2 d)) r))
  7.    )
  8.    )
  9.    (defun DCL(Title @ ThongTin lstVal / fl ret)   
  10.         (setq fl (vl-filename-mktemp "mip" nil ".dcl"))
  11.         (setq  ret (open fl "w"))
  12.         (mapcar
  13.        '(lambda (x) (write-line x ret))
  14.        (list
  15.        "mip_msg : dialog { "
  16.        (strcat "label="" title ""; width = 40;fixed_width = true;")  ;
  17.        ":popup_list {label = "Block : ";key="kLst";}"
  18.        ": column {"
  19.        ": row {"
  20.        "    fixed_width = true;"
  21.        "    alignment = centered;"
  22.        ":button {label = "\OK"; is_cancel = true;fixed_width = true;width = 1;}"
  23.        "    : spacer { width = 2; }"
  24.        ":button {label = "About";fixed_width = true;width = 1;key = "kThongTin";}"
  25.        "}"
  26.        "}"
  27.        " :text_part {alignment=centered;"
  28.         (strcat "label="" @ "";")
  29.         "}}"
  30.        )   
  31.         ) ;_ end of mapcar
  32.         (setq ret (close ret))
  33.         (if (and (not (minusp (setq dcl_id (load_dialog fl))))
  34.          (new_dialog "mip_msg" dcl_id)
  35.         ) ;_ end of and
  36.        (progn
  37.        (start_list "kLst" 3)
  38.        (mapcar '(lambda(x)(add_list x)) lstVal)
  39.        (end_list)
  40.        (action_tile "kLst" "(setq ret (nth (atoi $value) lstVal))")
  41.        (start_dialog)
  42.        ) ;_ end of progn
  43.         ) ;_ end of if
  44.         (unload_dialog dcl_id)  
  45.         (vl-file-delete fl)
  46.         ret
  47.    )
  48. (setq lstBlk (vl-remove-if '(lambda(x)(wcmatch x "`**"))(acad_strlsort (table "Block"))))
  49. (cond ((setq nm (DCL "Select block :" "@Ketxu" "Count choiced block @Ketxu" lstBlk))
  50. (setq  ss  (ssget (list (cons 0 "INSERT")(cons 2 (strcat nm ",`**"))))
  51. tol (length (setq tmp (vl-remove-if-not '(lambda(x)(= (vla-get-EffectiveName (vlax-ename->vla-object x)) nm)) (acet-ss-to-list ss))))
  52. )
  53. ))
  54. (cond ((> tol 0)
  55. (sssetfirst nil (acet-list-to-ss tmp))
  56. (princ (strcat "Number of block " nm " in selection area : " (itoa tol) ))
  57. )(T (princ "Nothing"))
  58. )
  59. (princ)
  60. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 04:28 , Processed in 2.005274 second(s), 64 queries .

© 2020-2025 乐筑天下

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