以只读方式打开
我有一个关于创建只读代码的快速问题。我知道如何创建代码来打开只读文档,但是我在修改它以使lisp例程打开当前文档文件夹中的windows资源管理器时遇到了问题。只读代码:(defun c:openReadOnly (/ sel1)
(if (setq sel1 (getfiled "Open Drawing" "" "dwg" ) ;
(command "vbastmt"
(strcat
"AcadApplication.Documents.Open"
(chr 34)sel1(chr 34)", true"
)
)
)
(princ)
)
编辑现有代码,但我有问题。
(defun c:openReadOnly (/ sel1)
(if (setq sel1 (getfiled "Open Drawing" "" "dwg" ) ;
(startapp "explorer /e,/select," (strcat (getvar "dwgprefix")(getvar "dwgname")
(chr 34)sel1(chr 34)", true"
)
)
)
(princ)
)
我知道这个问题与我的startapp函数有关,但我对需要更改什么感到困惑。 我第一次尝试时犯了一个愚蠢的错误。然而,这仍然存在问题。
(defun c:openReadOnly (/ sel1)
(if (setq sel1 (startapp "explorer /e,/select," (strcat (getvar "dwgprefix")(getvar "dwgname")))
(command "vbastmt"
(strcat
"AcadApplication.Documents.Open"
(chr 34)sel1(chr 34)", true"
)
)
)
(princ)
) 缺少括号(setq sel1(startapp“explorer/e,/select,”(strcat(getvar“dwgprefix”)(getvar“dwgname”))) 您需要使用VBA吗?
为什么不只是这样
(vl-load-com)
(defun c:demo (/ dwg)
(if (setq dwg (getfiled "Open Drawing" (getvar 'dwgprefix) "dwg" 0))
(vla-activate
(vla-open (vla-get-documents (vlax-get-acad-object)) (strcat "\"" dwg "\"") :vlax-true)
)
)
(princ)
)
亨里克 BigAl,哇,那是个愚蠢的错误,谢谢你指出!我现在正在运行它,它会在当前图形的文件夹中打开windows资源管理器。但是,当我单击要打开的图形时,会收到以下消息提示:“OPENREADONLY初始化VBA系统…”;错误:错误的参数类型:stringp 33
表达式:“
Henrique,我之所以使用VBA,是因为我知道如何在VBA中使用VBA,但我对Visual Lisp不太在行。当我上传你的代码时,我得到了一个错误:“错误:输入列表格式错误”。我想在Visual Lisp方面做得更好,所以如果您不介意的话,我对您的代码也有一些问题:
1) 为什么(vl load com)在命令定义之前?
2) 下面的部分具体做什么?
(strcat "\"" dwg "\"") :vlax-true) 只读文件可能以某种方式受到保护?
从电子邮件打开时经常看到
人们总是可以将其保存在桌面或文件夹中,然后他们从那里打开它,然后你就可以编辑了。。Threfore我没有看到它使用lisp或vba
随时通知我,告诉我如何在不使用密码删除保护的情况下实现此类文件保护。
最好的
R 我在以前的一个线程中找到了一个可以运行的代码,但是它没有使用windows资源管理器。有没有办法修改它,使它能够利用它?
(defun C:OPR (/ fname sd)
(or (vl-load-com))
(setq sd (getvar "sdi"))
(setvar "sdi" 0)
(setq fname (getfiled "Select drawing to open read-only"
(getvar "dwgprefix")
"dwg"
4)
)
(if (vl-catch-all-error-p
(vl-catch-all-apply
(function (lambda()
(vla-activate
(vla-open
(vla-get-documents
(vlax-get-acad-object))
fname
:vlax-true)
)
)
)
)
)
(alert "Unable to open in read-only mode")
)
(setvar "sdi" sd)
(princ)
) 嗨broncos15,
我发布的代码应该加载无误,确保你复制了所有代码。
(strcat "\"" dwg "\"")
是为了防止文件路径中出现空格错误,将返回如下内容
“c:/full/path/filename.dwg”
:vlax true,来自vla open函数,
:vlax true=>只读
:vlax false=>全开
亨里克
亨里克,谢谢你的信息,这真的很有用。我复制了你的所有代码,但不幸的是,我仍然收到了错误。
页:
[1]
2