“打开文件的宏”对话框
我创建了一个新的菜单项,允许用户打开“打开文件”对话框窗口。但我需要请求它在每次运行时打开到特定的默认位置,而不是上次打开的文件夹。现在,这个新命令的宏是^C^C\u open。
是否有一种方法允许我们指定要打开的文件夹位置? 在这个问题上,另一位同事为我指明了正确的方向。她建议
她是对的。效果很好。尽管如此,我还是希望在autocad中获得真正的“打开”窗口,而不仅仅是普通的浏览器窗口。 感谢您与我们分享该解决方案Brenda。现在,如果每个来这里的人都能像你一样高效(问和回答你自己的问题),我们都可以休息一天,去海滩喝一杯冰镇啤酒。英雄联盟 那么,您希望访问映射为T的网络驱动器:?这相当于:
^C^C^C(startapp "explorer.exe” “T:\\") ^P
您的第一篇帖子给我的印象是,您希望打开命令的图形选择对话框指向预定义的路径,而不是默认的当前文件夹。 再次感谢大家。我希望OPEN命令指向预定义的路径。该宏使用Windows资源管理器,这是可以的,但它不会在Autocad中显示典型的“文件打开”窗口,而是显示Windows资源管理器的一个实例。如果可行的话。
我对这个宏仍然有一些问题,例如今天早上,我可以在命令行中键入:
它会在T:驱动器的这个文件夹位置打开Windows资源管理器。但是我为这个特定的菜单命令在CUI中复制并粘贴了相同的内容,什么都没有发生。
然而,这个宏可以从菜单项或命令行正常工作。
^C^C^P(startapp "explorer.exe "T:") MSasu,
再次感谢您的回复,但我尝试了您提供的语法,它所做的只是将该语法的内容转储到命令行上。这件事的难点在于我可以在命令行上完成:
(startapp "explorer.exe" "T:\\Checker"),工作正常。但是,CUI中用于此菜单项的宏如下所示:
^C^C^P(startapp "explorer.exe" "T:\\Checker")不产生任何结果。。。根本没有消息或错误指示,而且大多数情况下没有打开Windows资源管理器以打开T:\Checker文件夹。这一点我真的很困惑。 为工具栏按钮创建宏时,应注意以空格字符结尾-它的作用类似于运行语句。 是的,你是对的。。。我应该说我已经意识到了这一点。我试过用一个空格,一个分号,两个分号。。。等等。只要能让它工作就行。我还可以说,如果我不使用文件夹名,只使用驱动器名“T:”,它在cui菜单宏中运行良好。除了添加文件夹名外,我还可以从命令行执行此操作。从命令行来看,这一切似乎都很好,但当它作为菜单宏的语法插入时,情况就不一样了。我不明白。 布伦达,如果明天之前没有人愿意测试这个,我会在AutoCAD的菜单中为你做一些测试(现在没有访问权限)。
有多种方法可以实现这一点,例如使用GetField函数,但只是为了好玩:
以下是预定义位置的示例宏:
**注意-在宏中使用单正斜杠“/”作为双反斜杠“\\”将导致暂停用户输入。
^C^C^P(_OpenHere "T:/Checker");._open;^P
。。。以及支持的“_OpenHere”LISP子函数:
此子函数接受单个参数,将文件路径作为字符串,并在更新定义打开对话框起点的名称恰当的“InitialDirectory”注册表项之前验证文件路径是否为有效位置。该代码还解释了产品密钥的2013年之前和之后的LISP函数。
(vl-load-com)
(defun _OpenHere (filePath / key)
(if vlax-user-product-key ; If using 2013
(setq key (vlax-user-product-key)) ; Then, use new lisp function
(setq key (vlax-product-key)) ; Else, use legacy function
)
;; More info here:
;; http://www.cadtutor.net/forum/showthread.php?70845-AutoLISP-API-Changes-for-AutoCAD-2013-Updated
(if (setq
filePath (vl-string-translate
"\\"
"/"
(findfile (vl-string-right-trim
"/"
(vl-string-right-trim "\\" filePath)
)
)
)
)
(vl-registry-write
(strcat
"HKEY_CURRENT_USER\\"
key
"\\Profiles\\"
(vla-get-activeprofile
(vla-get-profiles
(vla-get-preferences (vlax-get-acad-object))
)
)
"\\Dialogs\\OpenSaveAnavDialogs"
)
"InitialDirectory"
filePath
)
)
(princ)
)
HTH
页:
[1]
2