bingchen 发表于 2006-5-9 20:47:00

[求助][5.09]各位帮看下为什么我写出来的得不到正确结果呀

<P>以下是我编写的程序代码,但是一运行,结果就不正确了呀</P>
<P>矩形中间的那个十字本应该是四条线的中点的连线,但加载后的结果不是这样,请各位帮我检查下原因呀</P>
<P>先谢谢了</P>
<P>;要求通过输入左下角点,矩形宽,矩形高 绘制一个中心带十字的矩形<BR>;需要的参数有:PA左下角点坐标,PB,PC,PD分别为右下,右上,左上<BR>;MP1,MP2,MP3,MP4分别为矩形各线的 各个中点坐标<BR>;WW为矩形宽,HH为矩形高<BR>(defun c:pbox(/ pa pb pc pd ww hh mp1 mp2 mp3 mp4)<BR>(setq pa (getpoint "输入左下角点的坐标:"))<BR>(setq ww (getdist pa"\n 输入矩形的宽:"))<BR>(setq hh (getdist pa "\n 输入矩形的高:"))<BR>(setq pb (polar pa 0 ww))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>(setq pc (polar pb (/ pi 2) hh))&nbsp;&nbsp;&nbsp;<BR>(setq pd (polar pc pi ww))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>(command "line" pa pb pc pd "c")<BR>(setq mp1 (polar pa 0 (/ ww 2)))<BR>(setq mp2 (polar pb (/ pi 2) (/ hh 2)))<BR>(setq mp3 (polar pd 0 (/ ww 2)))<BR>(setq mp4 (polar pa (/ pi 2) (/ hh 2)))&nbsp; </P>
<P>(command "line" mp1 mp3 "")<BR>(command "line" mp2 mp4 "")<BR>(prin1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P>
<P>)&nbsp; </P>

ZZXXQQ 发表于 2006-5-9 21:36:00

<P>这样改一下就行了。</P>
<P>(defun c:pbox (/ pa pb pc pd ww hh mp1 mp2 mp3 mp4)<BR><FONT color=#ff0000>(setvar "CMDECHO" 0)<BR>(setq oldos (getvar "OSMODE"))</FONT><BR><FONT color=#ff0000>(setvar "OSMODE" 0)</FONT><BR>(setq pa (getpoint "输入左下角点的坐标:"))<BR>(setq ww (getdist pa"\n 输入矩形的宽:"))<BR>(setq hh (getdist pa "\n 输入矩形的高:"))<BR>(setq pb (polar pa 0 ww))<BR>(setq pc (polar pb (/ pi 2) hh))<BR>(setq pd (polar pc pi ww))<BR>(command "line" pa pb pc pd "c")<BR>(setq mp1 (polar pa 0 (/ ww 2)))<BR>(setq mp2 (polar pb (/ pi 2) (/ hh 2)))<BR>(setq mp3 (polar pd 0 (/ ww 2)))<BR>(setq mp4 (polar pa (/ pi 2) (/ hh 2)))<BR>(command "line" mp1 mp3 "")<BR>(command "line" mp2 mp4 "")<BR><FONT color=#ff0000>(setvar "OSMODE" oldos)</FONT><BR><FONT color=#ff0000>(setvar "CMDECHO" 1)</FONT><BR>(prin1)<BR>)<BR></P>

SWAYWOOD 发表于 2006-5-9 21:40:00

;要求通过输入左下角点,矩形宽,矩形高 绘制一个中心带十字的矩形
;需要的参数有:PA左下角点坐标,PB,PC,PD分别为右下,右上,左上
;MP1,MP2,MP3,MP4分别为矩形各线的 各个中点坐标
;WW为矩形宽,HH为矩形高
(DEFUN c:pbox (/ pa pb pc pd ww hh mp1 mp2 mp3 mp4)
(SETQ os (GETVAR "osmode"))
(SETVAR "osmode" 0)
(SETQ pa (GETPOINT "输入左下角点的坐标:"))
(SETQ ww (GETDIST pa "\n 输入矩形的宽:"))
(SETQ hh (GETDIST pa "\n 输入矩形的高:"))
(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 mp1 (POLAR pa 0 (/ ww 2)))
(SETQ mp2 (POLAR pb (/ PI 2) (/ hh 2)))
(SETQ mp3 (POLAR pd 0 (/ ww 2)))
(SETQ mp4 (POLAR pa (/ PI 2) (/ hh 2)))
(COMMAND "line" mp1 mp3 "")
(COMMAND "line" mp2 mp4 "")
(SETVAR "osmode" os)
(PRINC)
)

bingchen 发表于 2006-5-10 08:30:00

<P>谢谢两位的指点呀</P>
<P>恩 请问下 我错在那里呢</P>
<P>OSMODE&nbsp;和&nbsp;CMDECHO 这两个变量是什么变量呢</P>
<P><FONT color=#ff0000>(setq oldos (getvar "OSMODE"))&nbsp; 这个有什么作用呢</FONT></P>
<P><FONT color=#ff0000></FONT>再次谢谢两位了</P>
<P>:)<BR></P>
<P>&nbsp;</P>

SWAYWOOD 发表于 2006-5-10 08:51:00

<P>osmode是关于捕捉的系统变量,在CAD里捕捉是优先的,所以要将其置0</P>
<P>cmdecho是回显变量,控制命令行是否回显</P>
<P><FONT color=#ff0000>(setq oldos (getvar "OSMODE"))是取得程序运行前的捕捉设置,运行完后要还原,就可以用(setvar "OSMODE" oldos)<BR></FONT></P>
<P><FONT color=#ff0000>我希望你自己能看看帮助,这些都很简单的</P></FONT>

bingchen 发表于 2006-5-10 09:03:00

<P>哦</P>
<P>多谢指点~</P>
<P>我会学着 多看帮助的</P>
<P>辛苦了</P>
页: [1]
查看完整版本: [求助][5.09]各位帮看下为什么我写出来的得不到正确结果呀