明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1102|回复: 6

[提问] 怎样用lisp来控制绘图背景黑色与白色的切换

[复制链接]
发表于 2019-8-16 16:44 | 显示全部楼层 |阅读模式
1明经币
怎样用lisp来控制绘图背景黑色与白色的切换

发表于 2019-8-16 17:17 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2019-8-16 17:44 | 显示全部楼层
如果是黑色就该改成白色,如果是黑色就该改成白色,进行切换,用一个命令控制。程序怎么改

(defun c:tt (/ VAR-COLOUR DISPLAY clno blue rde green)
  (setq clno (getint "\n=>输入颜色序号!"))
  (prompt "\n,1=红,2=黄,3=绿,4=青,5=蓝,6=紫,7=白,8=灰,9=灰白"
  )
  (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)
)
回复

使用道具 举报

发表于 2019-8-16 21:22 | 显示全部楼层
;执行两次程序,模型空间背景颜色在黑色与白色之间切换
(defun c:bjys()
    (vl-load-com)
    (setq yssz (variant-value
                    (vlax-variant-change-type
                          (vla-get-GraphicsWinModelBackgrndColor        
                               (setq display (vla-get-display
                                                  (vla-get-preferences
                                                       (vlax-get-acad-object)
                                                  )
                                             )
                               )
                          )
                          vlax-vblong
                    )
                )
    )
    (setq yssz(vlax-make-variant (abs (- yssz 16777215)) vlax-vblong))
    (vla-put-GraphicsWinModelBackgrndColor display yssz)
    (vlax-release-object display)
    (princ)
)
回复

使用道具 举报

发表于 2019-8-16 22:01 | 显示全部楼层
本帖最后由 start4444 于 2019-8-16 22:13 编辑

背景在黑与白之间转换

摘自明经通道

(defun c:ax (/ prefdisplay)
  (vl-load-com)
  (setq prefdisplay (vla-get-display (vla-get-preferences
                                                          (vlax-get-acad-object)
                                     )
                    )
        color (vlax-variant-value (vlax-variant-change-type
                                                            (vla-get-graphicswinmodelbackgrndcolor prefdisplay)
                                                            vlax-vblong
                                  )
              )
  )
  (vla-put-graphicswinmodelbackgrndcolor prefdisplay
                                         (vlax-make-variant (if (= color 0)
                                                              16777215
                                                              0
                                                            ) vlax-vblong
                                         )
  )
  (princ)
)
回复

使用道具 举报

发表于 2019-8-16 22:10 | 显示全部楼层
根据二楼修改的
(defun c:tt5(/ col DISPLAY)
        (setq    DISPLAY    (vla-get-display
                                                                                                (vla-get-preferences
                                                                                                        (vla-get-application (vlax-get-acad-object))
                                                                                                )
                                                                                        )
  )
        (if (= (getenv "Background") "0") (setq col 255) (setq col 0))
        (vla-put-graphicswinlayoutbackgrndcolor DISPLAY (vlax-make-variant
                                                                                                                                                                                                                (+ col (* col 256)(* col 65536))
                                                                                                                                                                                                                vlax-vblong
                                                                                                                                                                                                        ))
  (vla-put-graphicswinmodelbackgrndcolor DISPLAY (vlax-make-variant
                                                                                                                                                                                                         (+ col (* col 256)(* col 65536))
                                                                                                                                                                                                         vlax-vblong
                                                                                                                                                                                                 ))
        (princ)
)
回复

使用道具 举报

发表于 2019-8-29 02:43 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-25 01:16 , Processed in 0.291758 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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