fuccaro 发表于 2022-7-6 16:51:28

乔恩西
我测试了你发布的图纸-你是对的,它在CSV文件中列出的次数更多。对不起,我没有给你建议。从一段时间以来,我只是偶尔使用lisp。也许会有其他人参与救援。
祝贺你获得第十个职位!

chauncy274 发表于 2022-7-6 16:54:57

谢谢你,Fuccaro,我会设法解决的。如果有人有任何想法,我洗耳恭听

chauncy274 发表于 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函数需要单元格编号,然后在该单元格中放置一个列表或信息字符串。列表将把每个项目放在前一个单元格的右侧,字符串将把信息放在指定的单元格中。
 
提前谢谢各位。
 
;-------------------------------------------------------------------------------
; DwgLogin - Records Data to Excel Sheet for Later Use
;-------------------------------------------------------------------------------
(defun c:DwgLogin()
(vl-load-com)
(setq CurrentRow 1)
(setq root (getvar "DWGPREFIX"))
(setq filenamesDWG (vl-directory-files root "*.dwg"))
(OpenExcel (setq xlFile (strcat root "DrawingLogin.xls")) "Sheet1" nil)
(PutCell "A1" (list "Dwg. Number" "Sheet" "File #" "Desc." "Rev."))
(foreach DWGitem filenamesDWG
(open (strcat root DWGitem) "r")
(setq CurrentRow (1+ CurrentRow))
(If        (/= nil (ssget "_X" (list '(0 . "INSERT") (cons 2 "S-TITLE"))))
       (setq TitleBlock "S-TITLE")
); **END IF**
(if        (/= nil (ssget "_X" (list '(0 . "INSERT") (cons 2 "DTITLE"))))
       (setq TitleBlock "DTITLE")
); **END IF**
(if        (/= nil (ssget "_X" (list '(0 . "INSERT") (cons 2 "TITLE"))))
       (setq TitleBlock "TITLE")
); **END IF**
(setq ss (ssget "_X" (list '(0 . "INSERT") (cons 2 TitleBlock)))) ; RETURNS SS CODE
(if (not ss) (quit))
(setq Edata (entget (setq e (ssname ss 0)))) ; GETS DXF SET FOR SS CODE
(while (/= (cdr (assoc 0 Edata) "SEQEND"))
(if (= (cdr (assoc 0 Edata)) "ATTRIB")
   (cond ((= (cdr (assoc 2 Edata)) "DwgNo.") (PutCell (strcat "A" (ITOA CurrentRow)) (cdr (assoc 1 Edata)))) ; COND TO PICK ATTRIBUTES
      ((= (cdr (assoc 2 Edata)) "DwgNo") (PutCell (strcat "A" (ITOA CurrentRow)) (cdr (assoc 1 Edata))))
        ((= (cdr (assoc 2 Edata)) "wgNo.") (PutCell (strcat "A" (ITOA CurrentRow)) (cdr (assoc 1 Edata))))
        ((= (cdr (assoc 2 Edata)) "WGNO") (PutCell (strcat "A" (ITOA CurrentRow)) (cdr (assoc 1 Edata))))
        ((= (cdr (assoc 2 Edata)) "LINE2") (PutCell (strcat "D" (ITOA CurrentRow)) (cdr (assoc 1 Edata))))
        ((= (cdr (assoc 2 Edata)) "LINE3") (PutCell (strcat "E" (ITOA CurrentRow)) (cdr (assoc 1 Edata))))
        ((= (cdr (assoc 2 Edata)) "REVNO.") (PutCell (strcat "F" (ITOA CurrentRow)) (cdr (assoc 1 Edata))))
        ((= (cdr (assoc 2 Edata)) "REVNO") (PutCell (strcat "F" (ITOA CurrentRow)) (cdr (assoc 1 Edata))))
        ((= (cdr (assoc 2 Edata)) "REV") (PutCell (strcat "F" (ITOA CurrentRow)) (cdr (assoc 1 Edata))))
    )
)
(setq Edata (entget (setq e (entnext e))))
) ;WHILE
(close (strcat root DWGitem))
);ForEach
(CloseExcel xlFile)
)
页: 1 [2]
查看完整版本: 提取某些属性