kucha007 发表于 2022-12-28 18:36:16

【反应器】模型和布局使用不同的全局比例

本帖最后由 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——★★★ 在活动视口中 ★★★——")
)
)





中国梦 发表于 2022-12-28 19:40:38

谢谢楼主分享

magicheno 发表于 2022-12-28 23:05:46

感谢大佬分享

lxl217114 发表于 2022-12-29 12:04:35

++++++++++лз

tomonkey239 发表于 2022-12-30 17:01:26

本帖最后由 tomonkey239 于 2022-12-30 17:26 编辑

再想反应器是怎么样的,感谢分享
但是试了下,运行不成功

kucha007 发表于 2022-12-30 18:28:27

tomonkey239 发表于 2022-12-30 17:01
再想反应器是怎么样的,感谢分享
但是试了下,运行不成功

不用运行。加载就可以用了,加载后你切换空间,再检查全局比例就知道了

tomonkey239 发表于 2022-12-31 13:29:30

有没有画一个矩形的的反应器?大佬

kucha007 发表于 2023-1-1 01:23:53

tomonkey239 发表于 2022-12-31 13:29
有没有画一个矩形的的反应器?大佬

学习资料里有关于命令反应器的信息

dingtiedt 发表于 2023-12-3 12:43:51

本帖最后由 dingtiedt 于 2023-12-3 16:27 编辑

大师,把两个一合并,切换到model空间,提示是正常的;在布局与布局、或者在布局与活动视口之间切换时,有时显示不正常,在布局空间时,提示“在活动视口中”,在活动视口中时,提示“在布局空间中”,请大师看看什么原因



(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
   ((= (getvar "TILEMODE") 1)
    (princ "\n——★★★ 在模型空间中 ★★★——")
   )
   ((and (= (getvar "TILEMODE") 0)(= (getvar "CVPORT") 1))
    (princ "\n——★★★ 在布局空间中 ★★★——")
   )
   ((and (= (getvar "TILEMODE") 0)(> (getvar "CVPORT") 1))
    (princ "\n——★★★ 在活动视口中 ★★★——")
   )
))

atone 发表于 2024-2-11 20:35:20

厉害厉害,膜拜
页: [1]
查看完整版本: 【反应器】模型和布局使用不同的全局比例