apcnb 发表于 2020-12-15 09:36:59

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

本帖最后由 apcnb 于 2020-12-15 13:49 编辑

各位大佬,我写了一个获取多段线各顶点坐标,然后输出到EXCEL的小插件。用的方法是获取多段线各10群码,然后读取10群码后的坐标值写入EXCEL文件。但发现多段线的10群码后的坐标值只是保留了两位小数,最燃最后用rtos转字符串时保留3位小数,但由于本身只有两位小数,所以最后一位都为0。而我想最终取得的坐标值是保留3位小数的。不知道应如何修改,请教各位大佬。

start4444 发表于 2020-12-15 10:02:21

你的码呢``

apcnb 发表于 2020-12-15 10:45:29

start4444 发表于 2020-12-15 10:02
你的码呢``

(prompt "<<zbdc>>获取多段线上各顶点坐标,并导出Excel表")
(defun c:zbdc ()
(setq en (ssget '((0 . "*POLYLINE"))))
(setq        i   0
        j   1
        filex (getfiled "指定输出文件路径" "" "xls" 1)
        file(open filex "w")
)
(repeat (sslength en)
    (setq ent (entget (ssname en i))
          p   (cdr (assoc 10 ent))
    )
    (write-line (strcat "线段" (itoa (1+ i))) file)
    (write-line "点号\tX\tY" file)
    (entmake
      (list '(0 . "TEXT")
          (cons 1 (strcat (itoa (1+ i)) "#线段"))
          (cons 7 "宋体")
          (cons 10 (list (car p) (- (cadr p) 2)))
          (cons 40 2)
      )
    )
    (foreach ee        ent
      (if (= (car ee) 10)
       
        (progn
          (setq ee (cdr ee))
          (setq y (cadr ee)
                x (car ee)
             )
          (entmake
          (list '(0 . "TEXT")
              (cons 1 (itoa j))
              (cons 10 (list (+ (car p) 0.01) (- (cadr p) 0.01)))
              (cons 7 "宋体")
              (cons 40 2)
              (cons 8 "编号")
              (cons 62 3)
                  )
          )
          (write-line
          (strcat (itoa j)
                  "\t"
                  (rtos y 2 3)
                  "\t"
                  (rtos x 2 3)
                  )
          file
          )
          (setq j (1+ j))
        )
      )
    )
    (setq i (1+ i))
)
(close file)
(prin1)
)

apcnb 发表于 2020-12-15 10:47:45

start4444 发表于 2020-12-15 10:02
你的码呢``

多段线:
((-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位小数的呢?

start4444 发表于 2020-12-15 12:31:56

不关组码的事,把这个系统变量设一下:(setvar "dimzin" 0)   保留3位数不能是0 的吗?不信你自己看左下角的坐标值算算

apcnb 发表于 2020-12-15 13:49:50

start4444 发表于 2020-12-15 12:31
不关组码的事,把这个系统变量设一下:(setvar "dimzin" 0)   保留3位数不能是0 的吗?不信你自己看左下 ...

果然,谢谢大佬解答~
页: [1]
查看完整版本: 如何更改群码表示的坐标精度[已解决]