乐筑天下

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

[编程交流] 属性提取程序?

[复制链接]

1

主题

96

帖子

101

银币

初来乍到

Rank: 1

铜币
3
发表于 2022-7-5 19:24:09 | 显示全部楼层
这是我的版本
再次感谢fuccaro的真知灼见
回复

使用道具 举报

0

主题

2

帖子

2

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 19:27:32 | 显示全部楼层
大家好。这是我在这个论坛上的第一篇帖子。我必须说,这是一个很棒的论坛。
我经历了提取wizzard的过程,我发现它确实有问题。它实际上以随机方式从批处理过程中删除文件。我需要从一个名为“I”的块中提取信息,其中包含标题块的一些信息;作为E.C.N.编号,
图纸编号、修订级别、修订类别、变更说明
和主管工程师。从几个图形(*.dwg文件)到
能够在excel文档中包含我提到的信息
列标题。我看到这个论坛线程上显示的Lisp程序确实有效地提取了属性。但它从图形中的所有块中获取信息。引用fuccaro:
“最简单的方法是添加块名列表,并教会例程忽略列表中未包含的所有块。或者忽略这些块并处理其他块。”
因为我不知道自动LISP;我怎样才能让日常工作做到这一点?
换句话说,在例程中,我可以告诉它在每个图形中查找哪个块?
我如何告诉它在每个块中查找哪些信息,以便根据需要为不同的信息集复制例程?
如何使信息按行到列和列到行的方式显示?
抱歉,如果这太长了。谢谢你抽出时间。
回复

使用道具 举报

0

主题

269

帖子

279

银币

限制会员

铜币
-4
发表于 2022-7-5 19:29:36 | 显示全部楼层
好的,我来回答你的一个问题。。。。
 
要使例行程序只处理您选择的块,而不是所有块,请从以下位置更改一行:
 
(setq ss(ssget“X”'((0。“INSERT”)(66.1)))
 

 
(setq ss(ssget’((0。“插入”)(66.1)))
回复

使用道具 举报

0

主题

2

帖子

2

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 19:31:13 | 显示全部楼层
谢谢你的回复。我做了替换,但它仍然需要所有的块。在例程中,我可以在哪里键入块列表或从中提取信息的唯一块?
我对lisp编程不感兴趣。
谢谢你抽出时间。
回复

使用道具 举报

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 19:36:19 | 显示全部楼层
看看沼泽地的这条线
http://www.theswamp.org/forum/index.php?topic=8661.0
关于提取属性
回复

使用道具 举报

0

主题

269

帖子

279

银币

限制会员

铜币
-4
发表于 2022-7-5 19:37:28 | 显示全部楼层
我在另一个论坛上回复了iosa1,但认为它也应该放在这里,因为它建立在这个线程和Fuccaro的例程上。编辑第二行和第三行,以指定要提取的块名和标记名。列表中文本的大小写需要匹配块名和标记名。
 
  1. ; Global ATTribute EXtractor
  2. ; by Miklos Fuccaro [email="mfuccaro@hotmail.com"]mfuccaro@hotmail.com[/email]
  3. ;-------------------------November 2004 -------
  4. ;;Edited March 2006 by C. Bassler to allow specification of block and tage names to extract
  5. (defun gattex()
  6.   (setq Blocklist '("Name1" "Name2" "Name3"));; ** edit to include block names to select
  7.   (setq TagList '("Tag1" "TAG2" "Tag3"));; ** edit to include tag names to extract
  8.   ;;create block names separated by columns, for selection filter
  9.   (setq Blocknames (List2String BlockList))
  10.   (setq ss (ssget "_X" (list '(0 . "INSERT") (cons 2 BlockNames))))
  11.   (if (not ss) (quit))
  12.   (setq Root (getvar "DWGPREFIX"))
  13.   (setq file (open (strcat Root "attributes.CSV") "a") i -1)
  14.   (write-line (strcat Root (getvar "DWGNAME")
  15.                " -found " (itoa (sslength ss))
  16.                " block(s) with attributes") file)
  17.   (repeat (sslength ss)
  18.       (setq TagRow nil ValRow nil)
  19.       (setq Edata (entget (setq e (ssname ss (setq i (1+ i))))))
  20.       (write-line "" file)
  21.       (write-line (strcat "block name:" "," (Dxf 2 Edata)) file)
  22.       (while (/= (Dxf 0 Edata) "SEQEND")
  23.          (if
  24.              (and
  25.                  (= (Dxf 0 Edata) "ATTRIB")
  26.                  (member (dxf 2 Edata) TagList);;if tag is on list
  27.              );and
  28.              (progn
  29.                  (setq TagRow (cons (Dxf 2 Edata) TagRow))
  30.                  (setq valRow (cons (Dxf 1 Edata) ValRow))
  31.              );progn
  32.          )
  33.          (setq Edata (entget (setq e (entnext e))))
  34.       );while
  35.       (write-line (List2String (reverse TagRow)) file)
  36.       (write-line (List2String (reverse ValRow)) file)
  37.   );repeat
  38.   (close file)
  39.   (princ (strcat "\nDone writing file " Root "attributes.csv"))
  40.   (princ)
  41. );defun
  42. ;;-------------------------------
  43. (defun List2String (Alist)
  44.   (setq NumStr (length Alist))
  45.      (foreach Item AList
  46.         (if (= Item (car AList));;first item
  47.            (setq LongString (car AList))
  48.            (setq LongString (strcat LongString "," Item))
  49.          )
  50.      )
  51.   LongString
  52. );defun
  53. ;;--------------------------------
  54. (defun Dxf (code pairs)
  55.   (cdr (assoc code pairs))
  56. )
  57. (gattex)
回复

使用道具 举报

Ako

0

主题

5

帖子

5

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 19:40:58 | 显示全部楼层
这里有一些VBA来做类似的事情。只需删除包含不需要的信息的行。
 
Dave
回复

使用道具 举报

31

主题

107

帖子

76

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2022-7-5 19:44:03 | 显示全部楼层
我用这个,我觉得很酷。。。
 
有可能重拍吗?
 
我希望它
 
1.覆盖现有cvs文件(因为现在它在先前创建的cvs文件下面添加了行)
这适用于lisp代码
 
 
谢谢你的帮助!!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 19:47:45 | 显示全部楼层
可能
 
  1. 4
回复

使用道具 举报

31

主题

107

帖子

76

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2022-7-5 19:50:22 | 显示全部楼层
酷!
Thanx人
 
你做了什么?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 13:18 , Processed in 0.429080 second(s), 70 queries .

© 2020-2025 乐筑天下

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