你是不是也遇到过:一张图纸里有十几张材料表,要分别导出到不同的Excel文件中。或者,要将多个Excel表格批量导入到CAD中。
用LISP脚本可以实现自动化批量处理。 本文提供现成脚本,复制粘贴即可使用。
一、批量导出所有CAD表格到CSV
以下脚本会遍历当前图纸中的所有 TABLE 对象,将每个表格导出为独立的CSV文件(保存在图纸所在目录)。
(defun C:ExportAllTables ( / ss i tbl filename)
(setq ss (ssget "_X" '((0 . "ACAD_TABLE"))))
(if ss
(progn
(setq i 0)
(repeat (sslength ss)
(setq tbl (ssname ss i))
(setq filename (strcat (getvar "DWGPREFIX") "Table_" (itoa i) ".csv"))
(command "TABLEEXPORT" tbl filename)
(princ (strcat "\n已导出: " filename))
(setq i (1+ i))
)
)
(princ "\n未找到任何表格对象。")
)
(princ)
)
用法:
将上述代码保存为 ExportAllTables.lsp。
在CAD中加载(AP 命令),然后输入 ExportAllTables。
脚本自动将所有表格导出为CSV,保存在DWG所在文件夹。
二、批量导入Excel数据到CAD表格(覆盖更新)
如果你有多个Excel文件(或CSV),希望自动创建或更新CAD中的表格,可以使用以下脚本框架(需要根据实际表格结构微调):
(defun C:ImportCSVToTable ( / csvFile tbl)
(setq csvFile (getfiled "选择CSV文件" (getvar "DWGPREFIX") "csv" 0))
(if csvFile
(progn
(command "TABLE" "2,2" "5,2" "2,2")
(setq tbl (entlast))
(command "TABLEIMPORT" tbl csvFile)
)
)
)
注意:TABLEIMPORT 是较新版本中的命令,旧版本可能不支持。更通用的方法是使用 DATALINK 动态链接,而非直接导入。
三、批量删除图纸中所有空表格
(defun C:DeleteEmptyTables ( / ss i tbl)
(setq ss (ssget "_X" '((0 . "ACAD_TABLE"))))
(if ss
(progn
(setq i (1- (sslength ss)))
(while (>= i 0)
(setq tbl (ssname ss i))
(if (<= (vla-get-rows (vlax-ename->vla-object tbl)) 1)
(entdel tbl)
)
(setq i (1- i))
)
(princ "\n已删除所有空表格。")
)
(princ "\n未找到表格。")
)
(princ)
)
四、注意事项
五、总结
如果你觉得这篇文章对你有帮助,请点 “在看” 或分享给同事。