如何判断当前是处于视口内还是处于布局内?
我想做一个反应器布局中绘图时鼠标颜色自动改青色
如果双击进入了视口则鼠标颜色自动改白色
画个图总要先判断鼠标处于什么环境
也是够烦的
CVPORT
CVPORT = 1 是图纸空间 本帖最后由 masterlong 于 2018-11-27 14:47 编辑
以下代码复制到mnl或者启动加载的lsp里
即可实现“布局中切换空间时自动改鼠标颜色”的功能
;0语句功能注释:::图纸空间切换反应器
(if (/= (type jb_spacechange_Reactor) 'vlr-sysvar-reactor)
(setq jb_spacechange_Reactor(vlr-sysvar-reactor (getvar "cvport") '((:vlr-sysVarChanged . jb:spacechange_Reactor))))
vlr-editor-reactor
)
(if (not (vlr-added-p jb_spacechange_Reactor))
(vlr-add jb_spacechange_Reactor)
)
(setq acadPrefDisplay (vla-get-display (vla-get-preferences (vlax-get-acad-object))))
;0反应器回调动作
(defun jb:spacechange_Reactor ( reactorObject Listofsomething )
(if (and (= (car Listofsomething) "CVPORT") (cadr Listofsomething))
(if (and (/= (strcase (getvar "ctab")) "MODEL")(= 1 (getvar "CVPORT")))
(progn
;;(princ "\n空间切换\n")
(vla-put-LayoutCrosshairColor acadPrefDisplay16776960) ;;布局光标颜色=4
)
(progn
;;(princ "\n空间切换\n")
(vla-put-LayoutCrosshairColor acadPrefDisplay16777215) ;;布局光标颜色=7
)
)
)
(princ)
)
(princ)
;;改十字光标颜色代码
;;http://bbs.mjtd.com/forum.php?mo ... 2%B1%EA%D1%D5%C9%AB
;|
vla-Put-ModelCrosshairColor
示例1
Color list:
0 = Black
255 = Red
65535 = Yellow
65280 = Green
16776960 = Cyan
16711680 = Blue
16711935 = Magenta
16777215 = White
(vl-load-com)
(setq acadPrefDisplay (vla-get-display (vla-get-preferences vlax-get-acad-object)))
(vla-put-modelcrosshaircolor acadPrefDisplay12582656)
|;
(vlr-*-reactor data callbacks)
反应器函数里的data
有啥用?怎么用?
始终没有搞明白 masterlong 发表于 2018-11-27 12:03
(vlr-*-reactor data callbacks)
反应器函数里的data
有啥用?怎么用?
data
Type: Integer, Real, String, List, VLA-object, Safearray, Variant, T, or nil
Any AutoLISP data to be associated with the reactor object; otherwise nil if no data.
我感觉像是一种扩展数据,你用vlr-data可以和获取关联 的数据,vlr-data-set可以设置关联数据。
你上面(setq jb_spacechange_Reactor(vlr-sysvar-reactor (getvar "cvport") '((:vlr-sysVarChanged . jb:spacechange_Reactor))))
这句就是关联了一个int的值。(vlr-data jb_spacechange_Reactor)就能获得值。
页:
[1]