给一个将CAD块内是实体坐标转换到当前显示坐标Lisp例子
时间: 2024-01-20 20:04:42 浏览: 208
CAD坐标标注,LISP加载直接使用
以下是一个将CAD块内实体的坐标转换为当前显示坐标的Lisp例子:
```
(defun convert-coordinates (ent / blk pt)
(setq blk (cdr (assoc 2 (entget ent))))
(setq pt (cdr (assoc 10 (entget ent))))
(if (not (eq blk 0))
(setq pt (mapcar '-
pt
(cdr (assoc 10 (entget (tblsearch "BLOCK" blk)))))))
(trans pt 0 1 (getvar 'ucs))
(trans pt 1 0 (getvar 'ucs))
pt)
```
这个函数接受一个实体的对象标识符(ent),并返回该实体的坐标转换为当前显示坐标的列表。
该函数首先从实体的属性列表中提取块名和实体的原始坐标。如果实体不在块内,则块名为0。
接下来,如果实体在块内,函数将实体的原始坐标转换为相对于块的坐标系。然后,函数使用当前UCS的转换矩阵将坐标转换为当前显示坐标系。
最后,函数返回转换后的坐标列表。
阅读全文