乐筑天下

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

[编程交流] 提取某些属性

[复制链接]

18

主题

434

帖子

422

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
94
发表于 2022-7-6 16:51:28 | 显示全部楼层
乔恩西
我测试了你发布的图纸-你是对的,它在CSV文件中列出的次数更多。对不起,我没有给你建议。从一段时间以来,我只是偶尔使用lisp。也许会有其他人参与救援。
祝贺你获得第十个职位!
回复

使用道具 举报

4

主题

29

帖子

25

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 16:54:57 | 显示全部楼层
谢谢你,Fuccaro,我会设法解决的。如果有人有任何想法,我洗耳恭听
回复

使用道具 举报

4

主题

29

帖子

25

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 16:58:09 | 显示全部楼层
好了伙计们,
 
我有一个半成品程序,完全可以做我想要的。它与我发现的一些有助于将信息放入excel文件的函数配合使用。(我强烈推荐)。我发现的帮助我的函数通常在我的程序中的函数之后发布,这样我就可以调用它们,但是它们太长了,无法在这里发布,我知道它们不是问题所在,所以我将它们忽略掉。任何想使用/查看它们的人都可以http://web2.airmail.net/terrycad并下载getexcel。lsp。
 
我根据Fuccarro的程序设计了它,但我让它对我公司使用的三个标题栏进行排序,然后从中提取属性(它们在一些DWG中的标记不同。因此我必须有许多if语句,以防它们错误标记或标记不同,因此有了相当大的COND语句。)我在这个程序中遇到的问题是,我得到了一个关于参数太多的错误,我相信这与if语句中的COND语句有关。有解决方法吗?我以前在第一个if语句中有很多if语句,但我认为这可以修复错误,但它仍然会给我相同的错误。
 
OpenExcel、PutCell和CloseExcel函数来自我上面描述的函数。PutCell函数需要单元格编号,然后在该单元格中放置一个列表或信息字符串。列表将把每个项目放在前一个单元格的右侧,字符串将把信息放在指定的单元格中。
 
提前谢谢各位。
 
  1. ;-------------------------------------------------------------------------------
  2. ; DwgLogin - Records Data to Excel Sheet for Later Use
  3. ;-------------------------------------------------------------------------------
  4. (defun c:DwgLogin()
  5. (vl-load-com)
  6. (setq CurrentRow 1)
  7. (setq root (getvar "DWGPREFIX"))
  8. (setq filenamesDWG (vl-directory-files root "*.dwg"))
  9. (OpenExcel (setq xlFile (strcat root "DrawingLogin.xls")) "Sheet1" nil)
  10. (PutCell "A1" (list "Dwg. Number" "Sheet" "File #" "Desc." "Rev."))
  11. (foreach DWGitem filenamesDWG
  12. (open (strcat root DWGitem) "r")
  13. (setq CurrentRow (1+ CurrentRow))
  14. (If        (/= nil (ssget "_X" (list '(0 . "INSERT") (cons 2 "S-TITLE"))))
  15.        (setq TitleBlock "S-TITLE")
  16. ); **END IF**
  17. (if        (/= nil (ssget "_X" (list '(0 . "INSERT") (cons 2 "DTITLE"))))
  18.        (setq TitleBlock "DTITLE")
  19. ); **END IF**
  20. (if        (/= nil (ssget "_X" (list '(0 . "INSERT") (cons 2 "TITLE"))))
  21.        (setq TitleBlock "TITLE")
  22. ); **END IF**
  23. (setq ss (ssget "_X" (list '(0 . "INSERT") (cons 2 TitleBlock)))) ; RETURNS SS CODE
  24. (if (not ss) (quit))
  25. (setq Edata (entget (setq e (ssname ss 0)))) ; GETS DXF SET FOR SS CODE
  26. (while (/= (cdr (assoc 0 Edata) "SEQEND"))
  27. (if (= (cdr (assoc 0 Edata)) "ATTRIB")
  28.    (cond ((= (cdr (assoc 2 Edata)) "DwgNo.") (PutCell (strcat "A" (ITOA CurrentRow)) (cdr (assoc 1 Edata)))) ; COND TO PICK ATTRIBUTES
  29.         ((= (cdr (assoc 2 Edata)) "DwgNo") (PutCell (strcat "A" (ITOA CurrentRow)) (cdr (assoc 1 Edata))))
  30.         ((= (cdr (assoc 2 Edata)) "wgNo.") (PutCell (strcat "A" (ITOA CurrentRow)) (cdr (assoc 1 Edata))))
  31.         ((= (cdr (assoc 2 Edata)) "WGNO") (PutCell (strcat "A" (ITOA CurrentRow)) (cdr (assoc 1 Edata))))
  32.         ((= (cdr (assoc 2 Edata)) "LINE2") (PutCell (strcat "D" (ITOA CurrentRow)) (cdr (assoc 1 Edata))))
  33.         ((= (cdr (assoc 2 Edata)) "LINE3") (PutCell (strcat "E" (ITOA CurrentRow)) (cdr (assoc 1 Edata))))
  34.         ((= (cdr (assoc 2 Edata)) "REVNO.") (PutCell (strcat "F" (ITOA CurrentRow)) (cdr (assoc 1 Edata))))
  35.         ((= (cdr (assoc 2 Edata)) "REVNO") (PutCell (strcat "F" (ITOA CurrentRow)) (cdr (assoc 1 Edata))))
  36.         ((= (cdr (assoc 2 Edata)) "REV") (PutCell (strcat "F" (ITOA CurrentRow)) (cdr (assoc 1 Edata))))
  37.     )
  38. )
  39. (setq Edata (entget (setq e (entnext e))))
  40. ) ;WHILE
  41. (close (strcat root DWGitem))
  42. );ForEach
  43. (CloseExcel xlFile)
  44. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 20:22 , Processed in 0.309175 second(s), 56 queries .

© 2020-2025 乐筑天下

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