明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 561|回复: 6

[经验] 怎么让对话框记忆打开上次文件路径?

[复制链接]
发表于 2024-8-21 16:00:17 | 显示全部楼层 |阅读模式
以下是群里大佬获取文件路径的对话框,能让选取时直接定位上次打开的路径吗?求大佬赐教!
  1.   (defun K:BrowPath (/ msg WinShell shFolder err path)
  2.   (vl-load-com)
  3.   (setq msg "请选择文件夹路径(默认为当前文件路径):")
  4.   (setq winshell (vlax-create-object "Shell.Application"))
  5.   (setq shFolder (vlax-invoke-method WinShell 'BrowseForFolder 0 msg 1))
  6.   (setq err (vl-catch-all-apply
  7.                   '(lambda ()
  8.                     (setq shFolder (vlax-get-property shFolder 'self))
  9.                     (setq path (vl-string-right-trim "\"
  10.                                   (vl-string-translate "/" "\"
  11.                                     (vlax-get-property shFolder 'path)
  12.                                   )
  13.                                 )
  14.                     )
  15.                   )
  16.                 )
  17.   )
  18.   (if (vl-catch-all-error-p err)
  19.     (getvar "dwgprefix");选择取消时,返回当前文件路径
  20.     (strcat path "\");选择确定时,返回所选文件夹路径
  21.   )
  22. )


"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-8-21 16:40:54 | 显示全部楼层
;; msg - [str] message to display at top of dialog
;; dir - [str] [optional] root directory (or nil)
;; bit - [int] bit-coded flag specifying dialog display settings
;   位        结果
;    0        标准行为(默认)
;    1        只能选择文件系统文件夹。如果设置了此位,则如果用户选择不属于文件系统的文件夹,则“确定”按钮将被禁用。
;    2        禁止用户在网络内的域下方浏览
;    4        对话框下方提供了状态文本的空间
;    8        仅返回文件系统上级。上级是位于根文件夹下的子文件夹。如果用户选择的根文件夹的祖先不属于文件系统,则“确定”按钮将变灰。
;   16        在对话框中显示一个编辑框,供用户键入项目的名称。
;   32        验证在编辑框中键入的名称。
;   64        在对话框中启用拖放功能、重新排序、快捷菜单、新文件夹、删除、 和其他快捷菜单命令。
;  128        浏览对话框可以显示 URL。
;  256        当与标志 64 结合使用时,将向对话框添加使用提示, 代替编辑框。
;  512        禁止显示“新建文件夹”按钮
; 1024        当选定项是快捷方式时,返回快捷方式本身的 PIDL,而不是其目标。
; 4096        使用户能够浏览网络分支以查找计算机名称。如果用户选择计算机以外的任何内容,则“确定”按钮将变灰。
; 8192        使用户能够浏览网络分支以查找打印机名称。如果用户选择打印机以外的任何内容,则“确定”按钮将变灰。
;16384        允许浏览所有内容:浏览对话框显示文件和文件夹。
;32768        如果与标志 64 结合使用,则浏览对话框可以显示 远程系统上的可共享资源。
;65536        Windows 7 及更高版本:允许浏览文件夹联结,例如库或具有.zip文件扩展名的压缩文件。
;; Returns: [str] Selected folder filepath, else nil.
(defun LM:browseforfolder ( msg dir bit / err fld pth shl slf )
    (setq err
        (vl-catch-all-apply
            (function
                (lambda ( / app hwd )
                    (if (setq app (vlax-get-acad-object)
                              shl (vla-getinterfaceobject app "shell.application")
                              hwd (vl-catch-all-apply 'vla-get-hwnd (list app))
                              fld (vlax-invoke-method shl 'browseforfolder (if (vl-catch-all-error-p hwd) 0 hwd) msg bit dir)
                        )
                        (setq slf (vlax-get-property fld 'self)
                              pth (vlax-get-property slf 'path)
                              pth (vl-string-right-trim "\\" (vl-string-translate "/" "\\" pth))
                        )
                    )
                )
            )
        )
    )
    (if slf (vlax-release-object slf))
    (if fld (vlax-release-object fld))
    (if shl (vlax-release-object shl))
    (if (vl-catch-all-error-p err)
        (prompt (vl-catch-all-error-message err))
        pth
    )
)
发表于 2024-8-21 16:43:33 | 显示全部楼层
sniper1111 发表于 2024-8-21 16:40
;; msg - [str] message to display at top of dialog
;; dir - [str] [optional] root directory (or nil ...

老迈的程序,但是感觉用起来怪怪的
发表于 2024-8-21 17:19:34 | 显示全部楼层
用acet-ui-pickdir这个函数更合适
 楼主| 发表于 2024-8-22 09:24:48 | 显示全部楼层
lijiao 发表于 2024-8-21 17:19
用acet-ui-pickdir这个函数更合适

没找到这个函数。。。那里的?
 楼主| 发表于 2024-8-22 09:25:50 | 显示全部楼层
sniper1111 发表于 2024-8-21 16:40
;; msg - [str] message to display at top of dialog
;; dir - [str] [optional] root directory (or nil ...

可以,很感谢!
发表于 2024-8-22 18:42:33 | 显示全部楼层
把开头的(defun K:BrowPath (/ msg WinShell shFolder err path)
改为 (defun K:BrowPath (/ msg WinShell shFolder err)
就是把path变成全局变量。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 10:13 , Processed in 0.166883 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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