明经CAD社区

 找回密码
 注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 370|回复: 9

[函数] 模拟ssget功能显示小刷子

[复制链接]
发表于 2020-7-30 16:02 | 显示全部楼层 |阅读模式
; 模拟ssget功能显示小刷子,示例:(setq ss (brushss '((0 . "text"))))
  (defun brushss (fun / cl code d e gr loop pd pt ptbak ss x y)
    (defun jpt (pt x y d)
      (list (list (+ (car pt) (* d x)) (+ (cadr pt) (* d y))))
    )
    (setq loop t)
    (while loop
      (setq gr (grread t 15 1)
            code (car gr)
            pt (cadr gr)
      )
      (cond
        ((= code 3)                       ; 鼠标左键
          (redraw)
          (setq e (* 0.5 (getvar "pickbox"))
                e (append
                    (jpt pt e e d)
                    (jpt pt e (- e) d)
                    (jpt pt (- e) (- e) d)
                    (jpt pt (- e) 4 d)
                  )
          )
          (if (null ptbak)
            (if (setq ss (ssget "CP" e fun))
              (progn
                (setq loop nil
                      pd "Y"
                )
              )
              (setq ptbak pt)
            )
            (progn
              (if (= cl -1)
                (if (setq ss (ssget "_CP" (list pt (list (car pt) (cadr ptbak)) ptbak (list (car ptbak) (cadr pt)) pt) fun))
                  (setq loop nil)
                )
              )
              (if (= cl -3)
                (if (setq ss (ssget "W" ptbak pt fun))
                  (setq loop nil)
                )
              )
              (setq ptbak nil)
            )
          )
        )
        ((= code 5)                       ; 鼠标移动
          (redraw)
          (setq d (* 2 (/ (getvar "viewsize") (cadr (getvar "screensize")))))
          (grvecs (append
                    '(2)               ; 刷子颜色
                    (jpt pt 8.5 -3.2 d)
                    (jpt pt 8.5 -7 d)
                    (jpt pt 9.1 -3.2 d)
                    (jpt pt 9.1 -7 d)
                    (jpt pt 8 -7 d)
                    (jpt pt 8 -3.7 d)
                    (jpt pt 8 -3.7 d)
                    (jpt pt 8.5 -3.2 d)
                    (jpt pt 8.5 -3.2 d)
                    (jpt pt 9.1 -3.2 d)
                    (jpt pt 9.1 -3.2 d)
                    (jpt pt 9.6 -3.7 d)
                    (jpt pt 9.6 -3.7 d)
                    (jpt pt 9.6 -7 d)
                    (jpt pt 9.6 -7 d)
                    (jpt pt 6.2 -7 d)
                    (jpt pt 6.2 -7 d)
                    (jpt pt 5.7 -7.5 d)
                    (jpt pt 5.7 -7.5 d)
                    (jpt pt 5.7 -12 d)
                    (jpt pt 5.7 -12 d)
                    (jpt pt 12 -12 d)
                    (jpt pt 12 -12 d)
                    (jpt pt 12 -7.5 d)
                    (jpt pt 12 -7.5 d)
                    (jpt pt 11.5 -7 d)
                    (jpt pt 11.5 -7 d)
                    (jpt pt 9.6 -7 d)
                    (jpt pt 5.7 -12 d)
                    (jpt pt 4 -14 d)
                    (jpt pt 4 -14 d)
                    (jpt pt 10.3 -14 d)
                    (jpt pt 10.3 -14 d)
                    (jpt pt 12 -12 d)
                    (jpt pt 6.1 -14 d)
                    (jpt pt 7.8 -12 d)
                    (jpt pt 8.2 -14 d)
                    (jpt pt 9.9 -12 d)
                    (jpt pt 5.7 -8.8 d)
                    (jpt pt 12 -8.8 d)
                    (jpt pt 5.7 -10.2 d)
                    (jpt pt 12 -10.2 d)
                  )
          )
          (if ptbak
            (progn
              (if (< (car ptbak) (car pt))
                (setq cl -3)
                (setq cl -1)
              )
              (grvecs (list cl ptbak (list (car ptbak) (cadr pt)) (list (car ptbak) (cadr pt)) pt pt (list (car pt)
                                                                                                           (cadr ptbak)
                                                                                                     ) (list (car pt)
                                                                                                             (cadr ptbak)
                                                                                                       ) ptbak
                      )
              )
            )
            (grvecs (append
                      '(2)
                      (jpt pt -3 -3 d)
                      (jpt pt -3 3 d)
                      (jpt pt -3 3 d)
                      (jpt pt 3 3 d)
                      (jpt pt 3 3 d)
                      (jpt pt 3 -3 d)
                      (jpt pt 3 -3 d)
                      (jpt pt -3 -3 d)
                    )
            )
          )
        )
        ((member code '(11 25))             
          (redraw)
          (setq loop nil)
        )
      )
    )
    ss
  )

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1明经币 +1 收起 理由
maiko + 1 赞一个!高手

查看全部评分

发表于 2020-7-30 17:04 | 显示全部楼层
本帖最后由 自贡黄明儒 于 2020-7-30 17:08 编辑

还是调用系统的刷子,代码可以少很多。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2020-7-30 17:16 来自手机 | 显示全部楼层
高人,下来用一下
发表于 2020-7-30 17:21 | 显示全部楼层
大神牛逼class
发表于 2020-7-30 18:59 | 显示全部楼层
自贡黄明儒 发表于 2020-7-30 17:04
还是调用系统的刷子,代码可以少很多。

不是lisp吧?
发表于 2020-7-30 21:16 | 显示全部楼层
感谢楼主分享,收下了
发表于 2020-7-31 12:15 | 显示全部楼层
感谢楼主的无私分享
发表于 2020-8-4 22:23 | 显示全部楼层
自贡黄明儒 发表于 2020-7-30 17:04
还是调用系统的刷子,代码可以少很多。

这个怎么玩的,大神
发表于 2020-8-6 11:08 | 显示全部楼层
牛逼大了。厉害
发表于 2020-8-7 23:11 | 显示全部楼层
自贡黄明儒 发表于 2020-7-30 17:04
还是调用系统的刷子,代码可以少很多。

能否给个程序?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2020-8-13 02:29 , Processed in 0.145365 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

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