XDSoft 发表于 2025-5-17 17:52:57

XDrxAPI 73 个实体处理函数帮助手册

1
函数名称: xdrx_entity->memory

描述:
将实体克隆到内存,转换成非常驻数据库内存实体

调用格式:
(xdrx_entity->memory [实体或选择集] [选项])

参数说明:
* [实体或选择集]: 可以是以下类型:
- 实体名
- 选择集
- 组名
* [选项]: 可选参数:
- T: 保留原实体
- 默认会删除原实体

返回值:
列表 - 包含新创建实体名的列表
nil - 失败

示例用法1:
(xdrx_entity->memory (car (entsel)))
; 克隆选择实体到内存并删除原实体

示例用法2:
(xdrx_entity->memory (ssget) T)
; 克隆选择集中所有实体到内存并保留原实体

注意事项:
1. 支持单个实体、选择集或组
2. 默认会删除原实体
3. 返回新创建的非常驻数据库内存实体列表
4. 新实体与原实体具有相同属性
5. 使用者须通过xdrx-free释放内存,或者通过函数xdrx-end自动释放
------------------------------------------------------------
2
函数名称: xdrx-entity->overlaps
函数别名: xdrx-entity-get_overlaps

描述:
检测实体间的重叠情况,返回重叠实体组

调用格式:
(xdrx-entity->overlaps [实体列表] [方向向量])

参数说明:
* [实体列表]: 可以是以下类型:
- 实体名
- 选择集
- 点列表(RTLB)
* [方向向量]: 可选,检测方向(RT3DPOINT)
- 默认方向为X轴正方向

返回值:
列表 - 包含重叠实体组的列表,每组为一个子列表
nil - 无重叠

示例用法1:
(xdrx-entity->overlaps (ssget))
; 检测选择集中实体的重叠情况

