XDrxAPI 54 个矩阵函数帮助手册
1函数名称: xdrx-matrix->ads
描述:
该函数用于将4x4变换矩阵转换为AutoCAD ADS格式的点列表。它接受一个4x4变换矩阵作为输入参数,并将其转换为4个3D点表示的ADS格式数据。
调用格式:
(xdrx-matrix->ads <matrix>)
参数说明:
* `<matrix>`: 必需参数,4x4变换矩阵。
返回值:
* 返回包含4个3D点的列表,分别对应矩阵的前三行和位移分量。如果输入不是有效的3阶矩阵,则返回nil。
示例用法:
(xdrx-matrix->ads '((1 0 0 0)(0 1 0 0)(0 0 1 0)(0 0 0 1)))
返回: ((0.0 0.0 0.0) (0.0 0.0 0.0) (0.0 0.0 0.0) (0.0 0.0 0.0))
------------------------------------------------------------
2
函数名称: xdrx-matrix->local
描述:
该函数用于将4x4变换矩阵转换为局部坐标系表示。它将矩阵分解为法线向量和高度值,表示局部坐标系相对于世界坐标系的位置和方向。
调用格式:
(xdrx-matrix->local <matrix>)
参数说明:
* `<matrix>`: 必需参数,4x4变换矩阵。
返回值:
* 返回一个列表,包含两个元素:1) 表示局部坐标系法线方向的3D向量 2) 表示高度的实数。如果输入不是有效的3阶矩阵,则返回nil。
示例用法:
(xdrx-matrix->local '((1 0 0 0)(0 1 0 0)(0 0 1 0)(0 0 0 1)))
返回: ((0.0 0.0 1.0) 0.0)
------------------------------------------------------------
3
函数名称: xdrx-matrix<-ads
描述:
该函数用于将AutoCAD ADS格式的点列表转换为4x4变换矩阵。它接受4个3D点作为输入参数(可以单独传递或作为列表传递),并将其转换为4x4变换矩阵。前三个点定义矩阵的前三行,第四个点提供位移分量。
调用格式:
(xdrx-matrix<-ads <p1> <p2> <p3> <p4>)
或
(xdrx-matrix<-ads (<p1> <p2> <p3> <p4>))
参数说明:
* `<p1>`, `<p2>`, `<p3>`, `<p4>`: 必需参数,四个3D点坐标。可以单独传递四个点参数,或者传递一个包含四个点的列表。
返回值:
* 返回一个4x4变换矩阵。如果输入参数不符合要求(不是四个3D点),则返回nil。
示例用法:
(xdrx-matrix<-ads '(0 0 0) '(1 0 0) '(0 1 0) '(0 0 1))
返回: ((0.0 1.0 0.0 0.0) (0.0 0.0 1.0 0.0) (0.0 0.0 0.0 1.0) (0.0 0.0 0.0 1.0))
------------------------------------------------------------
4
函数名称: xdrx_matrix<-ssnamex
描述:
该函数用于从选择集名称(ssnamex)获取的数据中提取变换矩阵。它接受一个或两个参数,参数可以是选择集名称(ssnamex)返回的数据结构。函数会从数据结构中提取4个3D点坐标来构造4x4变换矩阵。
调用格式:
(xdrx_matrix<-ssnamex <data> )
参数说明:
* `<data>`: 必需参数,选择集名称(ssnamex)返回的数据结构。
* ``: 可选参数,当主数据结构不足时提供的补充数据。
返回值:
* 返回一个4x4的变换矩阵,如果输入数据不符合要求则返回单位矩阵。
示例用法:
(xdrx_matrix<-ssnamex (ssnamex (ssget)))
返回: ((1.0 0.0 0.0 0.0) (0.0 1.0 0.0 0.0) (0.0 0.0 1.0 0.0) (0.0 0.0 0.0 1.0))
------------------------------------------------------------
5
函数名称: xdrx-matrix-align
描述:
该函数用于计算对齐矩阵,将一个坐标系对齐到另一个坐标系。支持多种输入方式:两点对齐(线段对齐)、点+向量对齐,或四点对齐(两个线段对齐)。可选择是否包含缩放。
调用格式:
(xdrx-matrix-align <from1> <from2> <to1> <to2> )
或
(xdrx-matrix-align <point> <fromVec> <toVec>)
或
(xdrx-matrix-align <line1> <line2> )
参数说明:
* 四点对齐模式:
- `<from1>`, `<from2>`: 源坐标系的两个点
- `<to1>`, `<to2>`: 目标坐标系的两个点
- ``: 可选布尔值,是否包含缩放(默认为nil)
* 向量对齐模式:
- `<point>`: 基准点
- `<fromVec>`: 源向量
- `<toVec>`: 目标向量
* 线段对齐模式:
- `<line1>`: 源线段(两个点)
- `<line2>`: 目标线段(两个点)
- ``: 可选布尔值,是否包含缩放(默认为nil)
返回值:
* 返回一个4x4变换矩阵,可将源坐标系对齐到目标坐标系。如果输入参数不符合要求,则返回nil。
示例用法:
(xdrx-matrix-align '(0 0 0) '(1 0 0) '(0 0 0) '(0 1 0))
返回: ((0.0 -1.0 0.0 0.0) (1.0 0.0 0.0 0.0) (0.0 0.0 1.0 0.0) (0.0 0.0 0.0 1.0))
------------------------------------------------------------
6
函数名称: xdrx_matrix_aligncoordsys
函数别名:xdrx_matrix_aligncoordsystem
描述:
该函数用于计算两个坐标系之间的对齐变换矩阵。支持多种输入格式:可以接受两个矩阵、两个坐标系定义(原点+X+Y+Z向量),或特殊代码(0表示世界坐标系,1表示当前UCS)。支持2D和3D坐标系对齐。
调用格式:
(xdrx_matrix_aligncoordsys <from> <to>)
参数说明:
* `<from>`: 源坐标系,可以是以下形式之一:
- 数字0(世界坐标系)或1(当前UCS)
- 4x4变换矩阵
- 3D坐标系定义列表:(原点 X轴向量 Y轴向量 )
- 2D坐标系定义列表:(原点 X轴向量 Y轴向量)
* `<to>`: 目标坐标系,格式与<from>相同
返回值:
* 返回一个变换矩阵,可以将源坐标系的几何体转换到目标坐标系
* 对于3D坐标系返回4x4矩阵,2D坐标系返回3x3矩阵
* 如果输入参数无效则返回nil
示例用法:
(xdrx_matrix_aligncoordsys 0 1); 世界坐标系到当前UCS的变换
(xdrx_matrix_aligncoordsys '((1 0 0)(0 1 0)(0 0 1)) '((0 1 0)(-1 0 0)(0 0 1))) ; 2D坐标系旋转90度
------------------------------------------------------------
7
函数名称: xdrx-matrix-block2wcs
描述:
该函数用于获取将块参照(BlockReference)从其局部坐标系转换到世界坐标系(WCS)的变换矩阵。函数接受一个块参照图元名作为输入,返回其从块局部坐标系到世界坐标系的逆变换矩阵。
调用格式:
(xdrx-matrix-block2wcs <block-entity>)
参数说明:
* `<block-entity>`: 必需参数,块参照(BlockReference)的图元名。
返回值:
* 返回一个4x4变换矩阵,表示从块局部坐标系到世界坐标系的变换。
* 如果输入不是有效的块参照图元,则返回单位矩阵。
示例用法:
(xdrx-matrix-block2wcs (car (entsel)))
返回: ((1.0 0.0 0.0 0.0) (0.0 1.0 0.0 0.0) (0.0 0.0 1.0 0.0) (0.0 0.0 0.0 1.0))
------------------------------------------------------------
8
函数名称: xdrx-matrix-dcs2ucs
描述:
该函数用于获取从显示坐标系(DCS)到用户坐标系(UCS)的变换矩阵。通过当前活动视口的变换矩阵计算得到,先获取世界坐标系(WCS)到显示坐标系(DCS)的逆矩阵,再与WCS到UCS的矩阵相乘得到最终结果。
调用格式:
(xdrx-matrix-dcs2ucs)
参数说明:
* 该函数无需参数
返回值:
* 返回一个4x4变换矩阵,表示从显示坐标系(DCS)到用户坐标系(UCS)的变换。
示例用法:
(xdrx-matrix-dcs2ucs)
返回: ((1.0 0.0 0.0 0.0) (0.0 1.0 0.0 0.0) (0.0 0.0 1.0 0.0) (0.0 0.0 0.0 1.0))
------------------------------------------------------------
9
函数名称: xdrx-matrix-dcs2wcs
描述:
该函数用于获取从显示坐标系(DCS)到世界坐标系(WCS)的变换矩阵。通过当前活动视口的变换矩阵计算得到,先获取世界坐标系(WCS)到显示坐标系(DCS)的矩阵,然后求逆得到DCS到WCS的变换矩阵。可选择性地指定X轴方向。
调用格式:
(xdrx-matrix-dcs2wcs )
参数说明:
* ``: 可选参数,3D向量,指定X轴方向(默认为世界坐标系的X轴)
返回值:
* 返回一个4x4变换矩阵,表示从显示坐标系(DCS)到世界坐标系(WCS)的变换。
示例用法:
(xdrx-matrix-dcs2wcs) ; 使用默认X轴方向
(xdrx-matrix-dcs2wcs '(1 0 0)) ; 指定X轴方向
返回: ((1.0 0.0 0.0 0.0) (0.0 1.0 0.0 0.0) (0.0 0.0 1.0 0.0) (0.0 0.0 0.0 1.0))
------------------------------------------------------------
10
函数名称: xdrx-matrix-decompose
描述:
该函数用于分解4x4变换矩阵,将其分解为缩放、旋转和平移三个分量。函数接受一个4x4变换矩阵作为输入,返回包含三个向量的列表。
调用格式:
(xdrx-matrix-decompose <matrix>)
参数说明:
* `<matrix>`: 必需参数,4x4变换矩阵
返回值:
* 返回一个包含三个3D向量的列表:(缩放向量 旋转向量 平移向量)
* 如果输入不是有效的4x4矩阵,则返回nil
示例用法:
(xdrx-matrix-decompose '((2 0 0 0)(0 3 0 0)(0 0 4 0)(5 6 7 1)))
返回: ((2.0 3.0 4.0) (0.0 0.0 0.0) (5.0 6.0 7.0))
------------------------------------------------------------
11
函数名称: xdrx-matrix-det
描述:
该函数用于计算矩阵的行列式值。支持2D(3x3)和3D(4x4)矩阵的行列式计算。
调用格式:
(xdrx-matrix-det <matrix>)
参数说明:
* `<matrix>`: 必需参数,可以是3x3(2D)或4x4(3D)变换矩阵
返回值:
* 返回矩阵的行列式值(实数)
* 如果输入不是有效的矩阵,则返回nil
示例用法:
(xdrx-matrix-det '((1 0 0)(0 1 0)(0 0 1))) ; 2D单位矩阵
返回: 1.0
(xdrx-matrix-det '((2 0 0 0)(0 3 0 0)(0 0 4 0)(0 0 0 1))) ; 3D对角矩阵
返回: 24.0
------------------------------------------------------------
12
函数名称: xdrx-matrix-ecs2wcs
描述:
该函数用于获取将实体从其实体坐标系(ECS)转换到世界坐标系(WCS)的变换矩阵。函数接受一个图元名作为输入,返回其ECS到WCS的变换矩阵。
调用格式:
(xdrx-matrix-ecs2wcs <entity>)
参数说明:
* `<entity>`: 必需参数,图元名(通过entsel等函数获取)
返回值:
* 返回一个4x4变换矩阵,表示从实体坐标系(ECS)到世界坐标系(WCS)的变换
* 如果输入不是有效的图元名,则返回nil
示例用法:
(xdrx-matrix-ecs2wcs (car (entsel)))
返回: ((1.0 0.0 0.0 0.0) (0.0 1.0 0.0 0.0) (0.0 0.0 1.0 0.0) (0.0 0.0 0.0 1.0))
------------------------------------------------------------
13
函数名称: xdrx-matrix-eigenvalues
描述:
该函数用于计算矩阵的特征值。支持3D(4x4)矩阵的特征值计算,返回复数形式的特征值列表。
调用格式:
(xdrx-matrix-eigenvalues <matrix>)
参数说明:
* `<matrix>`: 必需参数,4x4(3D)变换矩阵
返回值:
* 返回矩阵的特征值列表(复数形式)
* 如果输入不是有效的矩阵,则返回nil
示例用法:
(xdrx-matrix-eigenvalues '((1 0 0 0)(0 1 0 0)(0 0 1 0)(0 0 0 1))) ; 3D单位矩阵
返回: ((1.0 0.0) (1.0 0.0) (1.0 0.0) (1.0 0.0)) ; 四个特征值都是1+0i
------------------------------------------------------------
14
函数名称: xdrx-matrix-getangleandaxis
描述:
该函数用于从4x4变换矩阵中提取旋转角度和旋转轴。返回旋转角度(弧度)和旋转轴向量。
调用格式:
(xdrx-matrix-getangleandaxis <matrix>)
参数说明:
* `<matrix>`: 必需参数,4x4变换矩阵
返回值:
* 返回一个列表,包含两个元素:(旋转角度 旋转轴向量)
- 旋转角度: 实数,表示旋转的弧度值
- 旋转轴向量: 3D向量,表示旋转轴方向
* 如果输入不是有效的4x4矩阵,则返回nil
示例用法:
(xdrx-matrix-getangleandaxis '((0 -1 0 0)(1 0 0 0)(0 0 1 0)(0 0 0 1))) ; 绕Z轴旋转90度的矩阵
返回: (1.5708 (0.0 0.0 1.0)) ; 1.5708弧度(90度)绕Z轴旋转
------------------------------------------------------------
15
函数名称: xdrx-matrix-getcoordsystem
描述:
该函数用于获取坐标系定义,可以从矩阵提取坐标系参数,或获取标准坐标系定义。支持多种输入方式:
1. 数字参数:0(世界坐标系)、1(当前UCS)、2(当前DCS)
2. 2D矩阵:提取原点、X轴和Y轴
3. 3D矩阵:提取原点、X轴、Y轴和Z轴
调用格式:
(xdrx-matrix-getcoordsystem <input>)
参数说明:
* `<input>`: 必需参数,可以是:
- 数字0/1/2:获取标准坐标系
- 2D变换矩阵(3x3):提取2D坐标系
- 3D变换矩阵(4x4):提取3D坐标系
返回值:
* 对于2D矩阵:返回(原点 X轴向量 Y轴向量)
* 对于3D矩阵:返回(原点 X轴向量 Y轴向量 Z轴向量)
* 对于数字参数:
- 0:返回世界坐标系定义
- 1:返回当前UCS定义
- 2:返回当前DCS定义
示例用法:
(xdrx-matrix-getcoordsystem 0) ; 获取WCS
返回: ((0 0 0) (1 0 0) (0 1 0) (0 0 1))
(xdrx-matrix-getcoordsystem '((1 0 0)(0 1 0)(0 0 1))) ; 2D单位矩阵
返回: ((0 0) (1 0) (0 1))
(xdrx-matrix-getcoordsystem '((0 -1 0 0)(1 0 0 0)(0 0 1 0)(1 2 3 1))) ; 3D旋转矩阵
返回: ((1 2 3) (0 1 0) (-1 0 0) (0 0 1))
------------------------------------------------------------
16
函数名称: xdrx-matrix-getmirrorplane
描述:
该函数用于从镜像变换矩阵中提取镜像平面信息。可以返回平面坐标系参数或创建平面图元。
调用格式:
(xdrx-matrix-getmirrorplane <matrix> )
参数说明:
* `<matrix>`: 必需参数,4x4镜像变换矩阵
* ``: 可选参数,当指定时返回平面图元,否则返回平面坐标系参数
返回值:
* 当不指定T时:返回(原点 X轴向量 Y轴向量 Z轴向量)
* 当指定T时:返回创建的平面图元
* 如果输入不是有效的镜像矩阵,则返回nil
示例用法:
(xdrx-matrix-getmirrorplane '((1 0 0 0)(0 -1 0 0)(0 0 1 0)(0 0 0 1))) ; YZ平面镜像
返回: ((0 0 0) (1 0 0) (0 0 1) (0 -1 0))
(xdrx-matrix-getmirrorplane '((1 0 0 0)(0 -1 0 0)(0 0 1 0)(0 0 0 1)) T) ; 创建平面图元
返回: <图元名: 7ffff705040>
------------------------------------------------------------
17
函数名称: xdrx-matrix-identity
描述:
该函数用于创建单位矩阵(恒等矩阵)。可以生成2D(3x3)或3D(4x4)的单位矩阵。
调用格式:
(xdrx-matrix-identity )
参数说明:
* ``: 可选参数,矩阵阶数,2表示2D矩阵,3表示3D矩阵(默认)
返回值:
* 返回一个单位矩阵
- 2D: 3x3单位矩阵
- 3D: 4x4单位矩阵
示例用法:
(xdrx-matrix-identity) ; 默认3D单位矩阵
返回: ((1.0 0.0 0.0 0.0) (0.0 1.0 0.0 0.0) (0.0 0.0 1.0 0.0) (0.0 0.0 0.0 1.0))
(xdrx-matrix-identity 2) ; 2D单位矩阵
返回: ((1.0 0.0 0.0) (0.0 1.0 0.0) (0.0 0.0 1.0))
------------------------------------------------------------
18
函数名称: xdrx-matrix-image2wcs
描述:
该函数用于获取光栅图像(RasterImage)从像素坐标系到世界坐标系(WCS)的变换矩阵。函数接受一个光栅图像图元名作为输入,返回其像素到模型的变换矩阵。
调用格式:
(xdrx-matrix-image2wcs <image-entity>)
参数说明:
* `<image-entity>`: 必需参数,光栅图像图元名(通过entsel等函数获取)
返回值:
* 返回一个4x4变换矩阵,表示从图像像素坐标系到世界坐标系的变换
* 如果输入不是有效的光栅图像图元,则返回nil
示例用法:
(xdrx-matrix-image2wcs (car (entsel)))
返回: ((0.02 0.0 0.0 10.0) (0.0 -0.02 0.0 20.0) (0.0 0.0 1.0 0.0) (0.0 0.0 0.0 1.0))
注:示例返回矩阵中,0.02表示每个像素对应0.02个绘图单位,负号表示Y轴方向相反,(10.0 20.0)表示图像左下角在世界坐标系中的位置。
------------------------------------------------------------
19
函数名称: xdrx-matrix-inverse
描述:
该函数用于计算4x4变换矩阵的逆矩阵。函数接受一个4x4变换矩阵作为输入,返回其逆矩阵。
调用格式:
(xdrx-matrix-inverse <matrix>)
参数说明:
* `<matrix>`: 必需参数,4x4变换矩阵
返回值:
* 返回输入矩阵的逆矩阵(4x4)
* 如果输入矩阵不可逆或不是有效的4x4矩阵,则返回nil
示例用法:
(xdrx-matrix-inverse '((2 0 0 0)(0 3 0 0)(0 0 4 0)(0 0 0 1)))
返回: ((0.5 0.0 0.0 0.0) (0.0 0.333 0.0 0.0) (0.0 0.0 0.25 0.0) (0.0 0.0 0.0 1.0))
------------------------------------------------------------
20
函数名称: xdrx-matrix-isequal
描述:
该函数用于比较两个矩阵是否相等(在指定容差范围内)。支持比较2D(3x3)和3D(4x4)矩阵。
Note: 比较时会考虑当前文档的容差设置(DocVars.AES_DBASE.m_tol)
调用格式:
(xdrx-matrix-isequal <matrix1> <matrix2>)
参数说明:
* `<matrix1>`: 必需参数,第一个比较矩阵
* `<matrix2>`: 必需参数,第二个比较矩阵
返回值:
* 如果两个矩阵相等(在容差范围内)返回T
* 否则返回nil
* 如果任一参数不是有效矩阵,或矩阵类型不匹配,也返回nil
示例用法:
(xdrx-matrix-isequal '((1 0 0)(0 1 0)(0 0 1)) '((1 0 0)(0 1 0)(0 0 1.000001)))
返回: T; 在默认容差范围内视为相等
(xdrx-matrix-isequal '((1 0)(0 1)) '((1 0 0)(0 1 0)(0 0 1)))
返回: nil ; 矩阵类型不匹配(2D vs 3D)
------------------------------------------------------------
21
函数名称: xdrx-matrix-ismirror
描述:
该函数用于判断一个4x4变换矩阵是否为镜像(反射)变换矩阵。镜像变换会改变坐标系的手性(左右手系)。
Note: 镜像变换矩阵的行列式为负值,会改变几何体的方向
调用格式:
(xdrx-matrix-ismirror <matrix>)
参数说明:
* `<matrix>`: 必需参数,待检测的4x4变换矩阵
返回值:
* 如果是镜像矩阵返回T
* 否则返回nil
* 如果输入不是有效的4x4矩阵也返回nil
示例用法:
(xdrx-matrix-ismirror '((1 0 0 0)(0 -1 0 0)(0 0 1 0)(0 0 0 1)))
返回: T; YZ平面镜像
(xdrx-matrix-ismirror '((1 0 0 0)(0 1 0 0)(0 0 1 0)(0 0 0 1)))
返回: nil ; 单位矩阵不是镜像
------------------------------------------------------------
22
函数名称: xdrx-matrix-isscaledortho
描述:
该函数用于判断一个变换矩阵是否是比例正交矩阵。比例正交矩阵保持角度不变,但允许各轴不同比例缩放。
Note: 比例正交矩阵的转置矩阵与其逆矩阵成比例关系,常用于非均匀缩放变换
调用格式:
(xdrx-matrix-isscaledortho <matrix>)
参数说明:
* `<matrix>`: 必需参数,待检测的变换矩阵(2D或3D)
返回值:
* 如果是比例正交矩阵返回T
* 否则返回nil
* 如果输入不是有效的矩阵也返回nil
示例用法:
(xdrx-matrix-isscaledortho '((2 0 0)(0 3 0)(0 0 1)))
返回: T; 2D各向异性缩放
(xdrx-matrix-isscaledortho '((1 0.1 0)(0 1 0)(0 0 1)))
返回: nil ; 包含剪切变形
------------------------------------------------------------
23
函数名称: xdrx-matrix-issingular
描述:
该函数用于判断一个变换矩阵是否是奇异矩阵(不可逆矩阵)。奇异矩阵的行列式为零,表示变换会降低几何体的维度。
Note: 奇异矩阵通常出现在投影变换或降维变换中,无法求逆矩阵
调用格式:
(xdrx-matrix-issingular <matrix>)
参数说明:
* `<matrix>`: 必需参数,待检测的变换矩阵(2D或3D)
返回值:
* 如果是奇异矩阵返回T
* 否则返回nil
* 如果输入不是有效的矩阵也返回nil
示例用法:
(xdrx-matrix-issingular '((1 2 0)(1 2 0)(0 0 1)))
返回: T; 行列式为零(前两行线性相关)
(xdrx-matrix-issingular '((1 0 0)(0 1 0)(0 0 1)))
返回: nil ; 单位矩阵可逆
------------------------------------------------------------
24
函数名称: xdrx-matrix-isuniscaledortho
描述:
该函数用于判断一个变换矩阵是否是单位比例正交矩阵。单位比例正交矩阵保持角度和比例不变,仅包含旋转和平移变换。
Note: 单位比例正交矩阵的转置矩阵等于其逆矩阵,常用于刚性变换(无缩放)
调用格式:
(xdrx-matrix-isuniscaledortho <matrix>)
参数说明:
* `<matrix>`: 必需参数,待检测的变换矩阵(2D或3D)
返回值:
* 如果是单位比例正交矩阵返回T
* 否则返回nil
* 如果输入不是有效的矩阵也返回nil
示例用法:
(xdrx-matrix-isuniscaledortho '((0 -1 0)(1 0 0)(0 0 1)))
返回: T; 2D旋转90度
(xdrx-matrix-isuniscaledortho '((2 0 0)(0 2 0)(0 0 1)))
返回: nil ; 包含缩放变换
------------------------------------------------------------
25
函数名称: xdrx-matrix-isunit
描述:
该函数用于判断一个变换矩阵是否是单位矩阵(恒等矩阵)。单位矩阵不改变几何体的位置和形状。
Note: 单位矩阵的主对角线元素为1,其他元素为0,是各种变换的基准参考
调用格式:
(xdrx-matrix-isunit <matrix>)
参数说明:
* `<matrix>`: 必需参数,待检测的变换矩阵(2D或3D)
返回值:
* 如果是单位矩阵返回T
* 否则返回nil
* 如果输入不是有效的矩阵也返回nil
示例用法:
(xdrx-matrix-isunit '((1 0 0)(0 1 0)(0 0 1)))
返回: T; 2D单位矩阵
(xdrx-matrix-isunit '((1 0 0 0)(0 1 0 0)(0 0 1 0)(0 0 0 1)))
返回: T; 3D单位矩阵
(xdrx-matrix-isunit '((1 0 0)(0 2 0)(0 0 1)))
返回: nil ; 包含缩放变换
------------------------------------------------------------
26
函数名称: xdrx-matrix-ms2ps
描述:
该函数用于获取从模型空间(Model Space)到图纸空间(Paper Space)的变换矩阵。函数接受一个视口(viewport)图元名作为输入,返回模型空间到图纸空间的变换矩阵。
Note: 该变换矩阵用于将模型空间中的坐标转换为图纸空间中的坐标,考虑视口的显示比例和位置
调用格式:
(xdrx-matrix-ms2ps <viewport-entity>)
参数说明:
* `<viewport-entity>`: 必需参数,图纸空间视口图元名
返回值:
* 返回一个4x4变换矩阵,表示从模型空间到图纸空间的变换
* 如果输入不是有效的视口图元,则返回nil
示例用法:
(xdrx-matrix-ms2ps (car (entsel)))
返回: ((0.5 0 0 10)(0 0.5 0 20)(0 0 0.5 0)(0 0 0 1)) ; 缩放比例为0.5,位置偏移(10,20)
(xdrx-matrix-ms2ps (handent "2F5")) ; 通过句柄选择视口
返回: 对应的变换矩阵
------------------------------------------------------------
27
函数名称: xdrx-matrix-norm
描述:
该函数用于计算4x4变换矩阵的范数(norm)。矩阵范数表示矩阵元素的总体大小,常用于评估变换的强度或比较矩阵大小。
Note: 矩阵范数是所有元素绝对值的平方和的平方根,类似于向量的长度概念
调用格式:
(xdrx-matrix-norm <matrix>)
参数说明:
* `<matrix>`: 必需参数,4x4变换矩阵
返回值:
* 返回矩阵的范数值(实数)
* 如果输入不是有效的4x4矩阵,则返回nil
示例用法:
(xdrx-matrix-norm '((1 0 0 0)(0 1 0 0)(0 0 1 0)(0 0 0 1)))
返回: 2.0 ; 单位矩阵的范数
(xdrx-matrix-norm '((2 0 0 0)(0 3 0 0)(0 0 4 0)(0 0 0 1)))
返回: 5.477 ; sqrt(4+9+16+1) = 5.477
------------------------------------------------------------
28
函数名称: xdrx-matrix-plane2wcs
描述:
该函数用于创建从指定平面坐标系到世界坐标系(WCS)的变换矩阵。支持通过平面法线向量或平面对象来定义平面坐标系。
Note: 该变换矩阵可用于将平面局部坐标系下的坐标转换为世界坐标系坐标
调用格式:
(xdrx-matrix-plane2wcs <normal-vector>)
或
(xdrx-matrix-plane2wcs <plane-entity>)
或
(xdrx-matrix-plane2wcs <origin-point> <normal-vector>)
参数说明:
* `<normal-vector>`: 3D向量,平面法线方向
* `<plane-entity>`: 平面图元对象
* `<origin-point>`: 3D点,平面原点位置
返回值:
* 返回一个4x4变换矩阵,表示从平面坐标系到世界坐标系的变换
* 如果输入参数无效,则返回nil
示例用法:
(xdrx-matrix-plane2wcs '(0 0 1)) ; XY平面
返回: ((1 0 0 0)(0 1 0 0)(0 0 1 0)(0 0 0 1))
(xdrx-matrix-plane2wcs (car (entsel))) ; 选择平面对象
返回: 对应的变换矩阵
(xdrx-matrix-plane2wcs '(1 2 3) '(0 0 1)) ; 指定原点的XY平面
返回: ((1 0 0 1)(0 1 0 2)(0 0 1 3)(0 0 0 1))
------------------------------------------------------------
29
函数名称: xdrx-matrix-postmultby
描述:
该函数用于对变换矩阵进行后乘操作,即执行矩阵乘法 M1 = M1 × M2。支持2D和3D矩阵的后乘运算。
Note: 后乘操作表示将第二个矩阵的变换应用到第一个矩阵之后,用于组合多个变换
调用格式:
(xdrx-matrix-postmultby <matrix1> <matrix2>)
参数说明:
* `<matrix1>`: 必需参数,第一个变换矩阵(将被修改)
* `<matrix2>`: 必需参数,第二个变换矩阵
返回值:
* 返回修改后的第一个矩阵(即两个矩阵的乘积)
* 如果矩阵类型不匹配或参数无效,则返回nil
示例用法:
(xdrx-matrix-postmultby '((1 0 0)(0 1 0)(0 0 1)) '((2 0 0)(0 2 0)(0 0 1)))
返回: ((2 0 0)(0 2 0)(0 0 1)) ; 2D缩放变换
(xdrx-matrix-postmultby '((1 0 0 0)(0 1 0 0)(0 0 1 0)(10 20 30 1)) '((1 0 0 0)(0 0 -1 0)(0 1 0 0)(0 0 0 1)))
返回: ((1 0 0 0)(0 0 -1 0)(0 1 0 0)(10 30 -20 1)) ; 3D旋转+平移
------------------------------------------------------------
30
函数名称: xdrx-matrix-premultby
描述:
该函数用于对变换矩阵进行前乘操作,即执行矩阵乘法 M1 = M2 × M1。支持2D和3D矩阵的前乘运算。
Note: 前乘操作表示将第二个矩阵的变换应用到第一个矩阵之前,变换顺序会影响最终结果
调用格式:
(xdrx-matrix-premultby <matrix1> <matrix2>)
参数说明:
* `<matrix1>`: 必需参数,第一个变换矩阵(将被修改)
* `<matrix2>`: 必需参数,第二个变换矩阵
返回值:
* 返回修改后的第一个矩阵(即两个矩阵的乘积)
* 如果矩阵类型不匹配或参数无效,则返回nil
示例用法:
(xdrx-matrix-premultby '((1 0 0)(0 1 0)(0 0 1)) '((2 0 0)(0 2 0)(0 0 1)))
返回: ((2 0 0)(0 2 0)(0 0 1)) ; 2D缩放变换
(xdrx-matrix-premultby '((1 0 0 0)(0 1 0 0)(0 0 1 0)(10 20 30 1)) '((1 0 0 0)(0 0 -1 0)(0 1 0 0)(0 0 0 1)))
返回: ((1 0 0 0)(0 0 -1 0)(0 1 0 0)(-20 10 30 1)) ; 3D旋转+平移(注意与后乘结果不同)
------------------------------------------------------------
31
函数名称: xdrx-matrix-product
描述:
该函数用于计算多个变换矩阵的连乘积。支持2D和3D矩阵的连续乘法运算,返回所有输入矩阵的乘积矩阵。
Note: 矩阵乘法不满足交换律,连乘顺序会影响最终结果。函数按照参数顺序从左到右进行矩阵乘法。
调用格式:
(xdrx-matrix-product <matrix1> <matrix2> ... <matrixN>)
参数说明:
* `<matrix1>`...`<matrixN>`: 多个变换矩阵参数(至少需要2个),所有矩阵必须是相同类型(2D或3D)
返回值:
* 返回所有输入矩阵的乘积矩阵
* 如果矩阵类型不匹配或参数无效,则返回nil
示例用法:
(xdrx-matrix-product '((1 0 0)(0 1 0)(0 0 1)) '((2 0 0)(0 2 0)(0 0 1)))
返回: ((2 0 0)(0 2 0)(0 0 1)) ; 2D缩放变换
(xdrx-matrix-product '((1 0 0 0)(0 1 0 0)(0 0 1 0)(10 0 0 1)) '((1 0 0 0)(0 0 -1 0)(0 1 0 0)(0 0 0 1)))
返回: ((1 0 0 0)(0 0 -1 0)(0 1 0 0)(10 0 0 1)) ; 3D平移+旋转
------------------------------------------------------------
32
函数名称: xdrx-matrix-ps2ms
描述:
该函数用于获取从图纸空间(Paper Space)到模型空间(Model Space)的变换矩阵。函数接受一个视口(viewport)图元名作为输入,返回图纸空间到模型空间的变换矩阵。
Note: 该变换矩阵是xdrx-matrix-ms2ps的逆矩阵,用于将图纸空间中的坐标转换回模型空间坐标
调用格式:
(xdrx-matrix-ps2ms <viewport-entity>)
参数说明:
* `<viewport-entity>`: 必需参数,图纸空间视口图元名
返回值:
* 返回一个4x4变换矩阵,表示从图纸空间到模型空间的变换
* 如果输入不是有效的视口图元,则返回nil
示例用法:
(xdrx-matrix-ps2ms (car (entsel)))
返回: ((2 0 0 -20)(0 2 0 -40)(0 0 2 0)(0 0 0 1)) ; 缩放比例为0.5的逆变换
(xdrx-matrix-ps2ms (handent "2F5")) ; 通过句柄选择视口
返回: 对应的逆变换矩阵
------------------------------------------------------------
33
函数名称: xdrx-matrix-rotate3d
描述:
该函数用于创建3D旋转矩阵。通过指定旋转角度、旋转轴起点和终点来定义旋转变换。
Note: 旋转角度以度为单位,旋转轴由两个3D点定义的向量确定
调用格式:
(xdrx-matrix-rotate3d <angle> <base-point> <end-point>)
参数说明:
* `<angle>`: 必需参数,旋转角度(度)
* `<base-point>`: 必需参数,旋转轴起点(3D点)
* `<end-point>`: 必需参数,旋转轴终点(3D点)
返回值:
* 返回一个4x4旋转变换矩阵
* 如果参数无效,则返回nil
示例用法:
(xdrx-matrix-rotate3d 90 '(0 0 0) '(0 0 1)) ; 绕Z轴旋转90度
返回: ((0 -1 0 0)(1 0 0 0)(0 0 1 0)(0 0 0 1))
(xdrx-matrix-rotate3d 45 '(1 2 3) '(1 2 4)) ; 绕通过(1,2,3)-(1,2,4)的Z向直线旋转45度
返回: 对应的旋转矩阵
------------------------------------------------------------
34
函数名称: xdrx-matrix-scalefactor
描述:
该函数用于获取变换矩阵的缩放因子。对于均匀缩放矩阵,返回缩放比例;对于非均匀缩放矩阵,返回平均缩放比例。
Note: 缩放因子是矩阵特征值的几何平均数,表示变换的整体缩放程度
调用格式:
(xdrx-matrix-scalefactor <matrix>)
参数说明:
* `<matrix>`: 必需参数,2D或3D变换矩阵
返回值:
* 返回矩阵的缩放因子(实数)
* 如果输入不是有效的矩阵,则返回nil
示例用法:
(xdrx-matrix-scalefactor '((2 0 0)(0 2 0)(0 0 1)))
返回: 2.0 ; 2D均匀缩放
(xdrx-matrix-scalefactor '((2 0 0 0)(0 3 0 0)(0 0 4 0)(0 0 0 1)))
返回: 2.884 ; 3D非均匀缩放(2*3*4的立方根)
------------------------------------------------------------
35
函数名称: xdrx-matrix-setcoordsystem
描述:
该函数用于创建基于坐标系定义的变换矩阵。支持多种输入方式:
1. 数字参数:0(世界坐标系)、1(当前UCS)、2(当前DCS)
2. 直接参数:原点+X轴+Y轴+向量
3. 现有矩阵+新坐标系参数
Note: 对于3D坐标系,Z轴向量会自动通过X轴和Y轴的叉积计算得到
调用格式:
(xdrx-matrix-setcoordsystem 0|1|2)
或
(xdrx-matrix-setcoordsystem <origin> <x-axis> <y-axis> )
或
(xdrx-matrix-setcoordsystem <matrix> <origin> <x-axis> <y-axis>)
参数说明:
* 数字模式:
- 0: 世界坐标系(WCS)
- 1: 当前用户坐标系(UCS)
- 2: 当前显示坐标系(DCS)
* 直接参数模式:
- `<origin>`: 坐标系原点
- `<x-axis>`: X轴方向向量
- `<y-axis>`: Y轴方向向量
- ``: 可选,Z轴方向向量
* 矩阵更新模式:
- `<matrix>`: 现有变换矩阵
- `<origin>`: 新坐标系原点
- `<x-axis>`: 新X轴方向向量
- `<y-axis>`: 新Y轴方向向量
返回值:
* 返回基于输入坐标系定义的变换矩阵
* 如果参数无效则返回nil
示例用法:
(xdrx-matrix-setcoordsystem 0) ; 世界坐标系
返回: ((1 0 0 0)(0 1 0 0)(0 0 1 0)(0 0 0 1))
(xdrx-matrix-setcoordsystem '(0 0 0) '(1 0 0) '(0 1 0)) ; XY平面坐标系
返回: ((1 0 0 0)(0 1 0 0)(0 0 1 0)(0 0 0 1))
(xdrx-matrix-setcoordsystem '((1 0 0)(0 1 0)(0 0 1)) '(5 5 0) '(0 1 0) '(1 0 0)) ; 更新现有矩阵
返回: ((0 1 0 5)(1 0 0 5)(0 0 1 0)(0 0 0 1))
------------------------------------------------------------
36
函数名称: xdrx-matrix-setmirror
描述:
该函数用于创建镜像(反射)变换矩阵。支持多种镜像定义方式:
1. 通过镜像平面(3D)
2. 通过镜像直线(2D/3D)
3. 通过镜像点(2D/3D)
4. 通过现有矩阵+镜像定义
Note: 镜像变换会改变坐标系的手性,行列式为负值
调用格式:
(xdrx-matrix-setmirror <mirror-definition>)
或
(xdrx-matrix-setmirror <matrix> <mirror-definition>)
参数说明:
* `<mirror-definition>`: 镜像定义,可以是:
- 3D点: 关于该点的镜像
- 2D点: 关于该点的镜像
- 直线对象: 关于该直线的镜像
- 平面对象: 关于该平面的镜像
* `<matrix>`: 可选,现有变换矩阵
返回值:
* 返回镜像变换矩阵
* 如果参数无效则返回nil
示例用法:
(xdrx-matrix-setmirror '(0 0 0)) ; 关于原点的镜像
返回: ((-1 0 0 0)(0 -1 0 0)(0 0 -1 0)(0 0 0 1))
(xdrx-matrix-setmirror '((1 0 0)(0 1 0)(0 0 1)) (list '(0 0 0) '(1 0 0))) ; 关于X轴的镜像
返回: ((1 0 0 0)(0 -1 0 0)(0 0 -1 0)(0 0 0 1))
(xdrx-matrix-setmirror (car (entsel))) ; 选择镜像平面
返回: 对应的镜像矩阵
------------------------------------------------------------
37
函数名称: xdrx-matrix-setnonuniformscaling
描述:
该函数用于创建非均匀缩放变换矩阵。可以指定不同坐标轴的不同缩放比例和缩放原点。
Note: 非均匀缩放会改变几何体的形状比例,但保持直线性和角度关系
调用格式:
(xdrx-matrix-setnonuniformscaling <sx> <sy> )
参数说明:
* `<sx>`: X轴缩放比例
* `<sy>`: Y轴缩放比例
* ``: 可选,Z轴缩放比例(3D情况)
* ``: 可选,缩放中心点(2D或3D点),默认为原点
返回值:
* 返回非均匀缩放变换矩阵
* 如果参数无效则返回nil
示例用法:
(xdrx-matrix-setnonuniformscaling 2 3) ; 2D缩放 X2,Y3
返回: ((2 0 0)(0 3 0)(0 0 1))
(xdrx-matrix-setnonuniformscaling 1 2 3 '(5 5 5)) ; 3D缩放 X1,Y2,Z3,中心点(5,5,5)
返回: ((1 0 0 -5)(0 2 0 -10)(0 0 3 -15)(0 0 0 1))
------------------------------------------------------------
38
函数名称: xdrx-matrix-setprojection
描述:
该函数用于创建投影变换矩阵,将几何体投影到指定平面上。需要指定投影平面和投影方向。
Note: 投影变换会降低几何体的维度,是不可逆的奇异变换
调用格式:
(xdrx-matrix-setprojection <matrix> <plane> <direction>)
参数说明:
* `<matrix>`: 必需参数,原始变换矩阵
* `<plane>`: 投影平面定义(平面对象或平面参数)
* `<direction>`: 投影方向(3D向量)
返回值:
* 返回投影变换矩阵
* 如果参数无效则返回nil
示例用法:
(xdrx-matrix-setprojection '((1 0 0 0)(0 1 0 0)(0 0 1 0)(0 0 0 1))
(list '(0 0 0) '(1 0 0) '(0 1 0)) ; XY平面
'(0 0 -1) ; Z轴负方向投影
返回: ((1 0 0 0)(0 1 0 0)(0 0 0 0)(0 0 0 1)) ; 正交投影矩阵
(xdrx-matrix-setprojection (xdrx-matrix-identity)
(xdrx-plane-create '(0 0 0) '(0 0 1)) ; XY平面
'(1 1 1)) ; 斜投影
返回: 对应的斜投影矩阵
------------------------------------------------------------
39
函数名称: xdrx-matrix-setrotation
描述:
该函数用于创建旋转变换矩阵。支持2D和3D旋转,可以指定旋转角度、旋转轴和旋转中心点。
Note: 旋转角度单位为度,正角度表示逆时针方向旋转
调用格式:
(xdrx-matrix-setrotation <angle> [<axis>] [<origin>])
或
(xdrx-matrix-setrotation <matrix> <angle> <axis> [<origin>])
参数说明:
* `<angle>`: 旋转角度(度)
* `<axis>`: 3D旋转轴向量(3D情况)
* `<origin>`: 旋转中心点(可选)
* `<matrix>`: 现有变换矩阵(可选)
返回值:
* 返回旋转变换矩阵
* 如果参数无效则返回nil
示例用法:
(xdrx-matrix-setrotation 45) ; 2D旋转45度(绕原点)
返回: ((0.707 -0.707 0)(0.707 0.707 0)(0 0 1))
(xdrx-matrix-setrotation 90 '(0 0 1) '(5 5 0)) ; 3D绕Z轴旋转90度,中心点(5,5,0)
返回: ((0 -1 0 10)(1 0 0 0)(0 0 1 0)(0 0 0 1))
(xdrx-matrix-setrotation '((1 0 0)(0 1 0)(0 0 1)) 30 '(0 0 1)) ; 在现有矩阵上叠加旋转
返回: 组合后的变换矩阵
------------------------------------------------------------
40
函数名称: xdrx-matrix-setscale
描述:
该函数用于创建缩放变换矩阵。支持均匀缩放和非均匀缩放,可以指定缩放中心和现有变换矩阵。
Note: 当只提供一个缩放参数时,将执行均匀缩放;提供多个参数时可实现各向异性缩放
调用格式:
(xdrx-matrix-setscale <scale> [<origin>])
或
(xdrx-matrix-setscale <matrix> <scale> [<origin>])
或
(xdrx-matrix-setscale <sx> <sy> [<sz>] [<origin>])
参数说明:
* `<scale>`: 统一缩放比例
* `<sx>`, `<sy>`, `<sz>`: 各轴向缩放比例
* `<origin>`: 缩放中心点(可选)
* `<matrix>`: 现有变换矩阵(可选)
返回值:
* 返回缩放变换矩阵
* 如果参数无效则返回nil
示例用法:
(xdrx-matrix-setscale 2) ; 2D均匀放大2倍
返回: ((2 0 0)(0 2 0)(0 0 1))
(xdrx-matrix-setscale '((1 0 0 0)(0 1 0 0)(0 0 1 0)(0 0 0 1)) 2 '(5 5 5)) ; 3D以(5,5,5)为中心放大2倍
返回: ((2 0 0 -5)(0 2 0 -5)(0 0 2 -5)(0 0 0 1))
(xdrx-matrix-setscale 1 2 3) ; 3D各向异性缩放
返回: ((1 0 0 0)(0 2 0 0)(0 0 3 0)(0 0 0 1))
------------------------------------------------------------
41
函数名称: xdrx-matrix-setshearx
描述:
该函数用于创建X轴方向的剪切变换矩阵。可以指定剪切角度,并支持在现有变换矩阵基础上叠加剪切变换。
Note: 剪切变换会改变几何体的形状但保持面积/体积不变,常用于创建斜切效果
调用格式:
(xdrx-matrix-setshearx <angle>)
或
(xdrx-matrix-setshearx <matrix> <angle>)
参数说明:
* `<angle>`: 剪切角度(弧度)
* `<matrix>`: 可选,现有变换矩阵
返回值:
* 返回剪切变换矩阵
* 如果参数无效则返回nil
示例用法:
(xdrx-matrix-setshearx 0.785) ; 45度X轴剪切(约0.785弧度)
返回: ((1 1 0 0)(0 1 0 0)(0 0 1 0)(0 0 0 1))
(xdrx-matrix-setshearx '((2 0 0)(0 1 0)(0 0 1)) 0.523) ; 在缩放矩阵上叠加30度剪切(约0.523弧度)
返回: ((2 1.154 0 0)(0 1 0 0)(0 0 1 0)(0 0 0 1))
------------------------------------------------------------
42
函数名称: xdrx-matrix-setsheary
描述:
该函数用于创建Y轴方向的剪切变换矩阵。可以指定剪切角度,并支持在现有变换矩阵基础上叠加剪切变换。
Note: 剪切变换会改变几何体的形状但保持面积/体积不变,Y轴剪切会使物体沿Y方向倾斜
调用格式:
(xdrx-matrix-setsheary <angle>)
或
(xdrx-matrix-setsheary <matrix> <angle>)
参数说明:
* `<angle>`: 剪切角度(弧度)
* `<matrix>`: 可选,现有变换矩阵
返回值:
* 返回剪切变换矩阵
* 如果参数无效则返回nil
示例用法:
(xdrx-matrix-setsheary 0.785) ; 45度Y轴剪切(约0.785弧度)
返回: ((1 0 0 0)(1 1 0 0)(0 0 1 0)(0 0 0 1))
(xdrx-matrix-setsheary '((1 0 0)(0 2 0)(0 0 1)) 0.523) ; 在缩放矩阵上叠加30度剪切(约0.523弧度)
返回: ((1 0 0 0)(0.577 2 0 0)(0 0 1 0)(0 0 0 1))
------------------------------------------------------------
43
函数名称: xdrx-matrix-settoplanetoworld
描述:
该函数用于创建从指定平面坐标系到世界坐标系(WCS)的变换矩阵。可以通过平面法线或平面对象来定义平面坐标系。
Note: 该变换矩阵将平面局部坐标系下的点转换到世界坐标系,常用于将用户定义的平面坐标系对齐到WCS
调用格式:
(xdrx-matrix-settoplanetoworld <normal-vector>)
或
(xdrx-matrix-settoplanetoworld <plane-entity>)
或
(xdrx-matrix-settoplanetoworld <origin-point> <normal-vector>)
参数说明:
* `<normal-vector>`: 平面法线向量(3D)
* `<plane-entity>`: 平面图元对象
* `<origin-point>`: 平面原点位置(3D点)
返回值:
* 返回4x4变换矩阵
* 如果参数无效则返回nil
示例用法:
(xdrx-matrix-settoplanetoworld '(0 0 1)) ; XY平面
返回: ((1 0 0 0)(0 1 0 0)(0 0 1 0)(0 0 0 1))
(xdrx-matrix-settoplanetoworld (car (entsel))) ; 选择平面对象
返回: 对应的变换矩阵
(xdrx-matrix-settoplanetoworld '(1 2 3) '(0 0 1)) ; 指定原点的XY平面
返回: ((1 0 0 1)(0 1 0 2)(0 0 1 3)(0 0 0 1))
------------------------------------------------------------
44
函数名称: xdrx-matrix-settoworldtoplane
函数别名:
xdrx_matrix_wcs2plane
描述:
该函数用于创建从世界坐标系(WCS)到指定平面坐标系的变换矩阵。可以通过平面法线或平面对象来定义目标平面坐标系。
Note: 该变换矩阵是xdrx-matrix-settoplanetoworld的逆矩阵,用于将世界坐标系的点转换到平面局部坐标系
调用格式:
(xdrx-matrix-settoworldtoplane <normal-vector>)
或
(xdrx-matrix-settoworldtoplane <plane-entity>)
或
(xdrx-matrix-settoworldtoplane <origin-point> <normal-vector>)
参数说明:
* `<normal-vector>`: 平面法线向量(3D)
* `<plane-entity>`: 平面图元对象
* `<origin-point>`: 平面原点位置(3D点)
返回值:
* 返回4x4变换矩阵
* 如果参数无效则返回nil
示例用法:
(xdrx-matrix-settoworldtoplane '(0 0 1)) ; 转换到XY平面坐标系
返回: ((1 0 0 0)(0 1 0 0)(0 0 1 0)(0 0 0 1))
(xdrx-matrix-settoworldtoplane (car (entsel))) ; 选择平面对象
返回: 对应的变换矩阵
(xdrx-matrix-settoworldtoplane '(1 2 3) '(0 0 1)) ; 转换到指定原点的XY平面
返回: ((1 0 0 -1)(0 1 0 -2)(0 0 1 -3)(0 0 0 1))
------------------------------------------------------------
45
函数名称: xdrx-matrix-settranslation
描述:
该函数用于创建平移变换矩阵。支持2D和3D平移变换,可以指定平移向量或在现有变换矩阵上叠加平移变换。
Note: 平移变换是最基本的仿射变换之一,只改变几何体的位置而不改变其形状和方向
调用格式:
(xdrx-matrix-settranslation <translation-vector>)
或
(xdrx-matrix-settranslation <matrix> <translation-vector>)
参数说明:
* `<translation-vector>`: 平移向量(2D或3D)
* `<matrix>`: 可选,现有变换矩阵
返回值:
* 返回平移变换矩阵
* 如果参数无效则返回nil
示例用法:
(xdrx-matrix-settranslation '(10 20)) ; 2D平移
返回: ((1 0 0)(0 1 0)(10 20 1))
(xdrx-matrix-settranslation '((1 0 0 0)(0 1 0 0)(0 0 1 0)(0 0 0 1)) '(5 10 15)) ; 3D平移叠加
返回: ((1 0 0 5)(0 1 0 10)(0 0 1 15)(0 0 0 1))
------------------------------------------------------------
46
函数名称: xdrx-matrix-transcoordsys
函数别名:xdrx_matrix_transcoordsystem
描述:
该函数用于创建坐标系间的变换矩阵,将一个坐标系中的点转换到另一个坐标系。支持多种坐标系定义方式:
1. 数字参数:0(世界坐标系)、1(当前UCS)
2. 实体参数:平面或实体坐标系
3. 直接参数:原点+X轴+Y轴+向量
调用格式:
(xdrx-matrix-transcoordsys <from-coordsys> <to-coordsys>)
参数说明:
* `<from-coordsys>`: 源坐标系,可以是:
- 数字0(WCS)或1(UCS)
- 平面/实体对象
- 坐标系定义列表(原点 X轴 Y轴 )
* `<to-coordsys>`: 目标坐标系,格式同源坐标系
返回值:
* 返回坐标系变换矩阵
* 如果参数无效则返回nil
示例用法:
(xdrx-matrix-transcoordsys 0 1) ; WCS到UCS的变换
返回: 对应的变换矩阵
(xdrx-matrix-transcoordsys (list '(0 0 0) '(1 0 0) '(0 1 0))
(list '(5 5 0) '(0 1 0) '(-1 0 0))) ; 自定义坐标系变换
返回: ((0 -1 0 5)(1 0 0 5)(0 0 1 0)(0 0 0 1))
------------------------------------------------------------
47
函数名称: xdrx-matrix-translation
描述:
该函数用于从变换矩阵中提取平移分量。支持2D和3D变换矩阵的平移分量提取。
Note: 平移分量存储在变换矩阵的最后一行(2D)或最后一列(3D)中
调用格式:
(xdrx-matrix-translation <matrix>)
参数说明:
* `<matrix>`: 必需参数,2D或3D变换矩阵
返回值:
* 返回平移向量(2D或3D)
* 如果输入不是有效的矩阵,则返回nil
示例用法:
(xdrx-matrix-translation '((1 0 0)(0 1 0)(10 20 1)))
返回: (10 20) ; 2D平移向量
(xdrx-matrix-translation '((1 0 0 5)(0 1 0 10)(0 0 1 15)(0 0 0 1)))
返回: (5 10 15) ; 3D平移向量
------------------------------------------------------------
48
函数名称: xdrx-matrix-transpose
描述:
该函数用于计算变换矩阵的转置矩阵。支持2D和3D变换矩阵的转置运算。
Note: 转置矩阵将原矩阵的行列互换,对于正交矩阵,转置矩阵等于逆矩阵
调用格式:
(xdrx-matrix-transpose <matrix>)
参数说明:
* `<matrix>`: 必需参数,2D或3D变换矩阵
返回值:
* 返回转置后的矩阵
* 如果输入不是有效的矩阵,则返回nil
示例用法:
(xdrx-matrix-transpose '((1 2 0)(3 4 0)(0 0 1)))
返回: ((1 3 0)(2 4 0)(0 0 1)) ; 2D矩阵转置
(xdrx-matrix-transpose '((1 0 0 0)(2 1 0 0)(3 2 1 0)(0 0 0 1)))
返回: ((1 2 3 0)(0 1 2 0)(0 0 1 0)(0 0 0 1)) ; 3D矩阵转置
------------------------------------------------------------
49
函数名称: xdrx-matrix-ucs2dcs
描述:
该函数用于获取从用户坐标系(UCS)到显示坐标系(DCS)的变换矩阵。通过当前活动视口的变换矩阵计算得到,先获取UCS到WCS的矩阵,再与WCS到DCS的矩阵相乘得到最终结果。
调用格式:
(xdrx-matrix-ucs2dcs)
参数说明:
* 该函数无需参数
返回值:
* 返回一个4x4变换矩阵,表示从用户坐标系(UCS)到显示坐标系(DCS)的变换
示例用法:
(xdrx-matrix-ucs2dcs)
返回: ((1.0 0.0 0.0 0.0)(0.0 1.0 0.0 0.0)(0.0 0.0 1.0 0.0)(0.0 0.0 0.0 1.0))
------------------------------------------------------------
50
函数名称: xdrx-matrix-ucs2wcs
描述:
该函数用于获取从用户坐标系(UCS)到世界坐标系(WCS)的变换矩阵。返回当前UCS相对于WCS的变换关系。
调用格式:
(xdrx-matrix-ucs2wcs)
参数说明:
* 该函数无需参数
返回值:
* 返回一个4x4变换矩阵,表示从用户坐标系(UCS)到世界坐标系(WCS)的变换
示例用法:
(xdrx-matrix-ucs2wcs)
返回: ((1.0 0.0 0.0 0.0)(0.0 1.0 0.0 0.0)(0.0 0.0 1.0 0.0)(0.0 0.0 0.0 1.0)) ; 当UCS与WCS重合时
------------------------------------------------------------
51
函数名称: xdrx_matrix_ucsview
描述:
该函数用于获取当前UCS(用户坐标系)到WCS(世界坐标系)的视图变换矩阵。函数返回一个4x4的变换矩阵,表示从UCS到WCS的转换关系。
调用格式:
(xdrx_matrix_ucsview)
参数说明:
无
返回值:
* 返回一个包含16个元素的列表,表示4x4变换矩阵。矩阵按行优先顺序排列。
示例用法:
(xdrx_matrix_ucsview)
返回: (1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0)
------------------------------------------------------------
52
函数名称: xdrx_matrix_wcs2block
描述:
该函数用于获取将世界坐标系(WCS)转换到指定块参照的局部坐标系的变换矩阵。函数接受一个块参照实体名作为参数,返回对应的4x4变换矩阵。
调用格式:
(xdrx_matrix_wcs2block <blkref>)
参数说明:
* <blkref>: 块参照实体名
返回值:
* 返回一个包含16个元素的列表,表示4x4变换矩阵。矩阵按行优先顺序排列。
* 如果参数无效,返回单位矩阵。
示例用法:
(xdrx_matrix_wcs2block (car (entsel)))
返回: (1.0 0.0 0.0 10.0 0.0 1.0 0.0 20.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0)
------------------------------------------------------------
53
函数名称: xdrx_matrix_wcs2dcs
描述:
该函数用于获取从世界坐标系(WCS)到当前视口的显示坐标系(DCS)的变换矩阵。可指定X轴方向,默认使用世界坐标系的X轴方向。
调用格式:
(xdrx_matrix_wcs2dcs )
参数说明:
* : 可选参数,3D点类型,表示DCS坐标系的X轴方向向量。如果未指定,则使用世界坐标系的X轴方向。
返回值:
* 返回一个包含16个元素的列表,表示4x4变换矩阵。矩阵按行优先顺序排列。
示例用法:
(xdrx_matrix_wcs2dcs) ; 使用默认X轴方向
(xdrx_matrix_wcs2dcs '(1 0 0)) ; 指定X轴方向
返回: (1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0)
------------------------------------------------------------
54
函数名称: xdrx_matrix_wcs2ucs
描述:
该函数用于获取从世界坐标系(WCS)到当前用户坐标系(UCS)的变换矩阵。矩阵描述了从WCS到当前UCS的坐标转换关系。
调用格式:
(xdrx_matrix_wcs2ucs)
参数说明:
无
返回值:
* 返回一个包含16个元素的列表,表示4x4变换矩阵。矩阵按行优先顺序排列。
* 矩阵可用于将WCS坐标转换为UCS坐标。
示例用法:
(xdrx_matrix_wcs2ucs)
返回: (0.707 -0.707 0.0 10.0 0.707 0.707 0.0 5.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0)
------------------------------------------------------------
页:
[1]