找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1078|回复: 10

[求助] [求助]:求教GRREAD的用法!斑竹教教我啊,eachy、xyp、aeo、wkai、狂刀.......

[复制链接]
发表于 2005-11-18 10:42:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
那位大侠能给我详细介绍一下GRREAD的用法,比帮助文件的更为详细的。因为帮助文件看的不是很懂,能有例子就更好了。例如如何响应鼠标左、右键,如何响应[ESC]等等。
请各位大侠不吝赐教啊!谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1个

财富等级: 恭喜发财

发表于 2005-11-19 00:18:45 | 显示全部楼层
给你一个我收藏的例程,你研究一下,命令zw

  1. (defun drawbox ()
  2.   (grdraw ll ul -1)
  3.   (grdraw ul ur -1 1)
  4.   (grdraw ur lr -1 1)
  5.   (grdraw lr ll -1 1)
  6.   (if (= mode 0)
  7.     (cenx)
  8.     (arrow)
  9.   )
  10. )
  11. (defun cenx ()
  12.   (grdraw x1 x2 -1)
  13.   (grdraw x3 x4 -1)
  14. )
  15. (defun arrow ()
  16.   (grdraw a1 a4 -1)
  17.   (grdraw a2 a4 -1)
  18.   (grdraw a3 a4 -1)
  19. )
  20. (defun newbox () ;_求各线段的端点,包括矩形、箭头和交叉X线
  21.   (setq deltay (* deltax aspect))
  22.   (setq        xcen (car center)
  23.         ycen (cadr center)
  24.   )
  25.   (setq        lx (- xcen deltax)
  26.         ux (+ xcen deltax)
  27.   )
  28.   (setq        ly (- ycen deltay)
  29.         uy (+ ycen deltay)
  30.   )
  31.   (setq        ll (list lx ly)
  32.         ul (list lx uy)
  33.   )
  34.   (setq        ur (list ux uy)
  35.         lr (list ux ly)
  36.   )
  37.   (setq        yp (+ ycen arm)
  38.         ym (- ycen arm)
  39.   )
  40.   (setq        a1 (list (- ux arm) yp)
  41.         a2 (list (- ux arm) ym)
  42.   )
  43.   (setq a3 (list (- ux arm arm) ycen))
  44.   (setq a4 (list ux ycen))
  45.   (setq        x1 (list (- xcen arm) ym)
  46.         x2 (list (+ xcen arm) yp)
  47.   )
  48.   (setq        x3 (list (- xcen arm) yp)
  49.         x4 (list (+ xcen arm) ym)
  50.   )
  51.   (drawbox)
  52. )
  53. (defun C:ZW (/ arm aspect deltax inp loop mode prev pt source)
  54.   (setq center (getvar "viewctr")) ;_屏幕中心
  55.   (setvar "lastpoint" (setq prev center))
  56.   (setq
  57.     aspect (/ (cadr (setq aspect (getvar "screensize"))) (car aspect))
  58.   )
  59.   (setq deltax (* 0.25 (getvar "viewsize"))) ;_当前窗口大小(绘图单位)
  60.   (setq        arm  (* 0.1 deltax)
  61.         mode 0
  62.         loop t
  63.   )
  64.   (newbox)
  65.   (while loop
  66.     (setq inp (grread t)) ;_返回当前光标坐标
  67.     (setq source (car inp)
  68.           pt         (cadr inp)
  69.     )
  70.     (cond ((= source 3) ;_source=3表示单击左键
  71.            (cenx)
  72.            (arrow)
  73.            (setq mode (- 1 mode))
  74.            (setvar "lastpoint" center)
  75.           )
  76.           ((= source 5)
  77.            (if (or (/= (car prev) (car pt))
  78.                    (/= (cadr prev) (cadr pt))
  79.                )
  80.              (progn
  81.                (if (= mode 0)
  82.                  (setq center pt)
  83.                  (setq deltax (+ deltax (- (car pt) (car prev))))
  84.                )
  85.                (setq prev pt)
  86.                (drawbox)
  87.                (newbox)
  88.              )
  89.            )
  90.           )
  91.           ((or (and (= source 6) (= pt 0))
  92.                (and (= source 2)
  93.                     (or (= pt 13) (= pt 32))
  94.                )
  95.            )
  96.            (drawbox)
  97.            (command "zoom" "w" ll ur)
  98.            (setq loop nil)
  99.           )
  100.           (t
  101.            (drawbox)
  102.            (setq loop nil
  103.                  a    "^cancel"
  104.            )
  105.           )
  106.     )
  107.   )
  108. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-19 11:52:05 | 显示全部楼层
谢谢2楼的,希望其他高手也能传授一点啊!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2005-11-19 12:06:41 | 显示全部楼层
有同感,有些东西看说明总是糊里糊涂的,希望高手解说一下.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-19 14:34:51 | 显示全部楼层
这里还有一个:

  1.   [FONT=courier new]
  2. (defun c:cs ()
  3.   (command "text" (cadr (grread t 1 0)) "300" "0" "test") ;先生成文字
  4.   (setq YH_textname (entlast))
  5.   (while (= (car (setq YH_mouse (grread t 1 0))) 5)
  6.     (setq YH_gettext (entget YH_textname))
  7.     (setq YH_textpoint (cadr YH_mouse))
  8.     (setq YH_gettext
  9.            (subst (cons 10 YH_textpoint)
  10.                   (assoc 10 YH_gettext)
  11.                   YH_gettext
  12.            )
  13.     )
  14.     (entmod YH_gettext)
  15.   )
  16.   (princ)
  17. )

  18.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-19 20:57:10 | 显示全部楼层
学习中。。
这里的高手真多
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-19 22:01:07 | 显示全部楼层
;;;随机云图线
  1. [FONT=courier new](load "xyp_lib.vlx")
  2. ;;;随机云图线
  3. (Defun C:test093 (/ ARC_DIST pte pts ptn)
  4.   (CMDLA0)
  5.   (MKLA "云图线" 100)
  6.   (setq        NO1 (UREAL 1 "" "\n旋长" NO1)
  7.         rad (UREAL 1 "" "\n弧心角" 150)
  8.         pte (getpoint "\n选择云的起点 : ")
  9.   )
  10.   (if pte
  11.     (progn
  12.       (setq pts pte)
  13.       (Command "_.pline" pte "_a" "_a" rad)
  14.     )
  15.   )
  16.   (While pte
  17.     (setq scal (/ (sjs 200) 100.0))
  18.     (if        (or (< scal 0.2) (> scal 1.8))
  19.       (setq scal 1)
  20.     )
  21.     (setq arc_dist (* NO1 scal)
  22.           ptn           (GrRead 1)
  23.           READTYP  (car ptn)
  24.     )
  25.     (if        (or (= 5 READTYP) (= READTYP 3))
  26.       (progn
  27.         (setq ptn (cadr ptn))
  28.         (If (or (> (Distance pte ptn) ARC_DIST) (= READTYP 3))
  29.           (Progn
  30.             (Command ptn "_a" rad)
  31.             (Setq pte ptn)
  32.           )
  33.         )
  34.         (If (> (Distance pte ptn) (Distance pts ptn))
  35.           (Progn
  36.             (Command pts "_cl")
  37.             (Setq pte Nil)
  38.           )
  39.         )
  40.       )
  41.     )
  42.   )
  43.   (CMDLA1)
  44. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-20 19:05:49 | 显示全部楼层
又学到了不少东西
快来消化一下
谢谢了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2005-11-21 00:24:27 | 显示全部楼层
其实,我也搞不懂这个函数,所以我就用一些现成的例子修改成自己的程序。
请问5楼的似水无痕,下面这个程序在运行时,如果使用了透明命令如pan,程序就退出了,应该怎么办?
(defun c:cs ()
  (command "text" (cadr (grread t 5 1)) "300" "0" "test") ;先生成文字
  (setq YH_textname (entlast))
  (while (= (car (setq YH_mouse (grread t 5 1))) 5)
    (setq YH_gettext (entget YH_textname))
    (setq YH_textpoint (cadr YH_mouse))
    (setq YH_gettext
           (subst (cons 10 YH_textpoint) (assoc 10 YH_gettext) YH_gettext)
    )(entmod YH_gettext)
  )
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-21 02:22:53 | 显示全部楼层
grread函数也有一些不足的地方,就像上面提到的不能加入透明命令等等。
也有一些老lisper写过调用move或insert等cad命令来进行预演的程序,思路就是
预加入,拖动到合适区域(大小,角度等),然后删除预加物,再正式操作。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-21 07:17:45 | 显示全部楼层
最初由 yxpxa 发布
[B]其实,我也搞不懂这个函数,所以我就用一些现成的例子修改成自己的程序。
请问5楼的似水无痕,下面这个程序在运行时,如果使用了透明命令如pan,程序就退出了,应该怎么办?
(defun c:cs ()
  (command "text" (c... [/B]


改一下while出口设置,比如用关键字
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-28 22:12 , Processed in 0.299895 second(s), 50 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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