示例用法2:
(xdrx-entity->overlaps (list ent1 ent2) '(0 1 0))
; 沿Y轴方向检测两个实体的重叠情况

注意事项:
1. 支持点列表、实体名或选择集作为输入
2. 默认检测方向为X轴正方向
3. 返回重叠实体组列表
4. 每组重叠实体以子列表形式返回
5. 非数据库常驻实体需要先转换为内存实体
------------------------------------------------------------
3
函数名称: xdrx-entity->pickset

描述:
将实体转换为选择集对象

调用格式:
(xdrx-entity->pickset [实体或选择集])

参数说明:
* [实体或选择集]: 可以是以下类型:
- 实体名
- 选择集

返回值:
选择集 - 包含输入实体的选择集对象
nil - 失败

示例用法1:
(xdrx-entity->pickset (car (entsel)))
; 将选择的单个实体转换为选择集

示例用法2:
(xdrx-entity->pickset (ssget))
; 将现有选择集转换为新的选择集对象

注意事项:
1. 支持单个实体或现有选择集作为输入
2. 返回的选择集可以用于后续选择集操作
3. 转换后的选择集与原实体保持关联
4. 适用于需要选择集作为参数的函数
------------------------------------------------------------
4
函数名称: xdrx-entity->polygons

描述:
将实体转换为带洞多边形的曲线实体列表

调用格式:
(xdrx-entity->polygons [实体或选择集])

参数说明:
* [实体或选择集]: 可以是以下类型:
- 实体名
- 选择集

返回值:
列表 - 包含带洞多边形的曲线实体列表,每个子表代表一个带洞多边形
- 子表第一个曲线是外环
- 其余曲线是内环
nil - 失败

示例用法1:
(xdrx-entity->polygons (car (entsel)))
; 转换选择的实体为带洞多边形曲线

示例用法2:
(xdrx-entity->polygons (ssget "X" '((0 . "LWPOLYLINE"))))
; 转换选择的所有多段线为带洞多边形曲线

注意事项:
1. 支持单个实体或选择集作为输入
2. 输入实体应为封闭的多段线或面域
3. 返回的曲线实体可直接用于绘图操作
4. 每个带洞多边形以子表形式返回,第一个元素为外环
------------------------------------------------------------
5
函数名称: xdrx-entity->validents

描述:
获取有效的未删除实体到选择集或实体表

调用格式:
(xdrx-entity->validents [实体或选择集] [选项])

参数说明:
* [实体或选择集]: 可以是以下类型:
- 实体名
- 选择集
* [选项]: 可选参数:
- T: 返回选择集
- 默认返回实体表

返回值:
选择集或实体表 - 包含有效实体的选择集或实体表
nil - 无有效实体

示例用法1:
(xdrx-entity->validents (car (entsel)))
; 获取选择实体的有效实体表

示例用法2:
(xdrx-entity->validents (ssget) T)
; 获取选择集中所有有效实体组成的选择集

注意事项:
1. 自动过滤已删除或无效的实体
2. 默认返回实体表(列表形式)
3. 指定T参数返回选择集
4. 适用于需要确保实体有效的场景
------------------------------------------------------------
6
函数名称: xdrx-entity<-ssnamex

描述:
从选择集名称索引获取实体及其变换矩阵

调用格式:
(xdrx-entity<-ssnamex [选择集名称索引] [选项])

参数说明:
* [选择集名称索引]: 选择集名称索引结构
* [选项]: 可选参数:
- T: 仅返回实体
- 默认返回实体和变换矩阵

返回值:
列表 - 包含实体和变换矩阵的列表
- 第一个元素为实体名
- 第二个元素为变换矩阵(可选)
nil - 失败

示例用法1:
(xdrx-entity<-ssnamex (ssnamex (ssget) 0))
; 获取选择集第一个实体的名称和变换矩阵

示例用法2:
(xdrx-entity<-ssnamex (ssnamex (ssget) 0) T)
; 仅获取选择集第一个实体的名称

注意事项:
1. 输入应为ssnamex函数返回的选择集名称索引
2. 默认返回实体名和变换矩阵
3. 指定T参数仅返回实体名
4. 变换矩阵可用于实体变换操作
5. 适用于需要精确控制选择集元素的场景
------------------------------------------------------------
7
函数名称: xdrx-entity-align

描述:
将实体对齐到指定位置

调用格式:
(xdrx-entity-align [实体或选择集] 起点1 起点2 终点1 终点2 [选项])

参数说明:
* [实体或选择集]: 可以是以下类型:
- 实体名
- 选择集
* 起点1: 源对齐起点(RT3DPOINT)
* 起点2: 源对齐终点(RT3DPOINT)
* 终点1: 目标对齐起点(RT3DPOINT)
* 终点2: 目标对齐终点(RT3DPOINT)
* [选项]: 可选参数:
- T: 启用缩放

返回值:
nil - 始终返回nil

示例用法1:
(xdrx-entity-align (ssget) '(0 0 0) '(1 0 0) '(5 5 0) '(6 5 0))
; 将选择集中的实体从X轴对齐到新位置

示例用法2:
(xdrx-entity-align (car (entsel)) '(0 0 0) '(1 1 0) '(2 2 0) '(3 3 0) T)
; 对齐单个实体并启用缩放

注意事项:
1. 支持单个实体或选择集作为输入
2. 需要提供4个点参数定义对齐方式
3. 可选T参数启用缩放变换
4. 直接修改实体位置,不创建副本
5. 适用于精确对齐场景
------------------------------------------------------------
8
函数名称: xdrx-entity-bbox-intersect
函数别名: xdrx-entity-boxintersectwith

描述:
检测实体边界框相交情况

调用格式:
(xdrx-entity-bbox-intersect [实体集1] [实体集2] [相交类型])

参数说明:
* [实体集1]: 可以是以下类型:
- 实体名
- 选择集
- 点列表(RT3DPOINT)
* [实体集2]: 可选,同实体集1类型
* [相交类型]: 可选,指定相交检测方式:
- 0: 两者都延伸(kOnBothOperands)
- 1: 仅延伸第一个实体(kExtendThis)
- 2: 仅延伸第二个实体(kExtendArg)
- 3: 都不延伸(kOnBothOperands)

返回值:
点列表 - 包含所有相交点的列表
nil - 无相交

示例用法1:
(xdrx-entity-bbox-intersect (ssget))
; 检测选择集中所有实体间的相交

示例用法2:
(xdrx-entity-bbox-intersect (car (entsel)) (ssget) 1)
; 检测单个实体与选择集的相交(仅延伸第一个实体)

注意事项:
1. 支持单个实体、选择集或点列表作为输入
2. 当只提供一个实体集时,检测集内所有实体间的相交
3. 相交类型参数可选,默认为0(两者都延伸)
4. 返回的相交点可用于进一步分析或绘图
5. 适用于碰撞检测等场景
------------------------------------------------------------
9
函数名称: xdrx-entity-box

描述:
获取实体的边界框信息

调用格式:
(xdrx-entity-box [实体或选择集] [方向] [方向控制])

参数说明:
* [实体或选择集]: 可以是以下类型:
- 实体名
- 选择集
- 组名
* [方向]: 可选,指定边界框方向:
- 点(RT3DPOINT): 作为方向向量
- nil: 使用当前UCS坐标系
* : 可选参数:
- T: 使用WCS坐标系
* [方向控制]: 可选参数:
- T: 当角度>45度时使用垂直向量

返回值:
点列表 - 包含边界框四个角点的列表(左下、右下、右上、左上)
nil - 失败

示例用法1:
(xdrx-entity-box (ssget))
; 获取选择集中所有实体的边界框

示例用法2:
(xdrx-entity-box (car (entsel)) '(1 0 0) T T)
; 获取实体在X轴方向的边界框(WCS坐标系+方向控制)

注意事项:
1. 支持单个实体、选择集或组作为输入
2. 方向参数可选,默认为当前UCS坐标系
3. 可以同时使用WCS标志和方向控制
4. 方向控制会在角度大于45度时自动使用垂直向量
5. 适用于需要精确控制边界框方向的场景
------------------------------------------------------------
10
函数名称: xdrx-entity-copy
函数别名: xdrx-entity-transformedcopy

描述:
复制实体并支持变换

调用格式:
(xdrx-entity-copy [实体或选择集] [变换参数] [选项])

参数说明:
* [实体或选择集]: 可以是以下类型:
- 实体名
- 选择集
* [变换参数]: 可选,指定变换方式:
- 点(RT3DPOINT): 作为位移向量
- 变换矩阵: 3x3变换矩阵
- T: 使用默认位移(0,0,0)
* [选项]: 可选参数:
- T: 返回新实体列表

返回值:
实体列表 - 当选项T为真时返回新实体列表
nil - 默认返回nil

示例用法1:
(xdrx-entity-copy (ssget))
; 复制选择集中所有实体(不位移)

示例用法2:
(xdrx-entity-copy (car (entsel)) '(1 0 0) T)
; 复制实体并沿X轴移动1个单位,返回新实体列表

注意事项:
1. 支持单个实体或选择集作为输入
2. 变换参数可选,默认为不位移
3. 支持点位移或变换矩阵
4. 选项T参数控制是否返回新实体列表
5. 适用于需要复制并变换实体的场景
------------------------------------------------------------
11
函数名称: xdrx-entity-delete

描述:
删除实体并支持强制删除锁定层上的实体

调用格式:
(xdrx-entity-delete [实体或选择集] [选项])

参数说明:
* [实体或选择集]: 可以是以下类型:
- 实体名
- 选择集
* [选项]: 可选参数:
- T: 强制删除锁定层上的实体

返回值:
nil - 总是返回nil

示例用法1:
(xdrx-entity-delete (ssget))
; 删除选择集中所有实体

示例用法2:
(xdrx-entity-delete (car (entsel)) T)
; 强制删除实体(即使实体在锁定层上)

注意事项:
1. 支持单个实体或选择集作为输入
2. 选项T参数控制是否强制删除锁定层上的实体
3. 强制删除时会临时解锁图层,删除后恢复锁定状态
4. 会自动处理块引用中的实体
5. 适用于需要安全删除实体的场景
------------------------------------------------------------
12
函数名称: xdrx-entity-direction

描述:
获取实体的X轴方向向量

调用格式:
(xdrx-entity-direction 实体名)

参数说明:
* 实体名: 必须是单个实体

返回值:
向量 - 表示实体X轴方向的三维向量(RT3DPOINT)
nil - 失败时返回nil

示例用法1:
(xdrx-entity-direction (car (entsel)))
; 获取选中实体的X轴方向

示例用法2:
(setq dir (xdrx-entity-direction ent))
; 获取实体ent的X轴方向并存入变量dir

注意事项:
1. 只接受单个实体作为输入
2. 返回的是单位向量
3. 适用于需要获取实体坐标系统方向的场景
4. 对于块参照等复合实体,返回其局部坐标系方向
------------------------------------------------------------
13
函数名称: xdrx-entity-draw

描述:
在点监视器回调函数中绘制实体(内存几何实体或数据库实体)

调用格式:
(xdrx-entity-draw [实体或选择集] [变换矩阵])

参数说明:
* [实体或选择集]: 可以是以下类型:
- 实体名
- 选择集
- 内存几何实体(如kCurve3d)
* [变换矩阵]: 可选,3x3变换矩阵

返回值:
T - 成功时返回T
nil - 失败时返回nil

示例用法1:
(xdrx-entity-draw ent)
; 在点监视器中绘制单个实体

示例用法2:
(xdrx-entity-draw ss mat)
; 使用变换矩阵绘制选择集中的所有实体

注意事项:
1. 主要用于点监视器回调函数内部
2. 支持数据库实体、内存几何实体和选择集
3. 变换矩阵参数可选
4. 必须与xdrx-pointmonitor配合使用
5. 适用于动态绘制预览等场景
------------------------------------------------------------
14
函数名称: xdrx-entity-explode

描述:
炸开实体并支持深度炸开和完全炸开选项

调用格式:
(xdrx-entity-explode [实体或选择集] [选项1] [选项2])

参数说明:
* [实体或选择集]: 可以是以下类型:
- 实体名
- 选择集
* [选项1]: 可选参数:
- T: 完全炸开(如将面炸成线)
* [选项2]: 可选参数:
- T: 禁用深度炸开(仅炸开一层)

返回值:
nil - 总是返回nil

示例用法1:
(xdrx-entity-explode (ssget))
; 炸开选择集中所有实体

示例用法2:
(xdrx-entity-explode (car (entsel)) T)
; 完全炸开实体(如将面炸成线)

注意事项:
1. 支持以下实体类型的特殊处理:
   - MINSERT(多重插入块): 分解为多个INSERT块引用
   - INSERT(块引用): 分解为块定义中的实体
   - ACDBFACE(面): 根据选项分解为组成边界的线段
   - 多段线: 分解为线段或圆弧
   - 填充: 分解为边界几何图形
   - 标注: 分解为基本几何元素
2. 第一个T参数控制是否完全炸开(如将面炸成线)
3. 第二个T参数控制是否禁用深度炸开(仅炸开一层)
4. 默认会深度炸开嵌套实体(如块中的块)
5. 适用于需要分解复杂实体的场景
------------------------------------------------------------
15
函数名称: xdrx-entity-filter
函数别名: xdrx-entity-getsub

描述:
过滤实体并处理嵌套实体,支持过滤器条件

调用格式:
(xdrx-entity-filter 实体或选择集 [过滤器])

参数说明:
* 实体或选择集: 可以是以下类型:
- 实体名
- 选择集
* [过滤器]: 可选,过滤条件列表

返回值:
实体名或实体名列表 - 匹配过滤条件的实体
nil - 无匹配实体时返回nil

示例用法1:
(xdrx-entity-filter (ssget))
; 获取当前空间中的所有实体

示例用法2:
(xdrx-entity-filter ent '((0 . "LINE")))
; 过滤指定实体是否为直线

注意事项:
1. 自动处理嵌套实体(如块中的实体)
2. 支持标准AutoCAD过滤器语法
3. 返回结果保持原始实体层次结构
4. 适用于需要精确筛选特定类型实体的场景
5. 过滤器参数可选,不提供时返回所有实体
------------------------------------------------------------
16
函数名称: xdrx-entity-flatten
函数别名: xdrx-entity-project

描述:
将三维实体投影到指定平面,支持删除原实体选项

调用格式:
(xdrx-entity-flatten 实体或选择集 [投影方向] [删除原实体])

参数说明:
* 实体或选择集: 可以是以下类型:
- 实体名
- 选择集
* [投影方向]: 可选,指定投影方向的向量(RT3DPOINT)
默认使用当前视图方向
* [删除原实体]: 可选,T表示删除原实体

返回值:
nil - 总是返回nil

示例用法1:
(xdrx-entity-flatten (ssget))
; 使用当前视图方向投影选择集中所有实体

示例用法2:
(xdrx-entity-flatten ent '(0 0 1) T)
; 沿Z轴方向投影实体并删除原实体

注意事项:
1. 支持单个实体或选择集作为输入
2. 投影方向参数可选,默认为当前视图方向
3. 删除原实体选项可选,默认为保留
4. 适用于将三维图形转换为二维平面图的场景
5. 投影结果保持原始实体属性
------------------------------------------------------------
17
函数名称: xdrx-entity-getreactor

描述:
获取实体的持久反应器对象

调用格式:
(xdrx-entity-getreactor 实体名)

参数说明:
* 实体名: 必须是单个实体

返回值:
实体名或实体名列表 - 关联的持久反应器对象
nil - 无反应器时返回nil

示例用法1:
(xdrx-entity-getreactor (car (entsel)))
; 获取选中实体的持久反应器

示例用法2:
(setq reactors (xdrx-entity-getreactor ent))
; 获取实体ent的所有持久反应器

注意事项:
1. 只接受单个实体作为输入
2. 返回实体关联的所有持久反应器
3. 适用于需要检查实体反应器关系的场景
4. 反应器对象可以是单个实体或实体列表
5. 持久反应器在图形保存时会被保留
------------------------------------------------------------
18
函数名称: xdrx-entity-getecs

描述:
获取实体的ECS(实体坐标系)信息

调用格式:
(xdrx-entity-getecs 实体名 [参考点])

参数说明:
* 实体名: 必须是单个实体
* [参考点]: 可选,指定计算ECS的参考点(RT3DPOINT)

返回值:
列表 - 包含ECS坐标系信息:
(原点 X轴向量 Y轴向量 Z轴向量)

示例用法1:
(xdrx-entity-getecs (car (entsel)))
; 获取选中实体的ECS信息

示例用法2:
(xdrx-entity-getecs ent '(10 10 0))
; 获取实体在指定参考点处的ECS信息

注意事项:
1. 只接受单个实体作为输入
2. 返回ECS坐标系的原点和三个轴向向量
3. 参考点参数可选,用于计算特定位置的ECS
4. 适用于需要获取实体局部坐标系的场景
5. 结果可用于坐标系转换等操作
------------------------------------------------------------
19
函数名称: xdrx-entity-getgripucs

描述:
获取实体夹点处的UCS(用户坐标系)信息

调用格式:
(xdrx-entity-getgripucs [实体名])

参数说明:
* [实体名]: 可选,单个实体
不提供时使用当前堆栈中的实体

返回值:
列表 - 包含UCS坐标系信息:
(原点 X轴向量 Y轴向量 法向量)

示例用法1:
(xdrx-entity-getgripucs)
; 获取当前堆栈中实体的夹点UCS

示例用法2:
(xdrx-entity-getgripucs (car (entsel)))
; 获取选中实体的夹点UCS

注意事项:
1. 实体名参数可选,不提供时使用当前堆栈实体
2. 返回UCS坐标系的原点和三个轴向向量
3. 适用于需要获取实体夹点处局部坐标系的场景
4. 结果可用于坐标系转换等操作
5. 默认使用第一个夹点计算UCS
------------------------------------------------------------
20
函数名称: xdrx-entity-getgrip

描述:
获取实体的夹点坐标

调用格式:
(xdrx-entity-getgrip [实体名])

参数说明:
* [实体名]: 可选,单个实体
不提供时使用当前堆栈中的实体

返回值:
点列表 - 包含实体所有夹点的坐标

示例用法1:
(xdrx-entity-getgrip)
; 获取当前堆栈中实体的夹点坐标

示例用法2:
(xdrx-entity-getgrip (car (entsel)))
; 获取选中实体的夹点坐标

注意事项:
1. 实体名参数可选,不提供时使用当前堆栈实体
2. 返回实体所有夹点的坐标列表
3. 适用于需要获取实体编辑控制点的场景
4. 结果可用于实体编辑和变换操作
5. 夹点坐标基于实体自身的坐标系
------------------------------------------------------------
21
函数名称: xdrx-entity-getlayout

描述:
获取实体所在的布局信息

调用格式:
(xdrx-entity-getlayout 实体名)

参数说明:
* 实体名: 必须是单个实体

返回值:
列表 - 包含布局名称和布局实体ID:
(布局名称 布局实体)

示例用法1:
(xdrx-entity-getlayout (car (entsel)))
; 获取选中实体所在的布局信息

示例用法2:
(setq layout-info (xdrx-entity-getlayout ent))
; 获取实体ent的布局信息

注意事项:
1. 只接受单个实体作为输入
2. 返回布局名称和布局实体ID
3. 适用于需要确定实体所在布局的场景
4. 布局实体ID可用于进一步操作布局
5. 如果实体不在布局中返回nil
------------------------------------------------------------
22
函数名称: xdrx-entity-getplane

描述:
获取实体所在的平面信息

调用格式:
(xdrx-entity-getplane 实体名 )

参数说明:
* 实体名: 必须是单个实体
* : 可选参数,指定时返回几何平面实体

返回值:
根据参数不同返回两种格式:
1. 无T参数时返回列表:
   (平面类型 原点 X轴向量 Y轴向量 法向量)
2. 有T参数时返回几何平面实体

示例用法1:
(xdrx-entity-getplane (car (entsel)))
; 获取选中实体的平面参数

示例用法2:
(xdrx-entity-getplane ent T)
; 获取实体ent的几何平面实体

注意事项:
1. 只接受单个实体作为输入
2. 返回平面参数或几何平面实体
3. 适用于需要获取实体所在平面的场景
4. 平面类型表示平面的几何特性
5. 几何平面实体可直接用于后续操作
------------------------------------------------------------
23
函数名称: xdrx-entity-getprop

描述:
获取实体的属性信息

调用格式:
(xdrx-entity-getprop [实体名或选择集] [属性键...])

参数说明:
* [实体名或选择集]: 可选,单个实体或选择集
不提供时使用当前堆栈中的实体
* : 可选参数,指定时递归获取嵌套实体的属性
* [属性键...]: 可选,要获取的特定属性键

返回值:
属性键值对列表或指定属性的值

示例用法1:
(xdrx-entity-getprop)
; 获取当前堆栈中实体的所有属性

示例用法2:
(xdrx-entity-getprop (car (entsel)) "Color" "Layer")
; 获取选中实体的颜色和图层属性

示例用法3:
(xdrx-entity-getprop ss T)
; 递归获取选择集中所有实体的属性

注意事项:
1. 实体参数可选,不提供时使用当前堆栈实体
2. T参数控制是否递归获取嵌套实体属性
3. 可指定要获取的特定属性
4. 适用于批量获取实体属性的场景
5. 返回结果格式根据参数不同而变化
------------------------------------------------------------
24
函数名称: xdrx-entity-getcolor

描述:
获取实体的真实颜色值

调用格式:
(xdrx-entity-getcolor 实体名)

参数说明:
* 实体名: 必须是单个实体

返回值:
整数 - 实体的真实颜色索引值

示例用法1:
(xdrx-entity-getcolor (car (entsel)))
; 获取选中实体的颜色值

示例用法2:
(setq color (xdrx-entity-getcolor ent))
; 获取实体ent的颜色值

注意事项:
1. 只接受单个实体作为输入
2. 返回实体的真实颜色索引值
3. 适用于需要获取实体实际颜色的场景
4. 颜色值遵循AutoCAD颜色索引标准
5. 会考虑实体本身的颜色和所在图层的颜色
------------------------------------------------------------
25
函数名称: xdrx-entity-getstretch
函数别名: xdrx-entity-stretchpoints

描述:
获取实体的拉伸点坐标

调用格式:
(xdrx-entity-getstretch [实体名])

参数说明:
* [实体名]: 可选,单个实体
不提供时使用当前堆栈中的实体

返回值:
点列表 - 包含实体所有拉伸点的坐标

示例用法1:
(xdrx-entity-getstretch)
; 获取当前堆栈中实体的拉伸点

示例用法2:
(xdrx-entity-getstretch (car (entsel)))
; 获取选中实体的拉伸点

注意事项:
1. 实体名参数可选,不提供时使用当前堆栈实体
2. 返回实体所有拉伸点的坐标列表
3. 适用于需要获取实体编辑控制点的场景
4. 结果可用于实体编辑和变换操作
5. 拉伸点坐标基于实体自身的坐标系
------------------------------------------------------------
26
函数名称: xdrx-entity-groupbytype

描述:
按实体类型分组实体对象

调用格式:
(xdrx-entity-groupbytype [实体名或选择集...])

参数说明:
* [实体名或选择集...]: 可选,一个或多个实体或选择集
不提供时使用当前堆栈中的实体

返回值:
分组列表 - 每个子列表包含(实体类型 实体1 实体2 ...)

示例用法1:
(xdrx-entity-groupbytype)
; 分组当前堆栈中的实体

示例用法2:
(xdrx-entity-groupbytype (ssget))
; 分组选择集中的所有实体

示例用法3:
(xdrx-entity-groupbytype ent1 ent2 ent3)
; 分组指定的多个实体

注意事项:
1. 参数可选,不提供时使用当前堆栈实体
2. 返回按实体类型分组的列表
3. 适用于需要对实体进行分类处理的场景
4. 实体类型使用AutoCAD内部类型名称
5. 结果可直接用于后续的分类处理操作
------------------------------------------------------------
27
函数名称: xdrx-entity-handoverto

描述:
常驻数据库实体和内存非常驻实体之间的转换

调用格式:
(xdrx-entity-handoverto 常驻实体 非常驻实体 )

参数说明:
* 常驻实体: 数据库常驻实体
* 非常驻实体: 内存非常驻实体或几何曲线
* : 可选参数,指定时传递原实体属性到新实体

返回值:
成功时返回T,失败返回nil

示例用法1:
(xdrx-entity-handoverto ent1 ent2)
; 将常驻实体ent1转换为非常驻实体ent2

示例用法2:
(xdrx-entity-handoverto ent curve T)
; 将常驻实体ent转换为几何曲线并保留属性

注意事项:
1. 第一个参数必须是数据库常驻实体
2. 第二个参数可以是内存实体或几何曲线
3. T参数控制是否传递原实体属性
4. 适用于需要转换实体存储位置的场景
5. 转换后原实体将被删除
------------------------------------------------------------
28
函数名称: xdrx-entity-hashstring

描述:
计算实体或数据的哈希值字符串,支持多种数据类型和参数控制

调用格式:
(xdrx-entity-hashstring 实体或数据 [参数掩码])

参数说明:
* 实体或数据: 支持以下类型:
- 实体: 计算实体特征哈希
- 点(RT3DPOINT): 计算点坐标哈希
- 字符串: 计算字符串哈希
- 数值(RTREAL/RTSHORT/RTLONG): 计算数值哈希
* [参数掩码]: 可选,对实体哈希计算控制参数(位掩码组合):
1 = 包含实体类型
2 = 包含图层
4 = 包含颜色
8 = 包含线型
16 = 包含线型比例
32 = 包含线宽
64 = 包含控制点
128 = 包含边界框
256 = 使用相对坐标计算
512 = 包含填充图案(对填充实体)
1024 = 包含填充比例(对填充实体)
2048 = 包含填充角度(对填充实体)
4096 = 包含填充间距(对填充实体)

返回值:
字符串 - 计算得到的哈希值

示例用法1:
(xdrx-entity-hashstring (car (entsel)) 511)
; 计算选中实体的完整特征哈希(1+2+4+8+16+32+64+128+256=511)

示例用法2:
(xdrx-entity-hashstring '(1.0 2.0 3.0))
; 计算点(1,2,3)的哈希值

示例用法3:
(xdrx-entity-hashstring "test" 128)
; 计算字符串"test"的哈希值

注意事项:
1. 实体哈希参数可组合使用(如511表示包含所有基本特征)
2. 对填充实体有额外参数控制填充特征
3. 使用相对坐标(256)可使相同形状不同位置的实体获得相同哈希
4. 相同输入保证得到相同哈希值
5. 哈希值可作为实体指纹用于比较或索引
------------------------------------------------------------
29
函数名称: xdrx-entity-intersectwith

描述:
计算实体间的交点,支持多种实体类型和交点计算方式

调用格式:
(xdrx-entity-intersectwith 实体集1 [实体集2] [计算方式])

参数说明:
* 实体集1: 可以是以下类型:
- 单个实体
- 选择集
- 点列表(RTLB包含多个RT3DPOINT)
- 几何曲线(kCurve3d/kCurve2d)
* [实体集2]: 可选,同实体集1格式
不提供时计算实体集1内部所有实体的交点
* [计算方式]: 可选,控制交点计算方式(0-3):
0 = kOnBothOperands (默认)
1 = kExtendThis
2 = kExtendArg
3 = kExtendBoth

返回值:
交点列表 - 每个交点为(RT3DPOINT)

示例用法1:
(xdrx-entity-intersectwith (ssget))
; 计算选择集中所有实体的交点

示例用法2:
(xdrx-entity-intersectwith ent1 ent2)
; 计算两个实体间的交点

示例用法3:
(xdrx-entity-intersectwith '((1 2 0) (3 4 0)) ent1 1)
; 计算多段线与实体的交点(延伸多段线)

注意事项:
1. 支持实体、选择集、点列表和几何曲线
2. 点列表会自动转换为临时多段线
3. 计算方式控制是否延伸实体求交
4. 对区域实体有特殊处理
5. 临时创建的几何曲线会被自动删除
------------------------------------------------------------
30
函数名称: xdrx-entity-list

描述:
列出实体的DXF数据,支持直接输出或返回字符串

调用格式:
(xdrx-entity-list 实体 )

参数说明:
* 实体: 要列出DXF数据的实体
* : 可选参数,指定时直接输出到命令行,不指定时返回字符串

返回值:
当不指定T参数时返回包含DXF数据的字符串,否则无返回值

示例用法1:
(xdrx-entity-list (car (entsel)))
; 返回选中实体的DXF数据字符串

示例用法2:
(xdrx-entity-list ent T)
; 直接在命令行输出实体的DXF数据

注意事项:
1. 仅支持AutoCAD环境,不支持BricsCAD
2. T参数控制输出方式
3. 返回的字符串包含完整的DXF组码数据
4. 可用于调试或获取实体详细信息
------------------------------------------------------------
31
函数名称: xdrx-entity-make
函数别名: xdrx-entity-mementmake

描述:
将非常驻数据库内存的几何实体对象转换为常驻数据库实体

调用格式:
(xdrx-entity-make 临时实体对象)

参数说明:
* 临时实体对象: 必须是非常驻数据库内存的几何对象,包括:
- 几何曲线(kCurve3d/kCurve2d)
- 临时CAD实体对象(AcDbEntity指针)
- 零长度曲线会被自动忽略

返回值:
新创建的常驻数据库实体图元名

示例用法1:
(setq ent (xdrx-entity-make 临时几何曲线))
; 将临时几何曲线转换为数据库实体

示例用法2:
(setq newEnt (xdrx-entity-make 临时实体指针))
; 克隆临时实体并返回数据库实体

注意事项:
1. 转换后的实体会自动添加到当前数据库空间
2. 输入的临时对象会被自动释放内存
3. 支持3D/2D几何曲线转换
4. 零长度曲线不会创建实体
5. 返回的实体由数据库永久管理
6. 典型应用场景:
   - 将计算生成的几何对象转为可编辑CAD实体
   - 克隆临时实体为持久化实体
------------------------------------------------------------
32
函数名称: xdrx-entity-matchprop

描述:
匹配实体属性,支持常规属性和扩展数据(Xdata/字典)的匹配

调用格式:
(xdrx-entity-matchprop 源实体 目标实体集 )

参数说明:
* 源实体: 提供属性的实体
* 目标实体集: 可以是以下类型:
- 单个实体
- 选择集
- 实体指针列表
* : 第一个T表示匹配扩展数据(Xdata)
* : 第二个T表示匹配扩展字典(XDict)

返回值:
匹配成功返回T,否则返回nil

示例用法1:
(xdrx-entity-matchprop ent1 (ssget))
; 将选择集实体属性匹配为ent1的属性

示例用法2:
(xdrx-entity-matchprop ent1 ent2 T)
; 匹配实体属性包括Xdata

示例用法3:
(xdrx-entity-matchprop ent1 (ssget) T T)
; 匹配实体属性包括Xdata和扩展字典

注意事项:
1. 支持常规属性、图层、线型等匹配
2. 可选匹配扩展数据(Xdata)
3. 可选匹配扩展字典(XDict)
4. 支持数据库实体和内存实体
5. 比MATCHPROP命令功能更全面
------------------------------------------------------------
33
函数名称: xdrx-entity-mirror

描述:
创建实体的镜像副本,支持文本、标注、块参照等特殊处理

调用格式:
(xdrx-entity-mirror 实体集 镜像轴 )

参数说明:
* 实体集: 可以是以下类型:
- 单个实体(RTENAME)
- 选择集(RTPICKS)
- 实体指针列表
* 镜像轴: 由两个点定义的镜像线(RTLB包含两个RT3DPOINT/RTPOINT)
* : 可选参数,指定时删除原实体

返回值:
包含镜像实体的选择集(RTPICKS)

示例用法1:
(xdrx-entity-mirror (ssget) '((0 0) (10 10)))
; 创建选择集实体的镜像副本

示例用法2:
(xdrx-entity-mirror ent '((1 1 0) (5 5 0)) T)
; 创建镜像副本并删除原实体

注意事项:
1. 镜像轴由两点定义,支持2D/3D点
2. 对文本、多行文字、标注有特殊处理
3. 块参照的属性也会被正确镜像
4. 支持内存实体和数据库实体
5. 比MIRROR命令功能更全面
------------------------------------------------------------
34
函数名称: xdrx-entity-move

描述:
移动实体,支持通过点对点或变换矩阵定义移动

调用格式:
(xdrx-entity-move 实体集 基点 目标点)

(xdrx-entity-move 实体集 变换矩阵)

参数说明:
* 实体集: 可以是以下类型:
- 单个实体(RTENAME)
- 选择集(RTPICKS)
- 实体指针列表
* 基点: 移动起点(RT3DPOINT/RTPOINT)
* 目标点: 移动终点(RT3DPOINT/RTPOINT)

* 变换矩阵: 定义移动的变换矩阵(RTLB)

返回值:
移动成功返回T,否则返回nil

示例用法1:
(xdrx-entity-move (ssget) '(0 0 0) '(10 10 0))
; 将选择集实体从(0,0,0)移动到(10,10,0)

示例用法2:
(xdrx-entity-move ent 变换矩阵)
; 使用变换矩阵移动实体

注意事项:
1. 支持2D/3D点定义移动向量
2. 支持直接使用变换矩阵
3. 支持数据库实体和内存实体
4. 对块参照等复杂实体有完整支持
5. 比MOVE命令更灵活
------------------------------------------------------------
35
函数名称: xdrx-entity-movegrip

描述:
移动实体的指定夹点位置

调用格式:
(xdrx-entity-movegrip 实体 移动向量 夹点索引...)

(xdrx-entity-movegrip 移动向量 夹点索引...)

参数说明:
* 实体: 可选参数,实体名(RTENAME)
* 移动向量: 移动方向和距离(RT3DPOINT)
* 夹点索引: 要移动的夹点索引(RTSHORT),可多个

返回值:
移动成功返回T,否则返回nil

示例用法1:
(xdrx-entity-movegrip ent '(10 0 0) 0 1)
; 将实体ent的第0和第1个夹点沿X轴移动10单位

示例用法2:
(xdrx-entity-movegrip '(0 5 0) 2)
; 将当前选中实体的第2个夹点沿Y轴移动5单位

注意事项:
1. 实体参数可选,省略时操作当前选中实体
2. 移动向量为3D点,表示移动方向和距离
3. 可同时移动多个夹点
4. 夹点索引从0开始
5. 支持所有可编辑的CAD实体类型
------------------------------------------------------------
36
函数名称: xdrx-entity-movestretch

描述:
移动实体的指定拉伸点位置

调用格式:
(xdrx-entity-movestretch 实体 移动向量 拉伸点索引...)

(xdrx-entity-movestretch 移动向量 拉伸点索引...)

参数说明:
* 实体: 可选参数,实体名(RTENAME)
* 移动向量: 移动方向和距离(RT3DPOINT)
* 拉伸点索引: 要移动的拉伸点索引(RTSHORT)或点坐标(RT3DPOINT),可多个

返回值:
移动成功返回T,否则返回nil

示例用法1:
(xdrx-entity-movestretch ent '(10 0 0) 0 1)
; 将实体ent的第0和第1个拉伸点沿X轴移动10单位

示例用法2:
(xdrx-entity-movestretch '(0 5 0) '(1 1 0))
; 将当前选中实体的(1,1,0)位置拉伸点沿Y轴移动5单位

注意事项:
1. 实体参数可选,省略时操作当前选中实体
2. 移动向量为3D点,表示移动方向和距离
3. 可通过索引或点坐标指定拉伸点
4. 支持所有可拉伸的CAD实体类型
5. 比STRETCH命令更精确控制
------------------------------------------------------------
37
函数名称: xdrx-entity-movestretchex

描述:
增强版拉伸点移动功能,提供更灵活的拉伸点指定方式

调用格式:
(xdrx-entity-movestretchex 实体 拉伸点列表 移动向量)

(xdrx-entity-movestretchex 实体 移动向量 拉伸点索引)

参数说明:
* 实体: 实体名(RTENAME)
* 拉伸点列表: 拉伸点坐标或索引列表(RTLB)
* 移动向量: 移动方向和距离(RT3DPOINT)

返回值:
移动成功返回T,否则返回nil

示例用法1:
(xdrx-entity-movestretchex ent '((1 1 0) (2 2 0)) '(10 0 0))
; 将实体ent在(1,1,0)和(2,2,0)处的拉伸点沿X轴移动10单位

示例用法2:
(xdrx-entity-movestretchex ent '(10 0 0) 0)
; 将实体ent的第0个拉伸点沿X轴移动10单位

与xdrx-entity-movestretch的区别:
1. 参数顺序更灵活,支持两种调用格式
2. 拉伸点可以混合使用坐标和索引
3. 支持直接传递点列表
4. 内部处理更高效,减少实体打开次数
5. 对复杂实体支持更好

注意事项:
1. 必须指定实体参数
2. 移动向量为3D点,表示移动方向和距离
3. 支持所有可拉伸的CAD实体类型
4. 比STRETCH命令和xdrx-entity-movestretch更灵活
------------------------------------------------------------
38
函数名称: xdrx-entity-orthoprjintersectwith

描述:
计算两个实体在正交投影平面上的交点

调用格式:
(xdrx-entity-orthoprjintersectwith 实体1 实体2 [延伸模式])

参数说明:
* 实体1: 第一个实体(RTENAME)
* 实体2: 第二个实体(RTENAME),其平面将作为投影平面
* 延伸模式: 可选参数(RTSHORT),默认为3
- 0: 不延伸
- 1: 延伸实体1
- 2: 延伸实体2
- 3: 同时延伸两个实体

返回值:
返回交点坐标列表,每个交点为3D点(RT3DPOINT)

示例用法1:
(xdrx-entity-orthoprjintersectwith ent1 ent2)
; 计算ent1和ent2在ent2平面上的交点,默认延伸两个实体

示例用法2:
(xdrx-entity-orthoprjintersectwith ent1 ent2 0)
; 计算不延伸情况下的交点

注意事项:
1. 交点计算基于实体2的平面进行正交投影
2. 返回的交点坐标是3D点
3. 支持直线、多段线等可计算交点的实体类型
4. 比常规intersectWith更精确处理投影交点
------------------------------------------------------------
39
函数名称: xdrx-entity-getosnap

描述:
获取实体上的对象捕捉点

调用格式:
(xdrx-entity-getosnap 实体 拾取点 [参考点] 捕捉模式)

参数说明:
* 实体: 目标实体(RTENAME)
* 拾取点: 捕捉点附近位置(RT3DPOINT)
* 参考点: 可选参数,捕捉参考点(RT3DPOINT)
* 捕捉模式: 捕捉模式代码(RTSHORT)
- 0: 端点(END)
- 1: 中点(MID)
- 2: 中心点(CEN)
- 3: 节点(NOD)
- 4: 象限点(QUA)
- 5: 交点(INT)
- 6: 插入点(INS)
- 7: 垂足(PER)
- 8: 切点(TAN)
- 9: 最近点(NEA)
- 10: 外观交点(APP)
- 11: 延伸点(EXT)
- 12: 平行(PAR)

返回值:
返回捕捉到的点坐标(RT3DPOINT)

示例用法1:
(xdrx-entity-getosnap ent '(10 10 0) 0)
; 获取实体ent在(10,10,0)附近的端点

示例用法2:
(xdrx-entity-getosnap ent '(5 5 0) '(0 0 0) 7)
; 以(0,0,0)为参考点获取实体ent在(5,5,0)附近的垂足点

注意事项:
1. 支持所有标准CAD对象捕捉模式
2. 返回的捕捉点是3D坐标
3. 对块参照等复杂实体有完整支持
4. 比标准OSNAP命令更精确控制
------------------------------------------------------------
40
函数名称: xdrx-entity-preventities

描述:
获取指定实体的前驱实体(创建顺序上的前一个或多个实体)

调用格式:
(xdrx-entity-preventities 实体 [数量] )

参数说明:
* 实体: 目标实体(RTENAME)
* 数量: 可选参数,要获取的前驱实体数量(RTSHORT),默认为1
* T: 可选参数,返回选择集而非实体列表(RTT)

返回值:
返回前驱实体列表或选择集

示例用法1:
(xdrx-entity-preventities ent)
; 获取实体ent的前一个实体

示例用法2:
(xdrx-entity-preventities ent 3 T)
; 获取实体ent的前3个实体,返回选择集

注意事项:
1. 前驱实体按创建顺序确定
2. 数量参数控制返回的前驱实体数量
3. 添加T参数将返回选择集而非实体列表
4. 对块参照等复杂实体有完整支持
5. 可用于实体创建顺序分析和追踪
------------------------------------------------------------
41
函数名称: xdrx-entity-redraw

描述:
控制实体的高亮显示和重绘状态

调用格式:
(xdrx-entity-redraw 实体 [模式])

(xdrx-entity-redraw 选择集 [模式])

参数说明:
* 实体: 目标实体(RTENAME)或实体列表
* 选择集: 目标选择集(RTPICKS)
* 模式: 可选参数(RTSHORT),控制高亮状态
- 0: 高亮显示并选中(默认)
- 1: 仅高亮显示
- 2: 高亮显示并追加到当前选择集
- 3: 取消高亮显示
- 4: 取消高亮显示并清除选择集

返回值:
总是返回T

示例用法1:
(xdrx-entity-redraw ent)
; 高亮显示并选中实体ent

示例用法2:
(xdrx-entity-redraw (ssget) 3)
; 取消选择集中所有实体的高亮显示

注意事项:
1. 支持单个实体、实体列表或选择集
2. 模式参数控制高亮和选择状态
3. 对块参照等复杂实体有完整支持
4. 比标准REDRAW命令更灵活控制
------------------------------------------------------------
42
函数名称: xdrx-entity-regen

描述:
重新生成指定实体或整个图形

调用格式:
(xdrx-entity-regen [实体/选择集])

参数说明:
* 实体: 可选参数,目标实体(RTENAME)或实体列表
* 选择集: 可选参数,目标选择集(RTPICKS)

返回值:
总是返回T

示例用法1:
(xdrx-entity-regen)
; 重新生成整个图形(等同于REGEN命令)

示例用法2:
(xdrx-entity-regen ent)
; 重新生成指定实体ent

示例用法3:
(xdrx-entity-regen (ssget))
; 重新生成选择集中的所有实体

注意事项:
1. 无参数时等同于标准REGEN命令
2. 支持单个实体、实体列表或选择集
3. 对块参照等复杂实体有完整支持
4. 比标准REGEN命令更灵活,可针对特定实体重绘
5. 重绘效果立即可见,无需等待自动重生成
------------------------------------------------------------
43
函数名称: xdrx-entity-removedup

描述:
移除图形中的重复或重叠实体

调用格式:
(xdrx-entity-removedup 实体/选择集 [信息字符串])

参数说明:
* 实体: 目标实体(RTENAME)或实体列表
* 选择集: 目标选择集(RTPICKS)
* 信息字符串: 可选参数,指定处理信息(RTSTR)

返回值:
返回处理后的实体列表

示例用法1:
(xdrx-entity-removedup ent)
; 移除与实体ent重复的实体

示例用法2:
(xdrx-entity-removedup (ssget) "处理重叠线")
; 移除选择集中的重复实体,并记录处理信息

注意事项:
1. 支持单个实体、实体列表或选择集
2. 信息字符串参数可用于记录处理日志
3. 对直线、多段线等线性实体特别有效
4. 保留最先创建的实体,移除后续重复项
5. 可处理完全重合或部分重叠的实体
------------------------------------------------------------
44
函数名称: xdrx-entity-removedupex

描述:
基于哈希比较移除重复实体,保留唯一实体(扩展版)

调用格式:
(xdrx-entity-removedupex 实体/选择集 [参数掩码])

参数说明:
* 实体: 目标实体(RTENAME)或实体列表
* 选择集: 目标选择集(RTPICKS)
* 参数掩码: 可选参数,位掩码控制哈希计算方式(RTSHORT),默认为511
各二进制位控制不同属性参与哈希计算:
- 位0(1): 使用实体类型(dxfName)
- 位1(2): 使用图层名称(layerName)
- 位2(4): 使用颜色索引(colorIndex)
- 位3(8): 使用线型名称(linetypeName)
- 位4(16): 使用线型比例(linetypeScale)
- 位5(32): 使用线宽(lineWidth)
- 位6(64): 使用顶点坐标数组(nPts)
- 位7(128): 使用边界框(box)
- 位8(256): 使用中心点(centroid)
- 位9(512): 使用实体描述信息(desc)

返回值:
返回被移除的实体数量(RTSHORT)

示例用法1:
(xdrx-entity-removedupex ent)
; 移除与实体ent重复的实体,使用默认参数(511)

示例用法2:
(xdrx-entity-removedupex (ssget) 7)
; 移除选择集中的重复实体,仅比较实体类型、图层和颜色

算法说明:
1. 为每个实体计算基于参数掩码的哈希值
2. 哈希值相同的实体视为重复
3. 每组重复实体保留第一个,删除其余

注意事项:
1. 默认511表示检查所有常见属性
2. 数值越大比较越严格,可能增加处理时间
3. 对块参照等复杂实体有完整支持
4. 精确匹配取决于参数掩码设置
------------------------------------------------------------
45
函数名称: xdrx-entity-rotate

描述:
旋转指定实体或选择集

调用格式:
(xdrx-entity-rotate 实体/选择集 角度 [基准点] [旋转轴])

参数说明:
* 实体: 目标实体(RTENAME)或实体列表
* 选择集: 目标选择集(RTPICKS)
* 角度: 旋转角度(RTSHORT/RTREAL),单位为度
* 基准点: 可选参数,旋转基准点(RT3DPOINT/RTPOINT),默认为原点
* 旋转轴: 可选参数,旋转轴向量(RT3DPOINT),默认为Z轴

返回值:
旋转成功返回T,失败返回nil

示例用法1:
(xdrx-entity-rotate ent 90)
; 将实体ent绕Z轴旋转90度

示例用法2:
(xdrx-entity-rotate (ssget) 45 '(1 1 0))
; 将选择集中的实体绕点(1,1,0)旋转45度

示例用法3:
(xdrx-entity-rotate ent 30 '(0 0 0) '(1 1 1))
; 将实体ent绕通过(0,0,0)点的(1,1,1)向量旋转30度

注意事项:
1. 角度单位为度,正值为逆时针旋转
2. 基准点默认为原点(0,0,0)
3. 旋转轴默认为Z轴(0,0,1)
4. 支持单个实体、实体列表或选择集
5. 对块参照等复杂实体有完整支持
------------------------------------------------------------
46
函数名称: xdrx-entity-rotate3d

描述:
通过两点定义的旋转轴进行3D旋转

调用格式:
(xdrx-entity-rotate3d 实体/选择集 角度 起点 终点)

参数说明:
* 实体: 目标实体(RTENAME)或实体列表
* 选择集: 目标选择集(RTPICKS)
* 角度: 旋转角度(RTSHORT/RTREAL),单位为度
* 起点: 旋转轴起点(RT3DPOINT/RTPOINT)
* 终点: 旋转轴终点(RT3DPOINT/RTPOINT)

返回值:
旋转成功返回T,失败返回nil

示例用法1:
(xdrx-entity-rotate3d ent 45 '(0 0 0) '(1 1 1))
; 将实体ent绕通过(0,0,0)和(1,1,1)的轴旋转45度

示例用法2:
(xdrx-entity-rotate3d (ssget) 30 '(1 0 0) '(1 1 0))
; 将选择集中的实体绕通过(1,0,0)和(1,1,0)的轴旋转30度

与xdrx-entity-rotate的区别:
1. 必须指定旋转轴起点和终点
2. 支持任意方向的3D旋转轴
3. 不支持默认基准点和旋转轴
4. 旋转轴由两点明确指定

注意事项:
1. 角度单位为度,正值为逆时针旋转
2. 起点和终点必须不同
3. 支持单个实体、实体列表或选择集
4. 对块参照等复杂实体有完整支持
5. 旋转方向遵循右手定则
------------------------------------------------------------
47
函数名称: xdrx-entity-safexcopy

描述:
创建实体的安全变换副本,支持块参照的特殊处理

调用格式:
(xdrx-entity-safexcopy 实体/选择集 变换矩阵 [锁定标志])

参数说明:
* 实体: 目标实体(RTENAME)或实体列表
* 选择集: 目标选择集(RTPICKS)
* 变换矩阵: 4x4变换矩阵(RTLB)
* 锁定标志: 可选参数,指定是否锁定文档(RTT)

返回值:
返回新创建的实体列表

示例用法1:
(xdrx-entity-safexcopy ent '((1 0 0 0)(0 1 0 0)(0 0 1 0)(0 0 0 1)))
; 创建实体ent的相同副本

示例用法2:
(xdrx-entity-safexcopy (ssget) '((1 0 0 10)(0 1 0 5)(0 0 1 0)(0 0 0 1)) T)
; 创建选择集中实体的变换副本并锁定文档

注意事项:
1. 变换矩阵必须是4x4矩阵
2. 对块参照会特殊处理其空间过滤器
3. 新实体将继承原实体的所有属性
4. 锁定标志可防止文档在操作过程中被修改
5. 支持单个实体、实体列表或选择集
6. 对复杂实体有完整支持
------------------------------------------------------------
48
函数名称: xdrx-entity-scale

描述:
对实体进行缩放变换

调用格式:
(xdrx-entity-scale 实体/选择集 比例因子 [基准点])

参数说明:
* 实体: 目标实体(RTENAME)或实体列表
* 选择集: 目标选择集(RTPICKS)
* 比例因子: 缩放比例(RTSHORT/RTREAL),大于0的值
* 基准点: 可选参数,缩放基准点(RT3DPOINT/RTPOINT),默认为原点

返回值:
缩放成功返回T,失败返回nil

示例用法1:
(xdrx-entity-scale ent 2.0)
; 将实体ent以原点为中心放大2倍

示例用法2:
(xdrx-entity-scale (ssget) 0.5 '(1 1 0))
; 将选择集中的实体以点(1,1,0)为中心缩小一半

注意事项:
1. 比例因子必须大于0
2. 基准点默认为原点(0,0,0)
3. 支持单个实体、实体列表或选择集
4. 对块参照等复杂实体有完整支持
5. 比例因子>1为放大,0<比例因子<1为缩小
------------------------------------------------------------
49
函数名称: xdrx-entity-setcolor

描述:
设置实体颜色,支持索引颜色和RGB颜色格式

调用格式:
(xdrx-entity-setcolor 实体/选择集 颜色)

参数说明:
* 实体: 目标实体(RTENAME)或实体列表
* 选择集: 目标选择集(RTPICKS)
* 颜色: 颜色值,可以是:
- 索引颜色(RTSHORT)
- RGB颜色(RT3DPOINT)或(RTLB (R G B))
- 真彩色列表(RTLB (R G B))

返回值:
设置成功返回T,失败返回nil

示例用法1:
(xdrx-entity-setcolor ent 1)
; 设置实体ent为红色(索引1)

示例用法2:
(xdrx-entity-setcolor (ssget) '(255 0 0))
; 设置选择集中实体为红色(RGB)

示例用法3:
(xdrx-entity-setcolor ent '(0 255 0))
; 设置实体ent为绿色(RGB)

注意事项:
1. 索引颜色范围0-256,0表示随层,256表示随块
2. RGB颜色分量范围0-255
3. 对块参照会递归设置其内部实体颜色
4. 支持单个实体、实体列表或选择集
5. 对复杂实体有完整支持
------------------------------------------------------------
50
函数名称: xdrx-entity-z0

描述:
设置实体Z坐标值为0或指定值

调用格式:
(xdrx-entity-z0 实体/选择集 Z值 )

参数说明:
* 实体: 目标实体(RTENAME)或实体列表
* 选择集: 目标选择集(RTPICKS)
* Z值: 要设置的Z坐标值(RTSHORT/RTREAL)
* T: 可选参数,指定是否处理所有子实体(RTT)

返回值:
设置成功返回T,失败返回nil

示例用法1:
(xdrx-entity-z0 ent 0)
; 设置实体ent的Z坐标为0

示例用法2:
(xdrx-entity-z0 (ssget) 10.5 T)
; 设置选择集中所有实体及其子实体的Z坐标为10.5

注意事项:
1. Z值可以是整数或实数
2. 添加T参数会递归处理块参照等复杂实体的所有子实体
3. 支持单个实体、实体列表或选择集
4. 对复杂实体有完整支持
5. 不改变实体的X、Y坐标值
------------------------------------------------------------
51
函数名称: xdrx-entity-setelevation

描述:
设置实体标高,考虑实体ECS坐标系

调用格式:
(xdrx-entity-setelevation 实体/选择集 标高值)

参数说明:
* 实体: 目标实体(RTENAME)或实体列表
* 选择集: 目标选择集(RTPICKS)
* 标高值: 要设置的标高值(RTSHORT/RTREAL)

返回值:
设置成功返回T,失败返回nil

示例用法1:
(xdrx-entity-setelevation ent 100)
; 设置实体ent的标高为100

示例用法2:
(xdrx-entity-setelevation (ssget) 50.5)
; 设置选择集中所有实体的标高为50.5

与xdrx-entity-z0的区别:
1. xdrx-entity-z0直接设置Z坐标值
2. xdrx-entity-setelevation考虑实体ECS坐标系,更精确
3. xdrx-entity-setelevation会保持实体在XY平面的位置不变
4. xdrx-entity-setelevation适用于需要精确控制标高的场景

注意事项:
1. 标高值可以是整数或实数
2. 支持单个实体、实体列表或选择集
3. 对复杂实体有完整支持
4. 会保持实体在XY平面的位置不变
------------------------------------------------------------
52
函数名称: xdrx-entity-setlayer

描述:
设置实体图层,自动创建不存在的图层

调用格式:
(xdrx-entity-setlayer 实体/选择集 图层名 )

参数说明:
* 实体: 目标实体(RTENAME)或实体列表
* 选择集: 目标选择集(RTPICKS)
* 图层名: 目标图层名称(RTSTR)
* T: 可选参数,指定是否递归设置块参照的子实体(RTT)

返回值:
设置成功返回T,失败返回nil

示例用法1:
(xdrx-entity-setlayer ent "WALL")
; 设置实体ent到WALL图层

示例用法2:
(xdrx-entity-setlayer (ssget) "DOOR" T)
; 设置选择集中所有实体到DOOR图层,并递归设置块参照的子实体

注意事项:
1. 如果图层不存在会自动创建
2. 默认会递归设置块参照的子实体
3. 添加T参数会禁止递归设置子实体
4. 支持单个实体、实体列表或选择集
5. 对复杂实体有完整支持
------------------------------------------------------------
53
函数名称: xdrx-entity-setltype

描述:
设置实体线型,自动加载不存在的线型

调用格式:
(xdrx-entity-setltype 实体/选择集 线型名 )

参数说明:
* 实体: 目标实体(RTENAME)或实体列表
* 选择集: 目标选择集(RTPICKS)
* 线型名: 目标线型名称(RTSTR)
* T: 可选参数,指定是否递归设置块参照的子实体(RTT)

返回值:
设置成功返回T,失败返回nil

示例用法1:
(xdrx-entity-setltype ent "DASHED")
; 设置实体ent为DASHED线型

示例用法2:
(xdrx-entity-setltype (ssget) "HIDDEN" T)
; 设置选择集中所有实体为HIDDEN线型,并递归设置块参照的子实体

注意事项:
1. 如果线型不存在会自动从acadiso.lin加载
2. 默认会递归设置块参照的子实体
3. 添加T参数会禁止递归设置子实体
4. 支持单个实体、实体列表或选择集
5. 对复杂实体有完整支持
------------------------------------------------------------
54
函数名称: xdrx-entity-setltscale

描述:
设置实体线型比例,可递归设置块参照的子实体

调用格式:
(xdrx-entity-setltscale <实体/选择集> <比例值> )

参数说明:
* <实体>: 目标实体(ENAME)或实体列表(LIST)
* <选择集>: 目标选择集(PICKSET)
* <比例值>: 线型比例值(REAL或INT)
* T: 可选参数,指定是否禁止递归设置块参照的子实体

返回值:
设置成功返回T,失败返回nil

示例用法1:
(xdrx-entity-setltscale ent 2.0)
; 设置实体ent的线型比例为2.0

示例用法2:
(xdrx-entity-setltscale (ssget) 1.5 T)
; 设置选择集中所有实体的线型比例为1.5,并禁止递归设置子实体

注意事项:
1. 比例值可以是实数或整数
2. 默认会递归设置块参照的子实体
3. 添加T参数会禁止递归设置子实体
4. 支持单个实体、实体列表或选择集
5. 对复杂实体有完整支持
------------------------------------------------------------
55
函数名称: xdrx-entity-setlineweight

描述:
设置实体线宽,可递归设置块参照的子实体

调用格式:
(xdrx-entity-setlineweight <实体> <线宽值> )

参数说明:
* <实体>: 目标实体(ENAME)
* <线宽值>: 线宽值(INT),取值范围0-211
* T: 可选参数,指定是否禁止递归设置块参照的子实体

返回值:
设置成功返回T,失败返回nil

示例用法1:
(xdrx-entity-setlineweight ent 50)
; 设置实体ent的线宽为50

示例用法2:
(xdrx-entity-setlineweight ent 18 T)
; 设置实体ent的线宽为18,并禁止递归设置子实体

注意事项:
1. 线宽值为整数,常用值:0=默认,5=0.05mm,9=0.09mm,13=0.13mm等
2. 默认会递归设置块参照的子实体
3. 添加T参数会禁止递归设置子实体
4. 支持单个实体
------------------------------------------------------------
56
函数名称: xdrx-entity-setowner

描述:
设置实体的所有者,支持块表记录、字典、符号表、布局等作为所有者

调用格式:
(xdrx-entity-setowner <所有者实体> <目标实体/选择集> [变换矩阵] )

参数说明:
* <所有者实体>: 新的所有者实体(ENAME)
* <目标实体/选择集>: 要设置所有者的实体(ENAME)或选择集(PICKSET)
* [变换矩阵]: 可选参数,变换矩阵(LIST)
* : 可选参数,控制是否交换ID

返回值:
成功返回新实体列表,失败返回nil

示例用法1:
(xdrx-entity-setowner owner_ent target_ent)
; 将target_ent的所有者设置为owner_ent

示例用法2:
(xdrx-entity-setowner blk_rec (ssget) matrix_list T)
; 将选择集中所有实体的所有者设置为blk_rec,并应用变换矩阵

注意事项:
1. 所有者可以是块表记录、字典、符号表或布局
2. 支持单个实体或选择集
3. 变换矩阵参数可选
4. 添加T参数会控制ID交换行为
5. 支持XREF实体处理
------------------------------------------------------------
57
函数名称: xdrx-entity-setplotstyle

描述:
设置实体打印样式名称,可递归设置块参照的子实体

调用格式:
(xdrx-entity-setplotstyle <实体> <打印样式名称> )

参数说明:
* <实体>: 目标实体(ENAME)
* <打印样式名称>: 打印样式名称(STR)
* T: 可选参数,指定是否禁止递归设置块参照的子实体

返回值:
设置成功返回T,失败返回nil

示例用法1:
(xdrx-entity-setplotstyle ent "Normal")
; 设置实体ent的打印样式为"Normal"

示例用法2:
(xdrx-entity-setplotstyle ent "Style1" T)
; 设置实体ent的打印样式为"Style1",并禁止递归设置子实体

注意事项:
1. 打印样式名称区分大小写
2. 默认会递归设置块参照的子实体
3. 添加T参数会禁止递归设置子实体
4. 支持单个实体
------------------------------------------------------------
58
函数名称: xdrx-entity-setpropsfrom

描述:
从源实体复制属性到目标实体,支持复制扩展数据和扩展字典

调用格式:
(xdrx-entity-setpropsfrom <目标实体/选择集> <源实体> )

参数说明:
* <目标实体/选择集>: 要设置属性的实体(ENAME)或选择集(PICKSET)
* <源实体>: 属性来源实体(ENAME)
* : 可选参数,指定是否复制扩展数据(XData)
* : 可选第二个T参数,指定是否复制扩展字典(XDict)

返回值:
设置成功返回T,失败返回nil

示例用法1:
(xdrx-entity-setpropsfrom target_ent source_ent)
; 从source_ent复制常规属性到target_ent

示例用法2:
(xdrx-entity-setpropsfrom (ssget) source_ent T T)
; 从source_ent复制属性到选择集中所有实体,包括扩展数据和扩展字典

注意事项:
1. 第一个T参数控制是否复制扩展数据(XData)
2. 第二个T参数控制是否复制扩展字典(XDict)
3. 支持单个实体或选择集
4. 对尺寸标注实体有特殊处理
------------------------------------------------------------
59
函数名称: xdrx-entity-setproperty

描述:
批量设置实体属性,支持键值对列表形式设置多个属性

调用格式:
(xdrx-entity-setproperty <实体/选择集> <属性键值对列表> )

参数说明:
* <实体/选择集>: 目标实体(ENAME)或选择集(PICKSET)
* <属性键值对列表>: 属性设置列表(LIST),格式为("属性名1" 值1 "属性名2" 值2 ...)
* T: 可选参数,控制是否递归设置嵌套实体

返回值:
设置成功返回T,失败返回nil

示例用法1:
(xdrx-entity-setproperty ent '("Color" 1 "Layer" "0"))
; 设置实体ent的颜色为1,图层为"0"

示例用法2:
(xdrx-entity-setproperty (ssget) '("Linetype" "DASHED" "Lineweight" 0.5) T)
; 设置选择集中所有实体的线型和线宽,并递归设置嵌套实体

注意事项:
1. 属性键值对必须成对出现
2. 支持单个实体或选择集
3. 对块参照有特殊处理
4. 支持大量实体时的进度显示
------------------------------------------------------------
60
函数名称: xdrx-entity-settrans

描述:
设置实体透明度,0为完全透明,100为完全不透明

调用格式:
(xdrx-entity-settrans <实体> <透明度值>)

参数说明:
* <实体>: 目标实体(ENAME)
* <透明度值>: 透明度百分比(INT),范围0-100

返回值:
设置成功返回T,失败返回nil

示例用法1:
(xdrx-entity-settrans ent 50)
; 设置实体ent透明度为50%

示例用法2:
(xdrx-entity-settrans ent 0)
; 设置实体ent为完全透明

注意事项:
1. 透明度值范围0-100,超出范围会自动调整
2. 0表示完全透明,100表示完全不透明
3. 仅支持单个实体
------------------------------------------------------------
61
函数名称: xdrx-entity-setvisible

描述:
设置实体可见性,默认隐藏实体,添加T参数则显示实体

调用格式:
(xdrx-entity-setvisible <实体/选择集> )

参数说明:
* <实体/选择集>: 目标实体(ENAME)或选择集(PICKSET)
* T: 可选参数,指定则显示实体,不指定则隐藏实体

返回值:
设置成功返回T,失败返回nil

示例用法1:
(xdrx-entity-setvisible ent)
; 隐藏实体ent

示例用法2:
(xdrx-entity-setvisible (ssget) T)
; 显示选择集中所有实体

注意事项:
1. 默认行为是隐藏实体
2. 添加T参数则显示实体
3. 支持单个实体或选择集
4. 对块参照有完整支持
------------------------------------------------------------
62
函数名称: xdrx-entity-sortbyid

描述:
按实体ID排序实体列表或选择集,默认升序排序

调用格式:
(xdrx-entity-sortbyid <实体/选择集> )

参数说明:
* <实体/选择集>: 目标实体(ENAME)或选择集(PICKSET)
* T: 可选参数,指定则降序排序,不指定则升序排序

返回值:
返回排序后的实体列表

示例用法1:
(xdrx-entity-sortbyid ent)
; 返回按ID升序排序的实体列表

示例用法2:
(xdrx-entity-sortbyid (ssget) T)
; 返回按ID降序排序的选择集实体列表

注意事项:
1. 默认按ID升序排序
2. 添加T参数则按ID降序排序
3. 支持单个实体或选择集
4. 返回值为排序后的实体列表
------------------------------------------------------------
63
函数名称: xdrx-entity-sortoncurve

描述:
按曲线上的参数值排序点或实体,支持去重功能

调用格式:
(xdrx-entity-sortoncurve <曲线/点列表> <点/实体列表> )

参数说明:
* <曲线/点列表>: 曲线实体(ENAME)或定义曲线的点列表(LIST)
* <点/实体列表>: 要排序的点列表(LIST)或实体列表(PICKSET)
* T: 可选参数,指定则去除重复点

返回值:
返回排序后的点或实体列表

示例用法1:
(xdrx-entity-sortoncurve curve_ent pt_list)
; 按曲线curve_ent对点列表pt_list排序

示例用法2:
(xdrx-entity-sortoncurve '(p1 p2 p3) (ssget) T)
; 用三点定义的曲线对选择集实体排序并去重

注意事项:
1. 曲线可以是实体或由点列表定义
2. 支持点列表或实体列表作为排序对象
3. 添加T参数会去除重复点
4. 对圆弧、直线等曲线类型有特殊处理
------------------------------------------------------------
64
函数名称: xdrx-entity-stretch

描述:
拉伸实体或选择集,支持向量拉伸和沿曲线拉伸

调用格式:
(xdrx-entity-stretch <实体/选择集> <基点列表> <拉伸向量/曲线>)

参数说明:
* <实体/选择集>: 目标实体(ENAME)或选择集(PICKSET)
* <基点列表>: 拉伸基点列表(LIST),至少需要3个点
* <拉伸向量/曲线>: 拉伸向量(3DPOINT)或拉伸曲线(ENAME/kCurve3d)

返回值:
拉伸成功返回T,失败返回nil

示例用法1:
(xdrx-entity-stretch ent '(p1 p2 p3) vec)
; 以p1 p2 p3为基点,按向量vec拉伸实体ent

示例用法2:
(xdrx-entity-stretch (ssget) '(p1 p2 p3 p4) curve_ent)
; 以p1 p2 p3 p4为基点,沿曲线curve_ent拉伸选择集

注意事项:
1. 基点列表至少需要3个点
2. 拉伸方式可以是向量或曲线
3. 对块参照有特殊处理
4. 支持批量拉伸选择集
------------------------------------------------------------
65
函数名称: xdrx-entity-tablesort

描述:
按表格方式排序实体,支持行列排序和自定义基点

调用格式:
(xdrx-entity-tablesort <实体/选择集> [方向向量] [模糊值] [基点类型])

参数说明:
* <实体/选择集>: 目标实体(ENAME)或选择集(PICKSET)
* 方向向量: 可选参数,排序方向向量(3DPOINT),默认X轴方向
* 模糊值: 可选参数,行/列分组模糊距离(REAL)
* 基点类型: 可选参数,实体基点类型(SHORT,1-9),对应数字小键盘位置:
1:左下角 2:下中点 3:右下角
4:左中点 5:中心点 6:右中点
7:左上角 8:上中点 9:右上角
默认5(中心点)

返回值:
返回排序后的实体列表

示例用法1:
(xdrx-entity-tablesort (ssget))
; 按X轴方向对选择集实体进行表格排序

示例用法2:
(xdrx-entity-tablesort ent_list '(0 1 0) 10.0 1)
; 按Y轴方向排序,模糊值10.0,使用基点类型1(左下角)

注意事项:
1. 支持行列双向排序
2. 基点类型1-9对应实体包围盒不同位置点
3. 模糊值控制行/列分组精度
4. 对块参照有完整支持
------------------------------------------------------------
66
函数名称: xdrx-entity-to-planview

描述:
将实体法线方向调整为当前视图方向

调用格式:
(xdrx-entity-to-planview <实体/选择集>)

参数说明:
* <实体/选择集>: 目标实体(ENAME)或选择集(PICKSET)

返回值:
调整成功返回T,失败返回nil

示例用法1:
(xdrx-entity-to-planview ent)
; 将实体ent的法线方向调整为当前视图方向

示例用法2:
(xdrx-entity-to-planview (ssget))
; 将选择集中所有实体的法线方向调整为当前视图方向

注意事项:
1. 适用于3D实体
2. 支持单个实体或选择集
3. 对块参照有完整支持
------------------------------------------------------------
67
函数名称: xdrx-entity-transcopy

描述:
创建实体的变换副本,支持矩阵变换和目标空间指定

调用格式:
(xdrx-entity-transcopy <实体/选择集> <变换矩阵> [目标空间] )

参数说明:
* <实体/选择集>: 目标实体(ENAME)或选择集(PICKSET)
* <变换矩阵>: 4x4变换矩阵(LIST)
* 目标空间: 可选参数,目标块或布局(ENAME/STR)
* T: 可选参数,指定是否返回新实体列表(RTT)

返回值:
当指定T参数时返回新实体列表,否则返回T

示例用法1:
(xdrx-entity-transcopy ent mat)
; 使用矩阵mat创建实体ent的变换副本

示例用法2:
(xdrx-entity-transcopy (ssget) mat "Block1" T)
; 将选择集实体变换后放入Block1块,并返回新实体列表

注意事项:
1. 变换矩阵必须是有效的4x4矩阵
2. 目标空间可以是块名或布局
3. 默认在当前空间创建副本
4. 对复杂实体有完整支持
------------------------------------------------------------
68
函数名称: xdrx-entity-transformby
函数别名: xdrx-entity-transform

描述:
对实体进行矩阵变换,支持锁定图层处理

调用格式:
(xdrx-entity-transformby <实体/选择集> <变换矩阵> )

参数说明:
* <实体/选择集>: 目标实体(ENAME)或选择集(PICKSET)
* <变换矩阵>: 4x4变换矩阵(LIST)
* T: 可选参数,指定是否临时解锁图层(RTT)

返回值:
变换成功返回T,失败返回nil

示例用法1:
(xdrx-entity-transformby ent mat)
; 使用矩阵mat变换实体ent

示例用法2:
(xdrx-entity-transformby (ssget) mat T)
; 变换选择集中所有实体,并临时解锁相关图层

注意事项:
1. 变换矩阵必须是有效的4x4矩阵
2. 指定T参数会临时解锁实体所在图层
3. 对文本、块参照等特殊实体有特殊处理
4. 支持批量变换选择集
------------------------------------------------------------
69
函数名称: xdrx-entity-trim

描述:
修剪曲线实体,支持边界曲线或点列表作为修剪边界

调用格式:
(xdrx-entity-trim <曲线/选择集> <边界曲线/点列表> [内外标志] [复制标志])

参数说明:
* <曲线/选择集>: 目标曲线(ENAME)或选择集(PICKSET)
* <边界曲线/点列表>: 修剪边界(ENAME)或点坐标列表(LIST)
* 内外标志: 可选参数,T表示保留外部,nil表示保留内部(RTT/RTNIL)
* 复制标志: 可选参数,T表示保留原实体(RTT/RTNIL)

返回值:
返回修剪后的实体列表

示例用法1:
(xdrx-entity-trim ent boundary_ent)
; 使用boundary_ent作为边界修剪实体ent

示例用法2:
(xdrx-entity-trim (ssget) '((0 0) (10 0) (10 10) (0 10)) nil T)
; 使用多边形边界修剪选择集,保留内部并复制原实体

注意事项:
1. 边界可以是曲线实体或点列表
2. 点列表会自动转换为闭合多段线
3. 默认保留外部(T)
4. 默认不保留原实体(nil)
------------------------------------------------------------
71
函数名称: xdrx-entity-type

描述:
获取实体类型名称,支持数据库实体、内存实体和几何实体

调用格式:
(xdrx-entity-type <实体>)

参数说明:
* <实体>: 目标实体(ENAME/内存实体/几何实体)

返回值:
返回实体类型名称字符串

示例用法1:
(xdrx-entity-type (entlast))
; 返回"AcDbLine"等数据库实体类名

示例用法2:
(xdrx-entity-type g)
; 返回"AcGe::kLineSeg3d"等几何实体类名

注意事项:
1. 支持所有AutoCAD实体类型
2. 自动识别实体类型并返回相应格式的类名
3. 数据库实体返回"AcDb"前缀类名
4. 几何实体返回"AcGe"前缀类名
------------------------------------------------------------
72
函数名称: xdrx-entity-xcopy

描述:
创建实体的变换副本,支持矩阵变换并保留所有属性,增强对图块的空间过滤处理

调用格式:
(xdrx-entity-xcopy <实体/选择集> <变换矩阵> )

参数说明:
* <实体/选择集>: 目标实体(ENAME)或选择集(PICKSET)
* <变换矩阵>: 4x4变换矩阵(LIST)
* T: 可选参数,锁定文档(RTT)

返回值:
返回包含所有变换后实体的选择集

示例用法1:
(xdrx-entity-xcopy ent matrix)
; 使用matrix矩阵变换实体ent,返回选择集

示例用法2:
(xdrx-entity-xcopy (ssget) matrix T)
; 变换选择集中所有实体并锁定文档,返回选择集

与xdrx-entity-copy的区别:
1. xcopy支持任意矩阵变换,copy仅支持平移
2. xcopy会保留扩展数据、扩展字典等所有属性
3. xcopy特殊处理多段线、块参照等复杂实体
4. copy支持组实体处理,xcopy不支持
5. xcopy增强了对图块空间过滤(AcDbSpatialFilter)的处理

注意事项:
1. 对包含空间过滤的图块会保持过滤关系
2. 变换后的图块会重新计算空间过滤范围
3. 返回的选择集包含所有变换生成的实体
------------------------------------------------------------
73
函数名称: xdrx-entity-xtransform

描述:
对实体进行原地矩阵变换,替换原实体并保留所有属性

调用格式:
(xdrx-entity-xtransform <实体/选择集> <变换矩阵> )

参数说明:
* <实体/选择集>: 目标实体(ENAME)或选择集(PICKSET)
* <变换矩阵>: 4x4变换矩阵(LIST)
* T: 可选参数,锁定文档(RTT)

返回值:
返回变换后的实体

示例用法1:
(xdrx-entity-xtransform ent matrix)
; 使用matrix矩阵原地变换实体ent

示例用法2:
(xdrx-entity-xtransform (ssget) matrix T)
; 原地变换选择集中所有实体并锁定文档

与xdrx-entity-transformby的区别:
1. xtransform专门使用矩阵变换,transformby使用变换对象
2. xtransform总是原地变换,transformby可选择是否创建副本
3. xtransform特殊处理多段线、块参照等复杂实体
4. transformby支持更多变换类型(移动、旋转、缩放等)
5. 两者都增强了对图块空间过滤的处理

注意事项:
1. 变换后会替换原实体,原实体ID将指向新实体
2. 对包含空间过滤的图块会保持过滤关系
3. 变换后的图块会重新计算空间过滤范围
------------------------------------------------------------


sh_h 发表于 2025-5-17 21:51:00

东哥,辛苦了!
感觉还是之前的chm格式的手册用着方便...

XDSoft 发表于 2025-5-19 00:16:20

sh_h 发表于 2025-5-17 21:51
东哥,辛苦了!
感觉还是之前的chm格式的手册用着方便...

还没都整理完,都完事的,再做个CHM,
贴的这些是基本
页: [1]
查看完整版本: XDrxAPI 73 个实体处理函数帮助手册