乐筑天下

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

[编程交流] 通过LISP关闭图形

[复制链接]

48

主题

657

帖子

33

银币

限制会员

铜币
-1
发表于 2022-7-5 14:58:33 | 显示全部楼层 |阅读模式
下午好
我已经“升级”到包括将AutoCAD链接到projectwise(如果您不使用文档管理数据库/软件)。每次关闭图形时,它都会以projectwise方式进行检查,以查看是否通过它打开了图形-如果是,我会获得检查图形签入的选项,等等,如果不是AutoCAD正常工作。
 
我有一个LISP例程,它将批量处理其他LISP例程(虽然不完美,但它可以正常工作),当这个LISP例程尝试关闭图形时,projectwise会导致未经处理的访问错误(我的例程打开、处理、按需保存并依次关闭每个图形)
 
我正在使用一个标准的“close”命令-是否有另一种方法来关闭LISP例程中的图形,projectwise不会将其识别为“close”,我尝试了VLA-close,但无法使其工作,除非我做错了什么。
 
非常感谢
 
 
 
 
(注意,我的代码不整洁,所以我不愿意在这里发布-我认为在我完成它之前,阅读它的时间会比应该的时间长得多,但如果必要的话,我会发布它的部分)
回复

使用道具 举报

28

主题

317

帖子

292

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
140
发表于 2022-7-5 15:16:20 | 显示全部楼层
通常,如果你做错了什么事,它不起作用,它是成对的;P(vla Close(vla get ActiveDocument(vlax get acad object)):vlax false);保存更改标志
 
project wise不会认为已经接近了?我不确定你的意思,但有一件事你必须注意的是,lisp“存在”在一个图形中,如果你关闭运行lisp的图形,执行就会立即停止。这就像锯一根你坐在上面的树枝。如果你做得不对,工作就会完成,但也有副作用。之后你不能继续,不管怎样,我很确定局部变量不会超出范围,垃圾收集也不会完成它的工作,一些Acad的变量/标志不能正确重置。几年前,我做了一个关闭图形并以只读方式重新打开它的例程,这样我就可以通过双击资源管理器以只读方式打开dwg,以避免从Acads打开对话框手动浏览,如果我在cad会话中使用它32次,我最终不得不关闭cad,因为它会弹出一个窗口,告诉我在一个会话中不能同时打开超过32个图形。对于cad来说,无论使用何种方法(command、vl cmdf、command-s、vla close、vla sendcommand、vla quit。。。
 
关闭包含lisp文件的执行并不是一个100%完美的解决方案。不要期望它无休止地/成批运行。
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 15:25:45 | 显示全部楼层
我的哀悼。。。
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 15:35:02 | 显示全部楼层
从我的rlxbatch应用程序中删除的董事:
 
 
  1. ;--- Close ---------------------------------------------- Begin Close Utilities ------------------------------------------------- Close ---
  2. (defun RlxBatch_CloseAllButCurrent (/ dwg )
  3. (vlax-for dwg (vla-get-Documents (vlax-get-acad-object))
  4.    (if    (= (vla-get-Active dwg) :vlax-False)
  5.      (if (= (vla-get-ReadOnly dwg) :vlax-true)
  6.    (vla-close dwg :vlax-False)
  7.    (vl-catch-all-apply (function (lambda ()(if (/= (getvar "dwgtitled") 0)(vla-save dwg))(vla-close dwg :vlax-False))))
  8.      )
  9.    )
  10. )
  11. )
  12. (defun quit_all ( / dwg)
  13. (vlax-for dwg (vla-get-Documents (vlax-get-acad-object)) (if (= (vla-get-active dwg) :vlax-false)(vla-close dwg :vlax-false)))
  14. (command-s "._close" "_y")
  15. )
  16. (defun close_all ( / dwg ) (vlax-for dwg (vla-get-Documents (vlax-get-acad-object))(vla-close dwg :vlax-True)))
  17. ;--- Close ----------------------------------------------- End Close Utilities -------------------------------------------------- Close ---
回复

使用道具 举报

48

主题

657

帖子

33

银币

限制会员

铜币
-1
发表于 2022-7-5 15:47:50 | 显示全部楼层
到目前为止,我仍然无法让它工作,今天上午,所以将有另一个在这之前发生的一切看看,如果它可以,稍后会问更多的问题?
回复

使用道具 举报

28

主题

317

帖子

292

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
140
发表于 2022-7-5 15:56:24 | 显示全部楼层
我想知道Project wise究竟如何/如何监视autocad。。。我的猜测是,不管使用什么方法(command、vl cmdf、command-s、vla close、vla sendcommand、vla quit),它仍然就像DWG从未关闭一样。唯一可行的方法是在lisp中保存所有内容,并邀请用户自己关闭图形。如果您发现新的内容,请随时与我们联系。
回复

使用道具 举报

48

主题

657

帖子

33

银币

限制会员

铜币
-1
发表于 2022-7-5 16:06:35 | 显示全部楼层
谢谢Jef,我没有试过command-s,但这类软件很管用(为什么这样做而其他选项不管用,我不知道但它管用)
(至于我剩下的例行程序,它会一个接一个地打开图形,执行需要执行的任何操作,然后在所有图形都被修改时关闭它们-我想这只是我需要修改的代码)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 23:27 , Processed in 1.915527 second(s), 67 queries .

© 2020-2025 乐筑天下

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