乐筑天下

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

[编程交流] 删除列表中的重复项

[复制链接]

3

主题

3

帖子

1

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-29 07:49:58 | 显示全部楼层 |阅读模式
我在下面找到了一个lisp,并对其进行了一些修改,这将允许我提取block的所有值,然后将它们写入csv文件。但是,在不破坏代码的情况下删除重复项时,我遇到了一个问题。我得到了我在其他帖子中看到的想法的概念,但我找到的代码完成了我需要的大部分工作,它编译了所有标记及其值,并将它们写入列表,我对如何删除重复项以及收集这些值的方式感到困惑。我附上了一个文件,其中我故意复制标签,以测试删除重复。我很抱歉事先没有口齿不清,但有人能帮我指点怎么做吗?
 
如何处理单个项目并从我收集的内容中删除重复项的示例。
  1. (if (member item data)
  2.      data
  3.      (cons item data))

我找到的代码带有指向原始页面的链接,但进行了修改以满足我的需要。
  1. ; Global ATTribute EXtractor
  2. ; by Miklos Fuccaro mfuccaro@hotmail.com
  3. ; https://www.cadtutor.net/forum/topic/68808-export-enhanced-attributes-editor-values-to-excel/
  4. ;-------------------------November 2004 -------
  5. ;;Edited March 2006 by C. Bassler to allow specification of block and tage names to extract
  6. (defun DBEXT  ()
  7. ; define block and attributes
  8. (setq Blocklist '("DetailBubble"))
  9. (setq TagList '("DETAIL_NUMBER" "SHEET_NUMBER" ))
  10. ; create block names separated by columns, for selection filter
  11. (setq Blocknames (List2String BlockList))
  12. (setq ss (ssget "_X" (list '(0 . "INSERT") (cons 2 BlockNames))))
  13. (if (not ss)
  14.    (quit))
  15.    
  16. (setq Root (getvar "DWGPREFIX"))
  17. (setq file (open (strcat Root "_Details.csv") "w")
  18.        i    -1)
  19. (repeat (sslength ss)
  20.    (setq TagRow nil
  21.          ValRow nil)
  22.    (setq Edata (entget (setq e (ssname ss (setq i (1+ i))))))
  23.    (while (/= (Dxf 0 Edata) "SEQEND")
  24.      (if
  25.        (and
  26.          (= (Dxf 0 Edata) "ATTRIB")
  27.          (member (dxf 2 Edata) TagList)
  28.          ;;if tag is on list
  29.          ) ;and
  30.         (progn
  31.           (setq TagRow (cons (Dxf 2 Edata) TagRow))
  32.           (setq valRow (cons (Dxf 1 Edata) ValRow))
  33.           ) ;progn
  34.         )
  35.      (setq Edata (entget (setq e (entnext e))))
  36.      ) ;while
  37.    (write-line (List2String (reverse ValRow)) file)
  38.    ) ;repeat
  39. (close file)
  40. (princ (strcat "\nDone writing file " Root "_Details.csv"))
  41. (princ)
  42. ) ;defun
  43. (defun List2String  (Alist)
  44. (setq NumStr (length Alist))
  45.         (foreach Item  AList
  46.            (if (= Item (car AList))
  47.                  ;;first item
  48.                  (setq LongString (car AList)) ; write tag
  49.                  (setq LongString (strcat LongString "-" Item)) ; write value
  50.                 )
  51.         )
  52. LongString
  53. ) ;defun
  54. (defun Dxf  (code pairs)
  55. (cdr (assoc code pairs))
  56. )
  57. (princ)
  58. (DBEXT)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 01:35 , Processed in 1.187735 second(s), 54 queries .

© 2020-2025 乐筑天下

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