明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1751|回复: 4

[求助]关于grread函数疑惑?请帮忙看看,谢谢!

[复制链接]
发表于 2009-4-15 08:38:00 | 显示全部楼层 |阅读模式

在这个程序中,不用红色表示的那两句,右键可以正常退出,

要是用上了,右键将按出错退出,不知原因何在……?

请大家给指点一下,非常感谢!

(defun c:test()
(command "SHORTCUTMENU" 2 )
(command "text" (cadr (setq mouse (grread t 5 0))) 300 0 "拖拽测试") ;在当前鼠标位置生;成一个文字 
;(command "zoom" "c" (cadr mouse) "2000")
 
(setq entd (entget (entlast))) ;取得文字的图元资料
(setq mouse (grread mouse 7 0))
(while (= (car mouse) 5)  ;点击左键退出循环,即退出拖拽状态

(setq mouse (grread mouse 7 0))
(setq pt (cadr mouse)) ;取得鼠标当前位置坐标
 
 ;(setq ptx(car pt))
 ;(print ptx)
 
 (print (car mouse))
 
(if (= (car mouse) 25)
   (progn
     (princ "\n右键退出")
     (entdel (cdr(assoc -1 entd))))
   (progn
     (setq entd (subst (cons 10 pt) (assoc 10 entd) entd)) ;替换文字插入点坐标 
     (entmod entd);更新文字数据   
   )
))  
(princ) ;静默退出 
)

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2009-4-15 09:47:00 | 显示全部楼层
本帖最后由 作者 于 2009-4-15 9:53:49 编辑


(if (or (= (car mouse) 25) (= (car mouse) 12));最好写成这样
   (progn
     (princ "\n右键退出")
     (entdel (cdr(assoc -1 entd))))
   (progn
      (setq ptx(car pt))
      (print ptx)

  
      (setq entd (subst (cons 10 pt) (assoc 10 entd) entd)) ;替换文字插入点坐标 
     (entmod entd);更新文字数据   
   )
)

应该这样,因为如果按鼠标右键所返回的mouse是这样的(25 xxx)而左键是(3 (x y z))所以如果是右键那(CADR (MOUSE))返回PT的是XXX,而不是表,再调用(CAR PT)就会失败。

 楼主| 发表于 2009-4-15 11:44:00 | 显示全部楼层
本帖最后由 作者 于 2009-4-15 11:57:03 编辑

谢谢你的再次帮助,根据你的提示,我把那句改成:

(if (/= (car mouse) 25) (setq ptx(car pt)))就成了,非常感谢……

本帖子中包含更多资源

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

x
发表于 2009-4-15 21:17:00 | 显示全部楼层
谢!!!!
发表于 2009-4-22 16:11:00 | 显示全部楼层
顶好人
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-9-22 04:09 , Processed in 0.145097 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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