明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 590|回复: 4

[源码] 用Chatgpt,自动生成的,加载后错误

[复制链接]
发表于 2024-8-17 19:49:41 | 显示全部楼层 |阅读模式
[color=rgba(52,53,65,var(--tw-text-opacity))][backcolor=rgba(255,255,255,var(--tw-bg-opacity))][color=var(--tw-prose-body)]写一个LISP,可以实现批量打开一个文件夹里的所有DWG文件,然后把里面所有实体全部分解后再原路径保存







[backcolor=rgba(247,247,248,var(--tw-bg-opacity))]
[color=rgba(52,53,65,var(--tw-text-opacity))][size=0.875]


[color=var(--tw-prose-body)]要编写一个 AutoLISP 程序,实现批量打开文件夹中的所有 DWG 文件,分解其中的所有实体,并在原路径保存,你可以使用以下代码:
[color=rgba(255, 255, 255, 0.8)][backcolor=rgba(0,0,0,var(--tw-bg-opacity))][size=0.75][color=rgba(217,217,227,var(--tw-text-opacity))][backcolor=rgba(52,53,65,var(--tw-bg-opacity))][size=0.75]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 程序:
  • [color=var(--tw-prose-bold)]复制上述代码:将上述代码复制到剪贴板。
  • [color=var(--tw-prose-bold)]打开一个文本编辑器:例如 Notepad 或者 Notepad++。
  • [color=var(--tw-prose-bold)]粘贴代码并保存:粘贴代码到文本编辑器中,并保存文件为 .lsp 扩展名,如 BatchExplodeAndSave.lsp。
  • [color=var(--tw-prose-bold)]加载 LISP 程序:在 AutoCAD 中,使用 APPLOAD 命令加载这个 .lsp 文件。
  • [color=var(--tw-prose-bold)]运行 LISP 程序:在 AutoCAD 命令行输入 BatchExplodeAndSave 并回车执行。
[color=var(--tw-prose-body)]确保在执行此脚本之前备份所有 DWG 文件,因为分解实体是不可逆的操作,可能会改变原始文件的结构。

加载上述的LISP后,显示错误
; 错误: 输入的字符串有缺陷
哪位大佬可以帮忙看看是怎么回事










发表于 2024-8-18 05:37:18 | 显示全部楼层
本帖最后由 lee50310 于 2024-8-18 05:38 编辑

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

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


回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 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 | 显示全部楼层
把问题返回,再让他改
发表于 2024-8-17 23:44:20 | 显示全部楼层
要用正版的ai才行,盗版不行
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 09:57 , Processed in 0.177382 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表