明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2120|回复: 7

[基础] “坐标网格”高手看看哪里的问题

[复制链接]
发表于 2009-12-12 23:33 | 显示全部楼层 |阅读模式

(defun c:zbwg()
  (setq os (getvar "osmode"))
  (setq zxzb(getpoint"输入左下角坐标:"))
  (setq yszb(getcorner zxzb "\n输入右上角坐标:")
 wgbl(getint"输入比例: 1:"))
  (setq xzeng (- (car yszb) (car zxzb))
 yzeng (- (cadr yszb) (cadr zxzb))
 wgjj (/ wgbl 10))
  (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 (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 (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 (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 (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)
    )

程序可以用,比如坐标输入1000,2000,-3600,-4700啦都可以,但是比如输入坐标19725800,4192600就会出错标注的内容不对,高手看看怎么回事

 楼主| 发表于 2009-12-12 23:37 | 显示全部楼层

!wznr  !wznr1的值都对呀,为什么标注出来的文字内容不对呢

 楼主| 发表于 2009-12-13 10:33 | 显示全部楼层

有人帮帮忙吗?谢谢

发表于 2009-12-13 11:18 | 显示全部楼层
本帖最后由 作者 于 2009-12-13 11:50:02 编辑

  1. (defun c:zbwg ()
  2. ;;;  (setq os (getvar "osmode"))
  3. ;;;  (setq zxzb (getpoint "输入左下角坐标:"))
  4. ;;;  (setq yszb (getcorner zxzb "\n输入右上角坐标:")
  5. ;;; wgbl (getint "输入比例: 1:")
  6. ;;;  )
  7. ;;;  (if (not wgbl) (setq wgbl 1))
  8.   (setq zxzb '(0.0 0.0)
  9. yszb '(19725800 4192600)
  10. wgbl 10000000
  11.   )
  12.   (setq xzeng (- (car yszb) (car zxzb))
  13. yzeng (- (cadr yszb) (cadr zxzb))
  14. wgjj  (/ wgbl 10.0)
  15.   )
  16.   (setq xwgs (fix (/ xzeng wgjj))
  17. ywgs (fix (/ yzeng wgjj))
  18.   )
  19.   (setq aa zxzb
  20. bb zxzb
  21.   )
  22.   (setq wzgd (* 3 (* 0.01 wgjj))
  23. wzpy (* 5 (* 0.01 wgjj))
  24.   )
  25.   (setvar "osmode" 0)
  26.   (repeat (+ 1 xwgs)
  27.     (setq pt1 aa)
  28.     (setq pt2 (polar pt1 (* pi 0.5) yzeng))
  29.     (command "line" pt1 pt2 "")
  30.     (setq wzpt1 (polar pt1 (* pi 1.5) wzpy)
  31.    wzpt2 (polar pt2 (* pi 0.5) wzpy)
  32.     )
  33.     (setq wznr (rtos  (fix (car wzpt1))))
  34.     (command "text" "j" "m" wzpt1 wzgd 0 wznr)
  35.     (command "text" "j" "m" wzpt2 wzgd 0 wznr)
  36.     (setq aa (polar aa 0 wgjj))
  37.   )
  38.   (repeat (+ 1 ywgs)
  39.     (setq pt3 bb)
  40.     (setq pt4 (polar pt3 0 xzeng))
  41.     (command "line" pt3 pt4 "")
  42.     (setq wzpt3 (polar pt3 pi wzpy)
  43.    wzpt4 (polar pt4 0 wzpy)
  44.     )
  45.     (setq wznr1 (rtos  (fix (cadr wzpt3))))
  46.     (command "text" "j" "m" wzpt3 wzgd 0 wznr1)
  47.     (command "text" "j" "m" wzpt4 wzgd 0 wznr1)
  48.     (setq bb (polar bb (* pi 0.5) wgjj))
  49.   )
  50.   (while (/= pt2 yszb)
  51.     (setq pt5 (polar yszb (* pi 1.5) yzeng))
  52.     (command "line" pt5 yszb "")
  53.     (setq wzpt1 (polar pt5 (* pi 1.5) wzpy)
  54.    wzpt2 (polar yszb (* pi 0.5) wzpy)
  55.     )
  56.     (setq wznr (rtos  (fix (car wzpt1))))
  57.     (command "text" "j" "m" wzpt1 wzgd 0 wznr)
  58.     (command "text" "j" "m" wzpt2 wzgd 0 wznr)
  59.     (setq pt2 yszb)
  60.   )
  61.   (while (/= pt4 yszb)
  62.     (setq pt6 (polar yszb pi xzeng))
  63.     (command "line" pt6 yszb "")
  64.     (setq wzpt3 (polar pt6 pi wzpy)
  65.    wzpt4 (polar yszb 0 wzpy)
  66.     )
  67.     (setq wznr1 (rtos  (fix (cadr wzpt3))))
  68.     (command "text" "j" "m" wzpt3 wzgd 0 wznr1)
  69.     (command "text" "j" "m" wzpt4 wzgd 0 wznr1)
  70.     (setq pt4 yszb)
  71.   )
  72.   (setq ab (* 10 (* 0.01 wgjj)))
  73.   (setq wkj (abs (sqrt (* 2 (expt ab 2)))))
  74.   (setq pt7 (polar zxzb (* pi 1.25) wkj)
  75. pt8 (polar yszb (* pi 0.25) wkj)
  76.   )
  77.   (command "rectang" pt7 pt8)
  78.   (setvar "osmode" os)
  79.   (princ)
  80. )
在写文本时,应将实数转换为字符串类型: (rtos  (fix (cadr wzpt3)))
 楼主| 发表于 2009-12-13 12:23 | 显示全部楼层
谢谢,我试一下
发表于 2010-1-29 00:52 | 显示全部楼层
版主xianaihua真好!谢谢
发表于 2010-4-8 11:47 | 显示全部楼层

该程序很好

就是能否把其改成标注的坐标数据前都带有X和Y

其次就是标注出来的数据改成都是整数

发表于 2022-9-14 15:07 | 显示全部楼层
学习参考一下,正想做一个这种!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-7 00:05 , Processed in 0.235670 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表