明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 590|回复: 5

[提问] 如何更改群码表示的坐标精度[已解决]

[复制链接]
发表于 2020-12-15 09:36:59 | 显示全部楼层 |阅读模式
本帖最后由 apcnb 于 2020-12-15 13:49 编辑

各位大佬,我写了一个获取多段线各顶点坐标,然后输出到EXCEL的小插件。用的方法是获取多段线各10群码,然后读取10群码后的坐标值写入EXCEL文件。但发现多段线的10群码后的坐标值只是保留了两位小数,最燃最后用rtos转字符串时保留3位小数,但由于本身只有两位小数,所以最后一位都为0。而我想最终取得的坐标值是保留3位小数的。不知道应如何修改,请教各位大佬。
发表于 2020-12-15 10:02:21 | 显示全部楼层
你的码呢``
 楼主| 发表于 2020-12-15 10:45:29 | 显示全部楼层
  1. (prompt "<<zbdc>>获取多段线上各顶点坐标,并导出Excel表")
  2. (defun c:zbdc ()
  3.   (setq en (ssget '((0 . "*POLYLINE"))))
  4.   (setq        i     0
  5.         j     1
  6.         filex (getfiled "指定输出文件路径" "" "xls" 1)
  7.         file  (open filex "w")
  8.   )
  9.   (repeat (sslength en)
  10.     (setq ent (entget (ssname en i))
  11.           p   (cdr (assoc 10 ent))
  12.     )
  13.     (write-line (strcat "线段" (itoa (1+ i))) file)
  14.     (write-line "点号\tX\tY" file)
  15.     (entmake
  16.       (list '(0 . "TEXT")
  17.             (cons 1 (strcat (itoa (1+ i)) "#线段"))
  18.             (cons 7 "宋体")
  19.             (cons 10 (list (car p) (- (cadr p) 2)))
  20.             (cons 40 2)
  21.       )
  22.     )
  23.     (foreach ee        ent
  24.       (if (= (car ee) 10)
  25.        
  26.         (progn
  27.           (setq ee (cdr ee))
  28.           (setq y (cadr ee)
  29.                 x (car ee)
  30.                )
  31.           (entmake
  32.             (list '(0 . "TEXT")
  33.               (cons 1 (itoa j))
  34.               (cons 10 (list (+ (car p) 0.01) (- (cadr p) 0.01)))
  35.               (cons 7 "宋体")
  36.               (cons 40 2)
  37.               (cons 8 "编号")
  38.               (cons 62 3)
  39.                   )
  40.             )
  41.           (write-line
  42.             (strcat (itoa j)
  43.                     "\t"
  44.                     (rtos y 2 3)
  45.                     "\t"
  46.                     (rtos x 2 3)
  47.                   )
  48.             file
  49.             )
  50.           (setq j (1+ j))
  51.         )
  52.       )
  53.     )
  54.     (setq i (1+ i))
  55.   )
  56.   (close file)
  57.   (prin1)
  58. )
 楼主| 发表于 2020-12-15 10:47:45 | 显示全部楼层

多段线:
((-1 . <图元名: 22c72e90c70>) (0 . "LWPOLYLINE") (330 . <图元名: 22c72e919f0>) (5 . "277") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbPolyline") (90 . 3) (70 . 0) (43 . 0.0) (38 . 0.0) (39 . 0.0) (10 2593.55 1915.12) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 3195.11 1905.37) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 3582.06 2220.58) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (210 0.0 0.0 1.0))

这个多段线的10码只保留了2为小数。如何才能取到3位小数的呢?
发表于 2020-12-15 12:31:56 | 显示全部楼层
不关组码的事,把这个系统变量设一下:(setvar "dimzin" 0)     保留3位数不能是0 的吗?不信你自己看左下角的坐标值算算
 楼主| 发表于 2020-12-15 13:49:50 | 显示全部楼层
start4444 发表于 2020-12-15 12:31
不关组码的事,把这个系统变量设一下:(setvar "dimzin" 0)     保留3位数不能是0 的吗?不信你自己看左下 ...

果然,谢谢大佬解答~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-17 11:42 , Processed in 0.477490 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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