“坐标网格”高手看看哪里的问题
<p>(defun c:zbwg()<br/> (setq os (getvar "osmode"))<br/> (setq zxzb(getpoint"输入左下角坐标:"))<br/> (setq yszb(getcorner zxzb "\n输入右上角坐标:")<br/> wgbl(getint"输入比例: 1:"))<br/> (setq xzeng (- (car yszb) (car zxzb))<br/> yzeng (- (cadr yszb) (cadr zxzb))<br/> wgjj (/ wgbl 10))<br/> (setq xwgs (fix(/ xzeng wgjj))<br/> ywgs (fix(/ yzeng wgjj)))<br/> (setq aa zxzb<br/> bb zxzb)<br/> (setq wzgd (* 3 (* 0.01 wgjj))<br/> wzpy (* 5 (* 0.01 wgjj)))<br/> (setvar "osmode" 0)<br/> (repeat (+ 1 xwgs)<br/> (setq pt1 aa)<br/> (setq pt2 (polar pt1 (* pi 0.5) yzeng))<br/> (command"line" pt1 pt2 "")<br/> (setq wzpt1 (polar pt1 (* pi 1.5) wzpy)<br/> wzpt2 (polar pt2 (* pi 0.5) wzpy))<br/> (setq wznr (fix(car wzpt1)))<br/> (command"text""j""m" wzpt1 wzgd 0 wznr)<br/> (command"text""j""m" wzpt2 wzgd 0 wznr)<br/> (setq aa (polar aa 0 wgjj))<br/> )<br/> (repeat (+ 1 ywgs)<br/> (setq pt3 bb)<br/> (setq pt4 (polar pt3 0 xzeng))<br/> (command"line" pt3 pt4 "")<br/> (setq wzpt3 (polar pt3 pi wzpy)<br/> wzpt4 (polar pt4 0 wzpy))<br/> (setq wznr1 (fix(cadr wzpt3)))<br/> (command"text""j""m" wzpt3 wzgd 0 wznr1)<br/> (command"text""j""m" wzpt4 wzgd 0 wznr1)<br/> (setq bb (polar bb (* pi 0.5) wgjj))<br/> )<br/> (while (/= pt2 yszb)<br/> (setq pt5 (polar yszb (* pi 1.5) yzeng))<br/> (command"line" pt5 yszb "")<br/> (setq wzpt1 (polar pt5 (* pi 1.5) wzpy)<br/> wzpt2 (polar yszb (* pi 0.5) wzpy))<br/> (setq wznr (fix(car wzpt1)))<br/> (command"text""j""m" wzpt1 wzgd 0 wznr)<br/> (command"text""j""m" wzpt2 wzgd 0 wznr)<br/> (setq pt2 yszb)<br/> )<br/> (while (/= pt4 yszb) <br/> (setq pt6 (polar yszb pi xzeng))<br/> (command"line" pt6 yszb "")<br/> (setq wzpt3 (polar pt6 pi wzpy)<br/> wzpt4 (polar yszb 0 wzpy))<br/> (setq wznr1 (fix(cadr wzpt3)))<br/> (command"text""j""m" wzpt3 wzgd 0 wznr1)<br/> (command"text""j""m" wzpt4 wzgd 0 wznr1)<br/> (setq pt4 yszb)<br/> )<br/> (setq ab (* 10 (* 0.01 wgjj)))<br/> (setq wkj (abs(sqrt(* 2 (expt ab 2)))))<br/> (setq pt7 (polar zxzb (* pi 1.25) wkj)<br/> pt8 (polar yszb (* pi 0.25) wkj))<br/> (command"rectang" pt7 pt8)<br/> (setvar "osmode" os)<br/>(princ)<br/> )</p><p>程序可以用,比如坐标输入1000,2000,-3600,-4700啦都可以,但是比如输入坐标19725800,4192600就会出错标注的内容不对,高手看看怎么回事</p> <p>!wznr !wznr1的值都对呀,为什么标注出来的文字内容不对呢</p> <p>有人帮帮忙吗?谢谢</p><p></p> 本帖最后由 作者 于 2009-12-13 11:50:02 编辑(defun c:zbwg ()
;;;(setq os (getvar "osmode"))
;;;(setq zxzb (getpoint "输入左下角坐标:"))
;;;(setq yszb (getcorner zxzb "\n输入右上角坐标:")
;;; wgbl (getint "输入比例: 1:")
;;;)
;;;(if (not wgbl) (setq wgbl 1))
(setq zxzb '(0.0 0.0)
yszb '(19725800 4192600)
wgbl 10000000
)
(setq xzeng (- (car yszb) (car zxzb))
yzeng (- (cadr yszb) (cadr zxzb))
wgjj(/ wgbl 10.0)
)
(setq xwgs (fix (/ xzeng wgjj))
ywgs (fix (/ yzeng wgjj))
)
(setq aa zxzb
bb zxzb
)
(setq wzgd (* 3 (* 0.01 wgjj))
wzpy (* 5 (* 0.01 wgjj))
)
(setvar "osmode" 0)
(repeat (+ 1 xwgs)
(setq pt1 aa)
(setq pt2 (polar pt1 (* pi 0.5) yzeng))
(command "line" pt1 pt2 "")
(setq wzpt1 (polar pt1 (* pi 1.5) wzpy)
wzpt2 (polar pt2 (* pi 0.5) wzpy)
)
(setq wznr (rtos(fix (car wzpt1))))
(command "text" "j" "m" wzpt1 wzgd 0 wznr)
(command "text" "j" "m" wzpt2 wzgd 0 wznr)
(setq aa (polar aa 0 wgjj))
)
(repeat (+ 1 ywgs)
(setq pt3 bb)
(setq pt4 (polar pt3 0 xzeng))
(command "line" pt3 pt4 "")
(setq wzpt3 (polar pt3 pi wzpy)
wzpt4 (polar pt4 0 wzpy)
)
(setq wznr1 (rtos(fix (cadr wzpt3))))
(command "text" "j" "m" wzpt3 wzgd 0 wznr1)
(command "text" "j" "m" wzpt4 wzgd 0 wznr1)
(setq bb (polar bb (* pi 0.5) wgjj))
)
(while (/= pt2 yszb)
(setq pt5 (polar yszb (* pi 1.5) yzeng))
(command "line" pt5 yszb "")
(setq wzpt1 (polar pt5 (* pi 1.5) wzpy)
wzpt2 (polar yszb (* pi 0.5) wzpy)
)
(setq wznr (rtos(fix (car wzpt1))))
(command "text" "j" "m" wzpt1 wzgd 0 wznr)
(command "text" "j" "m" wzpt2 wzgd 0 wznr)
(setq pt2 yszb)
)
(while (/= pt4 yszb)
(setq pt6 (polar yszb pi xzeng))
(command "line" pt6 yszb "")
(setq wzpt3 (polar pt6 pi wzpy)
wzpt4 (polar yszb 0 wzpy)
)
(setq wznr1 (rtos(fix (cadr wzpt3))))
(command "text" "j" "m" wzpt3 wzgd 0 wznr1)
(command "text" "j" "m" wzpt4 wzgd 0 wznr1)
(setq pt4 yszb)
)
(setq ab (* 10 (* 0.01 wgjj)))
(setq wkj (abs (sqrt (* 2 (expt ab 2)))))
(setq pt7 (polar zxzb (* pi 1.25) wkj)
pt8 (polar yszb (* pi 0.25) wkj)
)
(command "rectang" pt7 pt8)
(setvar "osmode" os)
(princ)
)
在写文本时,应将实数转换为字符串类型: (rtos(fix (cadr wzpt3)))
谢谢,我试一下 <strong><font face="Verdana" color="#61b713">版主xianaihua真好!谢谢</font></strong> <p>该程序很好</p><p>就是能否把其改成标注的坐标数据前都带有X和Y</p><p>其次就是标注出来的数据改成都是整数</p> 学习参考一下,正想做一个这种!
页:
[1]