乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 102|回复: 19

[编程交流] 以只读方式打开

[复制链接]

95

主题

477

帖子

383

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
475
发表于 2022-7-5 18:26:52 | 显示全部楼层 |阅读模式
我有一个关于创建只读代码的快速问题。我知道如何创建代码来打开只读文档,但是我在修改它以使lisp例程打开当前文档文件夹中的windows资源管理器时遇到了问题。只读代码:
  1. (defun c:openReadOnly (/ sel1)
  2. (if (setq sel1 (getfiled "Open Drawing" "" "dwg" ) ;
  3.    (command "vbastmt"
  4.             (strcat
  5.               "AcadApplication.Documents.Open"
  6.               (chr 34)sel1(chr 34)", true"
  7.               )
  8.             )
  9.    )
  10. (princ)
  11. )

 
 
编辑现有代码,但我有问题。
  1. (defun c:openReadOnly (/ sel1)
  2. (if (setq sel1 (getfiled "Open Drawing" "" "dwg" ) ;
  3.    (startapp "explorer /e,/select," (strcat (getvar "dwgprefix")(getvar "dwgname")
  4.               (chr 34)sel1(chr 34)", true"
  5.               )
  6.             )
  7.    )
  8. (princ)
  9. )

 
 
我知道这个问题与我的startapp函数有关,但我对需要更改什么感到困惑。
回复

使用道具 举报

95

主题

477

帖子

383

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
475
发表于 2022-7-5 18:31:51 | 显示全部楼层
我第一次尝试时犯了一个愚蠢的错误。然而,这仍然存在问题。
  1. (defun c:openReadOnly (/ sel1)
  2. (if (setq sel1 (startapp "explorer /e,/select," (strcat (getvar "dwgprefix")(getvar "dwgname")))
  3.    (command "vbastmt"
  4.             (strcat
  5.               "AcadApplication.Documents.Open"
  6.               (chr 34)sel1(chr 34)", true"
  7.               )
  8.             )
  9.    )
  10. (princ)
  11. )
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 18:36:22 | 显示全部楼层
缺少括号(setq sel1(startapp“explorer/e,/select,”(strcat(getvar“dwgprefix”)(getvar“dwgname”)))
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 18:38:52 | 显示全部楼层
您需要使用VBA吗?
为什么不只是这样
  1. (vl-load-com)
  2. (defun c:demo (/ dwg)
  3.    (if (setq dwg (getfiled "Open Drawing" (getvar 'dwgprefix) "dwg" 0))
  4.        (vla-activate
  5.            (vla-open (vla-get-documents (vlax-get-acad-object)) (strcat """ dwg """) :vlax-true)
  6.        )
  7.    )
  8.    (princ)
  9. )

 
亨里克
回复

使用道具 举报

95

主题

477

帖子

383

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
475
发表于 2022-7-5 18:41:23 | 显示全部楼层
BigAl,哇,那是个愚蠢的错误,谢谢你指出!我现在正在运行它,它会在当前图形的文件夹中打开windows资源管理器。但是,当我单击要打开的图形时,会收到以下消息提示:“OPENREADONLY初始化VBA系统…”;错误:错误的参数类型:stringp 33
表达式:“
回复

使用道具 举报

95

主题

477

帖子

383

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
475
发表于 2022-7-5 18:45:15 | 显示全部楼层
 
 
Henrique,我之所以使用VBA,是因为我知道如何在VBA中使用VBA,但我对Visual Lisp不太在行。当我上传你的代码时,我得到了一个错误:“错误:输入列表格式错误”。我想在Visual Lisp方面做得更好,所以如果您不介意的话,我对您的代码也有一些问题:
1) 为什么(vl load com)在命令定义之前?
2) 下面的部分具体做什么?
  1. (strcat """ dwg """) :vlax-true)
回复

使用道具 举报

11

主题

93

帖子

82

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-5 18:47:07 | 显示全部楼层
只读文件可能以某种方式受到保护?
 
从电子邮件打开时经常看到
人们总是可以将其保存在桌面或文件夹中,然后他们从那里打开它,然后你就可以编辑了。。Threfore我没有看到它使用lisp或vba
 
随时通知我,告诉我如何在不使用密码删除保护的情况下实现此类文件保护。
 
 
最好的
 
R
回复

使用道具 举报

95

主题

477

帖子

383

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
475
发表于 2022-7-5 18:50:12 | 显示全部楼层
我在以前的一个线程中找到了一个可以运行的代码,但是它没有使用windows资源管理器。有没有办法修改它,使它能够利用它?
  1. (defun C:OPR (/ fname sd)
  2. (or (vl-load-com))
  3. (setq sd (getvar "sdi"))
  4. (setvar "sdi" 0)
  5. (setq fname (getfiled "Select drawing to open read-only"
  6.                      (getvar "dwgprefix")
  7.                      "dwg"
  8.                      4)
  9.      )
  10. (if (vl-catch-all-error-p
  11.             (vl-catch-all-apply
  12.                 (function (lambda()
  13.                                (vla-activate
  14.                                    (vla-open
  15.                                   (vla-get-documents
  16.                                       (vlax-get-acad-object))
  17.                                   fname
  18.                                   :vlax-true)
  19.                               )
  20.                               )
  21.                           )
  22.                 )
  23.             )
  24.    (alert "Unable to open in read-only mode")
  25.    )
  26.    (setvar "sdi" sd)
  27.    (princ)
  28.    )
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 18:53:33 | 显示全部楼层
嗨broncos15,
我发布的代码应该加载无误,确保你复制了所有代码。
  1. (strcat """ dwg """)

是为了防止文件路径中出现空格错误,将返回如下内容
“c:/full/path/filename.dwg”
:vlax true,来自vla open函数,
:vlax true=>只读
:vlax false=>全开
 
亨里克
回复

使用道具 举报

95

主题

477

帖子

383

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
475
发表于 2022-7-5 18:58:04 | 显示全部楼层
 
亨里克,谢谢你的信息,这真的很有用。我复制了你的所有代码,但不幸的是,我仍然收到了错误。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-12 19:32 , Processed in 0.746058 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表