Brenda Tanner 发表于 2022-7-7 00:39:27

非常感谢RenderMan,这看起来是一个很好的开始,但由于某些原因,它没有使用filepath变量。“打开”对话框打开得很好,但它正在打开Windows内存中必须包含的内容。。。本地C:\驱动器上的文件夹。
 
我非常感谢你在这里的指导和建议。我们刚刚在这个问题上抛出了800磅的大猩猩,并映射了一个新的驱动器号到T:\Checker。。。这就是所谓的普通老Q:。这允许宏从菜单(CUI)中工作。IT人员告诉我,我们一定错过了什么。如果它在命令行中工作,那么它应该作为菜单项的宏。我倾向于同意他们。

BlackBox 发表于 2022-7-7 00:42:39

 
不客气,布伦达。
 
我发布的子函数检查有效的文件路径(您在宏中指定的参数),并且仅当它(参数)是有效位置时,才更改打开对话框使用的注册表项值,否则在宏调用打开命令之前不会进行任何更改。
 
发布的示例宏使用的是您在先前发布中指定的文件路径。由于我的设置中没有映射该驱动器,我使用了不同的文件路径作为测试字符串,但成功地打开了多个网络位置。
 
请发布您试图使用的宏。

Brenda Tanner 发表于 2022-7-7 00:44:38

^C^C^P(I:/ACAD/VLISP/OpenHere "T:/Checker");._open;^P我已经在服务器上为此类事情保留的文件夹中找到了lisp文件。lisp文件运行正常,只是没有拾取filepath变量。可能是我在这台机器上的有限权限不允许对注册表进行编辑吗。我问过这件事,他们有点认为这可能是问题所在,但他们总是忙于扑灭其他火灾,没有时间和我在一起。。。也许以后他们可以提供帮助。
 
好啊我刚检查过,没有问题。我在其中做了一个新条目,添加了几个键,然后删除了它们。所有这些都很有效。我还将lisp文件的名称从_OpenHere更改为OpenHere。

BlackBox 发表于 2022-7-7 00:47:54

停止您的宏不正确。
 
让我们备份一下,以确保我们已经涵盖了基本知识。。。。
 
如果您还没有,请将我在这里发布的LISP代码复制到一个空文本文件中,并用保存。LSP文件扩展名。你可以随意给这个文件命名,但对于这些说明,我将使用“OpenHere.lsp”作为文件名的给定值。
 
将“OpenHere.lsp”保存到支持文件搜索路径(SFSP)中的任何位置,并通过APPLOAD或AcadDoc加载此文件。lsp或你的名字。mnl使用负载函数。
 
_OpenHere是函数名,而不是文件名(用于“OpenHere.lsp”),因此宏中不需要文件路径。您的宏应该如下所示:
 

^C^C^P(LispFunctionName Argument);._Open;^P

 
... 或:
 
11
 
尝试一下,看看这是否能纠正不想要的行为。现在让我们看看这对你来说是怎么回事?

Brenda Tanner 发表于 2022-7-7 00:51:27

伦德曼,
 
你说得对。这就解决了。现在说服IT人员自动加载此LISP文件。他们总是对这种部门范围内的政策变化持怀疑态度。。。事实上,他们讨厌任何形式的改变。不过,它们在这里很好地发挥了作用。
 
好啊只是避免了那个问题。在宏中添加了一些内容,使其能够动态加载LISP文件。它运作良好,永远不必为政策变化而烦恼。谢谢

BlackBox 发表于 2022-7-7 00:54:56

别担心;很高兴你把它整理好了。
 
我们也有严格的指导方针,从我们的公司CAD组(独立于它),但阿卡多克。lsp属于我的权限范围(作为我所在地区小组的CAD负责人)。
 
FWIW-*如果*您的IT允许用户自定义(正如我们所做的那样),那么请他们只考虑将其合并到加载的代码中:
 
12
 
我们在SFSP中构建了多条路径,这些路径位于用户的个人网络空间中,用于在每个部署中进行自定义,例如主CUIx、LISP、脚本等。。所有这些都是在我们公司定制之前加载的。这既可以让用户具有创造性,也可以强制执行我们的标准。
 
HTH公司

BlackBox 发表于 2022-7-7 00:57:52

 
提供的“OpenHere.lsp”驻留在SFSP中:
 
13
 

Brenda Tanner 发表于 2022-7-7 00:58:53

非常感谢你的建议。但正如他们所说的最好的计划。。。
 
