明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3964|回复: 10

如何在open file时,默认路径设定为当前文档路径?

    [复制链接]
发表于 2009-7-30 02:21:00 | 显示全部楼层 |阅读模式

画图时会经常打开不同路径下的文件

而CAD每次都使用上一次所使用的路径

我希望使用的路径是当前文档的路径

应该怎么做?

目前不得已采用的方法是

设置F12键为打开当前文档的资源管理器

***ACCELERATORS

["F12"](command "shell" (strcat "explorer " (getvar "dwgprefix")))

再双击需要打开的文件

但是如果同时开了几个CAD

那新开的文件是在哪个CAD里打开就无法控制

而且也看不到预览图

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2009-8-3 11:02:00 | 显示全部楼层
修改注册表
HKEY_USERS\S-1-5-21-854445509-2860609343-1433588894-1005\Software\Autodesk\AutoCAD\R16.2\ACAD-4001:409\Profiles\<<AutoCAD 2006 Unnamed Profile>>\Dialogs\OpenSaveAnavDialogs
中的InitialDirectory不知行不行。
 楼主| 发表于 2009-8-3 22:21:00 | 显示全部楼层

送花一朵

多谢多谢

 楼主| 发表于 2009-8-3 23:18:00 | 显示全部楼层

简单测试以后结果

CAD版本2004

采用doslib函数版本6.1.5

直接使用dos_regset函数修改键值

CAD崩溃退出

没有更高版本的CAD

无法测试dos_lib新版函数是否可用

改用(command "shell" "regedit xx.reg")方式

可行

但是同直接双击reg文件一样

需要两次确认操作才能写入

问:

DOSLIB出错是否是基于 vl-registry-write 不能用于 HKEY_USERS 或 KEY_LOCAL_MACHINE 的原因?

shell调用方式能否直接写入键值 省略两次确认操作 或者 还有其它基于LISP的方法?

 楼主| 发表于 2009-8-3 23:35:00 | 显示全部楼层

问题解决

regedit有个安静模式的参数

(command "shell" "regedit /s xx.reg")

若采用doslib函数

更可省略掉小黑窗

(dos_command "regedit /s xx.reg" 2)

 楼主| 发表于 2009-8-4 00:36:00 | 显示全部楼层

原以为写个reg文件是个很简单的事

谁料到(read-line #file)读取reg文件读出的是下面的内容

"\000W\000i\000n\000d\000o\000w\000s\000
\000R\000e\000g\000i\000s\000t\000r\000y\000 \000E\000d\000i\000t\000o\000r\000
\000V\000e\000r\000s\000i\000o\000n\000 \0005\000.\0000\0000\000"

这种是什么格式?

汉字如何转换为这种格式?

 楼主| 发表于 2009-8-4 00:40:00 | 显示全部楼层

网上查了下似乎是叫 UNICODE字符编码标准

这咋整?

 楼主| 发表于 2009-8-4 02:00:00 | 显示全部楼层

不管字符编码的问题直接写文件

代码如下:

(defun c:setactivepath( / aa path )
 (setq aa (open "c:\\qgy_temp\\test.reg" "w"))
 (write-line "Windows Registry Editor Version 5.00" aa)
 (write-line "" aa)
 (write-line "[HKEY_USERS\\S-1-5-21-436374069-1659004503-1606980848-500\\Software\\Autodesk\\AutoCAD\\R16.0\\ACAD-201:804\\Profiles\\<<未命名配置>>\\Dialogs\\OpenSaveAnavDialogs]" aa)
 (setq path (dos_strreplace (getvar "dwgprefix") "\\" "\\\\"))
 (write-line (strcat "\"InitialDirectory\"=\"" path "\"") aa)
 (write-line "\n" aa)
 (close aa)
 (dos_command "regedit /s c:\\qgy_temp\\test.reg" 2)
 (repeat 5000 (princ))
(princ)
)

在MNL文件里加入(load "setactivepath.lsp")

同时在按钮菜单里新添加一个按钮

定义宏为---^C^Csetactivepath open

这时新的问题来了

1.可能是写入注册表有个延时的问题

要点几次才能"刷新"到当前文件所在路径

重复5000次(princ)以后

还要点第二次才"刷新"

2.新的按钮宏的执行和原有的open命令有区别

open命令执行后"选择文件窗口"打开后处于激活状态

而定义的宏执行后窗口处于非激活状态

这可有点奇怪

3.最让人无法忍受的是

有时候执行这个新宏会让之前切换过的任务窗口比如IE再次弹出


现在在考虑是否建个文档反应器

在文档切换后就先行修改注册表

这应该可以避免上述至少第一第二两个问题

不过这样一来在需要上一路径时又不能快速到达

兜兜转转问题居然回到了问题的反面

这可真是让人郁闷啊

为什么打开窗口里CAD要把自定义文件夹设置成大图标呢??????????

发表于 2009-8-5 07:54:00 | 显示全部楼层

改用DOS_EXEWAIT 試試

  (dos_exewait "regedit /s c:\\InitialDirectory.reg")
  ;;(dos_command "regedit /s c:\\InitialDirectory.reg" 2)

发表于 2009-8-5 08:40:00 | 显示全部楼层

REMEMBERFOLDERS 看看这个,修改一下

然后右键cad图标,把属性里面的“目标”改成你要的位置,就行了

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

本版积分规则

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

GMT+8, 2024-10-1 09:39 , Processed in 0.173804 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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