明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1602|回复: 5

[讨论] 程序无错误,为什么所画的线总是会偏移

[复制链接]
发表于 2010-1-22 19:41:00 | 显示全部楼层 |阅读模式

我写了一程序,就是画圆的中心线,程序绝对无错误,而且也试过很多次都正常。

但不知为什么,在公司的AutoCAD里的就不行,总是会便宜固定的距离。好像是x坐标偏了80几,y坐标偏了几个,郁闷死了。百思不得其解!!望高手指点:

程序如下:

(defun c:cen(/ )
  (setq var1 (getvar "cmdecho"))
  (setq var2 (getvar "osmode"))
  (setq var3 (getvar "cecolor"))
  (setq var4 (getvar "celtype"))
  (setvar "cmdecho" 0)
  (setvar "osmode" 0)
  (command "color" "red")
  (command "linetype" "s" "center" "")
  (while (setq cir1 (car (entsel "\n请选择圆:")))
    (setq list1 (entget cir1))
    (if (= "CIRCLE" (cdr (assoc 0 list1)))
      (progn
       (setq cen (cdr (assoc 10 list1)))
       (setq rad (cdr (assoc 40 list1)))
       (setq p1 (polar cen 0 (* 1.5 rad))
     p2 (polar cen (* 0.5 pi) (* 1.5 rad))
     p3 (polar cen pi (* 1.5 rad))
     p4 (polar cen (* 1.5 pi) (* 1.5 rad))
       )
    
       (command "line" p1 p3 "")
       (command "line" p2 p4 "")
      )
      (princ "请选择圆对象\n")
    )
  )
  (setvar "cmdecho" var1)
  (setvar "osmode" var2)
  (setvar "cecolor" var3)
  (setvar "celtype" var4)
  (princ)
)

发表于 2010-1-22 19:54:00 | 显示全部楼层

可能是目标捕捉的问题,试一试在程序开始前关闭目标捕捉

 楼主| 发表于 2010-1-22 21:26:00 | 显示全部楼层

不是很懂

在程序中我已经关闭了对象捕捉了 (setvar "osmode" 0)

你所说的目标捕捉是这个吗

发表于 2010-1-22 22:16:00 | 显示全部楼层
或许是UCS的设定所致
发表于 2010-1-23 14:53:00 | 显示全部楼层

在画线命令前,做坐标转换,试试~~

(setq p1 (trans p1 0 1 )
      p2 (trans p2 0 1 )
      p3 (trans p3 0 1 )
      p4 (trans p4 0 1 ))

明经网友  发表于 2010-1-27 20:12:00

谢谢大家的指点!!!

终于找到原因了,其实是坐标系的问题。

只要使用如下命令就行:(command "UCS" "w")将当前用户坐标系UCS设置为世界坐标系即可。

出现以上问题的原因是用户坐标系与世界坐标系偏离,我们通过图元表获取的圆心等一切点的坐标都是基于世界坐标系的,但当我们调用AUTOcad命令(通过command)时,虽然传递的是点的世界坐标系坐标值,但它已被转化为用户坐标系上的对应坐标值的点。所以发生了偏移。

回复 支持 反对

使用道具

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-1 23:38 , Processed in 0.190578 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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