打开文件夹选择对话框,选择目录
本帖最后由 sandyvs 于 2025-2-28 10:51 编辑;利用shell.application的browseforfolder,可以返回路径,可如果指定了根目录,就无法返回上一级目录。
;有时候需要返回上一级或其他目录,如果不指定,又得重选一次
;利用powershell可以实现,可脱离了cad的控制。。
;【API】多文件选择函数,支持所有CAD版本的多选 - AutoLISP/Visual LISP 编程技术 - AutoCAD论坛 - 明经CAD社区 - Powered by Discuz! 海哥有选择多个文件的,不知道怎么实现的 ,感觉文件夹应该也可以
;path默认打开路径
[*]
[*](defun czx:selfolder (path / command1 res shl)
[*](vl-registry-write "HKEY_CURRENT_USER\\czx\\pldy_folder" "选择的文件夹" "")
[*](setq command1
[*] (strcat
[*] "Add-Type -AssemblyName System.Windows.Forms;"
[*] "$f = New-Object Windows.Forms.Form;"
[*] "$d = New-Object System.Windows.Forms.FolderBrowserDialog;"
[*] "$d.Description = '请选择目录(不要点击CAD窗口,防止假死)';"
[*] "$d.SelectedPath = '\" D:\\YQarch \"';"
[*] "if ($d.ShowDialog($f) -eq 'OK') {";剪切板
[*] " ::SetText($d.SelectedPath)"
[*] "} else {"
[*] "::SetText('')"
[*] "}"
[*] "Set-ItemProperty -Path \"HKCU:\\czx\\pldy_folder\" -Name \"选择的文件夹\" -Value $d.SelectedPath" ;注册表
[*] )
[*])
[*](setq shl (vla-getinterfaceobject (vlax-get-acad-object) "shell.application"))
[*](vlax-invoke-method
[*] shl
[*] 'ShellExecute
[*] "powershell.exe"
[*] (strcat " -Command \"" command1 "\"")
[*] "" "" 0
[*])
[*](while (= (setq res (vl-registry-read "HKEY_CURRENT_USER\\czx\\pldy_folder" "选择的文件夹") ) ""))
[*];(setq res (get-clip-string))
[*]res
[*])
[*];(czx:selfolder (setq path "D:\\YQarch"))
[*](defun get-clip-string (/ html result)
[*] (and (setq html (vlax-create-object "htmlfile"))
[*] (setq result (vlax-invoke
[*] (vlax-get (vlax-get HTML 'PARENTWINDOW)
[*] 'CLIPBOARDDATA
[*] )
[*] 'GETDATA
[*] "Text"
[*] )
[*] )
[*] (vlax-release-object html)
[*] )
[*] result
[*])
autocad 默认打开路径,通过修改注册表是可以实现的。bricscad我一直没找到方法。 或者使用其他的
(acet-ui-pickdir "选择目录" "D:\\YQArch" "请指定目录");需要acetutil.arx
(dos_getdir "选择目录" "D:\\YQArch" "请指定目录" nil);需要doslibarx 新版windows已经对调用Powershell做了很多限制,从lisp调用稍复杂的Powershell已经不太可行了。lisp也不再能创建.ps1文件了。 kozmosovia 发表于 2025-2-27 08:51
新版windows已经对调用Powershell做了很多限制,从lisp调用稍复杂的Powershell已经不太可行了。lisp也不再 ...
不能把?我是win11 23H2,能创建 本帖最后由 kozmosovia 于 2025-2-27 09:49 编辑
你升级到24H2试试。
23H2是比较早的版本了,我一年前还发过帖子用PowerShell实现多行文本输入和多选文件。但是升级后,windows就不让创建并运行PS1了。
kozmosovia 发表于 2025-2-27 09:47
你升级到24H2试试。
23H2是比较早的版本了,我一年前还发过帖子用PowerShell实现多行文本输入和多选文件。 ...
啊,那还是不升了
页:
[1]