乐筑天下

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

[编程交流] 需要修改全局提取

[复制链接]

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 18:01:31 | 显示全部楼层 |阅读模式
我正在使用Lee Mac的这个Autocad程序,它提取属性信息来创建图形的标题列表。该程序的工作原理是选择块,然后提取标签放入电子表格。有一个选项可以选择“所有标签”,但没有选择“所有块”的选项我想搜索数百个子目录中的数千张图纸,为我的所有公司图纸创建一个更新的图纸列表。
 
使用这个程序来实现这一点的问题;就是有很多不同的块名。这些年来,标题栏已经被更改了无数次,而且这些变化还没有被记录下来。我已经创建了一个宏,可以解释变化并将其转换到绘图列表中,但是我不擅长使用lisp。下面是代码的链接。是否可以修改它以包括“所有块”选项。
 
http://www.lee-mac.com/macatt.html
 
一种可能的替代方法是使用Lee Mac的子函数来创建所需的结果。使用ObjectDBX包装子函数中的“示例4”,我可以实现从单个文件夹中的所有图形中提取所有属性信息。如果下面的代码可以修改为搜索“所有子目录”,那么这也将达到预期的结果。
 
http://www.lee-mac.com/odbxbase.html
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:22:51 | 显示全部楼层
 
您可以将“我的目录文件”功能与“浏览文件夹”功能和“我的ObjectDBX包装器”功能的示例4结合使用:
  1. (defun c:test4 ( / _getattributes data [highlight]dir[/highlight] file [highlight]lst[/highlight] name )
  2.    (defun _getattributes ( doc / data item name values )
  3.        (vlax-for layout (vla-get-layouts doc)
  4.            (vlax-for object (vla-get-block layout)
  5.                (if
  6.                    (and
  7.                        (eq "AcDbBlockReference" (vla-get-objectname object))
  8.                        (eq :vlax-true (vla-get-hasattributes object))
  9.                        (setq values
  10.                            (mapcar
  11.                                (function
  12.                                    (lambda ( att )
  13.                                        (cons
  14.                                            (vla-get-tagstring att)
  15.                                            (vla-get-textstring att)
  16.                                        )
  17.                                    )
  18.                                )
  19.                                (vlax-invoke object 'getattributes)
  20.                            )
  21.                        )
  22.                    )
  23.                    (if (setq item (assoc (setq name (vla-get-effectivename object)) data))
  24.                        (setq data
  25.                            (subst
  26.                                (append item (list values))
  27.                                item
  28.                                data
  29.                            )
  30.                        )
  31.                        (setq data (cons (list name values) data))
  32.                    )
  33.                )
  34.            )
  35.        )
  36.        data
  37.    )
  38.    (if
  39.        (and
  40.            [highlight](setq dir  (LM:browseforfolder "Select a folder" nil 0))[/highlight]
  41.            [highlight](setq lst  (LM:directoryfiles dir "*.dwg" t))[/highlight]
  42.            (setq data (LM:ODBX '_getattributes [highlight]lst[/highlight] nil))
  43.            (setq name (vl-filename-mktemp nil (getvar 'dwgprefix) ".txt"))
  44.            (setq file (open name "w"))
  45.        )
  46.        (progn
  47.            (foreach dwgitem data
  48.                (write-line (car dwgitem) file)
  49.                (princ "\n" file)
  50.                (foreach item (cdr dwgitem)
  51.                    (write-line (car item) file)
  52.                    (foreach subitem (cdr item)
  53.                        (princ subitem file)
  54.                        (princ "\n" file)
  55.                    )
  56.                    (princ "\n" file)
  57.                )
  58.            )
  59.            (close file)
  60.            (startapp "notepad" name)
  61.        )
  62.    )
  63.    (princ)
  64. )

以上未经测试。
回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 18:56:06 | 显示全部楼层
明白了,再次谢谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 19:12:47 | 显示全部楼层
谢谢
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 23:28 , Processed in 0.443828 second(s), 60 queries .

© 2020-2025 乐筑天下

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