Bill Tillman 发表于 2022-7-6 23:45:29

宏有问题

我试图运行以下宏来打开图形文件,然后加载并执行LISP文件。
 

^C^CFILEDIA;0;OPEN;"\\a_long_novell_path\MyDrawingFile.dwg";FILEDIA;1;(load "//a_long_novell_path/MyLispFile.lsp");TEST;

我有一个自定义菜单项,但当它运行时,它会暂停,图形文件加载到屏幕上的动态输入窗口中。当我按enter键时,它加载图形,但随后停止操作。它不会加载和执行LISP文件。我尝试在图形名称后放置两个分号以强制另一个分号,但仍然得到相同的结果。

BIGAL 发表于 2022-7-6 23:57:30

另一种方法是使用脚本文件。问题可能是一旦打开dwg,控件就会转到该dwg,因此不会调用lisp^c^cscript脚本22

Bill Tillman 发表于 2022-7-7 00:01:08

谢谢比格尔,这确实有道理。我发现了一些额外的拼写错误。。。。该死的那些novell服务器路径,75个字符长,所以很容易打字。我必须使用UNC,因为运行它的各个部门都有不同的驱动器映射。严格执行标准到此为止。我还必须在脚本文件中添加一个“Y”,因为图形文件是只读的,它会暂停以确认是否要打开它。甚至当我将专家设置为5级时,这种情况也发生了。不管怎样,它现在正在工作,我们都要再一次走向自动化的幸福。谢谢

Bill Tillman 发表于 2022-7-7 00:13:44

好的,我认为这个问题已经解决了,但显然我安装的“Y”还有另一个问题。上周,我正在运行脚本,AutoCAD 2013在“打开”命令处暂停,该命令要求我确认文件以打开此只读文件。所以我添加了一行,只包含字母“Y”,这一切都开始起作用了。我在其他用户的机器上进行了测试,2009年、2013年、2014年和2014年的机械用户,一切都很好。今天,当我运行脚本时,它打开了图形文件,但随后给了我一个错误未知的命令“Y”。我检查了一下,FILEDIA设置为1,所以我将其更改为0,但得到了相同的结果。看起来我在另一个环境变量中缺少了一些东西。我还尝试了专家将其设置为5,然后返回到0,但没有任何变化。
 
我打开的图纸被标记为只读,这就是我看到的提示。我刚刚在其他一些地方测试了这个,它在那里运行良好。如果我去掉“Y”,它对我们所有人都有相反的影响,即它开始在我的机器上运行,但在所有其他机器上都失败了。这是今天早上的脚本文件:

_.OPEN "\\a_very_long_novell_path\MyDwgFile.dwg"
Y
(LOAD "//a_very_long_novell_path/MyLispFile.lsp")
MyLispCmd

BIGAL 发表于 2022-7-7 00:16:18

要长得多,但可以检查文件是否实际设置为“只读”,这样您的脚本就会检查这一点,然后运行另一个脚本readonlyopen或script notreadonly。可能是一个开始lisp然后脚本。尝试在VL文件命令下查找
 
完成!!!
 

; ORIGINAL CODE
; STIG.MADSEN @ AUGI FORUMS
; Shortened to give read only flag which is 1
(setq aFile (getfiled "" "" "" 4))
         (setq fso (vlax-create-object "Scripting.FilesystemObject"))
         (setq oFile (vlax-invoke fso 'GetFile aFile))

(SETQ READONLY (vlax-get-property oFile 'Attributes)) ; 1 read-only 0 read-write
(IF (= READONLY 1)
(ALERT "FILE IS READ ONLY") ; set gloabl variable or run script here exits then
(ALERT "FILE IS NOT READ ONLY"
)   
    (vlax-release-object oFile)
    (vlax-release-object fso)
   )
)
(princ)

Bill Tillman 发表于 2022-7-7 00:23:52

再次感谢比格尔。我正在努力辨别我的设置发生了什么。我需要的是文件始终保持只读。这样一来,没有一个“空白”用户可以在没有实际犯罪或更改其属性的情况下使用它。在周一,这对每个人都非常有效。办公室中的其他用户仍然可以让脚本运行,而不会得到文件只读的提示。这是一个自动化过程,需要允许用户只需单击菜单选项即可加载图形,运行LISP,然后离开。它正在这样做。但是现在由于我自己不知道的原因,我的电脑将不再运行它而不抱怨“Y”。其他用户没有看到这一点。现在,作为这个部门唯一的开发者,我的系统经常被调整和弄乱,所以我很确定这是我做的事情。但我似乎无法理解。我会继续挖掘。

nukecad 发表于 2022-7-7 00:31:19

在这里我只是猜测一下,但这可能和此有关吗。dwl文件?
 
您是否是第一个打开图形的人,因此您没有获得“文件已打开”标志,而其他人在您获得该标志后打开文件,并且需要“y”以只读方式打开并继续。

Bill Tillman 发表于 2022-7-7 00:41:12

这是一个谜。。。。现在,我终于检查了我想我应该在开始检查的内容。图形文件被标记为只读,我自己做了这件事,以防止用户意外覆盖它。在今天早上的会议上,这个部门的所有10名用户都向他们孩子的灵魂发誓,没有人碰过它。好吧,他们中的一些人一定没有孩子,因为当我最终崩溃并检查。。。。你猜对了,有人取消了文件的只读设置。这就是为什么我的剧本和“Y”混淆了。现在我还不能说为什么该部门的其他用户没有得到同样的结果。但它又像预期的那样工作了。该文件不仅恢复为只读,而且被隔离在服务器上的一个文件夹中,在这个文件夹中,只有您的用户才能真正更改它。生活和学习。
 
是的,努卡德,我认为你有一个正确的观点,为什么它对其他人有效,而不是对我。由于大多数时候都是我打开的,其他人可能会遇到只读的情况。但是当我关闭它而没有其他人打开它时,由于有人在我不知情的情况下删除了它的只读属性,这是有道理的。但是谁删除了只读属性仍然是个谜,因为没有人愿意承认这一罪行。该文件现在已完全锁定,因此如果再次发生,至少我会知道是我做的。

BIGAL 发表于 2022-7-7 00:50:56

我遗漏的部分代码实际上将文件更改为只读,如果不是这样的话,那么他们可能会认为将其更改为只读是明智的,我通过谷歌找到了它,因此您仍然可以进行修改,因为您可以在Autocad打开用户隐藏的窗体之前进行设置。如果你打开它可能会有问题,检查dwl不是一个好主意,因为这里的人经常使用崩溃退出,我对他们大喊大叫,这会留下dwl,所以如果你检查它,它会说文件锁定,但它没有。
 

;I think its to read only would have to google again
(vlax-put-property oFile 'Attributes 1)
页: [1]
查看完整版本: 宏有问题