20cr 发表于 2013-8-6 21:06:12

[求助]要设计一个背景颜色切换

在做报告中,经常要把CAD的背景颜色进行切换,一般都是在工具选项菜单这样设置,如果经常切换比较繁琐。
现在好像还没有 这样方面的程序,不知道 如何开发一个这样简单实用 一键切换背景颜色(黑色和白色最经常切换)的 程序

edata 发表于 2017-9-4 18:22:30

;; This lisp can change background color for 2D model space

(defun c:gr (/ VAR-COLOUR DISPLAY clno blue rde green)
(setq clno (getint "\n=>Input colour No!"))
(prompt "\n,1=red,2=yellow,3=gree,4=cyan,5=blue,6=magenta,7=white"
)
(cond      ((= clno 1)
         (progn (setq rde 255) (setq green 0) (setq blue 0))
      )
      ((= clno 2)
         (progn (setq rde 255) (setq green 255) (setq blue 0))
      )
      ((= clno 3)
         (progn (setq rde 0) (setq green 255) (setq blue 0))
      )
      ((= clno 4)
         (progn (setq rde 0) (setq green 255) (setq blue 255))
      )
      ((= clno 5)
         (progn (setq rde 0) (setq green 0) (setq blue 255))
      )
      ((= clno 6)
         (progn (setq rde 255) (setq green 0) (setq blue 255))
      )
      ((= clno 7)
         (progn (setq rde 255) (setq green 255) (setq blue 255))
      )
      ((= clno 8)
         (progn (setq rde 128) (setq green 128) (setq blue 128))
      )
      ((= clno 9)
         (progn (setq rde 192) (setq green 192) (setq blue 192))
      )
      (t (progn (setq rde 0) (setq green 0) (setq blue 0)))
)
(setq
    VAR-COLOUR (vlax-make-variant
               (+ rde (* green 256)(* blue 65536))
               vlax-vblong
               )
    DISPLAY    (vla-get-display
               (vla-get-preferences
                   (vla-get-application (vlax-get-acad-object))
               )
               )
)
;(vla-put-graphicswinlayoutbackgrndcolor DISPLAY VAR-COLOUR)
(vla-put-graphicswinmodelbackgrndcolor DISPLAY VAR-COLOUR)
)

zzyong00 发表于 2017-9-7 17:58:22

Sub Example_GraphicsWinModelBackgrndColor()
    ' This example returns the current setting of
    ' GraphicsWinModelBackgrndColor. It then changes the value, and finally
    ' it resets the value back to the original setting.
   
    Dim preferences As AcadPreferences
    Dim currGraphicsWinModelBackgrndColor As OLE_COLOR
   
    Set preferences = ThisDrawing.Application.preferences
   
    ' Retrieve the current GraphicsWinModelBackgrndColor value
    currGraphicsWinModelBackgrndColor = preferences.Display.GraphicsWinModelBackgrndColor
    MsgBox "The current value for GraphicsWinModelBackgrndColor is " _
            & preferences.Display.GraphicsWinModelBackgrndColor, vbInformation, "GraphicsWinModelBackgrndColor 示例"
   
    ' Change the value for GraphicsWinModelBackgrndColor
    preferences.Display.GraphicsWinModelBackgrndColor = vbBlue
    MsgBox "The new value for GraphicsWinModelBackgrndColor is " _
            & preferences.Display.GraphicsWinModelBackgrndColor, vbInformation, "GraphicsWinModelBackgrndColor 示例"
   
    ' Reset GraphicsWinModelBackgrndColor to its original value
    preferences.Display.GraphicsWinModelBackgrndColor = currGraphicsWinModelBackgrndColor
    MsgBox "The GraphicsWinModelBackgrndColor value is reset to " _
            & preferences.Display.GraphicsWinModelBackgrndColor, vbInformation, "GraphicsWinModelBackgrndColor 示例"
End Sub
autocad自带的例子

20cr 发表于 2017-11-27 14:26:15

xinxirong 发表于 2017-9-4 09:24
3年解决不了这个问题,只能说你不适合编程。要学会动用一切手段去研究,比如监视注册表,od调试。

谢谢你的建议,我是编程爱好者,不是研究者,我会一直学习的。

tianyi1230 发表于 2013-8-7 08:52:53

论坛里面真有这个插件,你搜索一下背景颜色

20cr 发表于 2013-8-7 21:19:30

多谢你啊 就是没有搜到哦

20cr 发表于 2017-9-3 11:32:33

经过3年 这个问题终于可以 变通解决了。

思路 就是 先画一个矩形,然后矩形填充成白色,这样就是白色背景了。

谢谢论坛陪我的3年。

wangph 发表于 2017-9-3 21:34:53

找一找,一个系统变量就解决了

xinxirong 发表于 2017-9-4 09:24:27

3年解决不了这个问题,只能说你不适合编程。要学会动用一切手段去研究,比如监视注册表,od调试。

pengfei2010 发表于 2017-10-7 19:23:54

回帖是一种美德!感谢楼主的无私分享 谢谢

20cr 发表于 2017-11-27 14:24:13

edata 发表于 2017-9-4 18:22


谢谢你的代码,虽然我看不懂。能力有限。
页: [1] 2
查看完整版本: [求助]要设计一个背景颜色切换