求大神一个AutoCAD2020 的 LISP 程序,用于将csv表格中的数据转换为属性块的属性值
本帖最后由 --访-- 于 2024-4-24 13:46 编辑求大神帮写一个 LISP 程序,用于将 CSV 表格中的数据转换为属性块的属性值,程序会提示选择一个图框,然后选择数据表的行,循环并将逐一匹配到属性块中。
以下代码为AI生成,请帮忙看下,这个代码加载到CAD2020里有错误
(defun cCSV ()
;; 选择CSV文件
(setq csvPath (getfiled 选择CSV文件csv 1))
(if (or (null csvPath) (= csvPath ))
(progn
(princ n没有选择文件。)
(exit)
))
;; 读取CSV文件内容
(setq csvData (vl-file-read csvPath))
;; 将CSV数据按行分割
(setq csvLines (strcat ( (vl-string-subst )( n csvData) )))
;; 将每行数据转换为列表
(setq csvLines (read csvLines))
;; 获取属性名称,并去除可能的引号
(setq headers (mapcar (function (lambda (str) (vl-string-trimstr))) (car csvLines)))
;; 获取数据行
(setq dataLines (cdr csvLines))
;; 循环处理每行数据
(foreach row dataLines
(setq attribValues (mapcar (function (lambda (str) (vl-string-trimstr))) row))
;; 选择图框(属性块参照)
(setq blockRef (entsel n选择包含属性的图框 ))
(if (null blockRef)
(progn
(princ n未选择图框。)
(exit)
)
)
(setq blockRef (car blockRef))
;; 遍历属性名称,更新属性值
(setq i 0)
(foreach header headers
;; 查找属性标签
(setq attribTag header) ; 直接使用属性名称作为标签
;; 更新属性值
(setq attribPair (assoc 2 (entget blockRef)))
(if attribPair
(entmod (subst (cons 1 (nth i attribValues)) attribPair (entget blockRef)))
(princ (strcat n属性header未找到。))
)
(setq i (1+ i))
)
;; 更新图框
(entupd blockRef)
)
(princ)
)
(princ n输入 CSV 来运行。)
本帖最后由 ssyfeng 于 2024-4-24 08:43 编辑
现在AI写的代码还是不行
不上图和文件,别人很难帮你写的
本帖最后由 --访-- 于 2024-4-24 09:22 编辑
CSV表格数据和dwg样板已经上传
ssyfeng 发表于 2024-4-24 08:41
现在AI写的代码还是不行
不上图和文件,别人很难帮你写的
大佬请帮忙看看,谢谢 csv文件还转成PDF?
可加我QQ 本帖最后由 --访-- 于 2024-4-24 13:48 编辑
ssyfeng 发表于 2024-4-24 11:48
csv文件还转成PDF?
可加我QQ
csv不能上传,已经改压缩文件上传,已加QQ 好想法,可以实现了没 版主 能分享一下嘛 想问下,这个开发需要多少钱,刚好也有一个需求,跟你这个差不多,但是不一样,也想看下开发需要多少钱
页:
[1]
2