请求:实现CAD Lisp调用脚本保存DWG快捷方式至指定目录
CAD Lisp调用PowerShell生成DWG快捷方式实现指南
一、调整你的PowerShell脚本
你找到的代码核心逻辑没问题,但参数命名容易混淆(原代码里的$SourceExe应该是DWG文件路径,不是程序EXE),而且需要确保快捷方式路径带.lnk后缀。修改后的脚本如下:
param ( [string]$DwgFilePath, # 要创建快捷方式的DWG文件完整路径 [string]$ShortcutFullPath # 生成的快捷方式完整路径(必须带.lnk后缀) ) # 创建快捷方式对象 $WshShell = New-Object -comObject WScript.Shell $Shortcut = $WshShell.CreateShortcut($ShortcutFullPath) $Shortcut.TargetPath = $DwgFilePath # 可选:添加快捷方式描述、CAD图标(替换为你的CAD安装路径) # $Shortcut.Description = "DWG文件快捷方式" # $Shortcut.IconLocation = "C:\Program Files\Autodesk\AutoCAD 20XX\acad.exe,0" $Shortcut.Save()
二、保存PowerShell脚本
将上述代码复制到记事本,点击「文件」→「另存为」:
- 文件名填
CreateDWGShortcut.ps1 - 保存类型选「所有文件」
- 编码选「UTF-8带BOM」(避免中文路径乱码)
- 记住保存路径,比如
D:\Scripts\CreateDWGShortcut.ps1
三、CAD Lisp调用脚本的代码
在CAD里加载以下Lisp代码,就能实现从CAD直接生成DWG快捷方式到指定文件夹:
(defun c:CreateDWGShortcut (/ dwgPath targetDir shortcutPath psScriptPath cmd) ; 获取当前打开的DWG文件完整路径 (setq dwgPath (strcat (getvar "DWGPREFIX") (getvar "DWGNAME"))) (if (null dwgPath) (progn (alert "请先保存当前DWG文件!") (exit)) ) ; 让用户选择快捷方式保存的目标文件夹 (setq targetDir (getfiled "选择快捷方式保存文件夹" "" "" 2)) (if (null targetDir) (exit)) ; 构造快捷方式的完整路径(文件夹+DWG文件名+lnk后缀) (setq shortcutPath (strcat targetDir "\\" (getvar "DWGNAME") ".lnk")) ; 填写你的PowerShell脚本保存路径 (setq psScriptPath "D:\\Scripts\\CreateDWGShortcut.ps1") ; 构造PowerShell调用命令(自动处理带空格的路径) (setq cmd (strcat "powershell.exe -ExecutionPolicy Bypass -File \"" psScriptPath "\" -DwgFilePath \"" dwgPath "\" -ShortcutFullPath \"" shortcutPath "\"")) ; 执行命令 (startapp cmd) (alert (strcat "快捷方式已生成:\n" shortcutPath)) )
Lisp使用方法:
- 打开CAD,输入
APPLOAD命令,加载上述Lisp文件 - 输入命令
CreateDWGShortcut,按提示操作即可
四、关键注意事项
- PowerShell执行策略设置:默认情况下PowerShell禁止运行脚本,需要先开启:
- 右键点击「开始菜单」,选择「Windows PowerShell(管理员)」
- 输入命令
Set-ExecutionPolicy RemoteSigned,按回车后输入Y确认
- 路径处理:所有带空格的路径都会被自动用双引号包裹,避免报错
- CAD版本兼容:该Lisp代码适用于大多数AutoCAD版本,若路径获取异常,检查
DWGPREFIX和DWGNAME变量是否正常返回值
内容的提问来源于stack exchange,提问作者Eric3in1
相关产品推荐
相关产品推荐

