明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1202|回复: 11

[源码] VLA&VBA 设置系统背景色

  [复制链接]
发表于 2019-9-15 01:19 | 显示全部楼层 |阅读模式
本帖最后由 1291500406 于 2019-9-15 10:05 编辑




调用VLA设置背景
(defun c:bb( / bb)

(setq bb (vla-get-truecolor (vla-get-ActiveLayer(vla-get-activeDocument (vlax-get-acad-object)))))
(if (not(vl-catch-all-apply 'vla-put-ColorIndex (list bb (cdr(car(acad_truecolordlg '(420 . 2686760) nil))))))
(vla-put-graphicswinmodelbackgrndcolor(vla-get-display(vla-get-preferences(vla-get-application (vlax-get-acad-object))))
(+ (* (vla-get-blue bb) 65536) (* (vla-get-green bb) 256)(vla-get-red bb))))(princ))

调用VBA设置背景
(defun c:bb( / bb)(setvar "cmdecho" 0)
(setq bb (vla-get-truecolor (vla-get-ActiveLayer(vla-get-activeDocument (vlax-get-acad-object)))))
(if (not(vl-catch-all-apply 'vla-put-ColorIndex (list bb (cdr(car(acad_truecolordlg '(420 . 2686760) nil))))))
(vl-cmdf "VBASTMT"(strcat "Thisdrawing.application.preferences.Display.GraphicsWinModelBackgrndColor = "
(itoa (+ (* (vla-get-blue bb) 65536) (* (vla-get-green bb) 256)(vla-get-red bb))))))

(setvar "cmdecho" 1)(princ))

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2019-9-19 22:00 | 显示全部楼层
编程当然要耐得住寂寞
要知道很多人来论坛
不是为了学习而是为了收集程序
但总有些人是抱着学习的目的来的
你的代码不就是发给他们看的吗?

另外小小吐槽一句
喜欢不加空格就算了
这个字能大点不
看的眼睛疼
你和论坛某位大咖正相反
他是非常喜欢用铜铃般的字
反正我是从不进他的帖
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2019-10-31 09:37 | 显示全部楼层
happy336 发表于 2019-10-29 22:42
cad2008可以使用,十字光标没有变,全是白色,

(defun c:bb( / bb)
(setq bb (vla-get-truecolor (vla-get-ActiveLayer(vla-get-activeDocument (vlax-get-acad-object)))))
(if (not(vl-catch-all-apply 'vla-put-ColorIndex (list bb (acad_colordlg 3))))
(vla-put-graphicswinmodelbackgrndcolor(vla-get-display(vla-get-preferences(vla-get-application (vlax-get-acad-object))))
(+ (*  (vla-get-blue bb)65536) (* (vla-get-green bb) 256)  (vla-get-red bb))))(princ))


(defun c:bb1( / bb)
(setq bb (vla-get-truecolor (vla-get-ActiveLayer(vla-get-activeDocument (vlax-get-acad-object)))))
(if (not(vl-catch-all-apply 'vla-put-ColorIndex (list bb (acad_colordlg 3))))
(vla-put-ModelCrosshairColor(vla-get-display(vla-get-preferences(vla-get-application (vlax-get-acad-object))))
(+ (* (vla-get-blue bb) 65536) (* (vla-get-green bb) 256)(* (vla-get-red bb)))))(princ))
发表于 2019-10-31 04:23 | 显示全部楼层
本帖最后由 lisperado 于 2019-10-31 04:29 编辑

RGB次序好像弄反了?
你的是B-G-R?
(* (vla-get-blue bb) 65536) (* (vla-get-green bb) 256)(vla-get-red bb)
应该是B-R-G吧?
(* (vla-get-red bb) 65536) (* (vla-get-green bb) 256)(vla-get-blue bb)

  1. (defun RGB->DEC (r g b)
  2.   (apply '+ (mapcar ''((a b) (* a (expt 2 b))) (list r g b) '(16 8 0)))
  3.   )


举例:R=100 G=150 B=200
以你的算法=13145700 ?
(+ (* B 65536) (* G 256) R) ?

;应该是6592200 吧?
(RGB->DEC 100 150 200 )
;6592200

发表于 2019-9-15 12:18 | 显示全部楼层
    学习,学习。
 楼主| 发表于 2019-9-19 18:56 | 显示全部楼层
都没人看,没意思,不发表代码了
发表于 2019-9-19 19:53 | 显示全部楼层
很有创意啊
发表于 2019-10-29 22:42 | 显示全部楼层
cad2008可以使用,十字光标没有变,全是白色,
发表于 2019-10-30 23:43 | 显示全部楼层
(connand "ucs" "o" pp)
来设定pp点为用户坐标系的原点
ucsorg这个变量是只读的、
请教:
  如何同lisp或Vlisp 来设定一个点为用户坐标系的原点

(发新帖要绑定QQ,可惜,我就没QQ);
发表于 2019-10-30 23:45 | 显示全部楼层
masterlong 发表于 2019-9-19 22:00
编程当然要耐得住寂寞
要知道很多人来论坛
不是为了学习而是为了收集程序

俺也来个大个的字。:P
 楼主| 发表于 2019-10-31 09:19 | 显示全部楼层
本帖最后由 1291500406 于 2019-10-31 09:38 编辑
lisperado 发表于 2019-10-31 04:23
RGB次序好像弄反了?
你的是B-G-R?
(* (vla-get-blue bb) 65536) (* (vla-get-green bb) 256)(vla-get-r ...

cad知道结果,运行一下就知道了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-20 11:36 , Processed in 0.593462 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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