skytosea 发表于 2009-8-16 12:53:00

[求助]为何图元数据中的坐标精度不够?怎样提取高精度坐标?

本帖最后由 作者 于 2009-8-16 17:32:04 编辑 <br /><br /> <p>我是菜鸟,请教各位高手:<br/>1。在autucad2004中,我要从一条多义线中提取顶点的坐标,多义线由用户选择,结果输出一个包含顶点坐标的表,但运行结果发现坐标值只有小数点后3位,达不到我的要求,我要求达到autocad允许的最大精度。</p><p>2。我尝试了如下解决办法均没用:设置系统变量LUNITS=2(十进制数)、LUPREC=8(小数点后位数),但均未能改变图元数据中坐标的精度。</p><p>3。我用内部命令'_id查询多义线顶点的实际坐标是小数点后8位数的。</p><p>4。请问我如何令图元数据达到我要求的精度,例如小数点后8位。(最高是多少位?)</p><p>代码如下:</p><p>------------------------------------------------------------------------------------</p><p>(defun c:PRINTDXF(/ i ent entdata )&nbsp;&nbsp; ;遍历图元名及图元数据<br/>&nbsp; (setq ent (entnext))<br/>&nbsp; (textpage)<br/>&nbsp; (while ent<br/>&nbsp;&nbsp;&nbsp; (setq entdata (entget ent))<br/>&nbsp;&nbsp;&nbsp; (setq i 0)<br/>&nbsp;&nbsp;&nbsp; (repeat (length entdata)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ "\n")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ (nth i entdata))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq i (1+ i))<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (setq ent (entnext ent))<br/>&nbsp; )<br/>&nbsp; (princ)<br/>)</p><p><br/>(defun getvertex( / plname pldata i e vt return)<br/>&nbsp; ;返回多义线的顶点坐标表,缺陷:点的坐标只有小数点后三位,精度不够。<br/>&nbsp; (setq plname (car (entsel)))<br/>&nbsp; (setq plData (entget plname))<br/>&nbsp; (if (= (cdr (assoc 0 pldata)) "LWPOLYLINE")<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq i 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (repeat (length pldata)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq e (nth i pldata))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (= (car e) 10) (setq vt (append vt (list (cdr e)))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq i (1+ i))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp; (setq return vt)<br/>)<br/></p>

yxp 发表于 2009-8-16 14:48:00

<p></p><p></p>

skytosea 发表于 2009-8-16 17:24:00

试过上述方法,似乎不起作用,我定义的函数(getvertex)的返回坐标仍然是小数点后3位,而且我的函数并不涉及图形文件保存问题,我新打开一个空白图,在上面画一条多义线,然后调用(getvertex),其返回坐标仍然只有小数点后3位。
页: [1]
查看完整版本: [求助]为何图元数据中的坐标精度不够?怎样提取高精度坐标?