1.LISP和的使用方法_Open命令第一次运行良好。当然,用户想打开另一个文件,但这次他们不会使用我创建的菜单项,因为这是用于特殊文件夹中的不同文件集。当然,当他们选择的时候。同样的特殊位置打开了。。。。。重击。。。勾选了现在必须导航回其他典型文件夹的用户。
 
2.好的。。。这样一来,用户就会冷静下来。现在,他们再次选择新的自定义菜单,并再次从特殊位置打开文件。重击!宏现在不起作用。打开菜单出现,但注册表项显然已被写回用户刚刚打开的同一个典型文件夹。
 
3、最重要的是,我们发现将自定义菜单加载到其他用户的计算机中是一件不成功的事情。我不敢相信我所看到的,但我现在在两台不同的机器上看到了。我们加载了菜单文件,一切看起来都很好。用户从菜单中选择选项并执行宏。现在,我们对宏进行了轻微更改,并将菜单重新保存在CUI屏幕中。然后,用户尝试再次执行菜单选项,但仍在执行旧操作。重击!然后我们卸载菜单并重新加载。重击!同样的事情。我们关闭AutoCAD并重新启动它。重击菜单选项仍在执行旧的宏。我查看了CUI中的宏,它显示了我们所做的更改。然后,我们卸载了自定义菜单,冷启动计算机并重新加载菜单,它就工作了。菜单选项仍然有一个大问题,即在会话期间无法保持其状态。如果用户使用“打开”菜单并更改他们选择文件的位置,当我们再次运行宏时,它会打开这个新文件夹,而不是我们想要的目标文件夹。
 
老板终于对我大发雷霆,说回到你使用的驱动映射方法,让我们继续前进。因此,至少就目前而言,宏观方面:
 
我们必须坚持让所有用户将T:\驱动器映射到这个特殊位置。但现在它进入了下一个阶段。

BlackBox 发表于 2022-7-7 01:04:37

不确定你这边有什么不同,但这很好用,re

JGA 发表于 2022-7-7 01:07:34

LISP I picked up years ago from an unknown source - works for me on 2011.

;========= Explorer to Current Directory(Defun C:ECD ()(Setvar "Cmdecho" 0)(Command "Shell"   (Strcat      "Explorer /n,/e,"            ;Explorer, New Window, use Explorer View         (Chr 34)                     ;Quote marks      (Getvar "dwgprefix")         ;Current drive and folder      (Chr 34)                     ;Quote marks   )                                 ;Close Strcat)                                    ;Close Command(Princ))                                       ;Close Defun on C:ECD

;========= Explorer to AutoSave Directory(Defun C:EASD ()(Setvar "Cmdecho" 0)(Command "Shell"   (Strcat      "Explorer /n,/e,"            ;Explorer, New Window, use Explorer View         (Chr 34)                     ;Quote marks      (getvar "savefilepath")      ;Current drive and folder      (Chr 34)                     ;Quote marks   )                                 ;Close Strcat)                                    ;Close Command(Princ))                                       ;Close Defun on C:EASD
 
Another from Lee Ambrosius;-

;; Created by: Lee Ambrosius;;                HyperPics, http://www.hyperpics.com;;;; Last revised on: 06/15/03;; Program is used to search for a file with in the AutoCAD Support paths.;; It then will display the file in Explorer or folder view;; Opens Explorer w/ Treeview and highlights the file(defun c:BrowseToFileWithTree( / fileLoc fileName);(setq fileName (getstring "\nEnter file name and extension to find: ")); Added to open current file in Explorer 18/08/2005 JGA (setq fileName (getvar "DWGname")) (if (setq fileLoc (findfile fileName))   (startapp "explorer" (strcat "/n, /e, /select," (substr fileLoc 1 (- (strlen fileLoc) (+ (strlen fileName) 1))) " \\" filename)) ));; Opens Explorer w/o Treeview and highlights the file(defun c:BrowseToFileWithoutTree( / fileLoc fileName) (setq fileName (getstring "\nEnter file name and extension to find: ")) (if (setq fileLoc (findfile fileName))   (startapp "explorer" (strcat "/n, /select," (substr fileLoc 1 (- (strlen fileLoc) (+ (strlen fileName) 1))) " \\" filename)) ))(defun c:B2FT()(c:BrowseToFileWithTree))(defun c:B2F()(c:BrowseToFileWithoutTree))(prompt "\nType B2FT or B2F to display a file in Windows Explorer.")(princ)
页: 1 [2]
查看完整版本: “打开文件的宏”对话框