查看单个帖子
旧 2009-04-28, 01:53 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】我的lisp程序为什么执行的不正确啊

我的lisp程序为什么执行的不正确啊
www.dimcax.com
我的lisp程序为什么执行的不正确啊
defun cbox(/ pa pb pc pd ww hh mp1 mp2 mp3 mp4)
;(setvar "cmdecho" 0)
;(setvar "blipmode" 0)
;以下 pa、ww、hh 值须由使用者输入
(setq pa (getpoint "enter left/low point:"))
(setq ww (getdist pa "\nwidth:"))
(setq hh (getdist pa "\nheight:"))
;以下pb、pc、pd值须由程序依据pa、ww、hh求出
(setq pb (polar pa 0 ww))
(setq pc (polar pb (/ pi 2) hh))
(setq pd (polar pc pi ww))
;以下依据 pa、pb、pc、pd 点画矩形
(command "pline" pa pb pc pd "c")
;以下mp1、mp2、mp3、mp4值须由程序依据pa、ww、hh
;& pb、pc、pd 值求出

(setq mp1 (polar pa (/ pi 2) (/ hh 2)))
(setq mp2 (polar pb (/ pi 2) (/ hh 2)))
(setq mp3 (polar pa 0 (/ ww 2)))
(setq mp4 (polar pa (/ pi 2) (/ hh 2)))
(command "circle" mp1 20)
(command "circle" mp3 30)
(prin1)
(prompt "********** << cbox >> **********")
(prin1)
)
我想在中点画圆,却在端点啊,这是为什么啊


那个帮我看看啊,是什么原因啊??
re:我的lisp程序為什麼執行的不正確啊
您忘了处理捕捉所产生的效应了!
re:re:我的lisp程序為什麼執行的不正確啊
re:我的lisp程序為什麼執行的不正確啊 :
您忘了处理捕捉所产生的效应了!
那该怎么办啊

我知道了啊,看来你是一位高手啊,我要向你学习学习啊
关掉对象捕捉就可以了啊
是不是这样啊

....
(setq mp4 (polar pa (/ pi 2) (/ hh 2)))
(setvar "osmode" 0) ; check sysvar osmode
(command "circle" mp1 20)
....

图片:

你的程序在使用前要求出捕捉的值,后把它关闭,画完后恢复原值
(defun cbox(/ pa pb pc pd ww hh mp1 mp2 mp3 mp4)
(setq os (getvar "osmode") cm (getvar "cmdecho"))
(setvar "cmdecho" 0) ;要关闭捕捉
(setvar "cmdecho" 1)
(setq pa (getpoint "输入左下角的点:"))
(setq ww (getdist pa "\n宽(x):"))
(setq hh (getdist pa "\n高(y):"))
(setq pb (polar pa 0 ww))
(setq pc (polar pb (/ pi 2) hh))
(setq pd (polar pc pi ww))
(command "pline" pa pb pc pd "c")
(setq p1 (polar pa 0 (/ ww 2.0)) p2 (polar pd 0 (/ ww 2.0)))
(command "circle" p1 "d" 20)
(command "circle" p2 "d" 30)
(prin1)
(prompt "********** << cbox >> **********")
(setvar "osmode" os)
(setvar "cmdecho" cm)
(prin1)
)
gbg

我也不太清楚。
从上述看,
不应该这样的。
请高人普及一下!
技术员

;;;;error operater for chain program
(defun with_error (msg)
(defun *error* (s)
(if old_error (setq *error* old_error))
(princ)
)
(if msg
(alert (strcat "\n这么忙还打断您,真是不好意思!"
"\n"
"\n\n"
msg
)
)
)
(if rf_sset (command "erase" rf_sset ""))
(if old_cmde (setvar "cmdecho" old_cmde))
(if old_snap (setvar "osmode" old_snap))
(if old_high (setvar "highlight" old_high))
(command "undo" "e")
(if msg (command "undo" "1"))
(exit)
)
;;;;;var_value saving program
(defun save_var ()
(setq old_cmde (getvar "cmdecho" ))
(setq old_snap (getvar "osmode" ))
(setq old_high (getvar "highlight" ))
)
主程序快结速时插入
(if old_cmde (setvar "cmdecho" old_cmde))
(if old_snap (setvar "osmode" old_snap))
(if old_high (setvar "highlight" old_high))
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)