找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 778|回复: 0

Acad.lsp is reloaded when -VBARUN command is used in S::STARTUP

[复制链接]

已领礼包: 40个

财富等级: 招财进宝

发表于 2021-1-7 17:48:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

问题:
Acad.lsp is reloading when -VBARUN command is used in the S::STARTUP function
to load a drawing. Is this known behavior and is there a way to stop it from
reloading?  The ACADLSPASDOC  variable is 0.

解答:
The reason that Acad.lsp is reloading, with a drawing opened by a procedure
in  Acad.dvb (called with -VBARUN in S:STARTUP), is that AutoCAD has not finished
initializing at the point in the S::STARTUP function where the command -VBARUN
is called.  As a workaround, the VBASTMT command allows you to call VBA functions
with arguments, from either the command line or a LISP expression.  In this
case, we can use (vla-sendcommand) in the (S::STARTUP) function, to call the
VBA "RunMacro" method.  This approach will not cause a reload of Acad.lsp.

  1. (defun-q mystartup ( )
  2.    (vl-load-com) ;load ActiveX objects
  3.    ;;replace this line: (command ".-vbarun" "MyModule.MySub")
  4.    ;;with the following:
  5.    (arxload "acadvba.arx") ;ensure Acad.dvb is loaded
  6.    (vla-sendcommand
  7.       (vla-get-activedocument (vlax-get-acad-object))
  8.       "vbastmt\n\ThisDrawing.Application.RunMacro \"MyModule.MySub\"\n"
  9.    )
  10. )


  11. (setq s::startup (append s::startup mystartup))


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-21 17:40 , Processed in 0.176076 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表