ZJ135016 发表于 2024-8-17 19:49:41

用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:37:18

本帖最后由 lee50310 于 2024-8-18 05:38 编辑

上述 已修改好 並 在cad2018繁體版測試 ok

另發表,請前往下載
http://bbs.mjtd.com/forum.php?mo ... =1&extra=#pid991602


ZJ135016 发表于 2024-8-17 19:51:55

(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)

天命 发表于 2024-8-17 20:36:34

把问题返回,再让他改

czb203 发表于 2024-8-17 23:44:20

要用正版的ai才行,盗版不行
页: [1]
查看完整版本: 用Chatgpt,自动生成的,加载后错误