fengjian11 发表于 2009-12-12 23:33:00

“坐标网格”高手看看哪里的问题

<p>(defun c:zbwg()<br/>&nbsp; (setq os (getvar "osmode"))<br/>&nbsp; (setq zxzb(getpoint"输入左下角坐标:"))<br/>&nbsp; (setq yszb(getcorner zxzb "\n输入右上角坐标:")<br/>&nbsp;wgbl(getint"输入比例: 1:"))<br/>&nbsp; (setq xzeng (- (car yszb) (car zxzb))<br/>&nbsp;yzeng (- (cadr yszb) (cadr zxzb))<br/>&nbsp;wgjj (/ wgbl 10))<br/>&nbsp; (setq xwgs (fix(/ xzeng wgjj))<br/>&nbsp;ywgs (fix(/ yzeng wgjj)))<br/>&nbsp; (setq aa zxzb<br/>&nbsp;bb zxzb)<br/>&nbsp; (setq wzgd (* 3 (* 0.01 wgjj))<br/>&nbsp;wzpy (* 5 (* 0.01 wgjj)))<br/>&nbsp; (setvar "osmode" 0)<br/>&nbsp; (repeat (+ 1 xwgs)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq pt1 aa)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq pt2 (polar pt1 (* pi 0.5) yzeng))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command"line" pt1 pt2 "")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq wzpt1 (polar pt1 (* pi 1.5) wzpy)<br/>&nbsp;&nbsp;&nbsp;&nbsp; wzpt2 (polar pt2 (* pi 0.5) wzpy))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq wznr (fix(car wzpt1)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command"text""j""m" wzpt1 wzgd 0 wznr)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command"text""j""m" wzpt2 wzgd 0 wznr)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq aa (polar aa 0 wgjj))<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; (repeat (+ 1 ywgs)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq pt3 bb)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq pt4 (polar pt3 0 xzeng))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command"line" pt3 pt4 "")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq wzpt3 (polar pt3 pi wzpy)<br/>&nbsp;&nbsp;&nbsp;&nbsp; wzpt4 (polar pt4 0 wzpy))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq wznr1 (fix(cadr wzpt3)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command"text""j""m" wzpt3 wzgd 0 wznr1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command"text""j""m" wzpt4 wzgd 0 wznr1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq bb (polar bb (* pi 0.5) wgjj))<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; (while (/= pt2 yszb)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq pt5 (polar yszb (* pi 1.5) yzeng))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command"line" pt5 yszb "")<br/>&nbsp;(setq wzpt1 (polar pt5 (* pi 1.5) wzpy)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wzpt2 (polar yszb (* pi 0.5) wzpy))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq wznr (fix(car wzpt1)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command"text""j""m" wzpt1 wzgd 0 wznr)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command"text""j""m" wzpt2 wzgd 0 wznr)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq pt2 yszb)<br/>&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (while (/= pt4 yszb) <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq pt6 (polar yszb pi xzeng))<br/>&nbsp;(command"line" pt6 yszb "")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq wzpt3 (polar pt6 pi wzpy)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wzpt4 (polar yszb 0 wzpy))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq wznr1 (fix(cadr wzpt3)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command"text""j""m" wzpt3 wzgd 0 wznr1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command"text""j""m" wzpt4 wzgd 0 wznr1)<br/>&nbsp;(setq pt4 yszb)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp; (setq ab (* 10 (* 0.01 wgjj)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq wkj (abs(sqrt(* 2 (expt ab 2)))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq pt7 (polar zxzb (* pi 1.25) wkj)<br/>&nbsp;&nbsp;&nbsp;&nbsp; pt8 (polar yszb (* pi 0.25) wkj))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command"rectang" pt7 pt8)<br/>&nbsp;&nbsp; (setvar "osmode" os)<br/>(princ)<br/>&nbsp;&nbsp;&nbsp; )</p><p>程序可以用,比如坐标输入1000,2000,-3600,-4700啦都可以,但是比如输入坐标19725800,4192600就会出错标注的内容不对,高手看看怎么回事</p>

fengjian11 发表于 2009-12-12 23:37:00

<p>!wznr&nbsp; !wznr1的值都对呀,为什么标注出来的文字内容不对呢</p>

fengjian11 发表于 2009-12-13 10:33:00

<p>有人帮帮忙吗?谢谢</p><p></p>

xianaihua 发表于 2009-12-13 11:18:00

本帖最后由 作者 于 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)))

fengjian11 发表于 2009-12-13 12:23:00

谢谢,我试一下

xiewawa 发表于 2010-1-29 00:52:00

<strong><font face="Verdana" color="#61b713">版主xianaihua真好!谢谢</font></strong>

tuokang 发表于 2010-4-8 11:47:00

<p>该程序很好</p><p>就是能否把其改成标注的坐标数据前都带有X和Y</p><p>其次就是标注出来的数据改成都是整数</p>

guankuiwu 发表于 2022-9-14 15:07:19

学习参考一下,正想做一个这种!
页: [1]
查看完整版本: “坐标网格”高手看看哪里的问题