本帖最后由 kucha007 于 2022-12-30 18:29 编辑
加载但不必运行,如果想每次都加载就放启动组或者acadiso.lsp
本来是有点感兴趣但不知道怎么操作,无意中接触了反应器,就学习了一下,学习资料也放在这里:
https://www.afralisp.net/visual-lisp/tutorials/reactors-part-1.php
- (vl-load-com)
- ;;加载就修改
- (K:ChkModel)
- ;;设置并初始化反应器,切换工作空间时修改
- (vlr-sysvar-reactor nil '((:vlr-sysVarChanged . *WSReactor*)))
- ;;反应器回调函数
- (defun *WSReactor* (Rea Data)
- (if (= (car Data) "TILEMODE")
- (K:ChkModel)
- )
- )
- ;;通用函数:判断工作空间
- (defun K:ChkModel nil
- (cond
- ((= 1 (getvar "TILEMODE"));模型空间
- ;(setvar "PSLTSCALE" 0);缩放时不使用视口比例
- (setvar "LTSCALE" 500);设置全局缩放比例为500
- )
- ((= 0 (getvar "TILEMODE"));布局空间
- (setvar "PSLTSCALE" 1);缩放时使用视口比例
- (setvar "LTSCALE" 10);设置全局缩放比例为10
- )
- )
- )
另一个有意思的东西,用来判断活动视口:
- ;;判断工作空间及是否在活动视口中
- (cond
- ((= (getvar "TILEMODE") 1)
- (princ "\n——★★★ 在模型空间中 ★★★——")
- )
- ((and (= (getvar "TILEMODE") 0)(= (getvar "CVPORT") 1))
- (princ "\n——★★★ 在布局空间中 ★★★——")
- )
- ((and (= (getvar "TILEMODE") 0)(> (getvar "CVPORT") 1))
- (princ "\n——★★★ 在活动视口中 ★★★——")
- )
- )
|