关于坐标系变换 (AutoLISP) 
可以使用 将点或位移从一个坐标系转换为另一个坐标系。trans 
该函数采用三个参数和一个可选的第四个参数。第一个参数 pt 是 3D 点或 3D 位移向量,由称为 disp 的可选位移参数来区分。如果要将 pt 视为位移向量,则 disp 参数必须为非零;否则,PT 将被视为一个点。from 参数指定表示 pt 的坐标系,to 参数指定所需的坐标系。trans 
以下是该函数的语法:trans 
(trans pt from to [disp]) 
from 和 to 参数都可以通过以下任一方式指定坐标系: 
- 作为整数代码,用于指定 WCS、当前 UCS 或当前 DCS(当前视口或图纸空间)。
 
- 作为由实体名称或选择集函数之一返回的实体名称。这将指定命名对象的 OCS。如果 OCS 没有差异,则 OCS 和 WCS 之间的转换是标识操作。
 
- 作为 3D 拉伸矢量。拉伸向量始终以世界坐标表示;拉伸向量 (0,0,1) 指定 WCS 本身。
 
 
下表列出了可用作 from 和 to 参数的有效整数代码: 
| 
 坐标系代码 
 | 
 
| 
 法典 
 | 
 坐标系 
 | 
 
| 
 0 
 | 
 世界 (WCS) 
 | 
 
| 
 1 
 | 
 用户(当前 UCS) 
 | 
 
| 
 2 
 | 
 显示;与代码 0 或 1 一起使用时为当前视口的 DCS,与代码 3 一起使用时为当前模型空间视口的 DCS 
 | 
 
| 
 3 
 | 
 纸张空间 DCS、PSDCS(仅与代码 2 一起使用) 
 | 
 
 
 
以下示例代码将 WCS 中的点转换为当前 UCS。 
(setq pt '(1.0 2.0 3.0))
(setq cs_from 0) ; WCS
(setq cs_to 1) ; UCS
(trans pt cs_from cs_to 0) ; disp = 0 indicates that pt is a point 
如果当前 UCS 绕世界 Z 轴逆时针旋转 90 度,则 to 的调用将返回一个点 (2.0,-1.0,3.0)。但是,如果交换 to 和 from 值,则结果会有所不同,如以下代码所示:trans 
(trans pt cs_to cs_from 0) ; the result is (-2.0,1.0,3.0) 
坐标系- WCS系列
 
- 
世界坐标系 - 参考坐标系。所有其他坐标系都是相对于 WCS 定义的,WCS 永远不会更改。相对于 WCS 测量的值在对其他坐标系的更改中是稳定的。 
 
- UCS系统
 
- 
用户坐标系 - 由用户定义的工作坐标系,用于简化绘图任务。传递给AutoCAD命令的所有点(包括从AutoLISP例程和外部函数返回的点)都是当前UCS中的点(除非用户在AutoCAD命令提示符下以*开头)。如果希望应用程序将 WCS、OCS 或 DCS 中的坐标发送到 AutoCAD 命令,则必须首先通过调用 trans 函数将其转换为 UCS。 
 
- 法 团
 
- 
对象坐标系 - 返回的点值在此坐标系中表示,相对于对象本身。这些点通常根据对象的预期用途转换为 WCS、当前 UCS 或当前 DCS。相反,在通过 or 函数将点写入数据库之前,必须将点转换为 OCS。这也称为图元坐标系。entgetentmodentmake 
 
- DCS系统
 
- 
显示坐标系 - 对象在显示之前变换到的坐标系。DCS 的原点是存储在 AutoCAD 系统变量 TARGET 中的点,其 Z 轴是查看方向。换言之,视口始终是其DCS的平面视图。这些坐标可用于确定向 AutoCAD 用户显示某些内容的位置。 
当 from 和 to 整数代码为 2 和 3 时,按任一顺序排列,2 表示当前模型空间视口的 DCS,3 表示图纸空间 (PSDCS) 的 DCS。当 2 代码与 3 以外的整数代码(或指定坐标系的其他方法)一起使用时,假定它表示当前空间的 DCS,无论是图纸空间还是模型空间。另一个参数也被假定为指示当前空间中的坐标系。 
 
- PSDCS公司
 
- 
图纸空间 DCS - 此坐标系只能转换为当前活动模型空间视口的 DCS 或从当前活动模型空间视口的 DCS 转换。这实质上是一种 2D 转换,其中 X 和 Y 坐标始终缩放,如果 disp 参数为 0,则偏移。Z 坐标已缩放,但从不平移。因此,它可用于查找两个坐标系之间的比例因子。PSDCS(整数代码 2)只能转换为当前模型空间视口。如果 from 参数等于 3,则 to 参数必须等于 2,反之亦然。 
 
 
 
    
 |