![]() |
【转帖】我的lisp程序为什么执行的不正确啊
我的lisp程序为什么执行的不正确啊
www.dimcax.com 我的lisp程序为什么执行的不正确啊 defun c:pbox(/ 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 "********** << c:pbox >> **********") (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 c:pbox(/ 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 "********** << c:pbox >> **********") (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)) |
| 所有的时间均为北京时间。 现在的时间是 06:00 PM. |