明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 972|回复: 7

[讨论] 打开文件夹选择对话框,选择目录

[复制链接]
发表于 2025-2-26 01:03:55 | 显示全部楼层 |阅读模式
本帖最后由 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') {"  ;剪切板
    •          " [System.Windows.Forms.Clipboard]::SetText($d.SelectedPath)"
    •       "} else {"
    •           "[System.Windows.Forms.Clipboard]::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
    • )





"觉得好,就打赏"
还没有人打赏,支持一下
回复

使用道具 举报

发表于 2025-2-26 07:07:45 | 显示全部楼层
autocad 默认打开路径,通过修改注册表是可以实现的。bricscad我一直没找到方法。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-2-26 16:12:04 | 显示全部楼层
或者使用其他的
(acet-ui-pickdir "选择目录" "D:\\YQArch" "请指定目录");需要acetutil.arx
(dos_getdir "选择目录" "D:\\YQArch" "请指定目录" nil);需要doslibarx
回复 支持 反对

使用道具 举报

发表于 2025-2-27 08:51:07 | 显示全部楼层
新版windows已经对调用Powershell做了很多限制,从lisp调用稍复杂的Powershell已经不太可行了。lisp也不再能创建.ps1文件了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-2-27 09:42:08 | 显示全部楼层
kozmosovia 发表于 2025-2-27 08:51
新版windows已经对调用Powershell做了很多限制,从lisp调用稍复杂的Powershell已经不太可行了。lisp也不再 ...

不能把?我是win11 23H2,能创建
回复 支持 反对

使用道具 举报

发表于 2025-2-27 09:47:26 | 显示全部楼层
本帖最后由 kozmosovia 于 2025-2-27 09:49 编辑

你升级到24H2试试。
23H2是比较早的版本了,我一年前还发过帖子用PowerShell实现多行文本输入和多选文件。但是升级后,windows就不让创建并运行PS1了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-2-27 11:11:09 | 显示全部楼层
kozmosovia 发表于 2025-2-27 09:47
你升级到24H2试试。
23H2是比较早的版本了,我一年前还发过帖子用PowerShell实现多行文本输入和多选文件。 ...

啊,那还是不升了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-4-2 18:41 , Processed in 0.197856 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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