用Chatgpt,自动生成的,加载后错误
写一个LISP,可以实现批量打开一个文件夹里的所有DWG文件,然后把里面所有实体全部分解后再原路径保存要编写一个 AutoLISP 程序,实现批量打开文件夹中的所有 DWG 文件,分解其中的所有实体,并在原路径保存,你可以使用以下代码:lispCopy code
(defun c:BatchExplodeAndSave ()(vl-load-com) ; 确保 VLISP 库已加载(setq shFolder (vlax-get-or-create-object "Shell.Application")) ; 创建 Shell 应用对象(setq folder (vlax-invoke-method shFolder 'BrowseForFolder 0 "选择包含 DWG 文件的文件夹:" 0)) ; 打开文件夹浏览器(if folder (progn (setq folderPath (vlax-get-property (vlax-get-property folder 'Self) 'Path)) ; 获取文件夹路径 (if (/= (substr folderPath (strlen folderPath)) "\\") (setq folderPath (strcat folderPath "\\")) ; 确保路径以反斜杠结束 ) (setq files (vl-directory-files folderPath "*.dwg" 1)) ; 获取所有 DWG 文件 (foreach file files (setq filePath (strcat folderPath file)) ; 构造完整文件路径 (command "_open" filePath) ; 打开 DWG 文件 (command "_-layer" "_on" "*" "" "_thaw" "*" "" "_unlock" "*" "") ; 确保所有图层可操作 (command "_select" "_all") ; 选择所有对象 (command "_explode") ; 分解所有选中对象 (while (= 1 (getvar "cmdactive")) (command "")) ; 确保命令完成 (command "_purge" "_all" "*" "No" "_No") ; 清理未使用的对象 (command "_audit" "_yes") ; 审核文件 (command "_qsave") ; 保存文件 (command "_close") ; 关闭文件 ) ) (alert "未选择任何文件夹."))(vlax-release-object shFolder) ; 释放 COM 对象(princ))(princ "\n输入 BatchExplodeAndSave 来运行此程序。\n")(princ)
如何使用这个 LISP 程序:
[*]复制上述代码:将上述代码复制到剪贴板。
[*]打开一个文本编辑器:例如 Notepad 或者 Notepad++。
[*]粘贴代码并保存:粘贴代码到文本编辑器中,并保存文件为 .lsp 扩展名,如 BatchExplodeAndSave.lsp。
[*]加载 LISP 程序:在 AutoCAD 中,使用 APPLOAD 命令加载这个 .lsp 文件。
[*]运行 LISP 程序:在 AutoCAD 命令行输入 BatchExplodeAndSave 并回车执行。
确保在执行此脚本之前备份所有 DWG 文件,因为分解实体是不可逆的操作,可能会改变原始文件的结构。
加载上述的LISP后,显示错误; 错误: 输入的字符串有缺陷哪位大佬可以帮忙看看是怎么回事
本帖最后由 lee50310 于 2024-8-18 05:38 编辑
上述 已修改好 並 在cad2018繁體版測試 ok
另發表,請前往下載
http://bbs.mjtd.com/forum.php?mo ... =1&extra=#pid991602
(defun c:BatchExplodeAndSave ()
(vl-load-com) ; 确保 VLISP 库已加载
(setq shFolder (vlax-get-or-create-object "Shell.Application")) ; 创建 Shell 应用对象
(setq folder (vlax-invoke-method shFolder 'BrowseForFolder 0 "选择包含 DWG 文件的文件夹:" 0)) ; 打开文件夹浏览器
(if folder
(progn
(setq folderPath (vlax-get-property (vlax-get-property folder 'Self) 'Path)) ; 获取文件夹路径
(if (/= (substr folderPath (strlen folderPath)) "\\")
(setq folderPath (strcat folderPath "\\")) ; 确保路径以反斜杠结束
)
(setq files (vl-directory-files folderPath "*.dwg" 1)) ; 获取所有 DWG 文件
(foreach file files
(setq filePath (strcat folderPath file)) ; 构造完整文件路径
(command "_open" filePath) ; 打开 DWG 文件
(command "_-layer" "_on" "*" "" "_thaw" "*" "" "_unlock" "*" "") ; 确保所有图层可操作
(command "_select" "_all") ; 选择所有对象
(command "_explode") ; 分解所有选中对象
(while (= 1 (getvar "cmdactive")) (command "")) ; 确保命令完成
(command "_purge" "_all" "*" "No" "_No") ; 清理未使用的对象
(command "_audit" "_yes") ; 审核文件
(command "_qsave") ; 保存文件
(command "_close") ; 关闭文件
)
)
(alert "未选择任何文件夹.")
)
(vlax-release-object shFolder) ; 释放 COM 对象
(princ)
)
(princ "\n输入 BatchExplodeAndSave 来运行此程序。\n")
(princ) 把问题返回,再让他改
要用正版的ai才行,盗版不行
页:
[1]