明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 944|回复: 4

[经验] 读取块定义数据

  [复制链接]
发表于 2024-5-26 22:49:36 | 显示全部楼层 |阅读模式
本帖最后由 dcl1214 于 2024-5-26 23:11 编辑

同样的代码应该好多同仁写过,先当做笔记发个帖子吧
  1. (defun $kuai-ding-yi$ (km lst / n obj objs i tag-ps)
  2.                                         ;读取块定义的属性标记,同时按照Y轴排序
  3.   (if (and km (tblsearch "block" km))
  4.     (progn
  5.       (setq
  6.         obj
  7.          (vl-catch-all-apply
  8.            'vla-item
  9.            (list (vla-get-blocks
  10.                    (vla-get-activedocument (vlax-get-acad-object))
  11.                  )
  12.                  km
  13.            )
  14.          )
  15.       )
  16.       (if (vl-catch-all-error-p obj)
  17.         (setq obj nil)
  18.       )
  19.       (setq objs nil)
  20.       (setq i nil)
  21.       (if obj
  22.         (vlax-for i obj
  23.           (setq n (vl-catch-all-apply 'vla-get-objectname (list i)))
  24.           (if (vl-catch-all-error-p n)
  25.             (setq n nil)
  26.           )
  27.           (and n (setq objs (cons i objs)))
  28.         )
  29.       )
  30.       (setq tag-ps
  31.              (mapcar
  32.                (function
  33.                  (lambda (a / tag pt)
  34.                    (setq tag (vl-catch-all-apply 'vla-get-tagstring (LIST a)))
  35.                    (IF(vl-catch-all-error-p tag)(SETQ tag NIL))
  36.                    (IF tag(PROGN
  37.                    (setq pt (vl-catch-all-apply
  38.                               'vlax-safearray->list
  39.                               (list (vl-catch-all-apply
  40.                                       'vlax-variant-value
  41.                                       (list (vl-catch-all-apply
  42.                                               'vla-get-insertionpoint
  43.                                               (list a)
  44.                                             )
  45.                                       )
  46.                                     )
  47.                               )
  48.                             )
  49.                    )
  50.                    (cons tag pt)))
  51.                  )
  52.                )
  53.                objs
  54.              )
  55.       )
  56.       (SETQ tag-ps(VL-REMOVE NIL tag-ps))
  57.       (setq
  58.         tag-ps
  59.          (vl-sort tag-ps
  60.                   (function (lambda (e1 e2)
  61.                               (> (cadr (cdr e1)) (cadr (cdr e2)))
  62.                             )
  63.                   )
  64.          )
  65.       )
  66.     )
  67.   )
  68.   tag-ps
  69. )

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-5-27 08:33:23 | 显示全部楼层
感谢杜总的分享!
发表于 2024-5-27 08:56:10 | 显示全部楼层
感谢昌哥分享
发表于 2024-5-27 08:56:25 | 显示全部楼层
谢谢大佬的分享
发表于 2024-5-27 12:28:25 | 显示全部楼层
感谢杜总的分享!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 16:46 , Processed in 0.168749 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表