找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1289|回复: 5

[求助] [LISP函数]:求助,我刚做的小程序 有bug望高手指点

[复制链接]
发表于 2009-7-1 21:59:57 | 显示全部楼层 |阅读模式

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

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

×
;我刚做了一个小程序,就是点取两点,生成矩形框。发现有两个问题,希望高手指点解决。问题见附图。


(defun c:rqtg()

(setvar "cmdecho" 0)
(setq d1 (getpoint "\n点取第一点: "))
(setq d2 (getpoint "\n点取第二点: "))       
(setq ww (getreal "\n宽度<2>: "))
(if (null ww) (setq ww 2))
(setq ww1 (/ ww 2))       
(setq ang_1 (angle d1 d2))
(setq d3 (polar d1 (+ pi ang_1) 1))
(setq d4 (polar d2 ang_1 1))

(setq ang_2 (angle d3 d4))

(setq pt1 (polar d3 (+ (/ pi 2) ang_2) ww1))
(setq pt2 (polar d3 (+ (+(/ pi 2) ang_2) pi) ww1))       
(setq pt3 (polar d4 (+ (/ pi 2) ang_2) ww1))
(setq pt4 (polar d4 (+(+ (/ pi 2) ang_2) pi) ww1))
(command "pline" pt1 pt3 pt4 pt2  "c")        ;完成图形

(prompt "\n画套管 命令:rqtg ")
(prompt "\n如果有什么BUG,请联系我:ljh19991220@163.com  ")

(prin1)        ;消除执行完成后所返回的nil
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2009-7-1 23:32:48 | 显示全部楼层
把捕捉关了试下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-7-2 15:35:10 | 显示全部楼层
(setq oldOSMODE (getvar "OSMODE"))
  (setvar "OSMODE" 0)
;
;正文
;

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

使用道具 举报

 楼主| 发表于 2009-7-2 22:02:32 | 显示全部楼层
楼上两位大哥,能解释下为什么吗?

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

使用道具 举报

发表于 2009-7-3 09:04:43 | 显示全部楼层
在绘制矩形前应关闭捕捉。

  1.   [FONT=courier new]
  2. (defun c:rqtg()
  3.   (setq os (getvar "osmode"));记录当前捕捉方式
  4.   (setvar "cmdecho" 0)
  5.   (setvar "osmode" 512)
  6.   ;这里设定了最近点捕捉,你可以根据需要改为其它捕捉
  7.   (setq d1 (getpoint "\n点取第一点: "))
  8.   (setq d2 (getpoint "\n点取第二点: " d1))
  9.   ;加了一个橡皮条,可以看清第二点的动态位置
  10.   (setq ww (getreal "\n宽度<2>: "))
  11.   (if (null ww) (setq ww 2))
  12.   (setq ww1 (/ ww 2))
  13.   (setq ang_1 (angle d1 d2))
  14.   (setq d3 (polar d1 (+ pi ang_1) 1))
  15.   (setq d4 (polar d2 ang_1 1))
  16.   (setq ang_2 (angle d3 d4))
  17.   (setq pt1 (polar d3 (+ (/ pi 2) ang_2) ww1))
  18.   (setq pt2 (polar d3 (+ (+(/ pi 2) ang_2) pi) ww1))
  19.   (setq pt3 (polar d4 (+ (/ pi 2) ang_2) ww1))
  20.   (setq pt4 (polar d4 (+(+ (/ pi 2) ang_2) pi) ww1))
  21.   (setvar "osmode" 0);在绘制矩形前取消捕捉,以避免绘制错误。
  22.   (command "pline" pt1 pt3 pt4 pt2 "c") ;完成图形
  23.   (setvar "osmode" os) ;恢复捕捉为初始状态
  24.   (prompt "\n画套管 命令:rqtg ")
  25.   (prompt "\n如果有什么BUG,请联系我:ljh19991220@163.com ")
  26. (  prin1) ;消除执行完成后所返回的nil
  27. )

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

使用道具 举报

发表于 2009-7-16 14:55:46 | 显示全部楼层
我觉得你用pline命令不如用rec那个画矩形的命令来的方便。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-19 02:02 , Processed in 0.419273 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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