如何更改群码表示的坐标精度[已解决]
本帖最后由 apcnb 于 2020-12-15 13:49 编辑各位大佬,我写了一个获取多段线各顶点坐标,然后输出到EXCEL的小插件。用的方法是获取多段线各10群码,然后读取10群码后的坐标值写入EXCEL文件。但发现多段线的10群码后的坐标值只是保留了两位小数,最燃最后用rtos转字符串时保留3位小数,但由于本身只有两位小数,所以最后一位都为0。而我想最终取得的坐标值是保留3位小数的。不知道应如何修改,请教各位大佬。 你的码呢`` 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)
) 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位小数的呢? 不关组码的事,把这个系统变量设一下:(setvar "dimzin" 0) 保留3位数不能是0 的吗?不信你自己看左下角的坐标值算算 start4444 发表于 2020-12-15 12:31
不关组码的事,把这个系统变量设一下:(setvar "dimzin" 0) 保留3位数不能是0 的吗?不信你自己看左下 ...
果然,谢谢大佬解答~
页:
[1]