feng582304 发表于 2012-3-5 22:50:33

用grread代替getkword

我觉得用grread动态模拟,如果做得精细一点的话,完成代替getkword和自定义菜单,而且还可以做得很友好哦!
(纯属个人突发奇想……)
;---------------------------------------------------------------;
;动态选项(feng:jn:grread)返回选项'(梁 柱 门 窗);
;---------------------------------------------------------------;
(defun feng:jn:grread ( po / p1 ang z l c m class *ERROR* size )
(defun *ERROR* (msg)
    (redraw)
    )
(princ "\n梁-L\t柱-Z\t窗-C\t门-M:")
(while (/= (car (setq p1 (grread t 12 1))) 3)
    (setq size (/ (getvar "viewsize") 8000))
    (if (= (car p1) 5)
      (progn
(setq ang (angle po (setq p1 (last p1)))
      z (MAPCAR '(LAMBDA (x) (MAPCAR '+ (MAPCAR '(LAMBDA (y) (* size y)) x) p1)) '((-150 150 0) (150 150 0) (150 150 0) (-150 -150 0) (-150 -150 0) (150 -150 0)))
      l (MAPCAR '(LAMBDA (x) (MAPCAR '+ (MAPCAR '(LAMBDA (y) (* size y)) x) p1)) '((-150 150 0) (-150 -150 0) (-150 -150 0) (150 -150 0)))
      c (MAPCAR '(LAMBDA (x) (MAPCAR '+ (MAPCAR '(LAMBDA (y) (* size y)) x) p1)) '((-150 150 0) (150 150 0) (-150 150 0) (-150 -150 0) (-150 -150 0) (150 -150 0)))
      m (MAPCAR '(LAMBDA (x) (MAPCAR '+ (MAPCAR '(LAMBDA (y) (* size y)) x) p1)) '((-150 150 0) (-150 -150 0) (-150 150 0) (0 -150 0) (0 -150 0) (150 150 0) (150 150 0) (150 -150 0)))
      )
(redraw)
(GRVECS (list 6 (MAPCAR '(LAMBDA (x y) (+ (* x size) y)) '(-1000 0 0) po)
          (MAPCAR '(LAMBDA (x y) (+ (* x size) y)) '(1000 0 0) po)
          (MAPCAR '(LAMBDA (x y) (+ (* x size) y)) '(0 -1000 0) po)
          (MAPCAR '(LAMBDA (x y) (+ (* x size) y)) '(0 1000 0) po)
          )
    )
(cond
    ((<= 0 ang (/ pi 2)) (GRVECS (cons 1 l)) (setq class "梁"))
    ((< (/ pi 2) ang pi) (GRVECS (cons 2 z)) (setq class "柱"))
    ((<= pi ang (* pi 1.5)) (GRVECS (cons 3 c)) (setq class "窗"))
    ((< (* pi 1.5) ang (* 2 pi)) (GRVECS (cons 4 m)) (setq class "门"))
    )
)
      )
    )
(REDRAW)
class
)

cabinsummer 发表于 2012-3-6 05:27:13

参见我的帖子"动态基准符号"

LLXXZZ 发表于 2012-3-6 12:33:08

grread 比较吃内存吧?!

skynoon 发表于 2012-3-6 20:41:22

对于grread一直没吃透

feng582304 发表于 2012-3-6 23:27:18

cabinsummer 发表于 2012-3-6 05:27 static/image/common/back.gif
参见我的帖子"动态基准符号"

我的出发点:在执行命令时不用老去看命令行的提示,直接在屏幕上选,就像自定义快捷菜单一样,而且界面还以更随意一些。
我想请教一下版主,如果全用GRVECS模拟出来的话,能不能做出来,因为我觉得创建一个实体对象,然后循环去修改属性的话,真的就像LLXXZZ所说的,比较吃内存。我做了一个grread模拟阵列,对象一多就有点卡的迹像。

cabinsummer 发表于 2012-3-7 22:03:00

feng582304 发表于 2012-3-6 23:27 static/image/common/back.gif
我的出发点:在执行命令时不用老去看命令行的提示,直接在屏幕上选,就像自定义快捷菜单一样,而且界面还 ...

GRVECS不能被选择

江湖远人 发表于 2012-3-18 08:50:47

初学,收藏了

dengyaochao 发表于 2023-5-19 09:50:48

刚学习,收藏一下
页: [1]
查看完整版本: 用grread代替getkword