明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3860|回复: 7

用grread代替getkword

[复制链接]
发表于 2012-3-5 22:50:33 | 显示全部楼层 |阅读模式
我觉得用grread动态模拟,如果做得精细一点的话,完成代替getkword和自定义菜单,而且还可以做得很友好哦!
(纯属个人突发奇想……)
  1. ;---------------------------------------------------------------;
  2. ;动态选项  (feng:jn:grread)  返回选项'(梁 柱 门 窗)  ;
  3. ;---------------------------------------------------------------;
  4. (defun feng:jn:grread ( po / p1 ang z l c m class *ERROR* size )
  5.   (defun *ERROR* (msg)
  6.     (redraw)
  7.     )
  8.   (princ "\n梁-L\t柱-Z\t窗-C\t门-M:")
  9.   (while (/= (car (setq p1 (grread t 12 1))) 3)
  10.     (setq size (/ (getvar "viewsize") 8000))
  11.     (if (= (car p1) 5)
  12.       (progn
  13.   (setq ang (angle po (setq p1 (last p1)))
  14.         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)))
  15.         l (MAPCAR '(LAMBDA (x) (MAPCAR '+ (MAPCAR '(LAMBDA (y) (* size y)) x) p1)) '((-150 150 0) (-150 -150 0) (-150 -150 0) (150 -150 0)))
  16.         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)))
  17.         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)))
  18.         )
  19.   (redraw)
  20.   (GRVECS (list 6 (MAPCAR '(LAMBDA (x y) (+ (* x size) y)) '(-1000 0 0) po)
  21.           (MAPCAR '(LAMBDA (x y) (+ (* x size) y)) '(1000 0 0) po)
  22.           (MAPCAR '(LAMBDA (x y) (+ (* x size) y)) '(0 -1000 0) po)
  23.           (MAPCAR '(LAMBDA (x y) (+ (* x size) y)) '(0 1000 0) po)
  24.           )
  25.     )
  26.   (cond
  27.     ((<= 0 ang (/ pi 2)) (GRVECS (cons 1 l)) (setq class "梁"))
  28.     ((< (/ pi 2) ang pi) (GRVECS (cons 2 z)) (setq class "柱"))
  29.     ((<= pi ang (* pi 1.5)) (GRVECS (cons 3 c)) (setq class "窗"))
  30.     ((< (* pi 1.5) ang (* 2 pi)) (GRVECS (cons 4 m)) (setq class "门"))
  31.     )
  32.   )
  33.       )
  34.     )
  35.   (REDRAW)
  36.   class
  37.   )

点评

想法不错,加油...  发表于 2012-3-7 22:14

评分

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

查看全部评分

发表于 2012-3-6 05:27:13 来自手机 | 显示全部楼层
参见我的帖子"动态基准符号"
发表于 2012-3-6 12:33:08 | 显示全部楼层
grread 比较吃内存吧?!
发表于 2012-3-6 20:41:22 | 显示全部楼层
对于grread一直没吃透
 楼主| 发表于 2012-3-6 23:27:18 | 显示全部楼层
cabinsummer 发表于 2012-3-6 05:27
参见我的帖子"动态基准符号"

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

点评

根据GRVECS画好的菜单,由鼠标的选择位置坐标来判断用户选择的何种菜单选项!  发表于 2012-3-7 22:23
这个就需要精心设计,设计好了,GRVECS可以模拟画出任何东西,包括写文字,!  发表于 2012-3-7 22:20
发表于 2012-3-7 22:03:00 | 显示全部楼层
feng582304 发表于 2012-3-6 23:27
我的出发点:在执行命令时不用老去看命令行的提示,直接在屏幕上选,就像自定义快捷菜单一样,而且界面还 ...

GRVECS不能被选择
发表于 2012-3-18 08:50:47 | 显示全部楼层
初学,收藏了
发表于 2023-5-19 09:50:48 | 显示全部楼层
刚学习,收藏一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 19:06 , Processed in 0.157636 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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