乐筑天下

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

[编程交流] 选择相似的可见性统计

[复制链接]

5

主题

10

帖子

5

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 19:42:18 | 显示全部楼层 |阅读模式
我找到了根据匹配的可见性状态选择块的附加代码。我对其进行了轻微修改,因此它始终假设可见性参数称为默认的“Visibility1”
 
第一个主命令VSDB要求选择一个块,但它仍然需要命令行输入所需的可见性状态(变量“visstat”)。我想让它读取所选块的。
 
以下命令TDB将返回块可见性状态的名称
 
我的问题是如何将它们组合在一起,只需键入vsdb并选择块,然后完成-选择所有具有匹配可见性状态名称的块。
可见性选择。lsp
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-5 20:02:33 | 显示全部楼层
  1. (defun c:demo (/ LM:getvisibilityparametername _curvis curvis e en ess ssvis)
  2. ;; Get Visibility Parameter Name  -  Lee Mac
  3. ;; Returns the name of the Visibility Parameter of a Dynamic Block (if present)
  4. ;; blk - [vla] VLA Dynamic Block Reference object
  5. ;; Returns: [str] Name of Visibility Parameter, else nil
  6. (defun LM:getvisibilityparametername (blk / vis)
  7.    (if
  8.      (and
  9. (vlax-property-available-p blk 'effectivename)
  10. (setq blk
  11.        (vla-item
  12.          (vla-get-blocks (vla-get-document blk))
  13.          (vla-get-effectivename blk)
  14.        )
  15. )
  16. (= :vlax-true (vla-get-isdynamicblock blk))
  17. (= :vlax-true (vla-get-hasextensiondictionary blk))
  18. (setq vis
  19.        (vl-some
  20.          '(lambda (pair)
  21.             (if
  22.               (and
  23.                 (= 360 (car pair))
  24.                 (= "BLOCKVISIBILITYPARAMETER"
  25.                    (cdr (assoc 0 (entget (cdr pair))))
  26.                 )
  27.               )
  28.                (cdr pair)
  29.             )
  30.           )
  31.          (dictsearch
  32.            (vlax-vla-object->ename (vla-getextensiondictionary blk))
  33.            "ACAD_ENHANCEDBLOCK"
  34.          )
  35.        )
  36. )
  37.      )
  38.       (cdr (assoc 301 (entget vis)))
  39.    )
  40. )
  41. (defun _curvis (_e _vn)
  42.    (vlax-get
  43.      (vl-some '(lambda        (l)
  44.           (if (eq _vn (vla-get-propertyname l))
  45.             l
  46.           )
  47.         )
  48.        (vlax-invoke _e 'GetDynamicBlockProperties)
  49.      )
  50.      'Value
  51.    )
  52. )
  53. (if
  54.    (and (setq e (ssget "_:S:E" '((0 . "INSERT"))))
  55. (setq
  56.    en (vla-item        (vla-get-blocks
  57.                   (vla-get-ActiveDocument (vlax-get-acad-object))
  58.                 )
  59.                 (setq effname
  60.                        (vla-get-EffectiveName
  61.                          (setq e (vlax-ename->vla-object (ssname e 0)))
  62.                        )
  63.                 )
  64.       )
  65. )
  66. (minusp (vlax-get en 'IsDynamicBlock))
  67. (setq visname (LM:getvisibilityparametername e))
  68. (setq curvis (_curvis e visname))
  69. (setq ssvis (ssadd)
  70.        ssx   (ssget "X" (list (cons 2 (strcat effname ",`*U*"))))
  71. )
  72.    )
  73.     (repeat (setq i (sslength ssx))
  74.       (if (and        (eq (vla-get-EffectiveName
  75.               (setq es (vlax-ename->vla-object
  76.                          (setq ess (ssname ssx (setq i (1- i))))
  77.                        )
  78.               )
  79.             )
  80.             effname
  81.         )
  82.         (eq (_curvis es visname) curvis)
  83.    )
  84. (ssadd ess ssvis)
  85.       )
  86.     )
  87. )
  88. (if curvis
  89.    (sssetfirst nil ssvis)
  90. )
  91. (princ)
  92. )

 
感谢LM提供-->getvisibilityparametername
 
HTH公司
回复

使用道具 举报

5

主题

10

帖子

5

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 20:22:05 | 显示全部楼层
太棒了-这就是生意!非常感谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 20:29:27 | 显示全部楼层
 
干杯pBe!
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 20:55:17 | 显示全部楼层
你介意上传你最后的Lisp程序吗?这正是我要找的,但我不擅长lisp创建。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 01:20 , Processed in 1.106705 second(s), 62 queries .

© 2020-2025 乐筑天下

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